FPGA mit VHDL
Einleitung
FPGAs bieten heute viele Möglichkeiten Logik, Ablaufsteuerungen, Microprocessoren und Systeme zu entwerfen.
In VHDL programmiert und mit einem Simulationswerkzeug verifiziert können einfache bis sehr komplexe FPGAs entwickelt werden.
Meine Erfahrung mit FPGAs gehen von einfachen Logikschaltungen bis hin zu Echtzeitverarbeitung von Signaldaten und Sensordaten.
Durch den Einsatz von IP-Cores (z.B. FFT) lassen sich auf dem FPGA Daten vor verarbeiten und auswerten, um sie anschliessend einem Microprozessor zuzuführen.
Dieser Microprozessor kann beispielsweise als externer Micorcontroller ans FPGA angebunden oder als IP-Core-Prozessor, wie dem NIOS II von ALTERA, in FPGAs integriert werden.
FPGA-Entwicklungs-Flow:
- Hierarchische Instanziierung von Testbenches und FPGA-Design in VHDL mit der Entwicklungssoftware ALTERA QUARTUS II bzw. PRIME oder XILINX ISE bzw. VIVADO.
- Verifikation des FPGA-Designs gegen die Testbenches mit einer VHDL-Simulationssoftware Mentor ModelSim AE/XE oder XILINX ISIM.
- Test des FPGA-Designs auf der Ziel-Hardware in einer realen Umgebung.
- Korrekturschleifen bzw. geänderte Designanforderungen einpflegen.
Unterschied zur Software-Entwicklung für Mikrocontroller:
FPGAs bestehen aus Chip-Sicht aus einer Vielzahl von Registern. Eine Grundeinheit besteht immer aus einem Register und einer Look-up-Table für kombinatorische Logik.
Während ALTERA die Grundeinheit Logik Element (LE) nennt und dann mit 16 Stück davon zu einem Logic Array Block gruppiert, verfolgt XILINX den Ansatz, vier solcher Grundeinheiten zu einem Complex Logik Block (CLB) zusammen zu führen.
Da im Normalfall die Clockeingänge aller Register zusammen an einem dedizierten Clock-Eingang hängen (Global Clock Input, GCK), bedeutet dass, dass alle Register zum gleichen Zeitpunkt parallel seine Ausgänge entsprechend des Zustandes des Dateneingangs aktualisieren.
Man spricht dabei auch von paralleler Verarbeitung der Daten.
Mikrocontroller hingegen, arbeiten pro Systemtakt nur immer einen Befehl ab. Also sequenzielle Verarbeitung von Daten.
Während sich ein echter Software-C-Programmierer bei der "FPGA-Programmierung" schwer tut, weil er anders denkt, hat der Entwickler von digitalen Schaltungen einen einfacheren Einstieg in VHDL für FPGAs.