verilog hdl写4位计数器的仿真代码
时间: 2023-07-15 20:10:50 浏览: 58
以下是一个简单的4位计数器的Verilog HDL代码和仿真代码:
```
module counter_4bit(
input clk,
input reset,
output reg [3:0] count
);
always @(posedge clk) begin
if (reset) begin
count <= 4'b0000;
end else begin
count <= count + 1;
end
end
endmodule
module tb_counter_4bit;
reg clk;
reg reset;
wire [3:0] count;
counter_4bit uut(
.clk(clk),
.reset(reset),
.count(count)
);
initial begin
clk = 0;
reset = 0;
#10 reset = 1;
#10 reset = 0;
end
always #5 clk = ~clk;
endmodule
```
在上面的代码中,我们定义了一个 `counter_4bit` 模块,它有一个时钟输入 `clk`,一个重置输入 `reset`,和一个4位输出计数值 `count`。在 `counter_4bit` 模块中,我们使用一个 always 块,在时钟的上升沿触发,如果重置被激活,计数器归零,否则计数器加一。
接下来,我们定义了另一个模块 `tb_counter_4bit`,它包含了一个时钟信号 `clk`、一个重置信号 `reset` 和一个计数器输出 `count`。我们将 `counter_4bit` 模块实例化为 `uut`,并将其时钟和重置信号连接到 `tb_counter_4bit` 模块中。在仿真中,我们使用一个 initial 块来初始化时钟和重置信号,并使用一个 always 块模拟时钟信号的周期性变化。