VHDL

VHDL (VHSIC Hardware-Beschreibungssprache) ist eine in der elektronischen Designautomation verwendete Hardware-Beschreibungssprache, um digital und Mischsignal-Systeme wie feldprogrammierbare Tor-Reihe und integrierte Stromkreise zu beschreiben.

Geschichte

VHDL wurde auf das Geheiß des US-amerikanischen Verteidigungsministeriums ursprünglich entwickelt, um das Verhalten des ASICs zu dokumentieren, dessen Lieferant-Gesellschaften in die Ausrüstung einschlossen. Das heißt, wurde VHDL als eine Alternative zu riesigen, komplizierten Handbüchern entwickelt, die mit der Durchführung spezifischen Details unterworfen waren.

Die Idee im Stande zu sein, diese Dokumentation vorzutäuschen, war so offensichtlich attraktiv, dass Logiksimulatoren entwickelt wurden, der die VHDL Dateien lesen konnte. Der nächste Schritt war die Entwicklung von Logiksynthese-Werkzeugen, die den VHDL und die Produktion eine Definition der physischen Durchführung des Stromkreises lesen.

Wegen des Verteidigungsministeriums, das so viel der Syntax wie möglich verlangt, auf Ada zu basieren, um zu vermeiden, Konzepte wiederzuerfinden, die bereits in der Entwicklung von Ada gründlich geprüft worden waren, borgt VHDL schwer aus der Programmiersprache von Ada in beiden Konzepten und Syntax.

Die anfängliche Version von VHDL, der zu IEEE normalen 1076-1987 entworfen ist, hat eine breite Reihe von Datentypen, einschließlich des numerischen (ganze Zahl und echt), logisch (Bit und boolean), Charakter und Zeit plus die Reihe von genannten und von der genannten Schnur eingeschlossen.

Ein Problem, das nicht durch diese Ausgabe jedoch behoben ist, wurde Logik "mehrgeschätzt", wo eine Laufwerk-Kraft eines Signals (niemand, schwach oder stark) und unbekannte Werte auch betrachtet wird. Das hat IEEE Standard 1164 verlangt, der die 9-Werte-Logiktypen definiert hat: Skalar und seine Vektor-Version.

Der aktualisierte IEEE 1076 1993 hat die Syntax konsequenter gemacht, hat mehr Flexibilität im Namengeben erlaubt, hat den Typ erweitert, um ISO-8859-1 druckfähige Charaktere zu erlauben, hat der Maschinenbediener usw. beigetragen.

Geringe Änderungen im Standard (2000 und 2002) haben die Idee von geschützten Typen (ähnlich dem Konzept der Klasse in C ++) hinzugefügt und haben einige Beschränkungen von Hafen-Regeln der kartografisch darstellenden entfernt.

Zusätzlich zum IEEE Standard 1164 wurden mehrere Kinderstandards eingeführt, um Funktionalität der Sprache zu erweitern. IEEE Standard 1076.2 hat das bessere Berühren von echten und komplizierten Datentypen hinzugefügt. IEEE Standard 1076.3 eingeführte unterzeichnete und nicht unterzeichnete Typen, um arithmetische Operationen auf Vektoren zu erleichtern. IEEE Standard 1076.1 (bekannt als VHDL-AMS) hat Analogon und Mischsignal-Stromkreis-Designerweiterungen zur Verfügung gestellt.

Einige andere Standards unterstützen breiteren Gebrauch von VHDL, namentlich LEBENSWICHTIG (VHDL Initiative Zu ASIC Bibliotheken) und Mikrowellenstromkreis-Designerweiterungen.

Im Juni 2006 hat das VHDL Technische Komitee von Accellera (delegiert durch IEEE, um an der folgenden Aktualisierung des Standards zu arbeiten), so genannten Entwurf 3.0 von VHDL-2006 genehmigt. Während er volle Vereinbarkeit mit älteren Versionen aufrechterhält, stellt dieser vorgeschlagene Standard zahlreiche Erweiterungen zur Verfügung, die das Schreiben und Handhaben VHDL leichteren Code machen. Schlüsseländerungen schließen Integration von Kinderstandards (1164, 1076.2, 1076.3) in den 1076 Hauptstandard, einen verlängerten Satz von Maschinenbedienern, die flexiblere Syntax des Falls und der Erzeugungsanweisungen, der Integration von VHPI (Schnittstelle zu C/C ++ Sprachen) und eine Teilmenge von PSL (Eigentumsspezifizierungssprache) ein. Diese Änderungen sollten Qualität von synthesizable VHDL Code verbessern, testbenches flexibler zu machen, und breiteren Gebrauch von VHDL für Systemebene-Beschreibungen zu erlauben.

Im Februar 2008 hat Accellera VHDL 4.0 auch informell bekannt als VHDL 2008 genehmigt, der mehr als 90 Probleme gerichtet hat, die während der Probezeit für die Version 3.0 entdeckt sind, und erhöhte allgemeine Typen einschließt. 2008 hat Accellera VHDL 4.0 zum IEEE veröffentlicht, um für die Einschließung in IEEE 1076-2008 abzustimmen. Der VHDL normale IEEE 1076-2008 wurde im Januar 2009 veröffentlicht.

Design

VHDL wird allgemein verwendet, um Textmodelle zu schreiben, die einen Logikstromkreis beschreiben. Solch ein Modell wird durch ein Synthese-Programm nur bearbeitet, wenn es ein Teil des Logikdesigns ist. Ein Simulierungsprogramm wird verwendet, um das Logikdesign mit Simulierungsmodellen zu prüfen, um die Logikstromkreise zu vertreten, die zum Design verbinden. Diese Sammlung von Simulierungsmodellen wird einen testbench allgemein genannt.

VHDL hat Konstruktionen, um den Hardware-Designs innewohnenden Parallelismus zu behandeln, aber diese Konstruktionen (Prozesse) unterscheiden sich in der Syntax von den parallelen Konstruktionen in Ada (Aufgaben). Wie Ada wird VHDL stark getippt und ist nicht empfindlicher Fall. Um Operationen direkt zu vertreten, die in der Hardware üblich sind, gibt es viele Eigenschaften von VHDL, die in Ada wie ein verlängerter Satz von Maschinenbedienern von Boolean einschließlich nand nicht gefunden werden und noch. VHDL erlaubt auch Reihe, entweder in der steigenden oder in hinuntersteigenden Richtung mit einem Inhaltsverzeichnis versehen zu werden; beide Vereinbarung wird in der Hardware verwendet, wohingegen in Ada und den meisten Programmiersprachen, die nur das Indexieren ersteigen, verfügbar ist.

VHDL ließ Datei und Produktionsfähigkeiten eingeben, und kann als eine Allzwecksprache für die Textverarbeitung verwendet werden, aber Dateien werden durch eine Simulation testbench für den Stimulus oder die Überprüfungsdaten allgemeiner verwendet. Es gibt einige VHDL Bearbeiter, die rechtskräftige Dualzahlen bauen. In diesem Fall könnte es möglich sein, VHDL zu verwenden, um einen testbench zu schreiben, um die Funktionalität des Designs mit Dateien auf dem Gastgeber-Computer nachzuprüfen, um Stimuli zu definieren, mit dem Benutzer aufeinander zu wirken, und Ergebnisse mit denjenigen zu vergleichen, die erwartet sind. Jedoch verlassen die meisten Entwerfer diesen Job zum Simulator.

Es ist für einen unerfahrenen Entwickler relativ leicht, Code zu erzeugen, der erfolgreich vortäuscht, aber das kann in ein aktuelles Gerät nicht synthetisiert werden oder ist zu groß, um praktisch zu sein. Eine besondere Falle ist die zufällige Produktion von durchsichtigen Klinken aber nicht D-Typ-Zehensandalen als Speicherelemente.

Man kann Hardware in einem VHDL IDE (für die FPGA Durchführung wie Xilinx ISE, Altera Quartus, Synopsys Synplify oder Mentor Graphics HDL Entwerfer) entwerfen, um den RTL schematischen vom gewünschten Stromkreis zu erzeugen. Danach kann das erzeugte schematische mit der Simulierungssoftware nachgeprüft werden, die die Wellenformen von Eingängen und Produktionen des Stromkreises nach dem Erzeugen des passenden testbench zeigt. Um einen passenden testbench für einen besonderen Stromkreis oder VHDL-Code zu erzeugen, müssen die Eingänge richtig definiert werden. Zum Beispiel, für den Uhr-Eingang, einen Schleife-Prozess oder eine wiederholende Behauptung ist erforderlich.

Ein Endpunkt ist, dass, wenn ein VHDL Modell in die "Tore und Leitungen" übersetzt wird, die auf ein programmierbares Logikgerät wie ein CPLD oder FPGA dann kartografisch dargestellt werden, es die wirkliche Hardware ist, die, aber nicht der VHDL-Code wird konfiguriert, der als ob auf einer Form eines Verarbeiter-Spans wird durchführt.

Vorteile

Der Schlüsselvorteil von VHDL, wenn verwendet, für das Systemdesign, besteht darin, dass es dem Verhalten des erforderlichen Systems erlaubt (modelliert) beschrieben und (vorgetäuscht) nachgeprüft zu werden, bevor Synthese-Werkzeuge das Design in die echte Hardware (Tore und Leitungen) übersetzen.

Ein anderer Vorteil ist, dass VHDL die Beschreibung eines gleichzeitigen Systems erlaubt. VHDL ist eine dataflow Sprache, verschieden von Verfahrensrechensprachen solcher als GRUNDLEGEND, C, und Zusammenbau-Code, der der ganze Lauf folgend, eine Instruktion auf einmal.

VHDL Projekt ist Mehrzweck-. Einmal geschaffen, kann ein Berechnungsblock in vielen anderen Projekten verwendet werden. Jedoch können viele formational und funktionelle Block-Rahmen (Höchstrahmen, Speichergröße, Element-Basis, Block-Zusammensetzung und Verbindungsstruktur) abgestimmt werden.

VHDL Projekt ist tragbar. Für eine Element-Basis geschaffen, kann ein Rechengerät-Projekt auf einer anderen Element-Basis, zum Beispiel VLSI mit verschiedenen Technologien getragen werden.

Designbeispiele

In VHDL besteht ein Design an einem Minimum einer Entität, die die Schnittstelle und eine Architektur beschreibt, die die wirkliche Durchführung enthält. Außerdem importieren die meisten Designs Bibliotheksmodule. Einige Designs enthalten auch vielfache Architekturen und Konfigurationen.

Ein einfacher UND Tor in VHDL würden etwas wie schauen

- (das ist eine VHDL-Anmerkung)

- importieren Sie std_logic von der IEEE Bibliothek

Bibliothek IEEE;

verwenden Sie IEEE.std_logic_1164.all;

- das ist die Entität

Entität ANDGATE ist

Hafen (

I1: in std_logic;

I2: in std_logic;

O: std_logic);

Endentität ANDGATE;

- das ist die Architektur

Architektur RTL von ANDGATE ist

beginnen Sie

O

(Bemerken Sie, dass das für Register-Übertragungsniveau-Design eintritt.), Während das Beispiel oben sehr wortreich HDL Anfängern scheinen kann, sind viele Teile entweder fakultativ oder müssen nur einmal geschrieben werden. Allgemein einfache Funktionen wie das sind ein Teil eines größeren Verhaltensmoduls, anstatt ein getrenntes Modul für etwas so Einfaches zu haben. Außerdem könnte der Gebrauch von Elementen wie der Typ zuerst scheinen, ein Übermaß zu sein. Man konnte den eingebauten Typ leicht verwenden und den Bibliotheksimport am Anfang vermeiden. Jedoch, mit dieser 9 geschätzten Logik statt einfacher Bit (0,1) Angebote eine sehr starke Simulation und bei Werkzeug dem Entwerfer die Fehler beseitigend, der zurzeit in keinem anderen HDL besteht.

In den Beispielen, die folgen, werden Sie sehen, dass VHDL-Code in einer sehr kompakten Form geschrieben werden kann. Jedoch vermeiden die erfahrenen Entwerfer gewöhnlich diese Kompaktformen und verwenden einen wortreicheren Codierstil wegen der Lesbarkeit und Haltbarkeit. Ein anderer Vorteil für den wortreichen Codierstil ist der kleinere Betrag von verwendeten Mitteln, wenn er an ein Programmierbares Logikgerät wie ein CPLD programmiert.

Konstruktionen von Synthesizeable und VHDL Schablonen

VHDL wird oft für zwei verschiedene Absichten verwendet: Simulation von elektronischen Designs und Synthese solcher Designs. Synthese ist ein Prozess, wo ein VHDL kompiliert und in eine Durchführungstechnologie wie ein FPGA oder ein ASIC kartografisch dargestellt wird. Viele FPGA Verkäufer haben frei (oder billig) Werkzeuge, um VHDL für den Gebrauch mit ihren Chips zu synthetisieren, wo ASIC Werkzeuge häufig sehr teuer sind.

Nicht alle Konstruktionen in VHDL sind für die Synthese passend. Zum Beispiel, die meisten Konstruktionen, die sich ausführlich mit Timing von befassen, die nicht synthesizable sind trotz, gültig für die Simulation zu sein. Während verschiedene Synthese-Werkzeuge verschiedene Fähigkeiten haben, dort besteht eine allgemeine synthesizable Teilmenge von VHDL, der definiert, was Sprachkonstruktionen und Idiome in die allgemeine Hardware für viele Synthese-Werkzeuge kartografisch darstellen. IEEE 1076.6 definiert eine Teilmenge der Sprache, die als die offizielle Synthese-Teilmenge betrachtet wird. Es wird allgemein als eine "beste Praxis" betrachtet, um sehr idiomatischen Code für die Synthese zu schreiben, weil Ergebnisse falsch oder für Sonderkonstruktionen suboptimal sein können.

Einige Beispiele des Synthesizable-Codes folgen unten:

MUX Schablone

Der multiplexer oder 'MUX', wie es gewöhnlich genannt wird, ist eine einfache im Hardware-Design sehr übliche Konstruktion. Das Beispiel demonstriert unten einfache zwei zu einem MUX, mit Eingängen und, Auswählender und Produktion. Bemerken Sie, dass es viele andere Weisen gibt, denselben MUX in VHDL auszudrücken.

Klinke-Schablone

Eine durchsichtige Klinke ist grundsätzlich ein Bit des Gedächtnisses, das aktualisiert wird, wenn ein ermöglichen Signal erhoben wird. Wieder gibt es viele andere Weisen, wie das in VHDL ausgedrückt werden kann.

- Klinke-Schablone 1:

Q

D-Typ-Zehensandalen

Die D-Typ-Zehensandale-Proben ein eingehendes Signal beim Steigen (oder fallender Rand) einer Uhr. Dieses Beispiel hat ein asynchrones, aktiv-hohes Rücksetzen und Proben am steigenden Uhr-Rand.

DFF: Prozess (RST, CLK)

beginnen Sie

wenn RST = '1' dann

Q

Eine andere allgemeine Weise, Rand-ausgelöstes Verhalten in VHDL zu schreiben, ist mit dem 'Ereignis'-Signalattribut. Ein einzelner Apostroph muss zwischen dem Signalnamen und dem Namen des Attributes geschrieben werden.

DFF: Prozess (RST, CLK)beginnen Sie wenn RST = '1' dann Q

Beispiel: ein Schalter

Das folgende Beispiel ist ein Gegen-mit dem asynchronen Rücksetzen, der parallelen Last und der konfigurierbaren Breite. Es demonstriert den Gebrauch des 'nicht unterzeichneten' Typs, der Typ-Konvertierungen zwischen 'dem nicht unterzeichneten' und 'std_logic_vector' und VHDL generics. Die generics sind sehr Argumenten oder Schablonen auf anderen traditionellen Programmiersprachen wie C ++ nah.

Bibliothek IEEE;verwenden Sie IEEE.std_logic_1164.all;

verwenden Sie IEEE.numeric_std.all; - für den nicht unterzeichneten Typ

Entitäts-SCHALTER ist

allgemein (

BREITE: im natürlichen: = 32);

Hafen (

RST: in std_logic;

CLK: in std_logic;

LAST: in std_logic;

DATEN: in std_logic_vector (BREITE 1 downto 0);

Q: std_logic_vector (BREITE 1 downto 0));

Endentitäts-SCHALTER;

Architektur RTL des SCHALTERS ist

Signal CNT: nicht unterzeichnet (BREITE 1 downto 0);

beginnen Sie

Prozess (RST, CLK) ist

beginnen Sie

wenn RST = '1' dann

CNT

elsif rising_edge (CLK) dann

wenn LAST = '1' dann

CNT

Kompliziertere Schalter können if/then/else Behauptungen innerhalb hinzufügen, um hinzuzufügen, dass andere Funktionen, wie Zählung ermöglicht, anhaltend oder sich an einem Wert der Zählung herumwälzend, Produktionssignale wie Endsignale der Zählung erzeugend, usw. muss Sorge mit der Einrichtung und dem Nisten solcher Steuerungen, wenn verwendet, zusammen genommen werden, um die gewünschten Prioritäten zu erzeugen und die Zahl von erforderlichen Logikniveaus zu minimieren.

Simulation-Only-Konstruktionen

Eine große Teilmenge von VHDL kann in die Hardware nicht übersetzt werden. Diese Teilmenge ist als der non-synthesizable oder die Simulation-Only-Teilmenge von VHDL bekannt und kann nur für prototyping, Simulation und das Beseitigen verwendet werden. Zum Beispiel wird der folgende Code eine Uhr mit der Frequenz von 50 MHz erzeugen. Es kann zum Beispiel verwendet werden, um einen Uhr-Eingang in einem Design während der Simulation zu steuern. Es, ist jedoch, eine Simulation-Only-Konstruktion und kann in der Hardware nicht durchgeführt werden. In der wirklichen Hardware wird die Uhr äußerlich erzeugt; es kann innerlich durch die Benutzerlogik oder hingebungsvolle Hardware heruntergeschraubt werden.

Prozess

beginnen Sie

CLK

Die Simulation-Only-Konstruktionen können verwendet werden, um komplizierte Wellenformen in der sehr kurzen Zeit zu bauen. Solche Wellenform kann zum Beispiel als Testvektoren für ein kompliziertes Design oder als ein Prototyp von etwas Synthesizer-Logik verwendet werden, die in der Zukunft durchgeführt wird.

Prozessbeginnen Sie

warten Sie bis zum ANFANG = '1'; - warten, bis ANFANG hoher ist

weil ich in 1 bis 10 Schleife - dann seit ein paar Uhr-Perioden warte...

warten Sie bis rising_edge (CLK);

Endschleife;

weil ich in 1 bis 10 Schleife -schreiben Nummern 1 bis 10 DATEN, 1 jeder Zyklus

DATEN

Siehe auch

Weiterführende Literatur

  • Bryan Mealy, Fabrizio Tappero (Februar 2012). "Freiland-VHDL". Das Handbuch ohne Rüschen zum Schreiben starken VHDL codiert für Ihre Digitaldurchführungen. freerangefactory.org.
  • - Sandstrom präsentiert einen Tisch, der VHDL Konstruktionen mit Konstruktionen von Verilog verbindet.
  • Janick Bergeron, "Testbenches Schreibend: Funktionelle Überprüfung von HDL Modellen", 2000, internationale Standardbuchnummer 0-7923-7766-4. (Der HDL Testbench Bibel)

Außenverbindungen


Agrippina / VHSIC
Impressum & Datenschutz