Very High Speed Integrated Circuit Hardware Description Language (auch VHSIC Hardware Description Language), kurz VHDL, ist eine Hardwarebeschreibungssprache, vergleichbar mit einer Programmiersprache, mit der es einfach möglich ist, komplizierte digitale Systeme zu beschreiben.
Geschichte
VHDL wurde in den frühen
80er entwickelt und ist das Produkt von Normierungsbestrebungen eines Komitees, in dem die meisten größeren
CAD-Anbieter und CAD-Nutzer, aber auch Vereinigungen wie die
IEEE, vertreten waren. Der größte nordamerikanische Anwender, das US-Verteidigungsministerium (engl.
Department of Defense), hat VHDL zum Durchbruch verholfen, indem es die Einhaltung der Syntax von VHDL als notwendige Voraussetzung für die Erteilung von Aufträgen gemacht hat. Es war das Ziel, Dokumentation zu vereinheitlichen und den Datenaustausch von komplexen digitalen Systemen zu ermöglichen. Die erste kommerzielle Version wurde
1985 veröffentlicht, sie entstand aus einer Zusammenarbeit von
IBM,
Texas Instruments und
Intermetrics.
VHDL ist durch den IEEE 1076 Standard von 1993 genormt. Gegenüber dem ersten Standard von 1987 (IEEE 1076-1987) wurde die Syntax vereinheitlicht und ergänzt, aber auch einige Konstrukte der alten Syntax entfernt sowie sogar die Semantik einzelner Konstrukte verändert.
Zur Zeit macht man sich Gedanken um eine Erweiterung auf den analogen Bereich und spricht in diesem Zusammenhang von VHDL-AMS (VHDL analog / mixed signal).
Funktionsweise
Bei VHDL arbeitet man nicht mit einzelnen elektronischen Bauteilen, sondern beschreibt das gewünschte Verhalten einer
Schaltung auf einer höheren Abstraktionsebene.
VHDL ermöglicht das schnelle Entwickeln großer und komplexer Schaltungen (z.B. Mikroprozessor mit über 20 Mio Transistoren!), die hohe Effizienz erfordern (zeitlich wie ökonomisch) und unterstützt den Ingenieur bei allen Arbeiten.
So kann ein System simuliert, verifiziert und schließlich eine Netzliste erstellt werden.
Aus der Netzliste können Masken für die Herstellung von MPGAs (mask programmable gate array) oder ähnlichen LSI (Large scale integration)-Chips produziert werden oder sie kann (nach Konvertierung in einen geeigneten Bitstream) direkt in ein FPGA (Field Programmable Gate Array) oder CPLD (Complex Programmable Logic Device) geladen werden.
Neben VHDL existieren Verilog und ABEL, die weltweit meist genutzten Hardwarebeschreibungssprachen sind VHDL und Verilog.
VHDL hat sich zum "Quasi-Standard" innerhalb Europas entwickelt, Verilog ist dagegen die meist verwendete Sprache in den USA.
Es ist notwendig zwischen synthesefähigem und funktionalem Code zu unterscheiden, weil es Konstrukte gibt, die sich zwar simulieren lassen, aber nicht in eine Netzliste übersetzt werden können. Funktionaler, nicht synthesefähiger Code wird vor allem im Bereich der Simulation zur Erstellung sogenannter Testbenches eingesetzt.
Beispiel: D-Flipflop (behavioural) nicht synthetisierbar
ENTITY DFlipflop IS
PORT(D,Clk: IN Bit;
Q: OUT Bit);
END DFlipflop;
ARCHITECTURE Behav OF DFlipflop IS
CONSTANT T_Clk_Q: time := 4.23 ns;
BEGIN
PROCESS
BEGIN
WAIT UNTIL Clk'EVENT AND Clk'Last_Value='0' AND Clk='1';
Q<=D AFTER T_Clk_Q;
END PROCESS;
END Behav;
Beispiel: D-Flipflop (behavioural) synthetisierbar
ENTITY DFlipflop IS
PORT(D,Clk, nResetAsync: IN Bit;
Q: OUT Bit);
END DFlipflop;
ARCHITECTURE Behav OF DFlipflop IS
BEGIN
PROCESS(Clk,nResetAsync)
BEGIN
IF nResetAsync = '0' then
Q <= '0';
ELSIF Clk'EVENT and Clk = '1' then
Q <= D;
END IF;
END PROCESS;
END Behav;
Beispiel: andere Architektur (Herstellerlibrary)
LIBRARY VendorLib;
ARCHITECTURE Vendor OF DFlipflop IS
COMPONENT Dff PORT(D, Clk: IN Bit; Qout: OUT Bit); END COMPONENT;
BEGIN
Ff1: Dff PORT MAP (D => D , Clk => Clk, Qout => Q );
FOR ALL : Dff USE ENTITY VendorLib.Component.Dff;
END Vendor;
Simulation und Verifikation von VHDL-Code
Mittlerweile hat sich VHDL als Standard für die Simulationsmodelle von IP (Intellectual Property) durchgesetzt. In einem Simulationsmodell wird der eigentlich zu testende und synthesefähige VHDL-Code bzw. VHDL-Modul eingebettet und die Hardware darum in einem sogenannten 'Test-Bench' möglichst getreu nachgebildet. Das Simulationsmodell wird dabei meistens in nicht synthetisierbaren VHDL verfasst, was das Modellieren des Zeitverhaltens oder bestimmter physikalischer Parameter der externen Schaltungsteile erlaubt.
Ein Beispiel soll diesen Vorgang erläutern:
- Bei der Erstellung eines SDRAM-Controllers, einer Schaltung zum Ansteuern von SDRAM-Speichermodulen, wird das SDRAM mit seinem Speicher und sein zeitliches Verhalten im Simulationsmodell möglichst genau wie die reale SDRAM-Hardware nachgebildet. Damit kann die Funktion des SDRAM-Controllers, ohne dass dafür reale Hardware notwendig wäre, komplett getestet und auch in den zeitlichen Extrembedingungen verifiziert werden. Bei Bedarf wird der SDRAM-Controller funktionell entsprechend nachgebessert um die Simulationsparamter zu erfüllen. Erst wenn diese Simulation erfolgreich war wird der so erstellte SDRAM-Controller auf Hardware, beispielsweise in einem FPGA, in Kombination mit 'echten' SDRAM-Bausteinen in Betrieb genommen. Damit ist der Entwicklungsprozess von IP-Cores weitgehend unabhängig von konkreter Hardware.
Die Erstellung von guten Testbenches, die entsprechende Aussagen zulassen, ist dabei eine meist unterschätzte Aufgabenstellung welche ca. 50% der gesamten Entwicklungszeit für IP-Cores ausmacht. Sie ist aber, neben systematischen Vorgehen in der Entwicklung, wesentlich effizienter als frühzeitig mit meist nicht auf Anhieb funktionierenden Schaltungsteilen auf reale Hardware zu gehen - die dann nur schwer und umständlich in allen ihren Parametern verifiziert werden können.
Weiter unterscheidet man bei der Simulation unterschiedliche Simulationsarten:
- Eine reine Verhaltensimulation (engl. behavioral simulation) des zu implementierenden IP-Core. Dabei werden die funktionellen Zusammenhänge in der Schaltung grundsätzlich geprüft. Beispielsweise ob logische Verknüpfungen einzelner Signale passen. Der Vorteil besteht im geringen Rechenaufwand, womit zeitlich längere Abschnitte simuliert werden können.
- Eine Simulation des fertig platzierten IP-Core (engl. post-fit simulation). Dabei wird der IP-Core zunächst synthetisiert, geroutet und platziert und diese fertige Schaltungsanordung (Netzliste) simuliert. Der Vorteil besteht in dem genaueren Modell, um beispielsweise Zeitablaufprobleme in der Zielhardware in der Simulation erkennen zu können. Nachteilig ist der damit verbundene hohen Rechenaufwand und die auch auf schnellen Rechnern sehr lange Simulationszeiten.
Skelett eines VHDL- Bausteines
ENTITY Bausteinname
IS
GENERIC (Parameterliste, optional);
- dieses Statement erlaubt die Übergabe modellabhängiger
Parameter (z.B.: Verzögerungszeiten) an einem Baustein;
PORT (Schnittstellenliste, optional);
- hier werden die Signalschnittstellen des Bausteins nach außen
definiert; folgende Modi sind möglich IN, OUT, INOUT, BUFFER;
- an dieser Stelle können diverse Deklarationen vorgenommen werden,
die in verschiedenen Architekturrümpfen benutzt werden können,
dies sind unter anderem Unterprogramme, Typendeklarationen,
Konstantendeklarationen und Signaldeklarationen;
BEGIN (Anweisungen, optional);
- hier können Anweisungen stehen, die für alle Architekturrümpfe
durchzuführen sind; dies verkürzt die Architekturbeschreibung,
denn Bausteindeklarationen aufgeführte Anweisungen müssen
nicht mehr in den Architekturrümpfen stehen;
END Bausteinname;
- Ende der Bausteindeklaration
ES FOLGT DER ARCHITEKTURRUMPF
ARCHITECTURE Rumpfname OF Bausteinname IS
- an dieser Stelle können optional diverse Deklarationen für
Typen, Konstanten und Signale vorgenommen werden,
im Gegensatz zu den Bausteindeklarationen sind diese hier
nur für den vorliegenden Architekturrumpf gültig;
BEGIN
- Anweisungen, die das Verhalten oder die Struktur des
Bausteins beschreiben;
END Rumpfname;
END Bausteinname;
Unterschiede zu anderen Programmiersprachen
- VHDL ist eine Hardwarebeschreibungssprache und keine Programmiersprache im eigentlichen Sinn, welche einen sequentiellen Ablauf einzelner Anweisungen festlegt. In einer Hardwarebeschreibungsprache wird der Aufbau eines Modelles beschrieben.
- Es gibt verschiedene Arten von Modulen: Komponenten (engl. 'Component') welche einzelne Schaltungsblöcke mit ihren Ein- und Ausgängen beschreiben, Prozeduren (engl. 'procedure') welche funktionelle Abschnitte als Anweisungsfolge festlegen und Funktionen welche Anweisungsfolgen zusammenfassen.
- Es gibt mehrere Arten der Datenübertragung und Speicherung. Unter anderem die bei VHDL wesentlich voneinander zu unterscheidenden sogenannten Signale, welche der Verknüpfung einzelner Module dienen, und die sogenannten Variablen welche vor allem innerhalb von Prozeduren verwendet werden können. Die Typisierung ist davon unabhängig. Der Unterschied besteht vor allem darin, dass Signale ihren Zustand erst am Ende einer Prozedur annehmen, während Variablen ein Verhalten ähnlich wie bei Programmiersprachen zeigen und Zuweisungen unmittelbar wirken.
Siehe auch
Weblinks
- http://www.nt-nv.fh-koeln.de/Labor/VhdlEasy/inhalt.html Einführung in VHDL
- http://mesl.ucsd.edu/spark/ "C nach VHDL"-Compiler
- http://www.acc-eda.com/vhdlref/ VHDL Online Reference
- http://ghdl.free.fr/ GHDL (freier VHDL-Simulator)
- http://signs.sf.net/ Signs (freies Synthese- und Simulationstool für eine Untermenge von VHDL)
- http://tech-www.informatik.uni-hamburg.de/vhdl/vhdl.html "the Hamburg VHDL archive"
- http://www.jandecaluwe.com/Tools/MyHDL/Overview.html Python MyHDL scripting
- http://www.microelectronic.e-technik.tu-darmstadt.de/lectures/online/vhdl-online/start.htm Online VHDL Referenz
- http://www.vhdl-online.de/ Online Tutorial
- http://wiki.ittc.ku.edu/hybridthread/Learn_VHDL VHDL Wiki im Aufbau
Programmierbare Logik | Hardwarebeschreibungssprachen
VHDL | VHDL | VHSIC Hardware Description Language | Circuito integrado de muy alta velocidad | Very High Speed Integrated Circuit Hardware Description Language | VHDL | VHDL | VHDL | VHDL | VHDL | VHDL | VHDL | VHDL | VHDL