Suchen

Ein Plädoyer für die Verwendung von VHDL-2008

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

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

Firma zum Thema

Der 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.
Der 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)

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

Listing 1: Lesen von Output Ports in VHDL-2008 (rechts) im Vergleich zu VHDL-2002 (links).
Listing 1: Lesen von Output Ports in VHDL-2008 (rechts) im Vergleich zu VHDL-2002 (links).
(Bilder: Jürgen Reichhardt)

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.

Bild 1: Schieberegisterschaltung mit Abzweigung nach außen.
Bild 1: Schieberegisterschaltung mit Abzweigung nach außen.
(Bild: Jürgen Reichhardt)

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).

Listing 2: Verwendung von Vergleichsoperatoren mit voran gestelltem Fragezeichen und direkter Realisierung als Hardwaresignal.
Listing 2: Verwendung von Vergleichsoperatoren mit voran gestelltem Fragezeichen und direkter Realisierung als Hardwaresignal.
(Bild: Jürgen Reichhardt)

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

Listing 3: Verwendung des Schlüsselworts all in der Sensitivityliste sowie vereinfachte Bedingungsausdrücke bei der Modellierung eines 2:1 Multiplexers mit Enable Eingang nach dem VHDL-2008 Standard.
Listing 3: Verwendung des Schlüsselworts all in der Sensitivityliste sowie vereinfachte Bedingungsausdrücke bei der Modellierung eines 2:1 Multiplexers mit Enable Eingang nach dem VHDL-2008 Standard.
(Bild: Jürgen Reichhardt)

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.

(ID:45610702)