实现mem
This commit is contained in:
52
testbench.v
52
testbench.v
@@ -2,44 +2,44 @@
|
||||
// 时间尺度 以1ns为时钟单位 / 1ns为时钟精度
|
||||
`timescale 1ns/1ns
|
||||
// 包含文件 main_module.v 编译的时候就不需要指定这个文件了
|
||||
`include "main_module.v"
|
||||
`include "counter.v"
|
||||
`include "mem.v"
|
||||
// 定义模块 此模块没有输入输出
|
||||
module testbench();
|
||||
|
||||
// 输入给模块的变量用reg
|
||||
reg clk;
|
||||
reg rst;
|
||||
reg [7:0] data;
|
||||
wire dout;
|
||||
|
||||
// 接收模块的输出用wire
|
||||
wire [31:0] sum;
|
||||
wire [7:0] data_addr;
|
||||
// 定义一个存储空间 8位 256个字节
|
||||
reg [7:0] flash_mem[255:0];
|
||||
wire [7:0] read_data;
|
||||
|
||||
// 指定参数
|
||||
parameter CYCLE = 2;
|
||||
parameter END_TIME = 200;
|
||||
|
||||
// 实例化模块
|
||||
test mod(
|
||||
counter counter_mod(
|
||||
.clk(clk),
|
||||
.rst(rst),
|
||||
.data(data),
|
||||
.dout(dout),
|
||||
.data_addr(data_addr),
|
||||
.sum(sum)
|
||||
.count(sum)
|
||||
);
|
||||
|
||||
// 初始化块 此块用于生成波形文件
|
||||
// initial 语句为仿真语句,通常在testbench中使用
|
||||
initial begin
|
||||
$dumpfile("wave.vcd");
|
||||
$dumpvars(0,testbench);
|
||||
// 把文件中的16进制数据填充到mem
|
||||
$readmemh("flash_data.txt",flash_mem);
|
||||
end
|
||||
mem mem_mod(
|
||||
.clk(clk),
|
||||
.rst(rst),
|
||||
.write_en(1'b1),
|
||||
.read_en(1'b0),
|
||||
.data_in(data),
|
||||
.addr(sum[7:0]),
|
||||
.data_out(read_data)
|
||||
);
|
||||
|
||||
//显示数组的10个值
|
||||
// initial begin
|
||||
// $display("yyyyy %d: %h", 0, flash_mem[0]);
|
||||
// end
|
||||
always @(posedge clk) begin
|
||||
data <= sum[7:0];
|
||||
end
|
||||
|
||||
// 寄存器初始化,只有初始化之后才会产生波形
|
||||
initial begin
|
||||
@@ -47,7 +47,7 @@ module testbench();
|
||||
rst = 0;
|
||||
end
|
||||
initial begin
|
||||
#5 rst = 1;
|
||||
#1 rst = 1;
|
||||
end
|
||||
|
||||
// 每隔一个时钟周期取反
|
||||
@@ -55,10 +55,10 @@ module testbench();
|
||||
#(CYCLE / 2) clk = ~clk;
|
||||
end
|
||||
|
||||
// 仿真语句 打印变量值
|
||||
always @(posedge clk) begin
|
||||
data <= flash_mem[data_addr];
|
||||
$display("yyyyy %d: %h", data_addr, flash_mem[data_addr]);
|
||||
end
|
||||
$display("yyyyy %d: %h", sum, read_data);
|
||||
end
|
||||
|
||||
// 在END_TIME个时钟周期之后结束
|
||||
initial begin
|
||||
|
Reference in New Issue
Block a user