Módulo Contador Ring en Verilog: Diseño y Ejemplo de Testbench
Diseño
module ring_ctr #(parameter WIDTH=4) (
input clk,
input rstn,
output reg [WIDTH-1:0] out
);
always @ (posedge clk) begin
if (!rstn) out <= 1;
else begin
out[WIDTH-1] <= out[0];
for (int i = 0; i < WIDTH-1; i=i+1) begin
out[i] <= out[i+1];
end
end
end
endmodule
Testbench
module tb;
parameter WIDTH = 4;
reg clk;
reg rstn;
wire [WIDTH-1:0] out;
ring_ctr u0 (.clk (clk), .rstn (rstn), .out (out));
always #10 clk = ~clk;
initial begin
{clk, rstn} <= 0;
$monitor ("T=%0t out=%b", $time, out);
repeat (2) @(posedge clk);
rstn <= 1;
repeat (15) @(posedge clk);
$finish;
end
endmodule
Registro de simulación
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 T=130 out=1000 T=150 out=0100 T=170 out=0010 T=190 out=0001 T=210 out=1000 T=230 out=0100 T=250 out=0010 T=270 out=0001 T=290 out=1000 T=310 out=0100 La simulación finalizó vía $finish(1) en el tiempo 330 NS + 0
Verilog
- Fundamentos de Verilog: Diseñando tu primera compuerta AND
- Dominar Verilog: Tutorial completo para diseño de circuitos digitales
- Dominar la concatenación en Verilog: Guía práctica
- Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
- Bloqueante vs. No bloqueante en Verilog: Diferencias clave explicadas
- Dominar las funciones en Verilog para diseño RTL eficiente
- Comprender las Tasks en Verilog: Funciones vs Tasks, sintaxis y uso
- Generador de reloj en Verilog: Guía de diseño e implementación
- Dominar las funciones matemáticas en Verilog para diseño de hardware eficiente
- Diseño de Contador Mod-N en Verilog: Módulo Parametrizado y Testbench
- Módulo Contador Gray en Verilog – Generador de Código Gray de 4 Bits