Verilog-Mathematik-Funktionen können anstelle von konstanten Ausdrücken verwendet werden und unterstützen sowohl Integer- als auch Real-Mathematik. Integer-Mathematik-Funktionen Die Funktion $clog2 gibt das Ceiling von log2 des gegebenen Arguments zurück. Dies wird typischerweise verwendet, um die
Display-System-Tasks werden hauptsächlich verwendet, um Informations- und Debug-Meldungen anzuzeigen, um den Simulationsfluss aus Log-Dateien zu verfolgen und auch schneller zu debuggen. Es gibt verschiedene Gruppen von Display-Tasks und Formate, in denen sie Werte ausgeben können. Display/Write Ta
Takte sind fundamental für den Aufbau digitaler Schaltungen, da sie es verschiedenen Blöcken ermöglichen, miteinander synchron zu sein. Eigenschaften eines Takts Die wichtigsten Eigenschaften eines digitalen Takts sind seine Frequenz, die die Taktperiode bestimmt, sein Duty Cycle und die Taktphase
Verilog-Design und Testbench haben typischerweise viele Codezeilen, die aus always- oder initial-Blöcken, kontinuierlichen Zuweisungen und anderen prozeduralen Anweisungen bestehen, die zu unterschiedlichen Zeiten im Verlauf einer Simulation aktiv werden. Jede Wertänderung eines Signals im Verilog-
Die Verilog-Simulation hängt davon ab, wie Zeit definiert ist, weil der Simulator wissen muss, was ein #1 in Bezug auf Zeit bedeutet. Die `timescale-Compiler-Direktive spezifiziert die Zeiteinheit und Präzision für die Module, die ihr folgen. Syntax `timescale <time_unit>/<time_precision&g
Verilog ist eine Hardware-Beschreibungssprache, und es gibt keine Anforderung für Designer, ihre RTL-Designs zu simulieren, um sie in Logikgatter umwandeln zu können. Also, was ist der Bedarf an Simulation? Simulation ist eine Technik, bei der verschiedene Eingangsreize (Stimuli) zu verschiedenen
Standard-Verilog-Primitives wie nand und not sind nicht immer einfach oder ausreichend, um komplexe Logik darzustellen. Neue primitive Elemente, die UDP oder User-Defined Primitives genannt werden, können definiert werden, um kombinatorische oder sequentielle Logik zu modellieren. Alle UDPs haben g
Verilog bietet auch Unterstützung für Transistor-Level-Modeling, obwohl es heutzutage selten von Designern verwendet wird, da die Komplexität von Schaltungen sie dazu gezwungen hat, zu höheren Abstraktionsebenen zu wechseln, anstatt Switch-Level-Modeling zu verwenden. NMOS/PMOS module des ( inpu
Digitale Elemente sind binäre Entitäten und können nur einen von zwei Werten halten: 0 und 1. Der Übergang von 0 zu 1 und 1 zu 0 hat jedoch eine Übergangszögerung, und so hat jedes Gatterelement eine Verzögerung, um den Wert vom Eingang zu seinem Ausgang zu propagieren. Zum Beispiel muss ein Zwei-E
Einige der wichtigsten eingebauten Primitives wurden im vorherigen Artikel besprochen, und es wäre gut, einige praktische Beispiele für die Verwendung einfacher and-, nor- und not-Gatter zu sehen. Beachten Sie, dass Sie, um den Verilog-Code mit Gattern zu schreiben, wissen müssen, wie Sie die Eleme
Die meisten digitalen Designs werden auf einer höheren Abstraktionsebene wie RTL durchgeführt, obwohl es manchmal intuitiver ist, kleinere deterministische Schaltungen auf einer niedrigeren Ebene mit kombinatorischen Elementen wie and und or zu bauen. Modeling auf dieser Ebene wird normalerweise Gat
Die meisten Programmiersprachen haben ein charakteristisches Merkmal namens Scope (Gültigkeitsbereich), das die Sichtbarkeit bestimmter Codeabschnitte für Variablen und Methoden definiert. Der Scope definiert einen Namespace, um Kollisionen zwischen verschiedenen Objektnamen innerhalb desselben Name
Verilog-Delay-Anweisungen können Delays entweder auf der linken oder der rechten Seite des Zuweisungsoperators haben. Inter-Assignment Delays // Delay ist auf der linken Seite spezifiziert #<delay> <LHS> = <RHS> Ein Inter-Assignment-Delay-Statement hat den Delay-Wert auf der LHS
Es gibt zwei Arten von Timing-Kontrollen in Verilog: Delay- und Event-Ausdrücke. Die Delay-Kontrolle ist lediglich eine Möglichkeit, eine Verzögerung zwischen dem Zeitpunkt hinzuzufügen, zu dem der Simulator die Anweisung trifft, und dem Zeitpunkt, zu dem er sie tatsächlich ausführt. Der Event-Ausdr
Verilog unterstützt einige Compiler-Direktiven, die im Wesentlichen den Compiler anweisen, den Code auf eine bestimmte Weise zu behandeln. Zum Beispiel kann ein Teil des Codes die Implementierung eines bestimmten Features darstellen, und es sollte eine Möglichkeit geben, den Code nicht in das Design
Parameter sind Verilog-Konstrukte, die es erlauben, ein Modul mit einer anderen Spezifikation wiederzuverwenden. Zum Beispiel kann ein 4-Bit-Adder parametrisiert werden, um einen Wert für die Anzahl der Bits zu akzeptieren, und neue Parameterwerte können bei der Modulinstanziierung übergeben werden.
Eine function dient dazu, Eingaben zu verarbeiten und einen einzelnen Wert zurückzugeben, während eine task allgemeiner ist und mehrere Ergebniswerte berechnen und diese über output- und inout-Argumente zurückgeben kann. Tasks können Simulationszeit verbrauchende Elemente wie @, posedge und andere e
Oft findet man bestimmte Code-Stücke, die sich wiederholen und mehrmals im RTL aufgerufen werden. Sie verbrauchen meist keine Simulationszeit und können komplexe Berechnungen beinhalten, die mit unterschiedlichen Datenwerten durchgeführt werden müssen. In solchen Fällen kann man eine function deklar
Die case-Anweisung prüft, ob der gegebene Ausdruck mit einem der anderen Ausdrücke in der Liste übereinstimmt, und verzweigt entsprechend. Sie wird typischerweise verwendet, um einen Multiplexer zu implementieren. Das if-else-Konstrukt ist möglicherweise nicht geeignet, wenn viele Bedingungen geprüf
Eine for-Schleife ist die am häufigsten verwendete Schleife in der Software, wird in Verilog jedoch primär dazu verwendet, Hardware-Logik zu replizieren. Die Idee hinter einer for-Schleife ist es, eine Reihe von Anweisungen innerhalb der Schleife so lange zu iterieren, wie die gegebene Bedingung wah
Verilog