WikiDer > VHDL
VHDL steht für VHSIC (Very huhigh sogepinkelt ichintegriert CSchaltung) huhHardware- dRezept lSprache. Es ist ein Hardwarebeschreibungssprache wodurch Digitalintegrierte Schaltkreise und programmierbare Logik in EPLDs (EPLD steht für Erasable Programmable Logic, wie unter anderem CPLDs und FPGAs) beschrieben und modelliert. Oft wird die Beschreibung in eingegeben IDE-Software, so dass anschließend das Modell der digitalen Schaltung simuliert und geprüft kann werden. Dann können Sie mit der eigentlichen physikalischen Realisierung des Designs (für ASIC-Designs) fortfahren, oder im Fall von EPLDs ist das Design zusammengestellt.
Ursprünglich wurde die Programmiersprache von der amerikanisch Verteidigungsministerium (Verteidigungsministerium), ist aber inzwischen zu einer weithin akzeptierten Beschreibung digitaler Schaltungen geworden. Verilog ist eine weitere häufig verwendete Hardwarebeschreibungssprache (HDL). Das IEEE ist die Organisation, die die Standardisierung von VHDL (IEEE 1076) etabliert.
Basierend auf dieser VHDL-Beschreibung kann ein Hardware-Design erstellt werden. Die Sprache wird verwendet, um elektronische Chips zu beschreiben. VHDL gibt es schon länger als die FPGA. Mit dem Aufkommen von FPGAs hat sich die Verwendung von VHDL beschleunigt, da der Designzyklus von der Beschreibung bis zur Realisierung einer elektronischen Schaltung um mehrere Größenordnungen schneller geworden ist. Bei der Beschreibung einer elektronischen Schaltung mit VHDL sollten drei Gesichtspunkte berücksichtigt werden:
- elektronisch;
- logisch;
- hierarchisch.
Der elektronische Winkel
Da VHDL eine später zu realisierende elektronische Schaltung beschreibt, müssen die grundlegenden Hardwareaspekte des zu entwerfenden Schemas berücksichtigt werden.
E/A-Ports
Ein FPGA stellt über seine Pins, die in VHDL Ports genannt werden, Kontakt mit der Außenwelt her. Auf Designboards sind viele dieser Pins mit Hardware auf dem Board verbunden. Beispiele sind: die Uhr, Tasten, Schalter, ein Eingangs-/Ausgangsanschluss. Damit steht diese Peripherie für die Schaltung innerhalb des FPGAs zur Verfügung. Verfügbar bedeutet, dass sie nicht in die Schaltung eingebunden sind. Um sie einzubinden, muss eine explizite Verbindung zu den Pins des FPGA hergestellt werden. Auf einem typischen FPGA wie dem Spartanisch 2 gibt es mehr als 200 Pins (208 im PQ208Gehäuse, davon 140 I/O-Pins).
Der Entwickler des Entwicklungsboards hat somit viele Möglichkeiten seine Hardware anzuschließen. Es ist wichtig, die Liste der Verbindungen zu dieser Hardware zu kennen. Diese finden Sie im Handbuch für das Schild und finden Sie normalerweise in einer Datei mit der Erweiterung UCF (Datei mit Benutzerbeschränkungen). Die Designsoftware verwendet die UCF-Datei, um die Schaltung mit der Außenwelt zu verbinden. Eine typische Zeile in dieser ASCII-Datei ist NET "btn<0>" LOC = "P59";. Dies bedeutet, dass der I/O-Pin btn(0) auf Pin 59 verfügbar ist. Beachten Sie, dass alle Verbindungen nach außen in der UCF-Datei sein müssen, Sie können dies über die IDE tun (ISE) müssen Sie die ASCII-Datei nicht manuell ausfüllen.
Der logische Winkel
Die Programmiersprache VHDL ermöglicht es, einzelne elektronische Komponenten zu beschreiben und hierarchisch zu verknüpfen. In diesem Sinne ähnelt VHDL einer strukturierten Programmiersprache, bei der das Hauptprogramm die globale Schaltung darstellt und die Funktionen die Komponenten beschreiben. Ein elektronisches Bauteil ist eine Einheit mit den folgenden Eigenschaften:
- Eingangs-/Ausgangsports, dies sind die Pins, die die Komponente mit ihrer Umgebung verbinden;
- interne Signale, das sind die Drähte, auf denen logische elektrische Signale laufen.
- eine Architektur, dies ist die funktionale Beschreibung der Komponente. Basierend auf dieser Beschreibung wird Hardware gebildet, die aus den Eingangssignalen die Ausgangssignale erzeugt.
Der Designer kann drei Elemente verwenden:
- elementare Operationen, die innerhalb von VHDL bekannt sind, wie Bitoperationen, logische Funktionen usw.
- Bibliotheksfunktionen, die vom Konstruktor bereitgestellt werden. Einige dieser Komponenten werden auch als IPR-Komponenten (Intellectual Property Rights) bezeichnet. Dies geschieht hauptsächlich bei komplexen Schaltungen wie einem Softwareprozessor (z. Micro Blaze).
- selbst erstellte Komponenten, die sich in einer VHDL-Datei oder in einer Bibliothek befinden.
Ein Prototyp einer VHDL-Datei für eine Komponente wird unten gezeigt.
BibliothekIEEE;benutzenIEEE.std_logic_1164.alle;benutzenBibliotheksname.Paketname.alle;EntitätEntitätsnameistPortwein(EingangSignale:imstd_logic;AusgabeSignale:ausstd_logic);EndeEntitätsname;die Architekturarch_nameoderEntitätsnameist-- interne Signale und/oder Signaltypen definieren interne Signale : Typ := InitialisierungloslegenProzess_1:Prozess(EmpfindlichkeitslistevonSignale)loslegen-- Beschreibung des ProzessesEndeProzessProzess_1;--(möglicherweise:)Prozess_2:Prozess(EmpfindlichkeitslistevonSignale)loslegen-- Beschreibung des ProzessesEndeProzessProzess_2;-- Interne Signale oder Gatter <= kombinatorische Funktion der Signale (CSAs: Concurrent Signal Assignments)Endearch_name;Sequentielle und kombinatorische Funktionen
Der obige Prototyp einer VHDL-Komponente besteht aus zwei Teilen: Prozessen und kombinatorischen Funktionen oder CSAs (Concurrent Signal Assignments).
Prozess
Die Prozesse müssen eine sequentielle Funktion beschreiben und eine Sensitivitätsliste haben. Die Sensitivitätsliste enthält ein oder mehrere Signale, die den Prozess einleiten. Der Prozess enthält eine Reihe von sequentiellen Anweisungen, die durch eine Änderung eines Signals in der Sensitivitätsliste gesteuert werden. Dieses Signal kann eine Uhr oder ein reguläres Signal sein. Als Beispiel betrachten wir ein einfaches een Flip Flops:
EntitätFlip FlopsistPortwein(Klick,d:imstd_ulogic;Q:ausstd_ulogic);EndeFlip Flops;die ArchitekturimpoderFlip FlopsistloslegenP1:Prozess(Klick)-- Prozessempfindlich auf Clkloslegenwenn(Klick’VeranstaltungundKlick=’1’)dann-- Steigende FlankeQ<=d;Endewenn;EndeProzessP1;Endeimp;Kombinatorische Funktion
Die Architektur einer Komponente kann auch eine einfache kombinatorische Funktion beschreiben. Diese Komponente berechnet die Ausgabe sofort und jederzeit basierend auf der Eingabe. Ein Beispiel ist der Komparator:
EntitätKomparatoristPortwein(ein,B:imstd_logic_vector(7bis zu0);GE:ausstd_logic);EndeKomparator;die ArchitekturimpoderKomparatoristloslegenGE<=’1’wannein>=Bsonst’0’;Endeimp;Wie bereits erwähnt, ist es möglich, sequentielle Funktionen und kombinatorische Funktionen in eine Komponente aufzunehmen.
Der längste Pfad und die längste Taktperiode
Eine kombinatorische Funktion benötigt eine Rechenzeit, die vom längsten Pfad in der kombinatorischen Schaltung abhängt. Da eine kombinatorische Funktion keine Speicherelemente besitzt, muss die Taktperiode lang genug sein, damit die Kommentatoren ihre Funktion berechnen können. Dies wird bei der Synthese der VHDL überprüft und ggf. der Worst-Case-Takt berechnet. Die Ergebnisse können im Synthesebericht eingesehen werden:
Timing-Zusammenfassung: --------------- Geschwindigkeitsklasse: -5Mindestdauer: 8084 ns (Maximalfrequenz: 123,701 MHz) Mindesteingangszeit vor der Uhr: 2827 ns Maximale erforderliche Ausgabezeit nach der Uhr: 10,602 nsMaximale kombinatorische Pfadverzögerung: 7631ns
Wenn die maximale Frequenz größer als die gewünschte Taktfrequenz ist, kann dieses Design auf einem EPLD funktionieren, da es mit der gewünschten Geschwindigkeit laufen kann.