Hardwarebeschreibungssprachen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Einleitung

Mit einer Hardwarebeschreibungssprache lässt sich das Verhalten von digitalen Schaltkreisen in Textform beschreiben. Aus diesem Quelltext können dann z. B. Informationen für die Programmierung von Logikbausteinen (FPGA, CPLD, GAL) gewonnen werden (Synthese), oder es lassen sich Simulationen damit durchführen. Dabei muss man beachten, dass Hardwarebeschreibungssprachen zwar auf den ersten Blick wie "typische" Programmiersprachen aussehen, es aber bei genauerer Betrachtung nicht wirklich sind!

Sie beschreiben zwar vordergründig einen Handlungsablauf, der aber nur im Fall der reinen Simulation auch wie ein funktionelles Programm abgearbeitet wird und indirekt das Verhalten des Schaltkreises darstellen kann. Die dazu benötigte "Hardware" wird vom Simulator passend antizipiert, d.h virtuell bereitgestellt, d.h., es wird das Verhalten emuliert. So lassen sich hardwarenahe Objekte wie RAMs, IO-Zellen oder Multiplizierer durch passende Ersatzmodelle genau so einfach berechnen, wie "rechnende Funktionen", die der Mathematik entliehen sind, womit das Verhalten der komplexesten Hardware perfekt voraussagbar wird. Dies gilt allerdings nur, soweit sich für die theoretisch unendliche Vielfalt der möglichen Programmierkonstrukte auch ein Schaltkreis erzeugen lässt. Dies ist naturgemäß bei Weitem nicht automatisch gegeben und hängt von den Resourcen, der Hardware, den Tools und dem geforderten funktionellen Verhalten ab.

Im realen Betriebsfall existiert nämlich im Gegensätz zu den Prozessoren keine Architektur, die, wie der Simulator es getan hat, Befehle ausführen könnte. Die Programmierkonstrukte steuern hier viel mehr den Syntheseprozess, der nicht das komplette zeitliche Verhalten der Schaltung berücksichtigt, sondern lediglich die implizit vorgegebenen Strukturvorgaben verwendet und umzusetzen versucht. Die in den klassischen Programmiersprachen typischer Weise verwendeten Konstrukte führen daher nicht zu einer Handlung zum Zeitpunkt des Ablaufs, sondern zu einer Anweisung zum Zeitpunkt der Konfigurationserstellung. Schleifen z.B. werden also nicht zur Ausführungszeit berücksichtigt, sondern im Zuge des Syntheseprozesses mehrfach durchlaufen, was dazu genutzt werden kann, ähnliche Hardware (z.B. viele Bits in einem Vektor oder gruppierte Operationen und Verschaltungen) durch Iterationen zu beschreiben.

Damit ist, ähnlich wie beim objektorientierten Programmieren in C++, die Position eines Befehls im Code nicht direkt für die spätere zeitliche Ausführung relevant. Im Wesentlichen führen alle Beschreibungen letztlich zu einer parallel arbeitenden Hardwarestruktur, d.h. alle Anweisungen, die zu einer Hardware führen, sind immer und zu jedem Zeitpunkt existent und sie arbeiten auch immer.

Wird für bestimmte Zwecke ein typischer, sequenzieller Ablauf, wie in einer Programmiersprache benötigt, so muss eine Hardware, die dies leisten kann, ausdrücklich aufgebaut werden. Um diese sequentiellen Abläufe in einer Hardwarebeschreibungssprache auszudrücken, verwendet man die bekannten "endlichen Zustandsautomaten" (engl. Finite State Machines). Diese definieren eine Schaltung, die auf die Zustände von Eingangssignalen reagieren und sich variant verhalten kann.

Bekannte Hardwarebeschreibungssprachen

ABEL

Advanced Boolean Equation Language

ABEL wird hauptsächlich für kleinere Aufgaben wie die Programmierung von GALs und ISPs verwendet. Xilinx unterstützt ABEL als Beschreibungssprache für CPLDs (CoolRunner-Familie, XC95xxx-Familie). Auch frühe Chips der Firma Lattice waren mit ABEL programmierbar.

AHDL

Die Altera Hardware Description Language AHDL ist eine Weiterentwicklung von ABEL. Sie wird heute noch zur direkten Instanziierung von Altera Primitiven verwendet.


GHDL

Die Genrad Hardware Description Language ist eine frühe Beschreibungssprache für GALs, PALs und PLDs von der Firma Genrad. Sie wird heute praktisch nicht mehr verwendet.

Der Begriff sollte nicht mit dem freien GNU HDL-Simulator verwechselt werden.

Verilog

Verilog wurde 1983 von der Firma Gateway Design Automation entwickelt. Zu diesem Zeitpunkt diente sie der Simulation/Verifikation, aber nicht der Synthese digitaler Schaltungen. Das gab dieser Sprache auch den Namen: Verifying Logic - Veri Log.

Verilog ist vornehmlich auf dem amerikanischen Kontinent verbreitet.

Links zu Verilog

http://web.archive.org/web/20060805053107/http://www.eg.bucknell.edu/~cs320/1995-fall/verilog-manual.html http://web.archive.org/web/20060805053107/http://www.eg.bucknell.edu/~cs320/1995-fall/manual.pdf

VHDL

Very High Speed Integrated Circuit Hardware Description Language

VHDL ist die in Europa vorwiegend verwendete Beschreibungssprache für digitale Schaltungen.

Verwandte Hardwarebeschreibungssprachen

SystemC

SystemC ist im Gegensatz zu VHDL oder Verilog keine eigene Hardware-Beschreibungssprache sondern eine Klassenbibliothek für C++. Mit SystemC ist es möglich, Hardware abstrakt und auf der Register-Transfer-Ebene (RTL) zu beschreiben. Für eine Beschreibung auf RTL wurde ein VHDL ähnlicher Dialekt gebildet. Für SystemC gibt es zahlreiche Erweiterung wie z.B. das Transaction-Level Modeling (TLM) mit dem es möglich ist, komplette Protokolle nachzubilden, ohne sich Gedanken über die unteren Abstraktionsebenen zu machen. Bisher ist es jedoch so, dass SystemC nicht ohne weiteres synthesefähig ist, dieses wird sich jedoch mittelfristig ändern. Schon jetzt ist es mit Highlevel-Synthesen möglich, C- oder auch C++-Programme zu synthetisieren und diese in einen FPGA einzubeschreiben.

Ein Grundproblem bei SystemC ist die mangelnde Möglichkeit, systembestimmende Randbedingungen, die auf dieser Abstraktionsebene der Schaltungsbeschreibung eigentlich einfliessen müssten, geeignet zu formulieren, damit die Synthese in bestimmte Nischen gelenkt werden kann, was in einer niedigeren Abstraktionsebene durch die Wahl eines Lösungsansatzes implizit geschieht. Dies muss bei der Verwendung von SystemC obwohl eine datenorientierte Beschreibungsebene gewählt wurde, dennoch auf Strukturebene geschehen. Damit umspannt SystemC einen sehr grossen Bereich an Formulierungsebenen, die miteinander konkurrieren.

VHDL-AMS

VHDL mit Erweiterungen für die Analog/Mixed Signal - Simulation. Diese Beschreibungssprache wird z. B. benutzt, um elektrodynamische und mechanische Modelle wie Bremsen, Motoren und Ähnliches in elektrische Schaltungssimulationen zu integrieren.


Links zu AMS

Bücher

  • VHDL-AMS. Mit CD. Anwendungen und industrieller Einsatz (Broschiert) von Yannick Herve, ISBN: 3486577875, 34,80 EUR, März 2006

Sonstige Links

  • CUPL: Zu ABEL verwandte Sprache, wird von Atmel noch als WinCUPL für Atmel-CPLDs kostenlos bereitgestellt, aber nicht mehr gepflegt. (Der Texteditor stürzt beim Speichern ab und beendet das Programm - Abhilfe: Wordpad o.ä. benutzen)
  • GHDL: Genrad's hardware description langugage, eine boolsche Sprache zur Beschreibung von GALs und PALs.