In diesem VHDL-Tutorial besprechen wir einige der grundlegenden Konzepte im Zusammenhang mit der VHDL-Technologie und einige Beispiele für die Codierung. Das VHDL-Tutorial ist wie folgt unterteilt:
THEMEN DER DISKUSSION
A. Was ist VHDL?
B. Geschichte und Standardisierung
C. VHDL-Entwurfsverfahren
D. Einige Regeln und grundlegende Informationen zu VHDL
E. Syntax & einige wichtige Konzepte zum Schreiben von VHDL-Codes
F. VHDL-Simulatoren für das VHDL-Lernprogramm
VHDL || Was ist VHDL?
Die vollständige Form von VHDL steht für VHSIC-HDL (Very High Speed Integrated Circuit Hardware Description Language).
Wie der Name schon sagt, ist VHDL eine Hardwarebeschreibungssprache oder eine spezielle Art von Programmiersprache, die die Hardwareimplementierungen von digitalen Systemen und Schaltungen beschreibt. Es ist eine stark typisierte Sprache und weist darauf hin, dass es sich nicht um eine Programmiersprache handelt.
Geschichte und Standardisierung
Das US-Verteidigungsministerium leistet einen bedeutenden Beitrag zum modernen Technologiefeld. Es hat zu viele großartige Ideen und Innovationen hervorgebracht. US Defence entwickelte im Jahr 1983 auch VHDL. Es wurde zur Dokumentation des Verhaltens der anwendungsspezifischen integrierten Schaltkreise entwickelt.
Später wurden einige Ideen aus Ada-Programmiersprachen umgesetzt. VHDL wurde zum ersten Mal im Jahr 1987 standardisiert. Es wurden mehrere Datentypen verschiedener Typen hinzugefügt, darunter Zeichenfolgen sowie numerische und logische.
Standardisierung
VHDL oder für Hardwarebeschreibungssprachen für integrierte Hochgeschwindigkeitsschaltungen (VHSIC-HDL) ist durch den Standard IEEE 1076 standardisiert. Es wird von Geburt an aktualisiert und hat viele Überarbeitungen erfahren. Schauen wir uns einige der Standardrevisionen und wichtigen Updates an.
Überarbeitungen | Updates |
IEEE 1076 - 1987 | Überarbeitung und Standardisierung durch die US-Verteidigung. |
IEEE 1076 - 1993 | Kam mit der größten Veröffentlichung und es ist die am weitesten verbreitete Version. |
IEC 61691 -1-1-1: 2004 | Die IEC hat die IEEE 1076-2002-Version übernommen |
IEEE 1076-2008 | Aktualisiert mit einigen wichtigen Änderungen wie - Einführung von Generika in Paketen und Verwendung externer Namen |
IEC 61691 -1-1-1: 2011 | Die IEC hat die IEEE 1076-2008-Version übernommen |
Design von VHDL
Das VHDL-Design hat einige Designeinheiten. Sie sind bekannt als - Entität, Architektur, Konfiguration und Paket.
Entität: Entität definiert externe Ansichten eines Modells, das ein Symbol ist.
Die Architektur: Architektur definiert die Funktionalität eines Modells, das schematisch ist.
Konfiguration: Die Konfiguration wird zum Zuordnen der Architektur zu einer Entität verwendet.
Paket: Paket ist die Sammlung von Informationen, auf die VHDL-Module verweisen können. Ein VHDL-Paket besteht aus zwei Teilen. Sie sind - Paketdeklaration und Paketkörper.
Entitätserklärung
Die allgemeine Struktur der Entitätsdeklaration ist unten angegeben -
ENTITÄT < Entitätsname > IS
Allgemeine Erklärungen
Hafenerklärungen
ENDE ENTITÄT <Entitätsname>;
- kann alphabetisch / numerisch oder alphanumerisch sein.
- Generische Deklarationen dienen zur Übergabe von Informationen an ein Modell.
- Port Declarations dient zur Beschreibung der Eingangs- und Ausgangspins.
- Eine Entität kann auf verschiedene Arten geschlossen werden.
- ENDE ENTITÄT <Entitätsname>;
- ENDE ENTITÄT;
- ENDE;
Hafenerklärungen
Eine allgemeine Struktur für Hafendeklarationen ist unten angegeben -
ENTITÄT < Entitätsname > IS
Allgemeine Erklärungen
- Hafenerklärungen:
PORT (
SIGNAL CLK, CLR: IM BIT;
q: AUS BIT
- Beachten Sie, dass die letzte Zeile der Deklarationen kein Semikolon enthält.
);
ENDE ENTITÄT <Entitätsname>;
Die Struktur der Hafendeklaration: Objekt_Name :: ;;
- Klasse: Klasse ist das, was mit einem Objekt gemacht werden kann. Hier ist Klasse Signal. Ein Punkt, an den man sich erinnern sollte, dass das SIGNAL beim Schreiben des Programms nicht geschrieben wird. Vielmehr wird davon ausgegangen, dass dies nicht erforderlich ist.
- Objektname: Es ist die Kennung.
- Modus: Es gibt die Richtung an.
IM - zufuhr
AUS - Output
EINGANG - bidirektionale
PUFFER - Ausgabe mit internem Feedback
- Typ: Typ gibt an, was in einem Objekt enthalten sein kann.
Allgemeine Erklärungen
Eine allgemeine Struktur allgemeiner Deklarationen ist unten angegeben -
ENTITÄTEntitätsname> IS
GENERISCH (
KONSTANTE tplh, tphl: Zeit := 5 ns;
tphz, tplz: ZEIT := 3ns;
default_value: INTEGER: = 1;
cnt_dir: STRING := "OBEN"
- Beachten Sie, dass die letzte Zeile der Deklarationen kein Semikolon enthält.
);
Hafenerklärungen
ENDE ENTITÄTEntitätsname>;
- Generische Werte können beim Kompilieren überschrieben werden.
- Generic muss während der Kompilierung eines Programms die Konstanz einer Konstanten besitzen.
Beachten Sie, dass das Schlüsselwort CONSTANT angenommen wird und nicht zum Schreiben erforderlich ist.
Architektur
- Analogie-Schema: Das Analogie-Schema beschreibt die Funktionalität eines Modells und das damit verbundene Timing.
- Die Architektur eines Modells sollte mit einer ENTITY verknüpft sein.
- Einer Entität können viele Architekturen zugeordnet sein.
- Architekturanweisungen werden gleichzeitig ausgeführt.
- Einige Architekturstile -
- Verhalten: Das Verhaltensmodell beschreibt die Funktionsweise von Designs.
RTL: RTL beschreibt, wie Designs mithilfe von Registern implementiert werden können.
Funktional: Es enthält kein Timing.
- Strukturell: Implementierung der Gate-Level-Struktur.
- Datenfluss: Implementierung der Wahrheitstabelle.
- Architektur endet mit -
- END ARCHITEKTUR ;;
- ENDARCHITEKTUR
- ENDE;
Eine allgemeine Struktur zum Schreiben einer Architektur:
ARCHITEKTUR <Kennzeichnung> OF <Entity_Identifier> IS
SIGNAL signal_1: INTEGER: = 1;
KONSTANTE cnst: = BOOLEAN: = true;
TYPE-Prozess IST (W, X, Y, Z);
- Attributdeklarationen
- Attributspezifikationen
- Unterprogrammdeklarationen
- Unterprogrammkörper
START
Prozessanweisungen
Gleichzeitige Verfahrensaufrufe
Signalzuordnung
Anweisungen generieren
ENDARCHITEKTUR <Kennzeichnung>;
Konfiguration
Wie bereits erwähnt, ein früherer cDie Konfiguration wird zum Zuordnen der Architektur zu einer Entität verwendet. Das Zuordnen oder Kombinieren ist erforderlich, da eine ENTITY erst funktionieren kann, wenn die Architektur mit ihr verknüpft ist. Eine allgemeine Struktur der Konfiguration ist unten angegeben.
CONFIGURATION < Kennzeichnung > OF < Entitätsname > IS
FÜR < Architekturname >
FÜR < Instanzname >: Komponentenname > VERWENDUNG < Einheit > (( Architektur >)
ENDE FÜR;
FÜR < Instanzname >: Komponentenname > VERWENDUNG < Konfigurationsname >
ENDE FÜR;
ENDE FÜR;
ENDKONFIGURATION < Kennzeichnung >;
Angebote
VHDL-Pakete sind eine ganze Einheit eines gesamten Systems. Es ist das Hauptziel der Implementierung von VHDL. Ein Paket besteht aus zwei Teilen. Wie bereits erwähnt, bilden Paketdeklarationen und Paketkörper ein vollständiges Paket.
VHDL liefert zwei integrierte Pakete.
Einige Regeln und grundlegende Informationen zum VHDL-Lernprogramm
Lassen Sie uns einen Blick auf einige grundlegende Informationen werfen, bevor wir uns mit dem VHDL-Tutorial befassen.
1. Reservierte Schlüsselwörter: VHDL hat einige Schlüsselwörter als reserviert (die nicht zum Deklarieren einer Variablen verwendet werden können).
2. Teile: VHDL besteht aus zwei Schritten oder Teilen für die Erstellung eines Modells. Eines ist Simulation und das andere ist Synthese und Simulation.
3. Groß- und Kleinschreibung beachten: VHDL ist keine Sprache, bei der zwischen Groß- und Kleinschreibung unterschieden wird (größtenteils).
4. Kommentar: Um eine Anweisung im VHDL-Code-Editor zu kommentieren, beginnen Sie den Satz mit -, zum Beispiel:
- Dies ist ein Kommentar in VHDL.
5. Beendigung: VHDL-Codes und jede einzelne Codezeile werden mit einem Semikolon abgeschlossen (wann immer dies erforderlich ist).
6. Raumempfindlichkeit: VHDL ist nicht weißraumempfindlich.
Syntaxen und einige wichtige VHDL-Lernkonzepte zum Schreiben von VHDL-Codes
- Array mit Beispielen
- Prozess mit Beispielen
- IF-THEN-ELSIF-Implementierung mit Beispielen.
- CASE-Anweisung
- FÜR LOOP
A. Anordnung
Array speichert Wert. Es ist ein benutzerdefinierter Datentyp zum Speichern von Werten. Ein Array kann Signalvariablen vom Typ Konstanten enthalten.
Eine allgemeine Struktur zum Deklarieren eines Arrays ist unten angegeben:
TYP Array-Name IS ARRAY (Angebot) OF Datentyp;
Zum Beispiel,
TYP lambdageeks IST ARRAY (0 bis 9) VON std_logic_vector (0 bis 9);
B. Prozessanweisung
Prozess ist eine simultane und synchronisierte Anweisung. Es werden die chronologischen Aussagen vorgestellt. Bei Bedarf werden mehrere Prozesse parallel ausgeführt.
Ein Prozess besteht aus zwei Teilen. Sie sind die Ausführung des Prozesses und warten dann auf die nächste Bedingung.
SYNTAX:
Prozessdefinierung sensitivitätsliste
Erklärungen
beginnen
chronologische_Anweisungen;
Prozess beenden;
C. IF - THEN - ELSIF-Implementierung
Diese Anweisungen werden zur Implementierung einer Bedingung und für deren Ergebnis verwendet.
Eine if-Bedingung kann gemäß der Anforderung eine unendliche Anzahl von Zweigen haben. Eine beträchtliche Anzahl anderer Bedingungen ist ebenfalls möglich. In einer if-Schleife kann es jedoch nur eine andere Bedingung geben. Eine if-Schleife wird durch die end if-Anweisung beendet. Wenn die Bedingung erfüllt ist, tritt sie in die Schleife ein und führt die Anweisung aus. Wenn dies fehlschlägt, wählen Sie die Anweisung else oder elsif.
Die Syntax der Anweisungen ist unten angegeben.
SYNTAX
if bedingter_boolescher_Ausdruck dann
Aussage1
sonst bedingter_boolescher_Ausdruck dann
Aussage2
. . .
sonst
Aussage3
Ende if;
D. CASE-Erklärung
Die case-Anweisung findet heraus, welche Anweisung ausgeführt wird. Eine case-Anweisung kann auch als IF-ELSE-Schleife verzweigt werden.
SYNTAX
[Etikette]: Häuser < bedingter Ausdruck > is
wann < Wahl> =>
Aussage1
wann <Wahl> =>
Aussage2
...
wann <Wahl> =>
Aussage
Ende Häuser [Etikette];
E. FOR-Schleife
Eine for-Schleife ist eine kontinuierliche Ausführung von Anweisungen gemäß den Randbedingungen.
Für jede FOR-Schleife benötigen wir einen Iterator, der die Operationen in der for-Schleife ausführt. Es wird auch als Kennung bezeichnet. Es ist standardmäßig eine Ganzzahl und es ist nicht erforderlich, den Iterator zu deklarieren. Es ist eine der am häufigsten verwendeten Schleifen zur Erstellung komplexer Modelle. Es ist vertrauter als while-Schleifen.
SYNTAX
[Etikette]: für Iterator in Angebot Schleife
Aussage1
Aussage2
...
Aussage n
Endschleife [Etikette];
VHDL-Simulatoren für VHDL-Lernprogramm
Einige der berühmten VHDL-Simulatoren, die für die Implementierung von VHDL verwendet werden, sind unten aufgeführt.
- Xilinx-Vivado: Der bekannteste Simulator für VHDL ist Xilinx Vivado. Xilinx bietet programmierbare Logikbausteine. Wir werden diesen Simulator für den nächsten Teil des VHDL-Tutorials verwenden.
- Trittfrequenz einschneidend: Die vorherige Version war als NC-VHDL bekannt.
- VHDL-Simili: Symphony EDA entwickelt es. Es ist kostenlos für Verbraucher.
- GHDL: Einer der bekanntesten kostenlosen VHDL-Simulatoren.
- Boot: Freerangefactory Organisation entwickelte den Simulator.
- NVC: Nick Gasson hat den OpenSource-VHDL-Compiler entwickelt.
- EDA-Spielplatz: Eine weitere kostenlose Version, die auf einem Webbrowser basiert.
- Inhaltsangabe VCS-MX.
Machen Sie Ihr erstes Projekt mit VHDL. Lesen Sie den nächsten Teil des VHDL-Tutorials.
Weitere Artikel zum Thema Elektronik finden Sie unter hier!
Hallo, ich bin Sudipta Roy. Ich habe einen B. Tech in Elektronik gemacht. Ich bin ein Elektronik-Enthusiast und widme mich derzeit dem Bereich Elektronik und Kommunikation. Ich habe großes Interesse an der Erforschung moderner Technologien wie KI und maschinellem Lernen. Mein Ziel ist es, allen Lernenden genaue und aktuelle Daten zur Verfügung zu stellen. Es macht mir große Freude, jemandem beim Wissenserwerb zu helfen.
Vernetzen wir uns über LinkedIn –