本试验建立DDR4读写的MIG IP核,并且对其读写时序进行封装实现类似FIFO的读写接口。
测试工程已上传至https://download.csdn.net/download/botao_li/11310123
建立工程
参考之前的文档在Vivado内建立基于zcu102开发板的测试工程
板卡器件及对应IP
参考ug1182,在zcu102板卡上与PL连接的DDR4外部存储器件为MT40A256M16GE-075E
在Micron的官方网站找到该器件,并下载Data Sheet
在Vivado工程中用IP Catalog中查找DDR4 SDRAM的IP核,双击并配置IP
按照默认Board配置
其它配置项保持默认,生成IP
IP用户接口地址映射
IP使用默认配置的ROW COLUMN BANK的地址映射方式
IP的用户接口时序参考IP手册pg150
根据手册的说明
This mapping can have a significant impact on memory bandwidth utilization. “Row_COLUMN_BANK” is the recommended MEM_ADDR_ORDER setting.
因此在使用过程中直接顺序使用地址即可保证最大读写带宽,不用进行专门的地址特殊处理。
在User Interface章节查看地址映射部分(Rank指共用指令和地址的多个器件,此处不考虑)
参考DDR4器件的地址分配说明
注意:x16表示DDR4器件的数据总线DQ位宽为16,并不是表示Bank数目
最终用户接口的app_addr分配如下:
app_addr | 寻址 |
---|---|
app_addr[3] | Bank Group选择 |
app_addr[5:4] | Bank Group内Bank选择 |
{app_addr[12:6], app_addr[2:0]} | Bank内Column选择 |
app_addr[27:13] | Bank内Row选择 |
app_addr寻址针对的是完整的数据总线,而不是1比特数据,因此256Mbx16表示寻址范围是 256 × 1024 × 1024 256\times 1024\times 1024 256×1024×1024,即 r o w × c o l u m n × b a n k × b a n k G r o u p row\times column\times bank\times bankGroup row×column×bank×bankGroup
DDR4 MIG IP的读写时序
参考IP手册pg150。
读操作时序如下图所示:
app_cmd, app_addr, app_en, app_rdy为3个指令接口信号,其中app_cmd表示读写指令,app_addr表示读写指令对应的地址值,app_en表示指令有效,在(app_en & app_rdy)条件下当前指令被IP接受。
读出数据为app_rd_data,app_rd_data_valid指示当前读出数据有效。读指令被IP接受后,需要等待一般不定的时间才能收到有效的读出数据。
相比较读操作时序,写操作时序非常复杂,并且
写操作时序如下图所示:
写操作实际分为两个部分,写指令和写