Hardware -Beschreibung Sprache

Im Technische Informatik, a Hardware -Beschreibung Sprache (HDL) ist spezialisiert Computer Sprache verwendet, um die Struktur und das Verhalten von zu beschreiben elektronische Schaltkreiseund am häufigsten, Digitale Logik Schaltungen.

Eine Hardware -Beschreibung Sprache ermöglicht eine präzise, formell Beschreibung einer elektronischen Schaltung, die die automatisierte Analyse ermöglicht und Simulation einer elektronischen Schaltung. Es erlaubt auch die Synthese einer HDL -Beschreibung in a Netzliste (Eine Spezifikation physikalischer elektronischer Komponenten und wie sie miteinander verbunden sind), was dann sein kann platziert und verlegt um das zu produzieren Maskensatz verwendet, um eine zu erstellen Integrierter Schaltkreis.

Eine Hardware -Beschreibung Sprache sieht ähnlich wie a Programmiersprache wie zum Beispiel C oder Algol; Es handelt sich um eine Textbeschreibung, die aus Ausdrücken, Aussagen und Kontrollstrukturen besteht. Ein wichtiger Unterschied zwischen den meisten Programmiersprachen und HDLs besteht darin, dass HDLs explizit den Begriff der Zeit enthalten.

HDLs bilden einen integralen Bestandteil von elektronische Designautomatisierung (EDA) -Systeme, insbesondere für komplexe Schaltungen, wie z. Anwendungsspezifische integrierte Schaltkreise, Mikroprozessoren, und Programmierbare Logikgeräte.

Motivation

Aufgrund der explodierenden Komplexität digitaler elektronischer Schaltungen seit den 1970er Jahren (siehe Moores Gesetz), Schaltungsdesigner benötigten Digitale Logik Beschreibungen, die auf hohem Niveau durchgeführt werden sollen, ohne an eine bestimmte elektronische Technologie gebunden zu werden, wie z. ECL, Ttl oder CMOs. HDLs wurden zur Implementierung erstellt Registerübertragungsstufe Abstraktion, ein Modell des Datenflusss und des Zeitpunkts einer Schaltung.[1]

Es gibt zwei Haupthardware -Beschreibungsprachen: VHDL und Verilog. Es gibt verschiedene Arten von Beschreibung darin: "Datenfluss, Verhalten und strukturell". Beispiel für den Datenfluss von VHDL:

BIBLIOTHEK IEEE; VERWENDEN IEEE.STD_LOGIC_1164.ALLE; EINHEIT Not1 IST  HAFEN(  a : IN  Std_logic;  b : AUS Std_logic;  ); ENDE Not1; DIE ARCHITEKTUR Verhalten VON Not1 IST START  b <= NICHT a; ENDE Verhalten; 

Struktur von HDL

HDLs sind standardmäßige textbasierte Ausdrücke der Struktur elektronischer Systeme und ihres Verhaltens im Laufe der Zeit. Wie gleichzeitige Programmierung Zu den Sprachen, HDL -Syntax und Semantik gehören explizite Notationen zum Ausdrücken Parallelität. Im Gegensatz zu den meisten Software ProgrammiersprachenHDLs enthalten auch einen expliziten Zeitbegriff, der ein primäres Attribut von Hardware ist. Sprachen, deren einzig charakteristisch darin besteht Netzliste Sprachen, die in elektrischer Sprache verwendet werden computergestütztes Design. HDL kann verwendet werden, um Konstruktionen in strukturellen, verhaltensbezogenen oder registrierenden Architekturen auf der gleichen Schaltungsfunktionalität auszudrücken. In den letzten beiden Fällen die Synthesizer Entscheidet das Layout der Architektur und des Logik -Gate.

HDLs werden verwendet, um ausführbare Spezifikationen für Hardware zu schreiben. Ein Programm zur Implementierung der zugrunde liegenden Semantik der Sprachanweisungen und zur Simulation des Zeitschritts bietet dem Hardware -Designer die Möglichkeit, ein Stück Hardware zu modellieren, bevor es physisch erstellt wird. Es ist diese Ausführbarkeit, die HDLs die Illusion des Seins verleiht Programmiersprachen, wenn sie genauer klassifiziert werden als Spezifikationssprachen oder Modellierungssprachen. Es gibt Simulatoren, die diskrete Ereignisse (digitale) und kontinuierliche Zeit (analoge) Modellierung unterstützen, und es gibt HDLs, die für jeden gezielt gezielt sind.

Vergleich mit Kontrollsprachen

Es ist sicherlich möglich, Hardware -Semantik mithilfe herkömmlicher Programmiersprachen wie zu repräsentieren, z. B. C ++, die arbeiten Steuerfluss Semantik im Gegensatz zu Datenfluss, obwohl es als solche zu funktionieren, die Programme müssen durch umfangreich und unhandlich erweitert werden Klassenbibliotheken. Im Allgemeinen enthalten Software -Programmiersprachen jedoch keine Möglichkeiten, explizit Zeit auszudrücken, und können daher nicht als Hardware -Beschreibungsprachen fungieren. Vor der Einführung von System Verilog in 2002, C ++ Integration mit a Logiksimulator war eine der wenigen Möglichkeiten zu verwenden Objekt orientierte Programmierung in der Hardwareüberprüfung. System Verilog ist die erste wichtige HDL, die Objektorientierung und Müllsammlung anbietet.

Verwenden der ordnungsgemäßen Untergruppe der Hardware -Beschreibung Sprache, einem Programm namens Synthesizer oder Logik -Synthese -Tool, kann Hardware -Logikoperationen aus den Sprachanweisungen abschließen und eine gleichwertige Netzliste generischer Hardware -Primitiven erzeugen[Jargon] Um das angegebene Verhalten zu implementieren. Synthesizer ignorieren im Allgemeinen den Ausdruck von Zeitpunktkonstrukten im Text. Digitale Logiksynthesizer beispielsweise verwenden im Allgemeinen im Allgemeinen Taktkanten als Weg zur Zeit die Schaltung, ignoriert Timing -Konstrukte. Die Fähigkeit, eine synthetisierbare Teilmenge der Sprache zu haben, macht selbst keine Hardware -Beschreibung Sprache.

Geschichte

Die erste Hardware -Beschreibung Sprachen erschienen Ende der 1960er Jahre und sahen wie traditionellere Sprachen aus.[2] Das erste, das eine dauerhafte Wirkung hatte, wurde 1971 in beschrieben C. Gordon Bell und Allen Newells Text Computerstrukturen.[3] Dieser Text führte das Konzept von vor Übertragungsstufe Register, zuerst in der ISP -Sprache verwendet, um das Verhalten der zu beschreiben Digital Equipment Corporation (Dez.) PDP-8.[4]

Die Sprache wurde mit der Einführung der PDP-16-RT-Module (RTMs) von DEC und einem Buch, das ihre Verwendung beschreibt, weiter verbreitet.[5] Mindestens zwei Implementierungen der grundlegenden ISP -Sprache (ISPS und ISPs) folgten.[6][7] ISPs war gut geeignet, um die Beziehungen zwischen den Eingaben und den Ausgaben des Designs zu beschreiben und wurde schnell von kommerziellen Teams bei DEC sowie von einer Reihe von Forschungsteams in den USA und unter den NATO -Verbündeten übernommen.

Die RTM-Produkte starteten nie kommerziell und Dec hat sie Mitte der 1980er Jahre, als neue Techniken und insbesondere neue Techniken, gestoppt Sehr große Integration (VLSI) wurde beliebter.

Separate Arbeiten über 1979 bei der Universität von Kaiserslauern produzierte eine Sprache namens Karl ("Kaiserslautern Register Transfer Language"), die Entwurfsrechnungsprachenfunktionen enthielt, die VLSI -Chip -Bodenplanung unterstützen[Jargon] und strukturiertes Hardwaredesign. Diese Arbeit war auch die Grundlage für Karls interaktive grafische Schwestersprache ABL, deren Name ein war Initialismus für "eine Blockdiagrammsprache".[8] ABL wurde Anfang der 1980er Jahre von der Centro Studi e Laboratori Telecomunicazioni (Cselt) In Torino, Italien, produziert der geeignete grafische VLSI -Design -Editor. Mitte der 1980er Jahre wurde ein VLSI-Designrahmen um Karl und ABL durch ein internationales Konsortium implementiert, das von der Kommission der Europäischen Union finanziert wurde.[9]

In den späten 1970er Jahren Design verwendet Programmierbare Logikgeräte (PLDs) wurde populär, obwohl diese Entwürfe hauptsächlich auf das Design beschränkt waren Finite-State-Maschinen. Die Arbeit bei Daten allgemein 1980 verwendete dieselben Geräte, um die zu entwerfen Daten allgemeiner Eclipse MV/8000und kommerzielles Bedürfnis begann für eine Sprache zu wachsen, die ihnen gut zuordnen konnte. Bis 1983 Daten i/o stellte Abel vor, um diesen Bedarf zu erfüllen.

1985, als sich das Design auf VLSI verlagert hat, Gateway Design Automatisierung eingeführt Verilog, und Intermetrie veröffentlichte die erste abgeschlossene Version der VHSIC -Hardware Beschreibung Sprache (VHDL). VHDL wurde auf Geheiß der entwickelt Verteidigungsministerium der Vereinigten Staaten VHSIC -Programmund basierte auf dem ADA -Programmiersprachesowie auf die Erfahrung, die mit der früheren Entwicklung von ISPs gesammelt wurde.[10] Anfang schematisch Dateien). Die HDL -Simulation ermöglichte es den Ingenieuren, auf schematischer Ebene auf einer höheren Abstraktion als Simulation zu arbeiten, und erhöhte damit die Entwurfskapazität von Hunderten von Transistoren auf Tausende. 1986 mit Unterstützung des US -Verteidigungsministeriums, mit Unterstützung des US -Verteidigungsministeriums, VHDL wurde als eine gesponsert IEEE Standard (IEEE STD 1076) und die erste IEEE-standardisierte Version von VHDL, IEEE STD 1076-1987, wurde im Dezember 1987 genehmigt. Cadence -Designsysteme Später erworbene Gateway Design Automation für die Rechte an Verilog-XL, dem HDL-Simulator, der für das nächste Jahrzehnt zum De-facto-Standard von Verilog-Simulatoren wird.

Die Einführung von Logiksynthese Für HDLs hat HDLs vom Hintergrund in den Vordergrund des digitalen Designs geführt. Synthese -Tools kompilierte HDL Quelldaten (geschrieben in einem eingeschränkten Format namens RTL) in eine herstellbare Netlist -Beschreibung in Bezug auf Tore und Transistoren. Das Schreiben von synthetisierbaren RTL -Dateien erforderte Übung und Disziplin des Designers; Im Vergleich zu einem traditionellen schematischen Layout waren synthetisierte RTL -Netlisten fast immer größer und in der Leistung langsamer. Ein Schaltungsdesign eines erfahrenen Ingenieurs, der arbeitsintensive schematische Kapitän/Handlayout verwendet, übertreffen fast immer das logisch synthetisierte Äquivalent, aber der Produktivitätsvorteil, der durch die Synthese gehalten wurde RTL-Synthese: extrem Hochgeschwindigkeits-, Low-Power- oder Asynchron-Schaltkreise.

Innerhalb weniger Jahre traten VHDL und Verilog als dominierende HDLs in der Elektronikindustrie auf, während ältere und weniger fähige HDLs allmählich aus dem Gebrauch verschwanden. VHDL und Verilog teilen jedoch viele der gleichen Einschränkungen, wie z. B. ungeeignet für Analog oder Mischsignalkreis Simulation. Spezialisierte HDLs (z. B. Confluence) wurden mit dem expliziten Ziel eingeführt, spezifische Einschränkungen von Verilog und VHDL festzulegen, obwohl keine jemals ersetzt wurde.

Im Laufe der Jahre wurden große Anstrengungen in die Verbesserung der HDLs investiert. Die neueste Iteration von Verilog, die offiziell als IEEE 1800-2005 Systemverilog bekannt ist, führt viele neue Funktionen (Klassen, Zufallsvariablen und Eigenschaften/Behauptungen) ein, um den wachsenden Bedarf an besseren Bedürfnissen zu befriedigen Prüfstand Randomisierung, Designhierarchie und Wiederverwendung. Eine zukünftige Überarbeitung von VHDL ist ebenfalls in der Entwicklung[wenn?]und wird voraussichtlich die Verbesserungen von Systemverilog übereinstimmen.

Design mit HDL

Infolge der mit HDL realisierten Effizienzgewinne dreht sich ein Großteil des modernen digitalen Schaltungsdesigns darum. Die meisten Designs beginnen als Anforderungen oder ein hochrangiges Architekturdiagramm. Kontroll- und Entscheidungsstrukturen werden häufig in prototypisiert Flussdiagramm Anwendungen oder in a eingegeben Zustandsdiagramm Editor. Der Prozess des Schreibens der HDL -Beschreibung hängt stark von der Art der Schaltung und der Präferenz des Designers für den Codierungsstil ab. Die HDL ist lediglich die "Capture-Sprache", die häufig mit einer algorithmischen Beschreibung auf hoher Ebene beginnt, wie z. B. ein mathematisches C ++-mathematisches Modell. Designer verwenden häufig Skriptsprachen wie Perl automatisch repetitive Schaltungsstrukturen in der HDL -Sprache generieren. Spezielle Textredakteure bieten Funktionen für die automatische Eindringung, syntaxabhängige Färbung und anbieten Makro-basierte Erweiterung der Entitäts-/Architektur-/Signalerklärung.

Der HDL -Code wird dann einer Codeüberprüfung oder Prüfung unterzogen. Zur Vorbereitung auf die Synthese unterliegt die HDL -Beschreibung einer Reihe automatisierter Checker. Die Prüfer melden Abweichungen von standardisierten Code -Richtlinien, identifizieren potenzielle mehrdeutige Codekonstrukte, bevor sie Fehlinterpretationen verursachen können, und prüfen Sie, ob häufige logische Codierungsfehler wie das Gleitlösen geprüft werden können Häfen oder kurzgeschlossen Ausgänge. Dieser Prozess hilft bei der Lösung von Fehlern, bevor der Code synthetisiert wird.

Im Branchengespräch endet das HDL -Design im Allgemeinen in der Synthesestufe. Sobald das Synthese-Tool die HDL-Beschreibung in eine Gate-Netlist zugeordnet hat, wird die Netzliste auf die Back-End-Stufe weitergegeben. Abhängig von der physischen Technologie (FPGA, Asic Gate -Array, Asic Standardzelle) HDLs können eine bedeutende Rolle im Back-End-Fluss spielen oder nicht. Im Allgemeinen wird die Entwurfsdatenbank im Allgemeinen, wenn der Entwurfsfluss zu einer physikalisch realisierbaren Form voranschreitet, zunehmend mit technologisch spezifischen Informationen beladen, die nicht in einer generischen HDL-Beschreibung gespeichert werden können. Schließlich wird eine integrierte Schaltung zur Verwendung hergestellt oder programmiert.

Simulieren und Debuggen von HDL -Code

Wesentlich für das HDL -Design ist die Fähigkeit, HDL -Programme zu simulieren. Die Simulation ermöglicht eine HDL -Beschreibung eines Designs (als Modell bezeichnet) Designüberprüfung, ein wichtiger Meilenstein, der die beabsichtigte Funktion des Designs (Spezifikation) gegen die Code -Implementierung in der HDL -Beschreibung validiert. Es ermöglicht auch die Erkundung der architektonischen Erkundung. Der Ingenieur kann mit Designoptionen experimentieren, indem er mehrere Variationen eines Basisdesigns schreibt und dann sein Verhalten in der Simulation verglichen wird. Simulation ist daher für ein erfolgreiches HDL -Design von entscheidender Bedeutung.

Um ein HDL-Modell zu simulieren, schreibt ein Ingenieur eine Simulationsumgebung auf höchster Ebene (genannt a Prüfstand). Zumindest enthält eine TestBench eine Instanziierung des Modells (als auf Test oder Niederlassung bezeichnet), Pin/Signaldeklarationen für das I/A des Modells und eine Taktwellenform. Der TestBench-Code ist ereignisgesteuert: Der Ingenieur schreibt HDL-Anweisungen, um die (testbench-generierte) Reset-Signal zu implementieren, um Schnittstellentransaktionen (wie ein Host-BUS-Lese-/Schreiben) zu modellieren und die Ausgabe des DUT zu überwachen. Ein HDL -Simulator - das Programm, das die Testbench ausführt - behält die Simulatoruhr, die die Hauptreferenz für alle Ereignisse in der TestBench -Simulation ist. Ereignisse treten nur zu den von der TestBench HDL (z. B. einem in die Testbench codierte Wiedereinsatzgeschäfte codierte Wiedereinsatzstufe) oder in Reaktion (durch das Modell) auf Stimulus und Auslösen von Ereignissen auf. Moderne HDL-Simulatoren haben vollständige Funktionen Grafische Benutzeroberflächen, komplett mit einer Reihe von Debug -Tools. Dadurch können der Benutzer die Simulation jederzeit anhalten und neu starten, Simulator -Haltepunkte (unabhängig vom HDL -Code) einfügen und jedes Element in der HDL -Modellhierarchie überwachen oder ändern. Moderne Simulatoren können die HDL-Umgebung auch mit benutzerkompilierten Bibliotheken durch eine definierte verknüpfen Pli/VHPI -Schnittstelle. Die Verknüpfung ist systemabhängig (x86, Sparc usw. laufen Fenster/Linux/Solaris), wie der HDL -Simulator und die Benutzerbibliotheken außerhalb der HDL -Umgebung zusammengestellt und verknüpft werden.

Die Konstruktionsüberprüfung ist aufgrund der Trennung zwischen dem Gerät häufig der zeitaufwändigste Teil des Entwurfsprozesses funktionale Spezifikation, die Interpretation der Spezifikation durch den Designer und die Ungenauigkeit der HDL -Sprache. Der Großteil des ersten Test-/Debug -Zyklus wird in der HDL durchgeführt Simulator Umwelt, da die frühe Stufe des Designs häufig und schwerwiegende Schaltungsänderungen unterliegt. Eine HDL -Beschreibung kann auch in Hardware prototypisiert und getestet werden - Programmierbare Logikgeräte werden oft für diesen Zweck verwendet. Das Hardware-Prototyping ist vergleichsweise teurer als die HDL-Simulation, bietet jedoch eine reale Ansicht des Designs. Prototyping ist der beste Weg, um die Schnittstelle mit anderen Hardware -Geräten und Hardwareprototypen zu überprüfen. Sogar diejenigen, die mit langsamen FPGAs laufen, bieten viel kürzere Simulationszeiten als reine HDL -Simulation.

Entwurfsprüfung mit HDLs

Historisch gesehen war die Konstruktionsüberprüfung eine mühsame, sich wiederholende Schreibschleife und Laufsimulation Testfälle gegen das zu testende Design. Da die Chip -Designs größer und komplexer geworden sind, hat sich die Aufgabe der Designüberprüfung so weit entwickelt, dass sie jetzt den Zeitplan eines Designteams dominiert. Auf der Suche nach Möglichkeiten zur Verbesserung der Designproduktivität, die elektronische Designautomatisierung Industrie entwickelte die Eigenschaftspezifikationssprache.

Im formelle Überprüfung Begriffe, eine Eigenschaft ist eine sachliche Erklärung über das erwartete oder angenommene Verhalten eines anderen Objekts. Im Idealfall können für eine bestimmte HDL -Beschreibung eine Eigenschaft oder Eigenschaften mit formalen mathematischen Methoden als wahr oder falsch erwiesen werden. In praktischer Hinsicht können viele Immobilien nicht nachgewiesen werden Lösungsraum. Wenn jedoch eine Reihe von operativen Annahmen oder Einschränkungen bereitgestellt wird, kann ein Eigentumsprüfer bestimmte Eigenschaften nachweisen (oder widerlegen), indem sie den Lösungsraum einschränken.

Die Behauptungen modellieren keine Schaltungsaktivität, sondern erfassen und dokumentieren die Absicht des Designers im HDL -Code. In einer Simulationsumgebung bewertet der Simulator alle angegebenen Behauptungen und meldet den Standort und die Schwere der Verstöße. In einer Syntheseumgebung arbeitet das Synthese -Tool normalerweise mit der Politik, die Synthese nach Verstoß zu stoppen. Assertionsbasierte Überprüfung steckt noch in den Kinderschuhen, wird jedoch voraussichtlich ein integraler Bestandteil des HDL -Design -Toolsets.

HDL- und Programmiersprachen

Eine HDL ähnelt einer Software stark Programmiersprache, aber es gibt große Unterschiede. Die meisten Programmiersprachen sind von Natur aus prozedural (Single-Threaded) mit begrenzter syntaktischer und semantischer Unterstützung zu handhaben Parallelität. HDLs dagegen ähneln gleichzeitige Programmierung Sprachen in ihrer Fähigkeit, mehrere parallele Prozesse zu modellieren (wie z. Flip Flops und Addierer) die automatisch unabhängig voneinander ausführen. Jede Änderung der Eingabe des Prozesses löst automatisch ein Update im Prozessstapel des Simulators aus.

Sowohl Programmiersprachen als auch HDLs werden von einem Compiler (oft als Synthesizer im HDL -Fall bezeichnet) verarbeitet, jedoch mit unterschiedlichen Zielen. Für HDLs bezieht sich "zusammenstellen" Logiksynthese; Der Prozess der Umwandlung der HDL -Code -Auflistung in ein physikalisch realisierbares Tor Netzliste. Die NetList-Ausgabe kann eine der vielen Formulare annehmen: eine "Simulation" -Netlist mit Gate-Delay-Informationen, eine "Handoff" -Netlist für die Post-Synthese Platzierung und Routing auf einem Halbleiter sterben oder einem generischen Branchenstandard Elektronisches Design -Austauschformat (EDIF) (für die anschließende Konvertierung zu a JEDEC-Format -Datei).

Andererseits konvertiert ein Software-Compiler die Quellcode-Auflistung in a Mikroprozessor-Spezifischer Objektcode für die Ausführung im Zielmikroprozessor. Da HDLs und Programmiersprachen Konzepte und Merkmale voneinander ausleihen, wird die Grenze zwischen ihnen immer weniger unterschiedlich. Reine HDLs sind jedoch für allgemeine Zwecke ungeeignet Anwendungssoftware Entwicklung,[warum?] genauso wie allgemeine Programmiersprachen sind unerwünscht für die Modellierung von Hardware.

Doch wenn elektronische Systeme immer komplexer werden, und rekonfigurierbare Systeme Wenn Sie immer häufiger werden, wird in der Branche ein wachsender Verlangen nach einer einzigen Sprache gewachsen, die einige Aufgaben sowohl für Hardwaredesign als auch für Softwareprogramme ausführen kann. Systemc ist ein Beispiel für solches -Eingebettetes System Hardware kann als nicht detaillierte architektonische Blöcke modelliert werden (Schwarze Kisten mit modellierten Signaleingängen und Ausgangstreibern). Die Zielanwendung ist in C oder C ++ geschrieben und nativ für das Host-Entwicklungssystem zusammengestellt. im Gegensatz zu der Eingrenzung der eingebetteten CPU, die eine Wirt-Simulation der eingebetteten CPU oder einer emulierten CPU erfordert.

Das hohe Abstraktion von Systemc -Modellen eignet sich gut für früh Architekturforschung, da architektonische Modifikationen leicht bewertet werden können, um Probleme mit der Implementierung von Signalebene zu betreffen. Das in SystemC verwendete Threading -Modell hängt jedoch auf geteilte Erinnerung, was dazu führt, dass die Sprache nicht parallele Ausführung oder Modelle mit niedrigem Niveau bewältigt.

Hochrangige Synthese

In ihrem Abstraktionsniveau wurden HDLs verglichen mit Assemblersprachen. Es gibt Versuche, das Abstraktionsniveau des Hardwaredesigns zu erhöhen, um die Komplexität der Programmierung in HDLs zu verringern, wodurch ein Unterfeld genannt wird hochrangige Synthese.

Unternehmen wie Kadenz, Synops und Agility Design -Lösungen fördern Systemc Um hochrangige Sprachen mit Parallelitätsmodellen zu kombinieren, um schnellere Konstruktionszyklen für zu ermöglichen Fpgas als möglich mit herkömmlichen HDLs. Ansätze basierend auf Standard C oder C ++ (mit Bibliotheken oder anderen Erweiterungen, die eine parallele Programmierung ermöglichen) sind in der Katapult c Werkzeuge von Mentorgrafik, und die Impuls c Werkzeuge von Impulsbeschleunigten Technologien.

Eine ähnliche Initiative aus Intel ist die Verwendung von Daten parallel C ++, bezieht sich auf Syclals hochrangige Synthesesprache.

Annapolis Micro Systems, Inc.'s CoreFire Design Suite[11] und Nationale Instrumente LabView FPGA bietet eine grafische Datenfluss Ansatz zum Auftrag auf hoher Ebene und Sprachen wie z. Systemverilog, Systemvhdl und Händel-C Versuchen Sie, dasselbe Ziel zu erreichen, zielt jedoch darauf ab, vorhandene Hardware -Ingenieure produktiver zu gestalten, anstatt FPGAs für bestehende zugänglicher zu machen Software -Ingenieure.

Es ist auch möglich, Hardwaremodule mithilfe zu entwerfen Matlab und Simulink Verwendung der MathWorks HDL -Codierer -Tool[12] oder DSP Builder für Intel FPGAs[13] oder Xilinx -Systemgenerator (XSG) von Xilinx.[14]

Beispiele für HDLs

HDLs für das analoge Schaltungsdesign

Name Beschreibung
HDL-A Eine proprietäre analoge HDL
Spectrehdl Eine proprietäre analoge HDL von Cadence -Designsysteme für seinen Specter Circuit Simulator
Verilog-Ams (Verilog für analoges und gemischtes Signal) Ein Accellera Standardverlängerung von IEEE STD 1364 Verilog Für analoge und gemischte Signalsimulation
VHDL-AMS (VHDL mit Analog-/Mischsignalverlängerung) Ein IEEE Standard Erweiterung (IEEE STD 1076.1) von VHDL Für analoge und gemischte Signalsimulation

HDLs für digitales Schaltungsdesign

Die beiden am häufigsten verwendeten und gut unterstützten HDL-Sorten in der Industrie sind Verilog und VHDL.

Name Beschreibung
Erweiterte Boolesche Ausdruckssprache (Abel) Veraltete HDL von Daten I/O -Unternehmen 1983
Altera Hardware Beschreibung Sprache (AHDL) eine proprietäre Sprache von Altera
Ahpl Eine Hardware -Programmiersprache
Amaranth bezogen auf Python
Bluespec hochrangiger HDL basierend auf Haskell (Nicht eingebettet DSL)[15]
Bluespec Systemverilog (BSV) Basierend auf Bluespec, mit Verilog Hdl wie syntax, von Bluespec, Inc.
C-to-gerilog Konverter von C zu Verilog
Meißel (Hardware in einer skala eingebetteten Sprache konstruieren)[16] bezogen auf Scala (eingebettet DSL))
Zusammenstoß Konflikt eine moderne, funktionale Hardware -Beschreibung Sprache Clash ist eine funktionale Hardware -Beschreibungssprache, die sowohl ihre Syntax als auch die Semantik aus der funktionalen Programmiersprache Haskell leiht
Colamo (Gemeinsame orientierte Sprache für die Architektur von Multi -Objekten)[17] Eine proprietäre Sprache von „Supercomputer und Neurocomputers Research Center“ Co Ltd.
Zusammenfluss eine funktionale HDL; wurde eingestellt
COWAREC ein C-basierter HDL von Kuhare. Jetzt zugunsten von SystemC eingestellt
CUPL (Compiler für universelle programmierbare Logik)[18] Eine proprietäre Sprache von Logical Devices, Inc.
Ella nicht mehr allgemein verwendet
Esys.net .NET Framework Geschrieben in C#
Händel-C Eine C-ähnliche Designsprache
Hardcaml bezogen auf Ocaml (eingebettete DSL). Versuch es online.
HHDL bezogen auf Haskell (eingebettete DSL).
Hardware beitreten Java (HJJ) bezogen auf Treten Sie Java bei
HML (Hardware ML) bezogen auf Standard ml[19]
Hydra bezogen auf Haskell
Impuls c Ein weiterer C-ähnlicher HDL
ISPs Original HDL von CMU, nicht mehr in der üblichen Verwendung
Parc (parallel C ++) Kusu erweiterte sich mit Threading und Kommunikation im HDL-Stil für Aufgaben-Parallel-Programmierung
JHDL bezogen auf Java
Karl KAISERSLAUTERN REGISTERPRAGHE (Kapitel in),[9] Eine von Pascalish Hardware beschreibende Sprache, die nicht mehr allgemein verwendet wird.
Lava bezogen auf Haskell (eingebettete DSL).[20][21][22][23]
Lola Eine einfache Sprache, die zum Unterrichten verwendet wird
M Ein HDL von Mentorgrafik
Myhdl bezogen auf Python (eingebettet DSL))
Palasm zum Programmierbare Array -Logik (PAL) Geräte
Pipelinec Eine C-ähnliche Hardware-Beschreibung Sprache Hinzufügen Hochrangige Synthese-ähnlich automatische Pipelination als Sprachkonstrukt-/Compiler -Funktion.
Pymtl Basierend auf Python von der Cornell University
Pyrtl Basierend auf Python von der University of California, Santa Barbara
ROCCC (Riverside -Optimierungs -Compiler für konfigurierbares Computing) Kostenloses und Open-Source C zu HDL-Tool
Rhdl basierend auf Ruby -Programmiersprache
ROHD (Rapid Open Hardware Development Framework)[24] Ein Framework für Hardwaredesign und -überprüfung, geschrieben in Pfeil
Ruby (Hardware Beschreibung Sprache)
Systemc Eine standardisierte Klasse von C ++-Bibliotheken für hochrangige Verhaltens- und Transaktionsmodellierung von Digitale Hardware auf hoher Ebene der Abstraktion, d. H. Systemebene
Systemverilog Ein Superset von Verilog mit Verbesserungen zur Bekämpfung von Design und Überprüfung des Systems auf Systemebene
Spinalhdl Basierend auf Scala (eingebettete DSL)
Systemtcl SDL basierend auf TCL.
THDL ++ (Vorlagen HDL inspiriert von C ++) Eine Erweiterung von VHDL mit Vererbung, fortgeschrittenen Vorlagen und Richtlinienklassen
Verik Kotlin neu interpretiert mit der Semantik einer HDL. Es wird in Systemverilog umgesetzt.
Tl-gerilog (Verilog auf Transaktionsebene) Eine Erweiterung von Verilog/Systemverilog mit Konstrukten für Pipelines und Transaktionen.
Verilog Eines der am häufigsten verwendeten und am besten unterstützten HDLs
VHDL (Vhsic HDL) Eines der am häufigsten verwendeten und am besten unterstützten HDLs

HDLs für gedruckte Leiterplatten -Design

Es gibt mehrere Projekte zur Definition gedruckte Leiterplatte Konnektivität mit sprachbasiertem, textuellen Eingangsmethoden.

Name Beschreibung
PhDL (PCB HDL) Eine kostenlose und Open -Source -HDL zur Definition der gedruckten Leiterplattenverbindung
Edasolver Ein HDL zum Lösen von schematischen Entwürfen, die auf Einschränkungen basieren
Skidl Open Source Python -Modul zum Design elektronischer Schaltungen

Siehe auch

Verweise

  1. ^ Ciletti, Michael D. (2011). Erweitertes digitales Design mit Verilog HDL (2. Aufl.). Prentice Hall. ISBN 9780136019282.
  2. ^ Barbacci, M. "Ein Vergleich der Registerübertragungssprachen zur Beschreibung von Computern und digitalen Systemen", Carnegie-Mellon Univ., Abteilung für Informatik, März 1973
  3. ^ Bell, C. G.; Newell, A. (1971). Computerstrukturen: Lesungen und Beispiele. McGraw-Hill. ISBN 0-07-004357-4.
  4. ^ Reilly, E.D. (2003). Meilensteine ​​in Informatik und Informationstechnologie. Greenwood Press. p.183. ISBN 1-57356-521-0.
  5. ^ Bell, C.G.; Grason, J.; Newell, A. (1972). Entwerfen von Computern und digitalen Systemen. Digitale Presse. Lccn 72-89566. OCLC 440245727.
  6. ^ Barbacci, M.C. (1976). "Die symbolische Manipulation von Computerbeschreibungen: ISPL Compiler und Simulator". Abteilung für Informatik, Carnegie-Mellon University. doi:10.1184/r1/6610790.v1. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  7. ^ Barbacci, M.C.; Barnes, G.E.; Cattell, R.G.G.; Siewiorek, D.P. (1977). "Die ISPs Computer Beschreibung Sprache". Abteilung für Informatik, Carnegie-Mellon University. doi:10.1184/r1/6610637.v1. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  8. ^ Girardi, G.; Hartenstein, R. (1983). ABL -Spezifikation (Bericht). Cselt und Universität von Kaiserslauern.
  9. ^ a b Hartenstein, Reiner W. (2012) [1993], "Karl und ABL", in Mermet, J. (Hrsg.), Grundlagen und Standards in Hardware -Beschreibungsprachen, NATO Science Series E, Vol. 249, Springer, S. 447–,, ISBN 9789401119146
  10. ^ Barbacci, M.C.; Mörtel, S.; Lindstrom, G.; Maloney, M.P. (1984). "ADA als Hardware -Beschreibung Sprache: Ein erster Bericht". Abteilung für Informatik, Carnegie-Mellon University. Citeseerx 10.1.1.938.8003. doi:10.1184/r1/6602984.v1. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  11. ^ "VHDL-basierte FPGA-Programmieranwendung Software Tool". Annapolis Micro Systems, Inc.. Abgerufen 2018-12-01.
  12. ^ "VHDL -Code - HDL -Codierer - Matlab & Simulink". MathWorks.com. 2011-04-30. Abgerufen 2012-08-11.
  13. ^ "Digital Signal Processing (DSP) Builder - Intel® FPGAS". Intel. Abgerufen 2021-09-20.
  14. ^ "Systemgenerator für DSP". Xilinx.com. Archiviert von das Original Am 2012-07-12. Abgerufen 2012-08-11.
  15. ^ Eine Geschichte von Haskell: faul im Unterricht zu sein §12.4.2
  16. ^ "Meißel/Firrtl Hardware Compiler Framework".
  17. ^ "Übergeordnete Sprache Colamo | ниц с упп э м нейрокоа & мюютеров".
  18. ^ Eurich, J.P.; Roth, G. (1990). "EDIF wächst". IEEE -Spektrum. 27 (11): 68–72. doi:10.1109/6.62219. S2CID 381119.
  19. ^ Li; Leeser, M. (1995). "HML: Eine innovative Sprache der Hardware -Beschreibung und ihre Übersetzung zu VHDL". Verfahren von ASP-DAC'95/CHDL'95/VLSI'95 mit EDA Technofair. S. 691–696. doi:10.1109/ASPDAC.1995.486388. ISBN 4-930813-67-0. S2CID 14198160.
  20. ^ Chalmers Lava
  21. ^ Xilinx Lava
  22. ^ Kansas Lava
  23. ^ York Lava
  24. ^ "Rapid Open Hardware Development (ROHD) Framework". GitHub. 17. November 2021.

Externe Links