Verilog Tutorial: Diskussionspunkte
- Was ist Verilog?
- Geschichte und Standardisierung
- Verilog-Design
- Verilog-Modellierung
- Verilog-Operatoren
Für andere Themen im Zusammenhang mit Verilog Tutorial, Klicken Sie hier!
Was ist Verilog?
Verilog ist die Kombination der Begriffe "Verifikation" und "Logik". Es ist 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.
Für ein schrittweises VHDL-Tutorial: Klicken Sie hier!
Geschichte und Standardisierung von Verilog
Prabhu Goel, Chi-Lai Huang, Douglas Warmke und Phil Moorby entwickelten den Verilog zwischen 1983 und 1984. Der Vorname war "Automated Integrated Design Systems", das weiter in "Gateway Design Automation" umbenannt und 1990 von Cadence gekauft wurde. Cadence ist jetzt der Urheberrechtsinhaber von Verilog und Verilog-XL.
In erster Linie wurde Verilog verwendet, um die Simulation zu definieren und zu starten. Später weckte die Popularität der Sprache die Nachfrage nach mehr Entwicklung und führte zur Synthese der Logikschaltungen.
Verilog-Tutorial: Standardisierung
Die Popularität für VHDL erzwungene Kadenz, die Verilog-Sprache als Open Source zu veröffentlichen. Die erste Standardisierung von Verilog durch IEEE wurde als 1364-1995 bezeichnet und als Verilog-95 bezeichnet.
Überarbeitungen | Updates |
IEEE 1364 - 2001 | Verilog-2001. Unterstützt signierte Variablen und Nest. Wird hauptsächlich von EDA-Paketen verwendet. |
IEEE 1364-2005 | Verilog 2005. Kam mit kleinen Korrekturen und Klarstellungen. |
IEEE P1800-2005 | System-Verilog. |
IEEE 1800-2017 | Fusion von SystemVerilog und Verilog. Bekannt als SystemVerilog 2009. |
Verilog-Design
Verilog verfügt über zwei Arten von Entwurfsmethoden. Sie sind - Bottom-up-Ansatz und Top-down-Ansatz.
Bottom-up-Ansatz: Es ist die herkömmliche Art, Modelle zu entwerfen. Die Planung wird auf Gate-Ebene durchgeführt. Typische Gates werden für Implementierungen verwendet. Diese Methode eröffnet Wege für unterschiedliche strukturelle und geordnete Planungen.
Top-down-Ansatz: Dieser Ansatz hat einige Vorteile gegenüber dem herkömmlichen. Änderungen können hier erleichtert werden. Frühe Tests sind ebenfalls möglich.
Verilog-Modellierung
Die Verilog-Modellierung enthält einige Designeinheiten. Lassen Sie uns die Hauptkomponenten diskutieren.
A. Modul
Ein Verilog-Modell enthält Portdeklarationen, Datentypdeklarationen, Schaltungsfunktionen und Zeitspezifikationen. Eine Grundstruktur des Moduls ist unten angegeben.
- Verilog unterscheidet zwischen Groß- und Kleinschreibung.
- Reservierte Schlüsselwörter werden in Kleinbuchstaben geschrieben.
- Ein Semikolon wird verwendet, um die Anweisung zu beenden.
- Die Kommentarregel entspricht der Programmiersprache C.
- Einzeiliger Kommentar beginnt mit "//".
Beispielsweise - // Beispiel eines einzeiligen Verilog-Kommentars
- Mehrzeilige Kommentare beginnen mit - '/ *' und enden mit '* /'.
Beispielsweise -
/ * Beispiel
Von Verilog mehrfach
Zeilenkommentar * /
- Timing-Spezifikationen werden für den Simulationsprozess verwendet.
Ein Modul besteht aus maximal vier Begriffsebenen. Die Ebenen sind unten definiert.
Verhalten: Die höchste Ebene der Vorstellung. Das erwartete Design ist auf dieser Ebene geplant. Es gibt jedoch keinen Gedanken für Hardware-Implementierungen.
Datenfluss: Diese Ebene des Verilog-Moduls beschreibt den Datenfluss des gewünschten Designs. Hardware-Implementierungen des Datenflusses durch Komponenten werden beim Entwerfen dieser Ebene berücksichtigt.
Tor: Logikgatter sind in dieser Verilog-Modulebene implementiert. Verbindungen werden zwischen den Toren implementiert.
Schalter: Die niedrigste Ebene der Vorstellung. Schalter, Speicherklumpen sind implementiert. Die Verbindungen sind auch zwischen ihnen ausgelegt.
B. Moduldeklarationen
Moduldeklarationen beginnen mit 'Modulen' Stichwort. Es enthält eine Portliste (falls vorhanden).
Porttypen: Es gibt drei Arten von Ports. Der Name und seine Funktionalität sind unten angegeben.
- Eingabe - Eingangsanschluss
- Ausgabe - Ausgangsanschluss
- inout - bidirektionaler Hafen
Hafenerklärungen: Die allgemeine Struktur für Hafendeklarationen ist unten angegeben.
<port_typ>Portname>;
C. Datentypen
In Verilog gibt es verschiedene Arten von Datentypen.
Nettodatentyp: Diese Art von Daten beschreibt die physikalische Wechselbeziehung zwischen Flüssen.
Netze -> Funktionsblock: MUX -> Funktionsblöcke: Addierer -> Netze
Die folgende Tabelle enthält weitere Details zum Net-Datentyp.
Typ | Charakterisierung |
Draht | Beschreibt Knoten oder Verbindungen |
drei | Beschreibt einen Drei-Zustands-Knoten |
Versorgung0 | Repräsentiert Logik 0 |
versorgung1 | Repräsentiert Logik 1 |
- Busdeklarationen: Die allgemeine Struktur der Busdeklarationen ist unten angegeben.
<Datentyp> [Most Significant Bit (MSB): Am wenigsten signifikantes Bit (LSB)]]Signalname>;
<Datentyp> [Am wenigsten signifikantes Bit (LSB): Am meisten signifikantes Bit (MSB)]]Signalname>;
Beispielsweise -
Draht [3: 1] in;
Variabler Datentyp: Dieser Datentyp beschreibt das Element zum Speichern von Daten vorerst.
Es gibt viele Arten von Variablen, die von Verilog unterstützt werden. Einige von ihnen sind -
ganze Zahl - 32 Bit, signiert.
reg - jede Bitgröße, ohne Vorzeichen. Verwenden Sie zum Implementieren der signierten Registrierung das Schlüsselwort "reg signiert".
Echtzeit, Echtzeit - keine Unterstützung für die Synthese.
D. Modulinstanziierung
Nach allen Deklarationen kann das Modul mit Hilfe einiger Syntaxen auf einem übergeordneten Modul instanziiert werden. Durch Instanziieren von Modulen können wir Entwürfe mit mehreren Hierarchieebenen erstellen. Dies wird uns weiter helfen, eine einfachere Wartbarkeit zu erreichen. Die meisten modernen Designs weisen zahlreiche Hierarchieebenen auf.
Das allgemeine Format für die Instanziierung ist unten angegeben.
<Komponentenname> #<verzögern>iInstanzname> ((port_liste);
Komponentenname: Dies ist der Name des Moduls für die untergeordnete Komponente.
verzögern: Es ist eine optionale Wahl. Verzögerung führt zu einer Verzögerung in der gesamten Komponente.
Instanzname: Dies ist der exklusive Name, den der Designer für jede einzelne Instanz angibt.
Portliste: Die Portliste enthält die Signallisten, die mit der Komponente verbunden werden.
E. Simulationskomponente
Nachdem der Entwurfsprozess abgeschlossen ist, beginnt der Testprozess. Dieser Test kann mit dem Stimulusblock durchgeführt werden. Reizblöcke sind allgemein als Prüfstand bekannt.
Es gibt zwei Arten von Stimulusanwendungen. Das primäre Design beginnt mit dem Designblock und zieht die Port-Signale direkt in die Designblöcke.
Das zweite Design instanziiert den Stimulusblock und den Designblock in einem übergeordneten Replikatmodell. Schnittstelle ist die Kommunikationsverbindung zwischen den Blöcken.
Einige grundlegende Verilog-Konzepte
Verilog-Operatoren
Verilog verfügt über drei grundlegende Operatoren für Verilog HDL. Sie sind unten angegeben.
Unäre Verilog-Operatoren: Diese Arten von Verilog-Operatoren stehen an erster Stelle der Operanden.
Zum Beispiel: x = ~ y; Hier ist '~' ein unärer Operator
Binäre Verilog-Operatoren: Diese Arten von Verilog-Operatoren liegen zwischen zwei Operanden.
Zum Beispiel: x = y || z; Hier '||' ist ein binärer Operator.
Ternäre Verilog-Operatoren: TDiese Arten von Verilog-Operatoren verwenden zwei verschiedene Operatoren, um drei Operatoren zu unterscheiden.
Zum Beispiel: x = y? z: w; Hier '?' und ':' sind ternäre Operatoren.
Die kategorialen Operatoren von Verilog HDL sind: arithmetisch, logisch, relational, bitweise, Verschiebung, Verkettung und Gleichheit. In der folgenden Tabelle sind verschiedene Arten von Verilog-Operatoren und ihre Symbole aufgeführt.
Art des Betreibers | Symbol | Produktion | Operanden benötigt |
Arithmetik | * | Vervielfältigen | Zwei |
Arithmetik | / | Division | Zwei |
Arithmetik | + | Zusatz | Zwei |
Arithmetik | - | Subtraktion | Zwei |
Arithmetik | % | Modul | Zwei |
logisch | ! | Negation | Eins |
logisch | && | UND | Zwei |
logisch | || | OR | Zwei |
Relational | > | Größer als | Zwei |
Relational | < | Weniger als | Zwei |
Relational | > = | Größer als oder gleich wie | Zwei |
Relational | <= | Gleich oder kleiner als | Zwei |
Gleichheit | == | Ist gleich | Zwei |
Gleichheit | 🇧🇷 🇧🇷 | Nicht gleich | Zwei |
Gleichheit | === | Fall gleich | Zwei |
Gleichheit | ! == | Fall nicht gleich | Zwei |
Bitweise | ~ | die Negierung | Eins |
Bitweise | & | Bitweises UND | Zwei |
Bitweise | | | Bitweises ODER | Zwei |
Bitweise | ^ | Bitweises XOR | Zwei |
Bitweise | ~^ | Bitweises XNOR | Zwei |
eingrenzen | & | Reduktion UND | Eins |
eingrenzen | ~& | Reduktion NAND | Eins |
eingrenzen | | | Reduktion ODER | Eins |
eingrenzen | ~| | Reduktion NOR | Eins |
eingrenzen | ^ | Reduktion XOR | Eins |
eingrenzen | ^~ | Reduktion XNOR | Eins |
Shift | >> | Rechte Shifttaste | Zwei |
Shift | << | Linksverschiebung | Zwei |
Verkettung | {} | Verkettung | Kann beliebig viele sein |
Replikation | {{}} | Replikation | Kann beliebig viele sein |
Bedingt | ? : | Bedingt | Drei |
Verilog Operators hat ebenfalls Vorrang. Ihr Vorrang ist in der folgenden Tabelle angegeben.
Operator | Symbole | Vorrang |
Unäre Multiplikation, Division, Modul | +, -,!, ~ *, /,% | Höchste |
Addition, Subtraktionsverschiebung | +, - <<, >> | |
Relationale Gleichheit | <, <=,>,> = == ,! =, === ,! == | |
Reduktion logisch | &, ~ & ^, ^ ~ |, ~ | && || | |
Bedingt | ?: | Unterste |
Verilog-Nummernspezifikationen
Es gibt zwei Arten von Verilog-Nummern: große und nicht große Zahlen.
Verilog-Nummern in Größe: Die allgemeine Struktur für die Darstellung von Größen in Verilog HDL ist unten angegeben.
'
Beispielsweise - 8'b3456;
Dies ist eine Verilog-Nummer, die beschreibt, dass es sich um eine 8-Bit-Nummer vom Binärtyp handelt.
- Größe: Größe ist die Anzahl der Stellen, die die Hauptnummer hat. Die Größe wird mit Dezimalwerten beschrieben.
- Basisformat: Das Basisformat schlägt vor, um welche Art von Nummer es sich handelt. Es gibt verschiedene Typen - binär (gegeben durch - 'b'), dezimal (gegeben durch - 'd'), oktal (gegeben durch - 'o'), hexadezimal (gegeben durch - 'h'). Wenn es keine Angabe für base_format gibt, handelt es sich standardmäßig um eine Dezimalzahl.
- zahlen: Die Hauptnummer, die Sie eingeben möchten.
Unsilierte Verilog-Nummern: Diese Nummern erfordern keine angegebene Größe.
Die allgemeine Struktur für die Darstellung nicht nummerierter Zahlen in Verilog HDL ist unten angegeben.
'
Beispielsweise - 'h3456;
Dies ist eine nicht dimensionierte Verilog-Zahl, die beschreibt, dass es sich um eine Hexadezimalzahl handelt.
Negative Zahlen: Wenn Sie eine Zahl als negative Zahl deklarieren möchten, setzen Sie ein Minuszeichen (-) vor die Zahl.
Beispielsweise: - 345; Es ist eine negative, nicht dimensionierte Dezimalzahl.
Verilog-Arrays
In Verilog HDL sind Arrays von Ganzzahlen, Registern (reg), Vektoren (von reg- oder Netzdatentypen, mehreren Bitlängen) und Zeit möglich. Die grundlegende Deklaration von Arrays wird unten anhand eines Beispiels gezeigt.
Ganzzahlmatrix [0: 3];
Dies bedeutet ein Array von sieben Werten.
- Verilog erlaubt kein Array für echte Variablen.
- Verilog HDL unterstützt kein mehrdimensionales Array.
- Array-Elemente können mit - abgerufen werden [ ]]
Für andere Themen im Zusammenhang mit Verilog Tutorial, Klicken Sie hier!
Weitere Informationen zum schrittweisen Verilog-Tutorial mit Xilinx finden Sie in unserem nächsten Artikel!
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 –