55 lines
1015 B
Verilog
55 lines
1015 B
Verilog
// counter_tb.v - 计数器测试平台
|
|
|
|
`timescale 1ns/1ps
|
|
|
|
module counter_tb;
|
|
|
|
// 信号声明
|
|
reg clk;
|
|
reg rst_n;
|
|
wire [3:0] count;
|
|
|
|
// 实例化被测模块
|
|
counter uut (
|
|
.clk(clk),
|
|
.rst_n(rst_n),
|
|
.count(count)
|
|
);
|
|
|
|
// 生成时钟信号 (10ns 周期 = 100MHz)
|
|
initial begin
|
|
clk = 0;
|
|
forever #5 clk = ~clk;
|
|
end
|
|
|
|
// 测试序列
|
|
initial begin
|
|
// 生成 VCD 波形文件
|
|
$dumpfile("output.vcd");
|
|
$dumpvars(0, counter_tb);
|
|
|
|
// 初始化信号
|
|
rst_n = 0;
|
|
|
|
// 等待 20ns 后释放复位
|
|
#20;
|
|
rst_n = 1;
|
|
|
|
// 运行 200ns 让计数器计数
|
|
#200;
|
|
|
|
// 显示最终计数值
|
|
$display("Final count value: %d", count);
|
|
|
|
// 结束仿真
|
|
$finish;
|
|
end
|
|
|
|
// 监控输出变化
|
|
initial begin
|
|
$monitor("Time=%0t ns, rst_n=%b, count=%d (0x%h)",
|
|
$time, rst_n, count, count);
|
|
end
|
|
|
|
endmodule
|