VHDL-2008 versus VHDL 2002 im Überblick

| Autor / Redakteur: Prof. Dr. Jürgen Reichardt * / Sebastian Gerstl

Ein Pladoyer für VHDL-2008: Unser Autor Prof. Dr. Jürgen Reichardt ist Dozent für IT, Schwerpunkte Digitaler Systementwurf, HW-SW-Codesign und FPGA-basierter SoC-Entwurf, an der HAW Hamburg.
Ein Pladoyer für VHDL-2008: Unser Autor Prof. Dr. Jürgen Reichardt ist Dozent für IT, Schwerpunkte Digitaler Systementwurf, HW-SW-Codesign und FPGA-basierter SoC-Entwurf, an der HAW Hamburg. (Bild: Prof. Dr. Jürgen Reichhardt)

Viele Entwickler setzen – teils aufgrund veralteter Tools, teils aus reiner Gewohnheit – noch auf den früheren Standard 2002 der Hardwarebeschreibungssprache VHDL. Dabei hält VHDL-2008 zahlreiche Erleichterungen und Verbesserungen bereit.

Die Beschreibung mit Hardwarebeschreibungssprachen (HDLs) der dritten Generation, wie beispielsweise System-C oder System-Verilog stößt bei den Designern digitaler Systeme auf zunehmendes Interesse. Das gilt insbesondere für sehr komplexe Systeme mit hohem Verifikationsaufwand.

Dabei darf jedoch nicht verkannt werden, dass die etablierten Hardwarebeschreibungssprachen wie VHDL und Verilog gerade für den Entwurf kleiner und mittelgroßer Systeme auch in Zukunft noch sehr gefragt sein werden. Dies liegt neben dem hohen Verbreitungsgrad dieser Sprachen auch an der Tatsache, dass es dafür sehr gut etablierte Simulations- und Synthesewerkzeuge gibt, deren Lizenzen auch von kleinen und mittelständischen Unternehmen kostengünstig erworben werden können.

Vor diesem Hintergrund mag es ein wenig verwundern, dass sich die durch den Standard VHDL-2008 definierten Spracherweiterungen in der Vergangenheit noch recht wenig durchgesetzt haben. Wesentliches Ziel der schon Anfang 2009 als Standard IEEE1076-2008 definierten Überarbeitung von VHDL war es, die Wortfülle zu reduzieren, die einen VHDL-Code im Vergleich zu einem Verilog-Code kennzeichnet [2].

Außerdem wurden neue Operatoren und Datentypen eingeführt, die den digitalen Schaltungsentwurf vereinfachen. Diese Neuerungen wurden recht schnell in den Simulationswerkzeugen implementiert und werden nun zunehmend auch von den Synthesewerkzeugen unterstützt. Daher erscheint es längst überfällig, die bisherige Zurückhaltung bei der Verwendung der Sprachvereinfachungen aufzugeben und die neuen Möglichkeiten des VHDL-2008 Standards in die firmeninternen Kodierungsrichtlinien zu integrieren.

Die nachfolgende Übersicht stellt nur einige der wichtigsten Neuerungen und Vereinfachungen dem älteren Sprachstandard VHDL-2002 an Hand einfacher Beispiele gegenüber. Ein weitergehender Vergleich findet sich in [1] beziehungsweise. in der Definition des VHDL-2008-Standards [3]. In einem Plädoyer zur Verwendung von VHDL-2008 darf allerdings nicht nur auf die vereinfachte VHDL-Syntax und -Semantik eingegangen werden, sondern es muss vielmehr auch vorgestellt werden, in welchem Umfang diese durch Simulations- und Synthesewerkzeuge unterstützt wird.

Lesen von Output Ports und neue Vergleichsoperatoren

Im bisherigen VHDL Standard war es verboten, ein als out Port deklariertes Signal auch innerhalb der architecture weiter zu verwenden. Für diesen Zweck war es entweder notwendig, den ungeliebten Port-Modus buffer zu verwenden, oder aber es musste ein lokales Signal deklariert werden.

Dieser zusätzliche Aufwand ist in VHDL-2008 nicht mehr erforderlich. Nun können Signale vom Typ out auch intern weiter verwendet werden. Die nachfolgende Schieberegisterschaltung mit Abzweigung nach dem ersten Flipflop kann in VHDL-2008 ohne Deklaration des lokalen Signals TMP modelliert werden (siehe Listing 1 sowie Bild).

Auch neue Vergleichsoperatoren sind nun in VHDL-2008 vorhanden. Das Ergebnis der Vergleichsoperationen =, /=, <, >, <= oder >= ist vom Typ boolean. Neu ist im Standard VHDL-2008, dass entsprechende synthesefähige Vergleichsoperatoren mit voran gestelltem Fragezeichen definiert sind, deren Ergebnis entweder vom Typ bit oder vom Typ std_logic sein darf. In dem Listing 2 soll das Signal Y gesetzt werden, wenn die Operanden A und B gleich sind.

Sensitivityliste kombinatorischer Prozesse

Eine erhebliche Vereinfachung bietet der VHDL-2008 Standard bei der Modellierung kombinatorischer Logik mit Prozessen. Bisher war es für eine korrekte VHDL-Synthese kombinatorischer Logik erforderlich, nicht nur alle Signale, die auf der rechten Seite von Signalzuweisungen stehen, explizit in die Sensitivityliste aufzunehmen, sondern auch alle Signale, die in Bedingungsausdrücken stehen. Diese Anforderung entfällt, wenn das neue VHDL-Schlüsselwort all verwendet wird (Listing 3).

Bedingte und Selektive Signalzuweisungen in Prozessen

In den bisher gültigen VHDL-Standards waren innerhalb von Prozessen nur sequenzielle Anweisungen sowie die unbedingte Signalzuweisung erlaubt. Diese Einschränkung gilt nach dem VHDL-2008 Standard nicht mehr. Nun sind in diesem Standard bedingte und selektive Signalzuweisungen auch innerhalb von Prozessen erlaubt. So ist z.B. eine vereinfachte Modellierung eines Registers mit Enable Eingang möglich.

Datenformat für rationale Festkommazahlen

Listing 4: Deklaration einer generischen Festkommabibliothek my_fixed_pkg mit Abschneide- und Überlaufcharakteristik sowie Deklaration einer FIR-Filter entity mit Eingangs- und Ausgangssignalen im s3Q4-Format
Listing 4: Deklaration einer generischen Festkommabibliothek my_fixed_pkg mit Abschneide- und Überlaufcharakteristik sowie Deklaration einer FIR-Filter entity mit Eingangs- und Ausgangssignalen im s3Q4-Format (Bild: Jürgen Reichhardt)

Neuer Bestandteile des VHDL-2008 Standards sind der vorzeichenlose Datentyp ufixed und der vorzeichenbehaftete Datentyp sfixed. Damit werden rationale Zahlen im Q-Format abgebildet. Diese Datentypen repräsentieren Signalvektoren mit positiven und negativen Indices, wobei die positiven Indices dem ggf. vorhandenen Vorzeichen sowie dem ganzzahligem Anteil entsprechen und die negativen Indices dem Bruchteil der Zahl [1]. Die Datentypen sind in der Bibliothek ieee.fixed_pkg mit fester Rundungs-, Überlauf- bzw. Sättigungscharakteristik deklariert.

Alternativ können diese Eigenschaften jedoch auch in einer generischen Bibliotheksvarianten der Standardbibliothek ieee.fixed_generic_pkg definiert werden. Das Listing 4 zeigt die Deklaration einer generischen Festkommabibliothek my_fixed_pkg mit Abschneidecharakteristik (fixed_round_style), Signalüberlauf (fixed_overflow_style) und ohne Schutz bei temporären Überläufen (fixed_guard_bits) [3]. Diese Parameter werden durch eine generic map Anweisung eingestellt.

Listing 4 enthält ebenfalls die Deklaration einer FIR-Filter (Finite-Impules-Response) entity, in der die Eingangs- und Ausgangssignale X bzw. Y im s3Q4-Format verwendet werden.

Bild 2: Ausschnitt aus der Sprungantwortsimulation eines FIR-Filters mit vier Nachkommastellen im s3Q4-Format
Bild 2: Ausschnitt aus der Sprungantwortsimulation eines FIR-Filters mit vier Nachkommastellen im s3Q4-Format (Bild: Jürgen Reichhardt)

Die in Bild 2 dargestellte Simulation der Sprungantwort zeigt die in dem Modell verwendete Wertquantisierung der Koeffizienten H, des internen Akkumulators ACCU und des Ausgangssignals Y mit 4 Nachkommastellen entsprechend einer Auflösung von 2-4.

Verifikationsunterstützung in VHDL-2008

Listing 5: Veränderung des Signals CI innerhalb der in der Testbench instanziierten Komponente N_BIT_ADD durch force und relea-se Befehle. Unterbrechung der Simulation durch einen stop Befehl.
Listing 5: Veränderung des Signals CI innerhalb der in der Testbench instanziierten Komponente N_BIT_ADD durch force und relea-se Befehle. Unterbrechung der Simulation durch einen stop Befehl. (Bild: Jürgen Reichhardt)

Der 2008-Standard erweitert die Möglichkeiten einer plattformunabhängigen Entwurfsverifikation durch Einführung neuer Schlüsselworte. So kann z.B. die Ausführung einer Testbench durch VHDL-Anweisungen unterbrochen (stop) bzw. beendet (finish) werden: Mit dem in Listing 5 vorgestellten VHDL-Code wird z.B. in ModelSim 10.4 die folgende Statusmeldung ausgegeben:

Break in Process STIMULI at … line …

Auch ist es möglich mit den neuen VHDL-Anweisungen force bzw. release den Wert von Signalen oder Variablen für Testzwecke zu überschreiben bzw. diese Simulations- treiber wieder freizugeben. Besonders vorteilhaft ist dies in Zusammenhang mit einer alias-Deklaration. So zeigt z.B. das Listing 5 die Testbench N_BIT_ADD_TB in der die Komponenteninstanz DUT verwendet wird. Das interne Signal CI dieser Komponente wird mit dem Alias-Namen INTERRUPT versehen wobei der vollständige Signalpfad in << … >> Klammern anzugeben ist. Innerhalb der Testbench wird der interne Signaltreiber durch den force-Befehl mit dem Wert 1 überschrieben und durch den release-Befehl nach 100 ns wieder freigegeben. Damit wird erreicht, dass die Komponente in diesem Zeitraum mit einem extern aufgezwungenen Signal simuliert.

VDHL-2008: Weitere Vereinfachungen gegenüber früheren Standards

Weitere Vereinfachungen, die VHDL-2008 gegenüber VHDL-2002 mit sich bringt, sind beispielsweise:

  • Blockkommentare: Ähnlich wie in der Programmiersprache C ist es im nun erlaubt, Blockkommentare zu verwenden. Die bisherige Restriktion, dass Kommentare auf eine einzige Codezeile beschränkt sind, entfällt mit der Einführung der Kommentarbegrenzungssymbole /* und */.
  • Bistring Konstanten: Bisher war eine Signalwertzuweisung von Hexadezimalzahlen mit dem Bezeichner X vor der Zahl nur dann möglich, wenn diese ein Vielfaches von 4 Bit umfassen. Im Standard VHDL-2008 entfällt diese Restriktion und es ist außerdem möglich, Zahlen vorzeichenlos, vorzeichenbehaftet oder dezimal zuzuweisen. Wenn die Zahlen die angegebene Bitbreite überschreiten, werden die höherwertigen Bits abgeschnitten. Wenn hingegen die Zahlen kleiner sind, als Bitstellen zur Verfügung stehen, werden je nach Datentyp führende Bitstellen mit Nullen bzw. vorzeichengerecht ergänzt.
  • Signalausdrücke in port map Instanziierungen: Allgemein gilt, dass VHDL-2008 weniger global statische Ausdrücke benötigt als zuvor. Derartige Ausdrücke müssen erst beim Linken der einzelnen Komponenten des VHDL-Modells (Elaboration) einen festen Wert besitzen. So kann z.B. in einer port map Anweisung ein Boole’scher Ausdruck oder eine Datentypkonversion an die Komponenteninstanz übergeben werden.
  • Bitweise Boole’sche Verknüpfungen: Die Boole’schen Operatoren and, or, xor, nand, nor und xnor können in VHDL-2008 auch unär, also mit einem einzelnen Signalvektor als Operand verwendet werden. Mit dieser Verwendung des Operators wird die bitweise Verknüpfung aller Bitelemente des Signalvektors gebildet.
  • Verknüpfung skalarer Signale mit Signal-Arrays: Bisher war es erforderlich, dass die Bitbreiten aller Operanden eines Boole’schen Operators gleich sein mussten. Diese Restriktion gibt es in VHDL-2008 nicht mehr. So kann z.B. die UND-Verknüpfung aller Bits eines Signalvektors mit einem Freigabesignal EN in einer einzelnen Zuweisung realisiert werden. Signalarrays und skalare Signale dürfen also in Boole’schen Ausdrücken gemischt verwendet werden.
  • Vereinfachte Bedingungsausdrücke: In vielen Bedingungsausdrücken war es erforderlich, einen expliziten Vergleich mit einer Signalwertkonstanten durchzuführen. Wie das Beispiel in Listing 3 zeigt ist dies in VHDL-2008 nicht mehr erforderlich.
  • Bedingte Komponenteninstanziierung:: Schon im bisherigen VHDL-Standard VHDL-2002 war es erlaubt, eine automatisierte Komponenteninstanziierung mit der generate-Anweisung nur bei Erfüllung einer bestimmten Bedingung durchzuführen. Neu ist im VHDL-2008 Standard nun, dass es auch erlaubt ist, der if-Abfrage einen else-Zweig hinzuzufügen. Ebenfalls ist es erlaubt, die automatisierte Komponenteninstanziierung abhängig von dem Wert einer case-Abfrage durchzuführen.

VHDL-2008 in Simulations- und Synthesewerkzeugen

Bild 3: Mit Hilfe des Online-Tools EDA Playground der Firma Doulos können diverse EDA Werkzeuge für Testzwecke evaluiert werden. Neben diversen Hardwareauszeichnungs- und Hochsprachen beherrscht das Webseitenbasierte Werkzeug auch diverse Tools und Simulatoren.
Bild 3: Mit Hilfe des Online-Tools EDA Playground der Firma Doulos können diverse EDA Werkzeuge für Testzwecke evaluiert werden. Neben diversen Hardwareauszeichnungs- und Hochsprachen beherrscht das Webseitenbasierte Werkzeug auch diverse Tools und Simulatoren. (Bild: Doulos)

Eine einfache Möglichkeit, die Syntax der neuen Sprachkonstrukte auszuprobieren, ohne auf dem eigenen Rechner besondere Werkzeuge installieren zu müssen, bietet edaplayground.com von der Firma Doulos. Dort können verschiedene EDA Werkzeuge für Testzwecke evaluiert werden. U.a. kann auch der Aldec Simulator Riviera Pro mit der Option VHDL-2008 ausgewählt werden, der diesen Standard vollständig unterstützt.

Die ohne Anspruch auf Vollständigkeit erstellte Tabelle 1 zeigt, in welchem Umfang ein FPGA-Entwurf mit VHDL-2008 durch aktuelle Simulations- und Synthesewerkzeuge unterstützt wird. Da die meisten dieser Werkzeuge noch nicht für VHDL-2008 vorkonfiguriert sind, müssen an geeigneter Stelle Einstellungen vorgenommen werden, um diesen Standard auszuwählen. Weitergehende Information über die notwendigen Konfigurationen, bzw. darüber, welche der neuen Sprachkonstrukte ggf. noch nicht unterstützt werden, müssen der jeweiligen Dokumentation entnommen werden.

Video: Why VHDL-2008 Matters

Fazit: Warum VDHL-2008?

Zusammenfassend kann festgehalten werden, dass VHDL-2008 im Vergleich zu älteren VHDL-Standards folgende Vorteile bietet:

  • Eine Reduzierung des Codierungsaufwands und damit eine leichtere Lesbarkeit des VHDL-Codes durch die Einführung neuer Operatoren und die Aufgabe bisher gültiger Restriktionen.
  • Die garantierte Konsistenz der Simulations- und Synthesesemantik für kombinatorische Logik.
  • Neue, synthesefähige Datentypen für eine einfache Festkommaarithmetik, die insbesondere die Umsetzung von Algorithmen der digitalen Signalverarbeitung vereinfacht.
  • Eine größere Flexibilität bei einer plattformunabhängigen Verifikation durch VHDL-Testbenches.

Die Tatsache, dass die aktuellen EDA-Werkzeuge VHDL-2008 umfassend unterstützen, sollte also künftig keine Ausrede mehr dafür sein, auf die Vorteile dieses neuen Standards zu verzichten.

[1] Jürgen Reichardt: Digitaltechnik, Eine Einführung mit VHDL, 4. Auflage. De Gruyter, Oldenbourg Verlag, 2016[2] Jim Lewis: VHDL-2008 The End of Verbosity, URL: http://www.synthworks.com/papers/VHDL_2008_end_of_verbosity_2013[3] IEEE: 1076-2008 – IEEE Standard VHDL Language Reference Manual,URL: http://standards.ieee.org/findstds/standard/1076-2008.html

* * Prof. Dr. Jürgen Reichardt st Dozent für IT, Schwerpunkte Digitaler Systementwurf, HW-SW-Codesign und FPGA-basierter SoC-Entwurf, an der HAW Hamburg.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 44573395 / FPGA)