SDRAM开发(三)

mem_test.v

mem_test模块是一个通用的外部RAM测试模块,主要功能是先把整个存储器写入数据,再读出对比,为了能够充分测试外部存储器的数据正确性,每次写入相同地址数据是不能相同的,模块设局一个计数器计数写入次数,再把地址和写入次数相加,写入相应的存储单元,再读出对比,如果有一个数据错误error信号会变高,直到有复位才变低。heartbeat信号用于指示测试真该进行,如果测试在进行,heartbeat会不断的跳变。

其中rd_burst_req;wr_burst_req;rd_burst_len;wr_burst_len;rd_burst_addr;wr_burst_addr;

rd_burst_data_valid;wr_burst_data_req;rd_burst_data;wr_burst_data;rd_burst_finish;

wr_burst_finish;都是与sdram_core这个模块相连接的。

而error,heartbeat是直接输出到IO的。

IDLE→MEM_WRITE(每次写BURST_SIZE长度的数据,在sdram_core这个模块中模式寄存器中设置的sdram突发长度为1,写完之后将{wr_burst_addr+BURST_SIZE}作为sys_addr继续连续写BURST_SIZE长度的数据,其中sys_addr[SDR_COL_WIDTH+SDR_ROW-1:SDR_COL_WIDTH]作为新的行地址,{4’b0000,sys_addr[8:0]}作为新的列地址,直到[ADDR_BITS-1]wr_burst_addr的地址满)→MEM_READ(同写MEM_WRITE)→MEM_WRITE。

 

expect_read_data是设定的也是写入当前地址的数据。

read_burst_data 是在当前地址实际读出的数据。

当在测试读的时候,并且在数据有效时,将两个数据进行比较,如果不同则报错,error置1,只有当复位信号出现的时候,error才会置0。

heart_beat不断的跳变说明测试正在进行中,当写入的数据加上读出的数据累计的数量超过99999999,heart_beat跳变一次。

 

test_cnt,在后面的状态机设计中可以看出,每次将[ADDR_BITS-1:0]write_burst_addr/

read_burst_addr写满之后,test_cnt加1。

wr_data_pre_add/rd_data_pre_add:在当前burst_length长度的数据中此值是相同的。

 

在sdram_core这个模块中我们已经了解wr_burst_data_req是写数据请求信号,

而wr_burst_finish标记着写完一次长度为BURST_SIZE的数据。

同理rd_burst_data_valid和rd_burst_finish也是一样的功能,wr_cnt/rd_cnt是对这个数据长度的每一个数据计数(起到标记作用,区分相邻的数据)。

看这段verilog需要结合状态机的那一段描述。当wr_burst_finish/rd_burst_finish信号为1时,

next_wr_burst_addr/next_rd_burst_addr赋给wr_burst_addr/rd_burst_addr。

※wr_burst_addr并不仅仅是赋给在sdram_core模块中的读写操作中的列地址,也要给sdram_core模块中的ACTIVE(激活操作)赋给行地址。

 

系统默认进入IDLE状态,在下一个时钟进入MEM_WRITE状态,wr_burst_req置1,

wr_burst_len也被赋值为BURST_SIZE(一次连续要写的数据长度)。

这里最重要的就是判断next_wr_burst_addr==ZERO{ADDR_BITS-1:0],就是如果这个寄存器写满后,进入到MEM_READ状态,并将read_burst_req置1。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值