Verilog-Tutorial: 5 interessante Fakten, die Sie wissen sollten

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.

640px Verilog Bus.svg
Verilog Bus, Bildnachweis - Induktive LastVerilog-Bus, als gemeinfrei gekennzeichnet, weitere Details zu Wikimedia Commons

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.

ÜberarbeitungenUpdates
IEEE 1364 - 2001Verilog-2001. Unterstützt signierte Variablen und Nest. Wird hauptsächlich von EDA-Paketen verwendet.
IEEE 1364-2005Verilog 2005. Kam mit kleinen Korrekturen und Klarstellungen.
IEEE P1800-2005System-Verilog.
IEEE 1800-2017Fusion von SystemVerilog und Verilog. Bekannt als SystemVerilog 2009.
IEEE-Standardisierung von Verilog, Verilog-Tutorial-Tabelle -1

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.

Verilog-Code 1
Verilog-Code für Flipflops

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.

Bild 26 1024x464 1
Datenflussmodellierung, Verilog Tutorial

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
Modul Mischen 1
Verilog-Code für das Mischen von Modulen, Verilog-Tutorial

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.

TypCharakterisierung
DrahtBeschreibt Knoten oder Verbindungen
dreiBeschreibt einen Drei-Zustands-Knoten
Versorgung0Repräsentiert Logik 0
versorgung1Repräsentiert Logik 1
Netzdatentypen, Verilog Tutorial-Tabelle - 2
  •  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 BetreibersSymbolProduktionOperanden benötigt
Arithmetik*VervielfältigenZwei
Arithmetik/DivisionZwei
Arithmetik+ZusatzZwei
Arithmetik-SubtraktionZwei
Arithmetik%ModulZwei
logisch!NegationEins
logisch&&UNDZwei
logisch||ORZwei
RelationalGrößer alsZwei
RelationalWeniger alsZwei
Relational> =Größer als oder gleich wieZwei
Relational<=Gleich oder kleiner alsZwei
Gleichheit==Ist gleichZwei
Gleichheit🇧🇷 🇧🇷Nicht gleichZwei
Gleichheit===Fall gleichZwei
Gleichheit! ==Fall nicht gleichZwei
Bitweise~die NegierungEins
Bitweise&Bitweises UNDZwei
Bitweise|Bitweises ODERZwei
Bitweise^Bitweises XORZwei
Bitweise~^Bitweises XNORZwei
eingrenzen&Reduktion UNDEins
eingrenzen~&Reduktion NANDEins
eingrenzen|Reduktion ODEREins
eingrenzen~|Reduktion NOREins
eingrenzen^Reduktion XOREins
eingrenzen^~Reduktion XNOREins
Shift>> Rechte ShifttasteZwei
Shift<< LinksverschiebungZwei
Verkettung{}VerkettungKann beliebig viele sein
Replikation{{}}ReplikationKann beliebig viele sein
Bedingt? :BedingtDrei
Verilog-Operatoren, Verilog-Lernprogramm Tabelle - 3

Verilog Operators hat ebenfalls Vorrang. Ihr Vorrang ist in der folgenden Tabelle angegeben.

OperatorSymboleVorrang
Unäre Multiplikation, Division, Modul +, -,!, ~ *, /,%Höchste
Addition, Subtraktionsverschiebung+, - <<, >> 
Relationale Gleichheit<, <=,>,> = == ,! =, === ,! == 
Reduktion logisch&, ~ & ^, ^ ~ |, ~ | && || 
Bedingt?:Unterste
Verilog Operator, Verilog Tutorial Tabelle - 4

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!

Hinterlasse einen Kommentar