xilinx平台DDR3设计教程之应用篇_中文版教程.pdfVIP

xilinx平台DDR3设计教程之应用篇_中文版教程.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
xilinx平台DDR3设计教程之应用篇_中文版教程.pdf

到现在总算可以进入应用部分了 要说应用呢...那就是怎么把FIFO和DDR接起来了。 DDR接FIFO的情况需要考虑FIFO的时序和DDR 用户接口的时序 真等你调出来,那是要花点心思的。 下面我们就来看图说话吧。 至于为什么要接FIFO 你不接FIFO还想做啥呢? 下面是一个典型的经过FIFO写DDR的应用例子流程图。别看了,很简单的。 废话少说,下一页开始图示FIFO和DDR用户接口的时序。 下面是一个fifo 的接口 wr_clk是写时钟,wr_en是写使能,din是写入的数据。 那么rd_clk是读时钟,rd_en是读使能,dout是读出的数据。 发现什么区别了没? 神马?图不够大看不清楚?看下页大图~ 这下图够大了吧? 写入fifo 的din在wr_en使能范围内,是2020开始,顺序递增的。 而读出fifo 的dout在wr_en使能范围内,第一个数据是初始值,而不是从fifo里读出 的第一个数据2020,注意到这一点没有? 那么,如果你希望从DDR条子的0地址开始写入第一个进入FIFO的有效数据,你 应该怎么办? 是不是看得脑子有点乱?没关系,我们下一页继续放大了讲。 看到地址了没? 就是app_addr,我们把他的初始值设为1fff_fff8,这是整条4GB 的DDR条子 的最后一个地址,它再加上29'h8,就又回到首地址29'h0 。 如此,地址29'h0写入的值就是第一个进fifo 的2020 。 等等,这里为啥地址每次都加上29'h8 ? 你知不知道burst length这一说? 默认的burst length是8,地址自然每次加上8 。 不知道突发模式写DDR的,你还是百度一下DDR的基础知识吧... 除了地址要打个提前量之外,这个图上值得注意的是各种用户接口信号的时序。 一句话,就是“对齐” 那就是设计教程里讲的,一次成功的写入,需要地址系统和数据系统的各自对齐, 并且我这个例子里面,地址系统和数据系统相互之间也是对齐的。 再具体的讲,把能对齐的全都给对齐了,自然就搞定了。 此外,如图所示,app_rdy可以独立拉高,它只表示DDR是准备好了,而你可以 不去理它。 至此,写入已经ok 那么怎么读出来? 看上面的图,光标线,注意到图上黄色光标虚线没?什么你还没看到? 那你看到app_cmd的0和1两个值的分界线了吗? 拉高app_en,同时给出你要读的地址。 然后你就等到app_rd_data_valid拉高吧。 到app_rd_data_valid拉高,是要过一阵的。 放大,就是下面的图: 讲一点关于收尾的工作。 刚刚讲的是怎么把开头的数据写对。 事实上如何把最后一个写入FIFO的数据刚好读出,相对麻烦一点。 还有处理fifo被读空,但是后续还有数据会写入的情况,也比较麻烦。 大致的思路是,在fifo可能被读空的时候,发现fifo里还剩一个数据的 时候就停止读取(这会用到fifo 的almost_empty信号)。 这样fifo被读空的时候,最后一个数据会留在数据总线上,等到下次 激发写DDR功能的时候,第一个数据就直接被打入DDR。 对最后一个数据,需要一个独立的处理机制来处理,确认fifo被读空 之后才停止读取fifo和写入DDR。 这部分内容相对复杂,但是我相信你只要花时间就一定可以调出来。 我是写了一个8个状态的状态机来实现的。 每个人的应用需求不一样,代码还是各人写各人的吧。 好了,DDR的四部教程先写到这里了。

文档评论(0)

pujunlin + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档