- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种高效读写DDR控制器研究
一种高效读写的DDR控制器的研究
摘要: 在许多对于数据量和带宽要求较高的系统中,DDR是被广泛应用的一种存储器。为了充分发挥DDR容量和速度的优势,主要针对DDR读写的特点,实现一种基于FPGA的高效读写的DDR控制器的设计。该设已在Altera公司的cycloneII系列的EP2C6Q240C8FPGA上得以实现。
关键词: 高效读写;DDR控制器;FPGA
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2011)0210031-01
0 引言
DDR(全称DDR SDRAM)是我们熟悉的一种存储器,因为它允许在时钟的上升沿和下降沿进行数据的存取,所以其速度是同频率SDRAM的两倍,另外DDR在容量方面相比于SDRAM也有所提升。因此DDR经常被应用在数据吞吐量大、速度高的系统中。DDR控制器实际上就是用户端与DDR存储器之间进行数据传输的一个桥梁,通过DDR控制器,用户端命令被转化成DDR存储器所支持的命令格式,从而实现用户端对DDR的访问。
1 DDR的操作命令
DDR的操作命令主要包括预充电、刷新、自动刷新、激活、读、写以及模式寄存器的设置等命令。上电之后,首先要对DDR进行初始化,然后才能进行正常的操作[1]。根据DDR读写规范,在DDR读写之前要先激活相应的行,在换行的时候要进行预充电关闭之前打开的行,另外DDR还需要进行周期性的刷新。
2 DDR高效读写方案
为了实现最高效率的读写,我们必须最大限度的减少读写过程中预充电操作、激活操作以及刷新操作的次数,另外在数据读写的时候最好能够实现数据的无缝读写,也就是说从DDR数据端口来看数据是不间断的被写入或被读出的。
2.1 刷新模式的设计
最大限度的减小连续读写过程中刷新的次数是提高读写效率的方法之一,因为突发的刷新命令会中断当前正在执行的读写操作。有两种方法可以保证在读写的过程中避免刷新命令,第一种方法是在每次读写操作之前先对将要刷新的行进行一次刷新,第二种方法是在读写前对所有行进行集中刷新。用第一种方法,在下一次刷新命令到来之前会有64/行数ms的时间可以用来读写;用第二种方法,从64ms中减去集中刷新的时间就是可用于读写的时间。采用集中刷新的缺点是刷新时间比较长,如果DDR控制器正在执行集中刷的时候,用户要对DDR进行读写,那么就必须等到最后一行新完成之后才能发送进行读写,对实时性要求较高的系统而言这么长的等待时间是无法接受的。如果采用第一种刷新方法,最坏的情况就是等待刷新一行所用的时间。另外一点如果采用集中刷新,两次集中刷新之间有很长时间可以用来进行数据的读写,为了保证读写不间断,用来进行数据缓冲的FIFO的面积也会很大,所以最好的情况就是采用第一种刷新方式。
2.2 减少预充电与激活次数
将预充电和激活次数降到最小,也是提高读写效率的一种方法。为了将预充电次数与激活次数降到最少,我们必须在激活一行后将该行中需要读写的数据都读写完,然后再对该行进行预充电,这样我们在访问某一行的过程中就必须采用同一种突发长度,因为在数据未读完之前每设置一次模式寄存器就会伴随一次预充电操作和激活操作。在本设计中我们将突发长度固定为2,这样可以最大限度的节省时间,DDR的突发长度不固定或被固定为其他值都会造成时间的浪费。比如当用户要读取6byte的数据时,将突发长度固定为2只需发三次读命令给DDR即可;如果将突发长度固定为4,需要发两次读命令,但是会多读2byte数据;如果DDR的突发长度固定为8,也会多读2byte数据。这2byte多余数据可以舍弃但是时间却无法节省,如果不想多读数据,就要重新设置模式寄存器,但会消耗更多的时间。因此最好是将DDR的突发长度设置为2,这样就不会有多余的数据被读出的情况发生。
2.3 数据的无缝读写
数据的无缝读写是另外一种提高DDR读写效率的方法。无缝读写的前提是DDR的突发长度必须为固定值。当DDR的突发长度被固定为2时,为了实现数据的无缝连接,在每个时钟(该时钟指的是CK信号,而非它的差分信号)的下降沿命令必须连续被发送,这样就可以保证在每个时钟的上升沿DDR都可以采样到读写命令。当然上述情况是在DDR控制器内数据FIFO未满的情况下发生的,如果数据FIFO已满,那么在暂停读写数据的时候也必须暂停发送读写命令。在FIFO未满的情况下,数据的连续与否主要是由突发长度和两个相邻的读命令之间的时间间隔决定的。假如将突发长度设置为4,那么两条读命令之间需要插入一个NOP命令才能实现数据的无缝读写。
3 DDR控制器的内部结构
在DDR控制器设计的时候,除了读写命令可以由用户发送之外,其它的命令是对用户屏蔽的,刷新、激活以
文档评论(0)