一、 概述
在上一章节中,我们介绍了DDR乒乓操作的控制模块,输出了四个输出信号,用来控制DDR_0或DDR_1的读写,本章节来介绍如何使用这四个控制信号,实现双DDR的乒乓读写操作。
二、 发送读写命令
(一)、Test_ddr4_72width模块接口信号:
(二)、产生写DDR信号
1、可以设置读写DDR的最大地址,来控制每次DDR可以读写的数据数量。当读写到最大地址时,再交换读写。
在工程中为了方便后面仿真,所以将DDR读写的最大地址设置为’h40000。
因为数据位宽为512,每个地址存储一个字节数据,那么每一拍数据需要64个地址存储。当地址计数为’h3ffc0时,表示为存储的最后一个数据。
2、设置写忙碌信号wr_busy,DDR写开始时拉高,写结束时拉低。
3、发送DDR写开始信号:
当wr_ready为高,并且写忙碌和写开始信号为0时,产生一拍写开始信号。
4、发送写突发地址:
在产生写DDR开始信号的同时,将写地址计数作为写突发地址,当写地址计数到’h3ffc0时后,表示已经写满,那么下一次写突发地址为0。
5、发送写突发长度:
写突发长度固定为256。6、发送写突发数据:
当数据有效,并且wr_ready为1时,将产生的数据赋值给写突发数据。
(三)、产生读DDR信号
1、设置读忙碌信号rd_busy,DDR读开始时拉高,读结束时拉低。
2、发送读开始信号:
当rd_ready为高,并且读忙碌和读开始信号为0时,产生一拍读开始信号。
3、发送读突发地址:
在产生读DDR开始信号的同时,将读地址计数作为写突发地址。当读地址计数到’h3ffc0时后,表示已经读完,那么下一次读突发地址为0。
4、发送读突发长度:
读突发长度固定为256。
三、 模块复用
将test_ddr4_72width模块复用,例化两次该模块,共使用两块DDR,连接各自的DDR信号,即可区分。
四、 总结
本章节讲述了产生DDR读写命令的过程,并通过模块复用,来控制两颗DDR的读写。在后面章节来介绍对于数据的产生及接收,使用DDS产生波形数据,这样可以在仿真中更清晰看出数据传输流程。
本文章由威三学社出品
对课程感兴趣可以私信联系