Grundlagen

Xilinx Spartan3

Bevor ich mit der eigentlichen Entwicklung los lege, mache ich euch mit ein paar Grundlagen vertraut, da diese Grundlagen für die Entwicklung von Schaltungen doch sehr wichtig sind.

-> Was ist ein FPGA?:

FPGA steht für Field Programmable Gate Array, was soviel bedeutet wie „im Feld programmierbare Logikgatter“.
Ein FPGA ist ein integrierter Schaltkreis, der von sich aus im Normalfall keinerlei Funktionen besitzt. Stattdessen kann man ihn mit verschiedenen Funktionen ausstatten. In einem FPGA lässt sich so ziemlich jede Logikschaltung realisieren, die man realisieren möchte.
Im Umkehrschluss wird ein FPGA nicht wie ein Mikrocontroller oder ein Computer programmiert, sondern es wird vielmehr die Funktion bzw. die Schaltung des fertigen Chips beschrieben.

-> Wie funktioniert ein FPGA?:

Ein FPGA besteht in seiner Grundstruktur aus einem Feld (Array) aus Basisblöcken.
Ein Basisblock besteht aus einer Lookup Tabelle (LUT) und einem 1-Bit Register, welches als Flipflop ausgeführt ist.
Ein Basisblock sieht z.B. so aus:

Logik Block
Quelle: Wikipedia

Die Anzahl der Eingänge der LUT kann dabei je nach FPGA Typ variieren.
Durch das Hinterlegen einer Wahrheitstabelle in der LUT kann dem Block eine bestimmte Funktion zugewiesen werden.
Zusätzlich können durch Multiplexer oder programmierbare Schalter die internen Leitungen noch angepasst werden. So kann z.B. das Flipflop umgangen werden und Signale quer durch den Chip transportiert werden.
Eine Schaltmatrix sieht z.B. so aus:

FPGA Schaltmatrix
Quelle: Wikipedia

Des weiteren besitzen FPGAs noch Eingangs- und Ausgangsblöcke um mit der Außenwelt zu kommunizieren.
Diese Blöcke stellen GPIO Funktionalitäten bereit und sind dabei komplett variabel was die Spannungen der Pegel und die interne Beschaltung angeht.
FPGAs besitzen außerdem eigene Pfade für Taktsignale, die über spezielle I/Os eingespeist werden können. Dadurch wird gewährleistet, dass die Taktsignale keine unnötigen Wege im Chip nehmen.
Dieses Taktsignal kann zusätzlich noch manipuliert werden. Es kann vervielfacht oder verringert werden, die Phase kann geändert werden, etc.
Einige FPGAs besitzen zudem noch fest verdrahtete Funktionsblöcke wie Mikrocontroller, Prozessoren oder Speicherblöcke.
Die Konfigurationsdaten (Bitstream) für ein FPGA befinden sich in den meisten Fällen in externen Speichern (Flash-Speicher, EEPROMs, etc.) und werden bei Bedarf in das FPGA geladen.

-> Was ist VHDL?:

Wie oben schon erwähnt, werden FPGAs nicht programmiert, sondern es wird vielmehr die Schaltung beschrieben die das FPGA annehmen soll.
Dies wird mit einer Sprache gemacht die sich VHDL – Very High Speed Integrated Circuit Hardware Description Language – nennt.
Dadurch wird es möglich, schnell und effizient ein System zu entwickeln und zu testen, da man das System beschreibt, synthesiert und anschließend simulieren bzw. direkt in der Zielhardware testen kann.
Falls ein Fehler in der gewünschten Schaltung besteht, kann dieser kostengünstig ausgebessert werden, da nur der VHDL-Code angepasst werden muss.
Den genauen Aufbau eines VHDL-Codes werde ich nach und nach erklären, da diese Sprache sehr komplex ist und viele Fallstricke mit sich bringt.
Ein Programm für ein D-FlipFlop kann z.B. so aussehen:

Ein VHDL Programm ist dabei in seiner Grundstruktur immer gleich.
Als erstes kommen die Includes (oben nicht aufgeführt).
Standardmäßig wird die library IEEE eingebunden, welche die Grundfunktionen für FPGAs bereit stellt.
Danach kommt die Entity, welche das Verhalten der Schaltung nach außen hin beschreibt und als letztes kommt die Architecture, welche das Verhalten innerhalb der Schaltung beschreibt.
Als IDE zum Entwickeln mit VHDL nutze ich das ISE WebPack. Einen Downloadlink bzw. das Formular zum bestellen einer DVD mit allen notwendigen Tools findet ihr auf der Übersichtsseite zum Thema FPGA.
Für die Lizenzerstellung benötigt ihr zusätzlich noch ein Xilinx-Konto.

-> Welches FPGA-Board?:

Nun stellt sich die Frage, welches Board soll man für den Anfang nehmen?
Ich verwende für meine ersten Versuche ein Elektor Board, aber grundsätzlich kann jedes FPGA-Board verwendet werden.
Das Elektor Board ist relativ billig und kann auf ein Steckbrett aufgesteckt werden.
Dies macht das Anschließen von LEDs etc. sehr viel einfacher.
Desweiteren besitzt das Board einen Anschluss für eine Mikro-SD Karte, wodurch kein Programmiergerät usw. verwendet werden muss, sondern nur ein ganz normaler Kartenleser benötigt wird.

 

-> Zurück zum FPGA + VHDL Tutorial

3 thoughts on “Grundlagen
  1. Hallo,
    ich wollte mich kurz melden. Ich bin Student der angewandt-technischen Physik und bin ein großer Fan der Welt der FPGA-VHDL. Ihr Tuto hat mir sehr weiter geholfen, das ist ja klar und eindeutig erklärt. Vielen vielen Dank

    • Hey Ada,

      freut mich das es dir gefällt :)
      Ich selber arbeite (bisher) nur Hobbymäßig mit FPGAs und ich erarbeite mir erst mal nur einfache Grundlagen.
      Vielleicht kommt später ja mehr dazu :)

      Gruß
      Daniel

  2. Ich wollte mich mal für das tolle Tutorial bedanken.
    Ich habe gerade meinen Arbeitsplatz als Techniker Elektrotechnik angetreten und wurde dort plötzlich mit FPGA konfrontiert. Ihr Tutorial hat mir sehr bei der Einarbeitung geholfen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.