Hardware-Verhalten lässt sich ohne bedingte Anweisungen und andere Möglichkeiten zur Steuerung des Logikflusses nicht implementieren. Verilog bietet eine Reihe von Control-Flow-Blöcken und -Mechanismen, um dies zu erreichen. if-else-if Diese bedingte Anweisung dient dazu, eine Entscheidung darüber
Blocking Assignments Blocking-Zuweisungen verwenden das Symbol = und werden in einem prozeduralen Block nacheinander ausgeführt. Dies verhindert jedoch nicht die Ausführung von Anweisungen, die in einem parallelen Block laufen. module tb; reg [7:0] a, b, c, d, e; initial begin a = 8hDA;
Das Zuweisen von Werten auf Nets und Variablen wird als Assignment bezeichnet. Es gibt drei grundlegende Formen: Prozedural (Procedural) Kontinuierlich (Continuous) Prozedural-kontinuierlich (Procedural Continuous) Zulässige LHS-Werte Eine Zuweisung besteht aus zwei Teilen – der rechten Seite (RH
Statement-Gruppen, syntaktisch äquivalent zu einzelnen Statements: Block Statements. Zwei Arten: Sequential und Parallel. Sequentiell (Sequential) Umgeben von begin/end. Ausführung in Reihenfolge, nacheinander. Delay-Werte relativ zur Ausführungszeit des vorherigen Statements. Nach letztem Statement
Vorheriges Beispiel: Einfacher Sequence Detector. Hier: Pattern Detector für längeres Muster 110101. Design: 110101 Detector module det_110101 (input clk, rstn, in, output out); parameter IDLE=0, S1=1, S11=2, S110=3, S1101=4, S11010=5, S110101=6; reg [2:0] cur_state, next_state; // Bug: 3 Bi
Klassisches FSM-Beispiel: Sequence Detector erkennt festes Muster in einem Strom binärer Bits am Input. Design: 1011 Detector module det_1011 (input clk, rstn, in, output out); parameter IDLE=0, S1=1, S10=2, S101=3, S1011=4; reg [2:0] cur_state, next_state; assign out = (cur_state == S10
Ein generate Block ermöglicht multiple Modul-Instanzen oder bedingte Instanziierung basierend auf Verilog-Parametern. Praktisch bei wiederholten Operationen/Instanzen oder bedingtem Code-Einschluss. generate Block darf keine Port-, Parameter-, specparam-Deklarationen oder specify Blöcke enthalten. A
Verhaltenscode steht immer in module/endmodule. Jedes Digitaldesign geht in einen module Block. Ports optional: input (Signale rein), output (Signale raus). Modul Leeres Modul testbench. Name: alphanumerisch + _. module testbench; endmodule Modul mit Ports: Inputs d, clk, rstb, Output q. module dff
Verilog-Statements werden in Simulationssequenziell ausgeführt, platziert in prozeduralen Blöcken. Zwei Haupttypen: initial und always. Syntax initial [single statement] initial begin [multiple statements] end Wofür wird initial Block genutzt? Nicht synthetisierbar → kein Hardware-Schema. Zweck: Si
Vorheriger Artikel zeigte kombinatorische Logik mit always. Hier: Sequenzielle Logik mit Speicherelementen (Flipflops). JK Flipflop Speichert Werte, 2 Data Inputs j, k, Reset rstn, Clock clk. Wahrheitstabelle: rstnjkqKommentar 0000Reset asserted → Output 0 100Holdj=k=0 → Output unverändert 1011k=1
Der always Block eignet sich für sequenzielle und kombinatorische Logik. Frühere Beispiele nutzten assign; hier dieselben Designs mit always. Beispiel #1: Einfache kombinatorische Logik Output z als reg, aktualisiert bei Änderung in Sensitivity List. module combo (input a,b,c,d,e, output reg z);
Ein always Block ist einer der prozeduralen Blöcke in Verilog. Statements darin werden sequenziell ausgeführt. Syntax always @ (event) [statement] always @ (event) begin [multiple statements] end Ausführung bei definiertem Event. Event wird durch Sensitivity List definiert. Was ist die Sensitivity
Multi-Bit Verilog Wires/Variables können zu größeren Multi-Net Wires/Variables vereint werden mittels Concatenation Operatoren { und }, durch Kommas getrennt. Erlaubt auch Expressions und Sized Constants als Operanden. Größe jedes Operanden muss bekannt sein, um Gesamtgröße zu berechnen. Concatenati
Datenverarbeitung erfordert Berechnungen in digitalen Schaltungen. Verilog-Operatoren ermöglichen Synthese-Tools, passende Hardware-Elemente zu generieren. Arithmetische Operatoren OperatorBeschreibung a + bAddition a - bSubtraktion a * bMultiplikation a / bDivision (2. Operand 0 → X) a % bModulo (
Der Verilog assign Statement treibt kontinuierlich wire Signale und synthetisiert zu kombinatorischer Logik. Weitere Design-Beispiele: Beispiel #1: Einfache kombinatorische Logik module combo (input a,b,c,d,e, output z); assign z = ((a & b) | (c ^ d) & ~e); endmodule Synthese → Hardware-Schema
Signale vom Typ wire (oder ähnliche wire-ähnliche Datentypen) erfordern kontinuierliche Wertzuweisung. Analogie: Elektrischer Draht auf Breadboard – solange +5V an einem Ende anliegen, bekommt das Bauteil am anderen Ende die Spannung. In Verilog realisiert das assign Statement dies: wire wird kontin
Komplexe Designs entstehen durch hierarchische Integration mehrerer Module. Module werden in anderen Modulen instanziiert; Ports der Instanzen werden mit Signalen im Parent-Modul verbunden. Zwei Verbindungsmethoden: Geordnete Liste (Ordered List) und Benannte Verbindung (Named Connection). Port Conn
Ports sind Signale, die als Inputs/Outputs eines Moduls fungieren – die primäre Kommunikationsschnittstelle. Analogie: Modul = fertiger Chip auf PCB, Ports = Pins, nur Weg zur Außenwelt. Port-Typen PortBeschreibung InputModul empfängt Werte von außen OutputModul sendet Werte nach außen InoutBidirek
Ein module ist ein Block Verilog-Code, der eine bestimmte Funktionalität implementiert. Module können in andere Module eingebettet werden; ein höheres Modul kommuniziert mit niedrigeren über Input/Output-Ports. Syntax Ein Modul wird von module und endmodule umschlossen. Name folgt direkt auf module,
Ein Array-Deklaration eines Nets oder Variables kann Scalar oder Vector sein. Beliebig viele Dimensionen durch Adressbereich nach dem Identifiernamen → Multi-Dimensional Arrays. Erlaubt für reg, wire, integer, real. reg y1 [11:0]; // Scalar reg Array, Tiefe=12, je 1 Bit wire [0:7] y2 [3:0]
Verilog
Fortgeschrittene Farbsortiermaschine mit Arduino und RGB-Sensor
Wissen erfahrener Mitarbeiter vor dem Ruhestand sichern: Strategien für den Erfolg
Technisches Content Writing meistern: Ein Leitfaden für Manufacturing-Marketer
Python vs. Ruby: Umfassender Vergleich von Features, Vorteilen und Einsatzgebieten