VHDL Tutorials

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

ModelSim-Altera Installer

WICHTIG, USB-Blaster Installieren

USB-Blaster Installer

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)

ModelSim-Altera Installer

Doppelclick auf "Compile Design"

ModelSim-Altera Installer

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