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