User Tools

Site Tools


projects:fpga:start

Einstieg in die programmierbare Logik mit FPGAs

Auf diesen Seiten möchte in Anfängern den Einstieg in die Welt der programmierbaren Logik vereinfachen. Ich arbeite mich derzeit selbst in das Thema ein und sammele hier meine Erfahrungen.

Als Student der Elektrotechnik im dritten Semester haben wir die nötigen Grundlagen der Digitaltechnik bereits behandelt. Grundkenntnisse der Elektronik, Digitaltechnik, Hardwarebeschreibungssprachen (VHDL, Verilog) und der Mikrocontroller Programmierung sind von Vorteil.

Vorraussetzungen

  • Grundkenntnisse in
    • VHDL oder Verilog
    • Digitaltechnik
    • Mikrocontrollerprogrammierung
    • Linux
  • Hardware
    • Digilent Nexys 3 Evaluationbord
  • Software
    • ein laufendes & aktuelles Linux System
    • Xilinx ISE 13.3
    • Digilent Adept 2
  • viel, viel, sehr viel Zeit! ;-)

Inhalt

  1. Software Installation
  2. Design
    1. VHDL
    2. Schematic
  3. FPGA Konfiguration

Entwicklungsumgebung

Leider gibt es im Bereich programmierbarer Logik keine Open Source Tools wie die GNU Compiler Collection (gcc) für Mikrocontroller und embedded Systeme.

Die beiden Markführer Xilinx und Altera haben beide eigene, proprietäre Softwareprodukte. Glücklicherweise bietet Xilinx mit dem WebPack eine kostenlose Version seiner Entwicklungsumgebung ISE auch für Linux an.

Xilinx ISE

Digilent ADEPT 2

bash für install.sh

Debian nutzt die dash als Ersetz für /bin/sh. Das führt leider dazu, dass der Installer an einigen Stellen hängen bleibt. Es empfiehlt sich daher den Installer explizit mit der bash zu starten:

bash install.sh

udev Erkennung für neuere Kernel

Die aktuelle ADEPT Runtime Version (2.8.2) für Linux enthält einen Bug, der die udev Erkennung auf Systemen mit aktuellen Kerneln verhindert. Das ganze lässt sich mit folgendem Fix beheben.

Dazu einfach folgenden Teil der install.sh ersetzen

if [ "${szVmjr}" = "2" ]
then
    if [ "${szVmin}" = "6" ]
    then
        if (( ${szVmic} >= 13  ))
        then
            if (( $cprocUdev ))
            then
                let fUseUdev=1
            fi
         fi
     fi
fi

durch

if [ "${szVmjr}" = "2" ]
then
    if [ "${szVmin}" = "6" ]
    then
        if (( ${szVmic} >= 13  ))
        then
            if (( $cprocUdev ))
            then
                let fUseUdev=1
            fi
         fi
     fi
elif  [ "${szVmjr}" = "3" ]
then
     if (( $cprocUdev ))
     then
         let fUseUdev=1
     fi
fi

udev Regeln

ADEPT 2 installiert unter Linux Regeln für die Erkennung von USB Boards mit. Debian Squeeze erlaubt standardmäßig nur root den Schreibzugriff auf USB-Geräte. Um diese Default-Regel zu überschreiben muss die Regel-Datei von Digilent umbenannt werden:

sudo mv /etc/udev/rules.d/digilent-usb.rules /etc/udev/rules.d/95-digilent-usb.rules

In den letzten Versionen von udev wurde das Format zur Beschreibung der Regeln geändert. Der folgende Auszug enthällt die korrigierten Regeln:

# Create "/dev" entries for Digilent device's with read and write
# permission granted to all users.
SUBSYSTEM=="usb", ATTR{idVendor}=="1443", MODE="0666"
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Digilent", MODE="666", RUN+="/usr/local/sbin/dftdrvdtch %s{busnum} %s{devnum}"
  • VHDL Kompakt der Arbeitsgruppe Technische Aspekte Multimodaler Systeme an der Uni Hamburg
projects/fpga/start.txt · Last modified: 09:31 05.02.2012 by Steffen Vogel