首先说明一下 ,本文是个人的初次学习和理解,为了方便自己时长温习而进行整理。在本文最后,附上参考的博客链接。
1、简述
DDR3 SDRAM的工作原理与SDRAM基本一致,这里不做介绍,相关内容可听度娘讲解。本文只对Sparten6/Kintex-7 DDR3 IP的用户接口、例化说明等进行相关介绍。有说明不全的内容,可参看文后的参考文献。
2、IP接口
Sparten6与Kintex-7 IP的用户接口稍微有点不一样。MIG IP 核的配置步骤就不一一说明,需要的可以文章最后的参考文献1。
在Sparten6 DDR3 MIG中,设置给用户使用的接口有下图所示的选项,如选择单32bit写接口和32bit读接口,Kintex-7 DDR3 IP 没有相关配置。
3、读写时序介绍
3.1Sparten读写访问时序
需要说明的是,
(1)在写访问时,首先是将数据写入DDR3 MIG IP的写数据FIFO中;之后,才给MIG发送写指令cmd和写地址,MIG自动读取写数据FIFO中的数据、将数据搬入DDR中;
(2)在读访问时,首先是给MIG发送读cmd和读地址;在读数据有效时,读取该数据。
3.1.1写访问时序
3.1.2读访问时序
下图,是提供的一种简单例化架构。采用的是两个命令port,一个读port,一个写port
3.1.3应用实例(参考文献1)
对MCB核有了一定的了解后,下一步就是进行实践操作了。本次工程设计了一个单端口128位模式下,对DDR3全地址空间写数据再读回来对比的测试.按照用户端口的操作流程,
- 先写一个128bit数据到写数据FIFO中,
- 再将写指令写到指令FIFO中,
- 写指令发送完成后将数据和地址递增,直到写满整个地址空间。
写完成后开始进行读数据操作:
- 先发送读指令到指令FIFO中,
- 然后等待读数据FIFO非空时将数据读走,
- 将地址递增,直到读完整个地址空间。每读一个数据对比一次,如果不对,则将error信号置为1。
逻辑设计完后,将生成的位流文件烧写到板上验证,并且使用chipscope观测信号波形是否与时序一致,可以看到写操作波形如图24所示:
图24 写数据操作波形
用chipscope观测到的读操作波形如图25所示:
图25 读数据操作波形
3.2Kintex-7 DDR3 读写访问时序
下图是7系列DDR IP的用户接口
信号说明:
ui_clk:是DDR MIG IP提供给用户使用的用户时钟,将其从DDR MIG IP 引导各模块时钟端口即可。
ui_clk_sync_rst:是DDR MIG IP提供给用户使用的复位信号,将其从DDR MIG IP 引导各模块时钟端口即可。
init_calib_complete:是DDR芯片上电初始化完成标志。
3.2.1写访问时序
3.2.2读访问时序
参考文献:
1、Sparten6:https://blog.csdn.net/zhyl558/article/details/82018271#
2、Virtex-6:https://blog.csdn.net/hanfei_1/article/details/70546010
3、https://blog.csdn.net/fzhykx/article/details/79642327
4、Xilinx 7系列:https://blog.csdn.net/Gdadiao123/article/details/79253626
5、https://wenku.baidu.com/view/63e8c92d195f312b3069a5ea.html
6、http://blog.chinaaet.com/chinaaetwoaini/p/5100050615#