2024-12-30 16:19:10 +08:00
|
|
|
|
|
|
|
|
|
// 时间尺度 以1ns为时钟单位 / 1ns为时钟精度
|
|
|
|
|
`timescale 1ns/1ns
|
|
|
|
|
// 包含文件 main_module.v 编译的时候就不需要指定这个文件了
|
2025-03-11 17:54:18 +08:00
|
|
|
|
`include "counter.v"
|
|
|
|
|
`include "mem.v"
|
2024-12-30 16:19:10 +08:00
|
|
|
|
// 定义模块 此模块没有输入输出
|
|
|
|
|
module testbench();
|
2025-03-11 17:54:18 +08:00
|
|
|
|
|
|
|
|
|
// 输入给模块的变量用reg
|
2024-12-30 16:19:10 +08:00
|
|
|
|
reg clk;
|
|
|
|
|
reg rst;
|
2024-12-30 19:32:43 +08:00
|
|
|
|
reg [7:0] data;
|
2025-03-11 17:54:18 +08:00
|
|
|
|
|
|
|
|
|
// 接收模块的输出用wire
|
2024-12-30 16:19:10 +08:00
|
|
|
|
wire [31:0] sum;
|
2025-03-11 17:54:18 +08:00
|
|
|
|
wire [7:0] read_data;
|
|
|
|
|
|
2024-12-30 16:19:10 +08:00
|
|
|
|
// 指定参数
|
|
|
|
|
parameter CYCLE = 2;
|
|
|
|
|
parameter END_TIME = 200;
|
|
|
|
|
|
|
|
|
|
// 实例化模块
|
2025-03-11 17:54:18 +08:00
|
|
|
|
counter counter_mod(
|
2024-12-30 16:19:10 +08:00
|
|
|
|
.clk(clk),
|
|
|
|
|
.rst(rst),
|
2025-03-11 17:54:18 +08:00
|
|
|
|
.count(sum)
|
2024-12-30 16:19:10 +08:00
|
|
|
|
);
|
|
|
|
|
|
2025-03-11 17:54:18 +08:00
|
|
|
|
mem mem_mod(
|
|
|
|
|
.clk(clk),
|
|
|
|
|
.rst(rst),
|
2025-03-11 18:36:01 +08:00
|
|
|
|
.write_en(1'b0),
|
|
|
|
|
.read_en(1'b1),
|
2025-03-11 17:54:18 +08:00
|
|
|
|
.data_in(data),
|
|
|
|
|
.addr(sum[7:0]),
|
|
|
|
|
.data_out(read_data)
|
|
|
|
|
);
|
2024-12-30 16:19:10 +08:00
|
|
|
|
|
2025-03-11 17:54:18 +08:00
|
|
|
|
always @(posedge clk) begin
|
|
|
|
|
data <= sum[7:0];
|
|
|
|
|
end
|
2024-12-30 19:32:43 +08:00
|
|
|
|
|
2024-12-30 16:19:10 +08:00
|
|
|
|
// 寄存器初始化,只有初始化之后才会产生波形
|
|
|
|
|
initial begin
|
|
|
|
|
clk = 0;
|
|
|
|
|
rst = 0;
|
|
|
|
|
end
|
|
|
|
|
initial begin
|
2025-03-11 17:54:18 +08:00
|
|
|
|
#1 rst = 1;
|
2024-12-30 16:19:10 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
// 每隔一个时钟周期取反
|
|
|
|
|
always begin
|
|
|
|
|
#(CYCLE / 2) clk = ~clk;
|
|
|
|
|
end
|
|
|
|
|
|
2025-03-11 17:54:18 +08:00
|
|
|
|
// 仿真语句 打印变量值
|
2024-12-30 19:32:43 +08:00
|
|
|
|
always @(posedge clk) begin
|
2025-03-11 17:54:18 +08:00
|
|
|
|
$display("yyyyy %d: %h", sum, read_data);
|
|
|
|
|
end
|
2024-12-30 19:32:43 +08:00
|
|
|
|
|
2024-12-30 16:19:10 +08:00
|
|
|
|
// 在END_TIME个时钟周期之后结束
|
|
|
|
|
initial begin
|
|
|
|
|
#END_TIME;
|
|
|
|
|
$stop;
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
endmodule
|