Kampis Elektroecke

Grundlagen

Xilinx Spartan3

Bevor ich mit der eigentlichen Entwicklung los lege, will ich ein paar Grundlagen zum Thema FPGA aufzeigen, die für das weitere Verständnis 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 im allgemeinen 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, wobei ein Basisblock z. B. aus einer Lookup Tabelle (LUT) und einem 1-Bit Register besteht, welches als Flipflop ausgeführt ist.


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:


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.

Mit dieser Sprache ist 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.

Ein Programm für ein D-FlipFlop kann z. B. so aussehen:

Der VHDL Codeist 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 bzw. die Vivado Design Edition. Beide Tools können bei Xilinx heruntergeladen werden. Für die Lizenzerstellung wird zusätzlich noch ein Konto bei Xilinx benötigt.

→ Zurück zu FPGA + VHDL

3 Kommentare

  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

    1. 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.