VHDL Tutorials
Was sind FPGAs?
FPGA kurz und knapp erklärt.
Was ist VHDL?
VHDL kurz und knapp erklärt.
Was sind ASICs und wie sind sie Aufgebaut?
ASICs aufbau kurz erklärt.
Infos DE-0 Board
Wichtigstes zum DE0-Board, z.B. Anschluss, etc.
Installation von der FPGA-Software
Notwendige Programme um das DE-0 Board zu verwenden.
Anlegen eines FPGA-File / Projektes
Schritte um das DE-0 Board zu Programmieren / Files Anzulegen.
Eingänge-/Ausgänge, Vector, Signale
Erklärung womit Eingänge / Ausgänge in VHDL verwendet werden können.
Grundgatter
Einfache Beschreibung wie man Grundgatter in VHDL verwendet.
Kombinatorische Logik
Beispiel UND-Verknüpfung mit LED und 2 Schaltern
Was sind FPGAs?
FPGA = Field-Programmable-Gate-Array
Halbleiterbausteine, die auf einer Matrix aus konfigurierbaren Logikblöcken basieren, die über programmierbare Zwischenverbindungen miteinander verbunden sind. Sie sind integrierte Schaltkreise, deren Logik und Verbindungen man auch nach der Herstellung noch umprogrammieren und verändern kann.
Vorteile FPGA:
- Flexibilität: Man kann sie jederzeit vor Ort umprogrammieren.
- Parallele Verarbeitung: Die Hardware-Struktur ist so optimiert, dass FPGAs ohne Probleme Aufgaben
hochspezialisiert und parallel ausführen können und so eine höhere Rechenleistung haben.
- Schnelle Markteinführung: Die Programmierbarkeit ermöglicht Entwicklern, Designs schnell zu testen
und zu iterieren, was die Time-to-Market verkürzt.
Anwendungsbereiche:
- Telekommunikation
- Automobiltechnik
- Luft- und Raumfahrt
- Datenverarbeitung (z. B. Hochleistungsrechnen, maschinelles Lernen)
- Signalverarbeitung
- Industrielle Steuerungssysteme
Was ist VHDL?
VHDL = Very-High-Speed-Integrated-Circuit-Hardware-Description-Language
Unterschiede VHDL zu anderen Programmiersprachen:
Bibliotheken und use-Klauseln:
Werden zu Beginn eingebunden
• Entitäten
Sind Schnittstellen in der Hardware
• Architekturen
Interne Struktur und Verhalten von Entitäten
• Prozesse
Ein VHDL-Code, der auf Ereignisse reagiert
• Signale und Variablen
Signale: Kommunikation zwischen Komponenten und Prozessen
Variablen: lokal in Prozessen
• Konstrukte und Operatoren
Logische Operatoren (AND, OR, NOT)
Vergleichsoperatoren (=, <, >)
Mathematische Operatoren (+, -, *)
• Synchronisation
Getaktete Logik
• Modularität
Mit Entitäten und Architekturen, eigenständige Komponenten
Wie ist VHDL aufgebaut:
• Bibliotheken und use-Klauseln
• Entitäten (Interfaces)
• Architekturen (Interne Struktur)
• Prozesse (Reaktion auf Ereignisse)
• Signale & Variablen
• Konstrukte & Operatoren
• Getaktete / Synchrone Logik
• Modularer Aufbau durch Komponenten
Aufbau von ASICs (PROM, PAL/GAL)
ASICs = Application-Specific-Integrated-Circuits
PROM = Programmable-Read-Only-Memory
PAL/GAL = Programmable-Array-Logic/Generic-Array-Logic
ASICs sind spezielle Halbleiterbauelemente die aus Komponenten wie PROM und PAL/GAL bestehen.
PROM:
PROM ist ein nichtflüchtiger einmal programmierbarer Speicher. Er Besteht aus einem Array von Speicherzellen die anfangs auf 0 (nicht programmiert) stehen. Beim Programmieren werden gewisse Zellen durch „Schmelzen“ (z.B. mit Hochspannung) auf 1 gesetzt. Zellen können nur einmal programmiert werden.
PROM-Typen:
• OTP = One-Time-Programmable: Kann nur einmal programmiert werden.
• EPROM = Erasable-PROM: kann mit UV-Licht gelöscht und neu programmiert werden.
• EEPROM = Electrically-Erasable-PROM: kann elektrisch gelöscht und neu programmiert werden.
PAL (Programmable Array Logic):
Ein PAL ist ein digitaler Logikbaustein, der aus einem programmierbaren AND-Array und einem fest verdrahteten OR-Array besteht. Im AND-Array können die Verbindungen zwischen den Eingängen und den einzelnen AND-Gattern frei programmiert werden. Dadurch lässt sich bestimmen, welche Eingangssignale in die jeweiligen Produktterme eingehen. Das OR-Array hingegen ist nicht programmierbar: die Ausgänge der AND-Gatter sind fest mit den Eingängen der OR-Gatter verbunden. PALs eignen sich gut für einfache kombinatorische Logikschaltungen und kleinere Steueraufgaben, bieten jedoch weniger Flexibilität als GALs oder moderne FPGAs.
GAL (Generic Array Logic):
Ein GAL ist eine Form eines programmierbaren logischen Bausteins und gilt als ein einfacher Vorläufer moderner FPGAs. Der Aufbau basiert auf einem programmierbaren AND-Array und einem festen OR-Array. Das bedeutet: nur das AND-Array kann vom Benutzer programmiert werden. Die Logikfunktionen lassen sich nachträglich verändern, da im Inneren des GALs winzige Sicherungen bzw. moderne EEPROM/Flash-Zellen an den Kreuzungspunkten der Gatter sitzen. Durch gezieltes Durchtrennen bzw. Programmieren dieser Verbindungen wird festgelegt, welche Eingänge mit welchen Logikausdrücken verknüpft werden. Im Gegensatz zu älteren PALs, die nur einmal programmierbar waren, verwenden GALs EEPROM- oder Flash-Technologie. Dadurch können sie gelöscht und mehrfach neu programmiert werden (typisch bis zu rund 100-mal). GALs sind relativ einfache Bausteine. Sie können grundlegende logische Funktionen und einfache Zustandsautomaten realisieren, eignen sich aber nur bedingt für sehr komplexe digitale Schaltungen.
Wichtigstes zum DE0-Board, z.B. Anschluss, etc.
Das DE0-Board ist eine Lern- und Entwicklungsplattform für FPGA's:
Der Hauptzweck des Boards ist es, eine zugängliche Plattform zu sein, um die Grundlagen der digitalen Logik,des synchronen Schaltungsentwurfs und von Hardwarebeschreibungssprachen zu lernen. Es dient als Testumgebung, auf der digitale Schaltungen direkt in Hardware implementiert werden und getestet werden können, anstatt nur simuliert zu werden.
Sein Kernstück ist ein Altera Cyclone III FPGA:
Das Herzstück des Boards ist der programmierbare Chip selbst. Dieser Chip sorgt für eine gute Balance aus Kapazität für komplexe Projekte und einfacher Handhabung.
Anschlüsse:
Das DE0-Board hat eine Vielzahl von integrierte I/O Anschlüsse die sofortiges Feedback und Interaktion bieten. Man kann die Designs sofort visualisieren und steuern:
DIP-Schalter und Taster als manuelle digitale Eingaben
LED's und 7-Segment-Anzeigen als direkte visuelle Ausgaben
VGA- und Audio-Anschlüsse für komplexe Multimedia-Projekte
Diese I/O-Elemente ermöglichen es komplexe Projekte ohne externe Hardware umzusetzen.
Installation von notwendiger FPGA-Software
Installation Quartus II
Link : luke.htlinn1. QuartusSetupWeb-13.1.0.162.exe herunterladen (nicht installieren) 2. cyclone_web-13.1.0.162.qdz in das selbe Verzeichnis herunterladen 3. QuartusSetubWeb installieren 4. ModelSim installieren
Installer ModelSim-Altera
WICHTIG, USB-Blaster Installieren
Anlegen eines FPGA-File / Projektes
Erstellung / Kompilierung eines VHDL-FILE
1. Quartus starten und neues Projekt erstellen:
2. Name und Ordner Auswählen:
3. Device mit Einstellungen hinzufügen:
Konfiguration Fertig!
Neues Projekt/File (File->Neu->FPGA-File)
Doppelclick auf "Compile Design"
4. VHDL code hinzufuegen:
5. Den richtigen Top-level entity eingeben. ==> steht im code.
6. Compilen
7. Pin Planner Öffnen
8. Die Location von den Pins den einzelnen Variablen zuweisen:
9. Die Richtigen PINS findet man in der Betriebsanleitung:
10. Programmer öffnen:
11. Mit add File die SOF Datei hinzufügen :
12. Fertig, auf Start drücken
Eingänge-/Ausgänge, Vector, Signale:
Eingänge sind Komponenten, die Signale oder Daten an das FPGA-Logikarray senden, typischerweise gesteuert durch den Benutzer oder externe Quellen.
Diese Signale könnten sein:
• DIP-Switches • Taster • Clock Signal
Ausgänge:
Ausgänge sind Komponenten, die Signale vom FPGA empfangen und in einer für den Benutzer sichtbaren oder nutzbaren Weise darstellen.
Diese können dargestellt werden durch:
• LED's • 7-Segment-Anzeigen • VGA-Anschluss • Videoausgang
Vector und Signale:
In VHDL sind Signale grundlegende Kommunikationswege, sie entsprechen Drähten in realen Schaltungen. Ein Vektor ist eine Gruppierung mehrerer zusammengehöriger Signale in einer einzigen benannten Einheit. Dies vereinfacht die Handhabung im Code erheblich, da man beispielsweise den Zustand aller Schalter in einer einzigen Zuweisungsanweisung den LEDs zuweisen kann.
Grundgatter Tutorial (beispiel mit AND)
Entity Deklaration
entity and_gate is
Port (
a : in STD_LOGIC; -- input 1
b : in STD_LOGIC; -- input 2
y : out STD_LOGIC -- output
);
end and_gate;
Architektur
architecture Behavioral of and_gate is
begin
y <= a AND b;
end Behavioral;;
Andere gates:
Wichtige Keywords:
AND - OR - NOT - NAND - NOR - XOR - XNOR
Kombinatorische Logik mit Erklärung
Beispiel UND-Verknüpfung mit LED und 2 Schaltern