courses:system_design:vhdl_-_overview_and_application_field:notizen

Deutsche Notizen

Was ist eine Hardwarebeschreibungssprache?

VHDL ist eine Hardwarebeschreibungssprache. Doch was versteht man in diesem Zusammenhang unter Hardware? Der Begriff umfasst ein komplexes System, wie z.B. einen ganzen Computer, aber auch ein kleines einzelnes Element, wie z.B. ein logisches Grundgatter.

Dementsprechend gibt es auch unterschiedliche Möglichkeiten, die Funktionalität einer Hardware zu beschreiben. Bei einem komplexen System wird z.B. oft das Verhalten nach außen beschrieben. Wenn durch einen Tastendruck oder ein Softwarebefehl etwas an einen Drucker übergeben werden soll, so wird ein Protokoll gestartet, welches sich als abstraktes Verhaltensmodell beschreiben läßt.

Die Beschreibung eines logischen Grundgatters z.B. kann aber aus nur einer boolschen Gleichung bestehen; also einer kurzen und sehr konkreten Funktionsbeschreibung.

VHDL ist also eine Sprache, mit der man (digitale) Hardware im allgemeinen Sinne nachmodellieren kann.

Welche Anwendungen gibt es für eine Hardwarebeschreibungssprache?

Die vordergründigste Anwendung ist der Eigenzweck der Modellierung. Das Wichtige hierbei ist, dass man eine formale Beschreibung eines Zielsystems erhält. Durch die Formalität können Mißverständnisse und Mißinterpretation vermieden werden. Auf Grund des Selbstdokumentierenden Charakters von VHDL kann ein mit VHDL beschriebenes Modell auch eingeschränkt als Dokumentation dienen.

Eine Anwendung, die hilft Fehler (Kodierungsfehler und konzeptionelle Fehler des Systems) im Modell aufzudecken, ist die Simulation. In der Simulation wird das beschriebene Modell mit verschiedenen Eingangswerten stimuliert und die Reaktionen des Modells können beobachtet und überprüft werden.

Um ein System letztendlich fertigen zu können, muß die Beschreibung immer genauer werden. Die (automatische) Umformung einer weniger detaillierten Beschreibung in eine detailliertere Beschreibung wird als Synthese bezeichnet. Es gibt Synthesewerkzeuge, die einzelne Konstrukte von Hardwarebeschreibungssprachen direkt auf Hardwareelemente abbilden können. Somit kann z.B. eine VHDL Beschreibung einer Hardware für die Synthese im Sinne einer Weiterentwicklung verwendet werden.

Welche Anwendungen gibt es noch für eine Hardwarebeschreibungssprache?

Ein weiterer Verwendungszweck ist die sogenannte Wiederverwendung. Ähnlich einem einfachen elektronischen Bauteils, wie z.B. eines Widerstandes, kann auch ein abgeschlossenes VHDL Model an mehreren Stellen verwendet werden. So ist es durchaus üblich, daß häufig benötigte Funktionsblöcke (Makros) als Sammlung von VHDL Modellen zur Verfügung stehen. Entweder der Entwickler sucht die passenden Makros selbst aus und bindet sie in sein eigenes Modell ein, oder er läßt dies von dem Synthesewerkzeug erledigen.

In welchen Teilschritten des digitalen Systementwurfes kann VHDL eingesetzt werden?

Der Entwurfsprozess startet immer mit einer Spezifikation. Hier wird mit einfachen Methoden, meist (Papier und Bleistift) das zu entwickelnde Bauteil in Funktion, Größe, Schnittstellen usw. festgelegt.

Auf Systemebene müssen die einzelnen Module definiert werden. Die Kommunikation untereinander wird genauer beschrieben. Schnittstellen (Ein-, Ausgänge, Bitbreiten,…), Taktrate und Resetmechanismus werden spezifiziert. Damit können reine Simulationsmodelle der Schaltung entwickelt werden. Von Standard Bauteilen (z.B. Prozessoren) können Verhaltensmodelle aus Verhaltensbibliotheken kommerzieller Modellentwickler ins System integriert werden. Das komplette System ist simulationsfähig.

Auf der Logik Ebene werden die zu entwickelnden Modelle des Gesamtsystems synthesegerecht beschrieben. Dafür dürfen nur bestimmte Konstrukte der HDL verwendet werden, sodaß kommerzielle Syntheseprogramme in der Lage sind, aus dieser abstrakten Modellbeschreibung boolsche Funktionen zu erzeugen und diese z.B. auf die Elemente einer ASIC Gatterbibliothek abzubilden. Das Ergebnis ist eine Netzliste der Schaltung oder des Moduls in der Gatter Ebene . Aus der Netzlistenbeschreibung für eine spezielle ASIC Bibliothek kann dann durch andere Werkzeuge das Layout der Schaltung erzeugt werden.

Jeder Übergang auf eine tiefere Abstraktionsebene muß durch eine Validierung der Funktion abgesichert sein. Dazu wird diese Beschreibung simuliert und das möglichst so, daß für alle Stimuli (= Eingangssignale für die Simulation) die Antwort des Moduls geprüft wird. VHDL findet Anwendung von der Systemebene bis zur Gatter Ebene .

Die Entwicklung von VHDL ging vom amerikanischen Verteidigungsministerium aus (DoD). Man wollte eine Sprache zur Beschreibung einer Hardware entwickeln, welche maschinen- und menschenlesbar ist und den Entwickler durch eine strenge Handhabe dazu zwingt, ,leserlich“ zu schreiben.

Erstmals wurde VHDL 1987 standardisiert und 1993 aktualisiert. Die Sprache ist im LRM (Language-Reference-Manual) beschrieben.

Mit den Bestrebungen, VHDL um analoge und mixed-signal Sprachelement zu erweitern, wird derzeit ein neues und schwieriges Terrain betreten. Die Erweiterung nennt sich VHDL-AMS (für Analog Mixed Signal) und ist eine Obermenge zu VHDL. Die digitalen Mechanismen und Methoden werden weiterhin gelten. Auf analoger Seite gibt es jetzt und auch in naher/ferner Zukunft nur die Simulation, da Analog-Synthese ein komplexeres, mit vielen Randbedingungen behaftetes Problem darstellt.

Die Mixed-Signal Simulation wird sich mit dem Problem der Kopplung von Digital- und Analog-Simulatoren beschäftigen müssen, welches immer noch nicht hinreichend gut gelöst ist.

VHDL ist eine “lebende” Sprache. Sie wird ständig erweitert und überarbeitet. Der Standard selbst braucht gute 16 Jahre von der ursprünglichen Ideensammlung bis zum offiziellen IEEE Standard. Bei der Verabschiedung des Standards einigte man sich, in einem angepeilten Zeitraum von jeweils ungefähr 5 Jahren, neue überarbeitete Versionen des Standards herauszubringen. Dies führte bisher zu einer Erneuerung des Standards im Jahre 1993.

Unabhängig hiervon gab und gibt es Bemühungen zusätzliche “Ergänzungspakete” zu standardisieren. Hierbei handelt es sich z.B. um Packages (std_logic_1164, numeric_bit, numeric_std, …) oder Definitionen von Untermengen von VHDL (z.B. Synthetisierbare Untermenge von VHDL IEEE 1076.6).

Die neueste Erweiterung ist eine Übermenge von VHDL, naemlich VHDL-AMS. Es handelt sich um ein Erweiterung von analogen Beschreibungskonstrukten.

VHDL wird vor allem in der ASIC (AnwendungsSpezifischeIntegrierteSchaltung) Entwicklung eingesetzt. Hier wurden schon sehr bald Werkzeuge entwickelt, welche VHDL Code in eine Gatter Netzliste umwandeln konnten. Dieser Vorgang wird als Synthese bezeichnet.

Bei der Verwendung von FPGAs liegt das Problem darin, den schon in boolsche Form gebrachten VHDL Code in die Strukturen des FPGAs, die CLBs, zu bringen.

Ein bestehendes Forschungsgebiet ist das sog. Hardware/Software Codesign. Die vorherrschende Frage ist, welcher Teil des Designs in Software oder Hardware realisiert werden soll. Randbedingungen sind vor allem die Kosten und die Performance.

Die Entwicklung beginnt wieder mit der Spezifikation (Funktion und Zeitverhalten). Aus dieser wird ein synthesegerechtes VHDL Modell erstellt (eventuell über ein Modell auf Verhaltensbene). Dieses kann nun simuliert und damit auf Richtigkeit der Funktion geprüft werden.

Zeigt das Modell das gewünschte Verhalten, so kann die VHDL Beschreibung synthetisiert werden. Dabei sucht ein Synthese-Werkzeug aus einer anzugebenden ASIC Bibliothek die entsprechenden Gatter und Flip-Flops heraus, um die Beschreibung nachzubilden. Wesentlich bei diesem sog. Synthesevorgang ist, daß die Summe der Gatterlaufzeiten der gewählten Gatter auf den längsten Pfaden (von jedem Flip-Flop Ausgang bis zum nächsten FF Eingang) kleiner als die Taktperiode sind.

Sobald das Modell durch bestimmte Elemente einer ASIC Library dargestellt ist, kann eine Simulation auf Gatterebene durchgeführt werden. Erst jetzt treten Gatter- und Leitungsverzögerungen bei den einzelnen Signalen auf. Die einzelnen Gatter können als verzögerungsbehaftete VHDL-Modelle beschrieben werden. Für die Leitungsverzögerungen werden Schätzwerte berechnet (die tatsächlichen Werte erhält man erst nach dem Layout, dies nennt man dann Backannotierung).

Jetzt muß nochmals geprüft werden, ob die Schaltung das vorgegebene Zeitverhalten der Spezifikation einhält. Ebenso erhält man nach der Synthese eine Schätzung bezüglich der Größe, Stromaufnahme usw. der Schaltung, was wieder mit der Spezifiaktion verglichen werden kann.

VHDL besitzt zwei Arten von Anweisungen.

Sequentielle Anweisungen werden wie bei Softwarebeschreibungssprachen strikt nacheinander abgearbeitet. Nachfolgende Anweisungen können vorhergehende dabei überschreiben. Die Reihenfolge der Anweisungen müssen also beachtet werden.

Nebenläufige Anweisungen sind gleichzeitig wirksam. Die Reihenfolge der Anweisungen spielt also keine Rolle. Mit nebenläufigen Anweisungen wird die Parallelität von echter Hardware nachgebildet.

In VHDL wurden auch drei wichtige Modellierungsmethodiken berücksichtigt.

Die Abstraktion erlaubt es, verschiedene Teile eines Modells unterschiedlich detailliert zu beschreiben. Module, die nur für die Simulation gebraucht werden, müssen z.B. nicht so genau beschrieben werden, wie Module die für die Synthese gedacht sind.

Die Modularität erlaubt es, große Funktionsblöcke zu unterteilen und in abgeschlossene Unterblöcke, den sogenannten Modulen, zusammenzufassen.

Die Hierarchie erlaubt es, ein System aus mehreren Modulen, die wiederum aus mehreren Modulen bestehen können, aufzubauen. Eine Ebene in der Beschreibungshierarchie kann also ein oder mehrere Module mit unterschiedlichen Abstraktionsgrad, beinhalten. Die Untermodule der darin enthaltenen Modulen bilden die nächste darunterliegende Hierarchieebene.

Abstraktion wird definiert als das Weglassen von Detailinformationen. Es wird also unterschieden zwischen wichtigen und (aktuell) unwichtigen Informationen.

Eine neue Abstraktionsebene wird definiert, in dem bestimmt wird, welche Informationen auf dieser Ebene wichtig sind und welche unwichtig. Die unwichtigen Informationen werden bei der Modellierung auf dieser Abstraktionsebene nicht berücksichtigt.

Soll ein Modell einen bestimmten Abstraktionsgrad besitzen, so muß jedes Modul des Modells den gleichen Abstraktionsgrad besitzen. Ansonsten erhält man ein gemischtes Model.

Im obigen Bild werden die vier Abstraktionsebenen des Digitalen Schaltungsentwurfes beschrieben. Die Verhaltensebene gibt die funktionale Beschreibung des Modells wieder. Es gibt keinen Systemtakt und die Signalwechsel sind asynchron, mit Schaltzeiten beschrieben. In der Regel sind solche Beschreibungen nur simulierbar, nicht aber synthetisierbar.

Auf Register-Transfer-Ebene wird das Design aufgeteilt in Kombinatorik und speichernde Elemente. Die speichernden Elemente (FF, Latches) können durch einen Systemtakt versorgt werden (im synchronen Entwurf sollten FF (flankengetrieben) verwendet werden, keine Latches (zustandsgetrieben). Latches sind nicht spikefest). Für die Beschreibung benötigt man nur 10-20% des VHDL Sprachumfangs und muß eine strikte Methodik einhalten. Man spricht von einer synthesegerechten Beschreibung auf RT-Ebene.

Auf Logikebene wird das gesamte Design durch Logikgatter und speichernde Elemente beschrieben. Den Schritt von der RT-Ebene zur Logikebene übernehmen die Synthesewerkzeuge.

Die unterste Ebene bildet das Layout. Hier werden die verschiedenen elektronischen Bauelemente in der entsprechenden Technologie auf den Ebenen des Chips verteilt und verbunden.

Nach dem Layout kann anschließend die Schaltung gefertigt werden.

VHDL findet Anwendung in den oberen drei Abstraktionsebenen. Es ist nicht geeignet, ein Layout zu beschreiben. Der Wechsel von einer höheren zu einer tieferen Abstraktionsebene wird unterschiedlich gut von Computerwerkzeugen unterstützt.

Die Verhaltenssynthese ist dabei die durch Werkzeuge am wenigsten unterstützeste. Es sind nur sehr einfache Verhaltensmodelle synthetisierbar.

Die Logiksynthese dagegen ist in den letzten Jahren zu einem ausgereiften Hilfsmittel im Entwurfsprozeß geworden. Beschränkt man sich in der RT-Beschreibung auf bestimmte einfache, aber ausreichende VHDL-Konstrukte, so sind die Synthesewerkzeuge in der Lage, diese in die Logik-Ebene abzubilden.

Der Schritt von der Logik-Ebene zum Layout ist für den digitalen Entwurf weitgehend automatisiert (Standardzellenentwurf).

In der Verhaltensebene können komplette Systeme modelliert werden. Man beschreibt Bus-Systeme oder komplexe Algorithmen, ohne auf die Synthetisierbarkeit einzugehen. In der Verhaltensebene werden die Stimuli für die Simulation eines RT-Modells beschrieben. Diese Stimuli sind die zeitlichen Änderungen der Eingangspins des RT-Modells. Sie werden in der sogenannten Testbench (besser Validationbench) beschrieben. Bei der Bestimmung eines konsistenten, der Spezifikation nicht wiedersprechenden Satzes an Eingangs-Stimuli muß der Design-Ingenieur große Sorgfalt walten lassen. Die Antworten des Modells können dann im einfachsten Fall auf graphischem Weg mittels eines die Simulationsergebnisse wiedergebenden Impulsdiagramms (Waveform) mit den erwarteten Antworten verglichen werden.

In der RT-Ebene versucht man das System in Blöcken reiner Kombinatorik oder mit Registern zu beschreiben. Letztendlich besteht das Design in der RT-Ebene nur aus zwei unterschiedlichen, nebenläufigen Beschreibungsformen (vgl. process-statement). Zum einen der rein kombinatorische Prozeß und zum anderen der getaktete Prozeß. Im getakteten Prozeß werden die Register und die Logik zur Berechnung des Register-Zustandes beschrieben. Die Register werden alle durch ein Takt-Signal verbunden.

Aus dieser RT-Beschreibung wird durch ein sog. Synthesewerkzeug die Gatternetzliste erzeugt. Hierfür benötigt es eine sog. Zellenbibliothek, in der die einzelnen Gatterparameter (fan-in, fan-out, Verzögerungszeiten, Temperaturabhängigkeiten…) enthalten sind.

Basierend auf dieser Gatternetzliste wird das Layout der Schaltung generiert. Mit den nun bekannten Leitungslängen kann die Verzögerung der Leitungen als Delay-Element in die Gatternetzliste hineinmodelliert (Back-Annotation) und in VHDL eine komplette Simulation durchgeführt werden. Die Gatter müssen hierzu als VHDL-Modell existieren.

Das Bild zeigt eine einfache Vorgabe für die Funktion eines Moduls. Es soll aus den drei Eingängen I1, I2, I3 ein Ausganswert (Outp) berechnet werden. Desweiteren ist vorgegeben, daß der Ausgangswert nach maximal 100 ns, nachdem sich die Eingänge geändert haben, stabil anliegen muß. Als Verhaltensbeschreibung in VHDL wird dies als entsprechende Gleichung (I1 + I2*I3) modelliert. Das Ergebnis der Gleichung wird direkt an das Ausgangssignal mit der angenommenen maximal erlaubten Bearbeitungszeit verzögert (after 100 ns) an den Ausgang übergeben.

Die RT-Ebene besteht in VHDL nur aus zwei Prozeßarten: dem reinen kombinatorischen Prozeß und dem getakteten Prozeß. Alle getakteten Prozesse erzeugen Flip-Flops und beschreiben letztendlich Zustandsautomaten.

Es werden bei der Modellierung also zusätzlich zu den Dateneingängen und Datenausgängen noch die Steuersignale berücksichtigt, wie ein Taktsignal (CLOCK) und gebgebenenfalls eine Rücksetzsignal (RESET). Diese Steuersignale sind für die Register notwendig.

Man sieht, daß auf RT-Ebene nicht nur die reine Funktion (logic) beschrieben wird, sondern auch Strukturen (Trennung in speichernde und nichtspeichernde Elemente) und Zeit (in Form der zeitgleichen Aktualisierung durch ein Taktsignal) berückksichtigt werden.

Eine VHDL-Gatternetzliste ist zumeißt eine Auflistung der im Entwurf verwendeten Grund- und Komplexgatter. Auf der linken Seite des Bildes sieht man die graphische Darstellung einer digitalen Schaltwerks. Ein Ausschnitt der VHDL- Beschreibung hiervon ist auf der rechten Seite zu sehen. Jedes einzelne Element des Schaltwerks ist hier eingebunden und mit den entsprechenden Signalen verbunden. Dabei ist jedes Element ein Bestandteil einer speziellen Technologiebibliothek und besitzt zusätzliche Informationen zu z.B. Fläche, Laufzeit, kapazitive Last und anderes.

Das Verhaltensmodell ist eine einfache Art, das Verhalten einer Schaltung zu beschreiben, ähnlich den herkömmlichen Programmiersprachen wie PASCAL oder C. Durch eine Simulation kann nur das funktionale Verhalten simuliert werden.

Auf RT-Ebene ist der Takt das entscheidende Merkmal. Alle Operationen werden auf ein Taktsignal bezogen. Die RT-Level Simulation gibt keinen Aufschluß über das reale Zeitverhalten, d.h. ob auch wirklich innerhalb einer Taktperiode alle Signale zur Ruhe gekommen sind.

Ist das Modell auf Logik-Ebene dargestellt, so lassen sich für die Simulation bereits die Verzögerungen der verwendeten Gatter einsetzen (Informationen hierüber sind Bestandteil der verwendeten Synthese-Library). Dies erlaubt eine grobe Überprüfung des Zeitverhaltens, grob deshalb, weil die Leitungsverzögerungen noch nicht berücksichtigt wurden. Bei größeren Entwürfen können diese aber den Hauptteil der gesamten Verzögerung ausmachen.

Hat man das Layout fertiggestellt, sind die Leitungslängen und somit die Leitungsverzögerungen bekannt. Das Design könnte auf dieser Ebene simuliert und das Zeitverhalten der gesamten Schaltung überprüft werden. Allerdings nimmt mit steigender Information über den Aufbau der Schaltung die Simulationszeit erheblich zu, was eine Layout-Simulation nur in kleinen Teilen erlaubt.

Die Modularität erlaubt es, große Funktionsblöcke zu unterteilen und in abgeschlossene Unterblöcke, den sogenannten Modulen, zusammenzufassen. Dadurch kann ein komplexes System in handhabbare Subsysteme unterteilt werden. Die Kriterien, nach denen die Unterteilung vorgenommen wird, können von Entwurf zu Entwurf unterschiedlich sein. Meist erfolgt sie aber nach funktionalen Gesichtspunkten. Dies erlaubt es, z.B. die Modellierung des Gesamtsystems auf mehrere Entwicler aufzuteilen. Jeder Entwickler entwirft ein abgeschlossenens Subsystem.

Die Hierarchie erlaubt es, ein System aus mehreren Modulen, die wiederum aus mehreren Modulen bestehen können, aufzubauen. Eine Ebene in der Beschreibungshierarchie kann also ein oder mehrere Module mit unterschiedlichen Abstraktionsgrad, beinhalten. Die Untermodule der darin enthaltenen Modulen bilden die nächste darunterliegende Hierarchieebene.

Modularität und Hierarchie dienen also der Vereinfachung und Ordnung. Es gibt aber weitere Vorteile: Man kann an beliebeigen Stellen unterschiedliche Realisierungen eines Moduls untersuchen. Man muss jeweils nur die entsprechende Einbindung im Gesamtmodel ändern. Zu einem Simulationsmodell kann z.B. neben dem zu entwerfenden digitalen Modul auch eine analoge Schnittstelle gehören. Auch andere schon als echte Hardware vorliegende Bausteine (ASICs, FPGAs), können als Simulationsmodelle eingebunden werden.

In VHDL existieren Hardware und Software Konzepte zur Modellierung eines digitalen Systems. Es wird streng zwischen reiner Verhaltensmodellierung und synthesegerechter RT-Level Modellierung unterschieden.

VHDL erlaubt es, ein digitales System strukturiert und hierarchisch zu beschreiben.

Zur Modellierung von Nebenläufigkeit werden die sog. Prozesse verwendet. Die Simulation ist ereignissbasiert. Treten bestimmte Ereignisse ein (durch die Stimuli vorgegeben), werden davon abhängige Prozesse ausgelöst. Diese Prozesse enthalten sequentielle Anweisungen, die sie nach ihrem Aufruf der Reihe nach abarbeiten.

Weiterhin ist es möglich Zeitverhalten zu beschreiben, d.h. Stimuli über die Zeit verteilt zu modellieren und somit das beschriebene Modell zu testen.


Chapters of System Design > VHDL - Overview and Application Field