Verilog Ring Counter Modul: Design & Testbench Beispiel
Design
Ein Ring Counter (Ringzähler) ist ein Schieberegister, bei dem der Ausgang des letzten Flip-Flops mit dem Eingang des ersten verbunden ist. Dadurch zirkuliert ein einzelnes Bit (oder ein Bitmuster) kontinuierlich durch die Registerkette. Der folgende parameterisierte Verilog-Code implementiert einen 4-Bit-Ring-Counter mit aktiv-tiefem, synchronem Reset.
module ring_ctr #(parameter WIDTH = 4) (
input logic clk,
input logic rstn,
output logic [WIDTH-1:0] out
);
always_ff @(posedge clk) begin
if (!rstn) begin
out <= 1; // Initialisierung: nur LSB gesetzt
end else begin
out[WIDTH-1] <= out[0]; // MSB erhält LSB (Rückkopplung)
for (int i = 0; i < WIDTH-1; i++) begin
out[i] <= out[i+1]; // Schiebeoperation nach links
end
end
end
endmodule
Testbench
Die Testbench erzeugt einen Takt mit 20 ns Periodendauer, hält den Reset für zwei Takte aktiv und beobachtet dann 15 weitere Takte das Ausgangssignal.
module tb;
parameter WIDTH = 4;
logic clk, rstn;
logic [WIDTH-1:0] out;
ring_ctr #(.WIDTH(WIDTH)) u0 (
.clk (clk),
.rstn (rstn),
.out (out)
);
always #10 clk = ~clk;
initial begin
clk = 0;
rstn = 0;
$monitor("T=%0t out=%b", $time, out);
repeat (2) @(posedge clk);
rstn = 1;
repeat (15) @(posedge clk);
$finish;
end
endmodule
Simulationsergebnis
Der Zähler durchläuft die Sequenz 0001 → 1000 → 0100 → 0010 → 0001 … und wiederholt sich alle 4 Takte.
ncsim> run T=0 out=xxxx T=10 out=0001 T=50 out=1000 T=70 out=0100 T=90 out=0010 T=110 out=0001 ... Simulation complete via $finish(1) at time 330 NS
Verilog
- Verilog meistern: Komplettes Tutorial für digitales Schaltungsdesign
- Verilog Concatenation meistern: Praktischer Leitfaden
- Verilog Assignments verstehen: Typen, Syntax und Best Practices
- Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
- Verilog Functions meistern für effizientes RTL-Design
- Verilog Tasks verstehen: Functions vs. Tasks, Syntax und Verwendung
- Verilog Clock Generator: Design & Implementierungsleitfaden
- Verilog Math Functions meistern für effizientes Hardware-Design
- Verilog Mod-N Counter Design: Parameterisiertes Modul & Testbench
- Verilog Gray Counter Modul – 4-Bit Gray-Code Generator