Verilog 将随机数据写入测试台中的RAM

Verilog 将随机数据写入测试台中的RAM,verilog,ram,Verilog,Ram,我正在Verilog中使用RAM,我需要实现一个测试台,在那里我将确认三个内存进程(写入数据、读取数据和读取命令)的正确操作。我已经写了一个测试台,它似乎在写和读一些整数,但是有没有办法用单词或字符串填充内存,以使其更清晰 这是我的测试台: module ramtest(); parameter WORD_SIZE=8; parameter ADDR_WIDTH=8; parameter RAM_SIZE=1<<ADDR_WIDTH; reg we; reg re; re

我正在Verilog中使用RAM,我需要实现一个测试台,在那里我将确认三个内存进程(写入数据、读取数据和读取命令)的正确操作。我已经写了一个测试台,它似乎在写和读一些整数,但是有没有办法用单词或字符串填充内存,以使其更清晰

这是我的测试台:

module ramtest();
  
parameter WORD_SIZE=8;
parameter ADDR_WIDTH=8;
parameter RAM_SIZE=1<<ADDR_WIDTH;
  
reg we;
reg re;
reg [ADDR_WIDTH-1:0] addr;
reg [ADDR_WIDTH-1:0] instraddr;
reg [WORD_SIZE-1:0] datawr;
reg Clk;
  
reg [WORD_SIZE-1:0] mem[RAM_SIZE-1:0];
  
wire [WORD_SIZE-1:0] datard;
wire [WORD_SIZE-1:0] instrrd;
  
MCPU_RAMController raminst (.we(we),.datawr(datawr),.re(re),.addr(addr),.datard(datard),.instraddr(instraddr),.instrrd(instrrd));
integer i;
initial begin 
   we=0;
   datawr=0;
   instraddr=0;
   addr=1;
   
   
   #20;
   for(i=0;i<RAM_SIZE;i=i+1) begin
     datawr=i;
     addr=i-1;
     #10;
   end
   we=0;
   addr=1;
   instraddr=0;
   for(i=0;i<RAM_SIZE;i=i+1) begin
     
     addr=i-1;
     #10;
   end
    
end
 
endmodule
模块ramtest();
参数WORD_SIZE=8;
参数ADDR_WIDTH=8;

参数RAM_SIZE=1当前,在递增地址处用递增值(0、1、2等)填充内存。用随机数据值填充内存的一种方法是使用
$random
系统功能

在测试台中,更改:

 datawr=i;
致:


另请参见IEEE标准1800-2017,第18.13节随机数系统函数和方法,了解更多现代随机函数(
$urandom
等)。

请勿破坏您的帖子。通过在此网站上发布,您已不可撤销地授予Stack Exchange network在其认为合适的时间内根据发布该内容的权利。有关删除的替代方案,请参见:
 datawr=i;
 datawr=$random;