Кольцевой счётчик на Verilog: параметризованный модуль и тестбенч
Проект
module ring_ctr #(parameter WIDTH=4) (
input clk, 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)
out[i] <= out[i+1];
end
end
endmodule
Тестбенч
module tb;
parameter WIDTH = 4;
reg clk, 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
Результат симуляции
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 Simulation complete via $finish(1) at time 330 NS
Verilog
- Освоение Verilog: полное руководство по проектированию цифровых схем
- Освоение конкатенации в Verilog: практическое руководство
- Понимание назначений в Verilog: типы, синтаксис и лучшие практики
- Блокирующие и неблокирующие назначения в Verilog: ключевые различия
- Мастерство функций в Verilog для эффективного RTL дизайна
- Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
- Генератор тактового сигнала в Verilog: проектирование и реализация
- Мастерство математических функций Verilog для эффективного аппаратного дизайна
- Параметризованный Mod-N счётчик на Verilog: модуль и тестбенч
- Счётчик Грея на Verilog: 4-битный генератор кода Грея