RAM模块如何验证功能
时间:10-02
整理:3721RD
点击:
设计了一个简单的RAM,代码如下。
因为是第一次设计RAM,不知道怎么写test bench验证功能啊。在网上搜了下,也没找到合适的例子。虽然这个模块比较简单,应该不会有错,还还是感觉写个test bench验证了比较放心。
感觉RAM读数据功能的验证我会写,但是不知道往RAM里面写数据这个功能怎么验证啊。求高手指教!还有RAM的初始化是怎么弄的呢?谢了!
简单的RAM代码如下,里面有8个8bits的数据,一个读端口,一个写端口,有一个ctrl_rw0控制是读还是写(读写不能同时进行),为1的时候写数据,为0的时候读数据。
module memory_8x8_1r_1w(clk, addr_r0, addr_w0, ctrl_rw0, mem_i0, mem_o0);
input clk;
input [2:0] addr_r0; // memory address for reading
input [2:0] addr_w0; // memory address for writing
input ctrl_rw0; // 1: write, 0: read
input [7:0] mem_i0; // input data for writing
output [7:0] mem_o0; // output data from reading
reg [7:0] mem_o0;
reg [7:0] mem_arr [70];
always @ (posedge clk) begin
if (ctrl_rw0) mem_arr[addr_w0] <= mem_i0;
else mem_o0 <= mem_arr[addr_r0];
end
endmodule
因为是第一次设计RAM,不知道怎么写test bench验证功能啊。在网上搜了下,也没找到合适的例子。虽然这个模块比较简单,应该不会有错,还还是感觉写个test bench验证了比较放心。
感觉RAM读数据功能的验证我会写,但是不知道往RAM里面写数据这个功能怎么验证啊。求高手指教!还有RAM的初始化是怎么弄的呢?谢了!
简单的RAM代码如下,里面有8个8bits的数据,一个读端口,一个写端口,有一个ctrl_rw0控制是读还是写(读写不能同时进行),为1的时候写数据,为0的时候读数据。
module memory_8x8_1r_1w(clk, addr_r0, addr_w0, ctrl_rw0, mem_i0, mem_o0);
input clk;
input [2:0] addr_r0; // memory address for reading
input [2:0] addr_w0; // memory address for writing
input ctrl_rw0; // 1: write, 0: read
input [7:0] mem_i0; // input data for writing
output [7:0] mem_o0; // output data from reading
reg [7:0] mem_o0;
reg [7:0] mem_arr [70];
always @ (posedge clk) begin
if (ctrl_rw0) mem_arr[addr_w0] <= mem_i0;
else mem_o0 <= mem_arr[addr_r0];
end
endmodule
求助啊求助啊~
写一个数据,然后再读出来检查,不就知道写进去的对不对吗?
reg [7:0] mem_arr [70];这个应该写错了吧
关于这个程序应该是对的,要测试的话,你要先产生一些8位的数据,然后再test中将数据读入,之后你应该会的了
谢谢指正!
这个方法不错,谢谢!我知道怎么做了
学习了啊
学习了啊
在工程里边放二个TXT数据文件,一个写入数据,用于读取,另一个空着,用于写入,验证二个文件是否相同即可.
