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. Eval-Board
  2. Software Installation
  3. Design
    1. VHDL
    2. Schematic
  4. 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