存储器类型综述及DDR接口设计的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器类型综述及DDR接口设计的实现
技术分类:微处理器与DSP | 2004-12-30
Laxmi Vishwanathan;Dan Schaffer;Jock Tomlinson,莱迪思半导体公司
存储器综述
在过去的数年里,电子市场,确切地说是存储器市场,经历了巨大的变化。
在
2000年电子工业低迷时期之前,电子系统设计师很少考虑他们下一个设计中元器件的成本,而更关注它们能够达到的最高性能。
今天,竞争的加剧以及利润率的下降迫使系统设计师在降低下一代产品成本的同时,保持、甚至提高系统的性能。
作为这种转变的结果,有一个工业部门经历了实质性的增长,它就是DRAM存储器,尤其是双倍数据速率(DDR) SDRAM存储器。
DDR存储器最初是一种高性能、低成本的存储器解决方案,主要用于个人计算机和其它成本敏感的消费品市场。
近来,由于施加在整个电子工业上的经济压力,非消费产品也开始采用DDR存储器了(图 1)。
图 1 来源:IC Insights
DDR是一种基于SDRAM的革命性的存储器技术。
DDR SDRAM的存取速度是SDRAM的两倍,因为DDR的数据传送发生在时钟的所有两个边沿。
而SDRAM仅在时钟的上升沿传送数据。
因此,DDR能够传送数据的速度高达2133MB/s。
与传统的SDRAM相比,DDR还具有更低的功耗。
它的工作电压是直流2.5V,而SDRAM是直流3.3V。
市场分析表明,在当今所有的电子系统中,超过50%采用了DDR存储器,并且预计在接下来的几年中将增长到80%。
DDR不是,并且永远也不会是一种针对所有设计的技术。
DDR存储器非常适用于那些高读写比率的设计。
而诸如四倍数据速率存储器,适用于50%读写比率的应用。
图2确定了多种顶尖的存储器技术以及它门各自所属的读/写曲线。
图2
不同存储器类型的读/写率的比较
如上所述,每个系统有各自独特的存储器要求。
在服务器应用的例子中,读写趋于较高的比率,表示需要DDR。
在网络处理器与支持大数据包的MAC的接口例子中,在处理之前,这些数据包需要进行缓冲和存储,接近1:1的读写比率,表明QDR是一个合适的存储器结构。
图3展示了一个通用通信线卡印刷电路板的例子。
基于系统设计者的要求,这张结构图上指出了在哪里一些通用存储器类型可以被采用。
在很多系统中采用了相似的决策过程,从而选择合适的存储器结构。
图3
下面的目录指出了针对不同的系统和功能的合适的存储器结构。
这些选择基于系统结构和各自的性能/成本综合要求。
·查找-快速的开关/访问时间
-临界延时,以读取为导向,较小的总线宽度(32/64位)
-存储器选择:ZBT (<10Gb/s) -> QDR/DDR (>10Gb/s)
-操作:地址转换
·查找-大型、高吞吐量(核心路由器)
-需要奇偶的:宽的I/O(>64)
-带宽和精度的要求是最重要的
-存储器选择:SDR (<10Gb/s) -> DDR/FCRAM (10Gb/s) -> RLDRAM/DDR II (10Gb/s-40Gb/s)
-操作:地址转换
·队列/包的管理
-延时 #1,随机读和写-无法预测的数据模式
-存储器选择:ZBT -> QDR
-操作:队列管理和流程控制
·流量整形/管理
-以突发为导向、窄的 I/O总线 (x18/x36)
-存储器选择:ZBT -> QDR
-操作:基于管理的路由表
·统计
-随机读/写,读操作占优势的,窄的 I/O总线 (x18/x36)
-存储器选择:ZBT -> QDR
-操作:为信息包跟踪数据,流量统计
·信息包单元缓冲器
-大的间隔尺度,宽的I/O总线 (>64bit)
-带宽为首要目标
-成本敏感的
-存储器选择:SDR -> DDR/FCRAM->RLDRAM/DDR II
-操作:处理不同尺寸的IP包(128B)
DDR接口设计的实现
至此,我们讨论了不同的存储器结构以及它们适用于系统中的哪些部分。
由于DDR在增长着的多种的数字设计中相对较高的认可率,本文剩余的部分将致力于DDR存储器,以及在FPGA中的DDR接口的实现。
在许多系统设计中,工程师将选用FPGA作为存储控制器(图4)。
选用FPGA的优势在于它固有的灵活性。
不考虑协议和微处理器,FPGA结构通常能够提供DDR存储控制及其所需的电气接口。
采用FPGA作为存储控制器时,一个常见的挑战是高速接口的需求,如同DDR所要求的一样。
由于许多FPGA布线资源的不确定性和有限的I/O速度,因此所要求的I/O速度和相关的时钟经常是设计的挑战。
当DDR速度高于200Mbps时,诸如温度和电压等环境因素也将影响必需的I/O性能。
DDR存储器双倍于标准SDRAM数据率的数据传送能力并不总是福音。
DDR I/O的高速度和非常短的DDR数据窗口,形成了重要的挑战。
存储控制器可靠地工作所需的速度(200MHz通过FR
-4 PCB走线)使得PCB布局成为挑战。
而且,将一个DDR接口置入一个灵活的FPGA结构,使得设计者在一个固有的不确定的布线结构中满足极为临界和紧绷的时序的工作变得相对复杂。
当试图在FPGA中实现一个高速的DDR接口时,习惯于FPGA的高速和灵活性的设计者经常会惊讶地发现他们有可能遇到了困难。
这些困难不是来自功能性的问题,而是来自在FR4和FPGA布线中信号传播速度的数量级下和数据窗口打交道的自然结果。
由工艺、温度和电压引起的不同逻辑速度使得这些时序要求更为复杂。
与通用时钟信号相比,需要对选通信号进行控制和预处理使得DDR设计的实现进一步复杂化。
设计工程师不能再指望简单地将数据和地址线连接起来得到一个可靠的高速存储器接口了。
图4
每一个FPGA供应商都已着手用自
己的方法处理DDR存储器接口的问题。
一方面,由于I/O块中的资源是有限的,数据多路分解和/或时钟转换逻辑必须在FPGA核心逻辑中实现,设计者可能不得不对接口逻辑进行手工布线以确保临界时序。
而另一方面,莱迪思半导体公司最近推出的EC和ECP系列在I/O块中提供了纯粹的硬线接口来处理与DDR接口有关的所有功能和时序问题(包括温度和电压补偿),避免了在FPGA核心布线资源中满足时序要求的问题。
后一种方法确保了设计的成功。
鉴于DDR存储器设计的复杂性,详细地考虑这种接口的某些方面是很有裨益的。
DDR SDRAM接口综述
在一个典型的非DDR系统中,无论控制器还是存储器,都用一个单一的系统时钟来发送和捕捉数据(图5)。
设计者渐渐熟悉了这些系统中的时序约束。
随着时间的推移,伴随时钟速度的提高,这些约束变得更为苛刻。
图5
下述的同步公共时钟系统的典型时序预算包括:
·存储器访问时间(tAC)
·数据传播延时(tPROP)
·从控制器到存储器的时钟歪斜(tSKEW)
·温度、电压下的数据至时钟的时间
当设计者在这些系统中改用双倍数据速率实现时,系统的位速率增加到了两倍。
这实实在在地将数据窗口减小了一半。
尽管在老的公共时钟系统中数据窗口有6ns或更长一些,在DDR系统中设计者将面临3ns或更短的数据窗口。
速度增加的改进,通常是由设计者所依赖的、来改善性能的、更小尺寸的工艺来取得的,但是它现在已经不足以补偿减半的数据窗口了。
更为复杂的是,现在这些时间已经接近信号在FR4和FPGA走线中的传播时间。
另外,一个存储周期的时序预算实际上被物理板走线的延时所占用,并且随温度和电压的不同而不同,这个现象没有因硅片尺寸的减小而得到改进。
图6
图6是一个典型的DDR传送过程中的3ns窗口的紧迫的时序。
显然当今的存储器访问和传播时间使得在单一时钟控制的数据传送和捕捉系统中的DDR传送成为可能。
要一个DDR系统工作,存储器件在同一时刻发送数据使之成为一个有效数据信号的能力是必需的。
这将有效地在时序预算中消除存储器访问时间和数据传播时间(选通和数据信号将有相同的传播时间),并极大地拓展有效数据窗口。
在拥有同时(tALIGN)发送数据选通和数据的能力下,这种方法仅有的歪斜将是细小而差异有限的(图7)。
图7
一个替代的方法
要实现这种数据传送的方法,DDR SDRAM接口得依靠采用一个叫做DQS的数据选通信号。
DQS由一个送入DDR 存储器的差分时钟产生,且使用DDR存储器中的一个DLL生成DQS,并使之与输出数据对齐。
虽然DDR存储器不用差分输入时钟来发送或捕捉数据,但是所用的DQS信号与输入时钟的频率有关。
图8举例说明了基于DQS读的数据窗口的新的时序参数。
如上所述,DQS开始与下一个数据(DQ)变为有效之间有一个有限的歪斜。
这个"数据有效至数据"对齐的误差称为tDQSQ。
这个延时缩小了数据有效窗口。
在此系统中,还有一个有限的第一个数据线有效和最后一个数据线有效之间的对齐延时。
这个参数称为tQH。
通过计算实际的数据有效窗口后,我们得到:tValid = tQH-tDQSQ
图8 读操作的接口时序要求
但一个读操作实施后,DDR存储器输出互相对齐了的数据和DQS。
为了控制器(FPGA)输入寄存器能够以正确的建立和保持时间来捕捉数据,来自存储器的DQS需要移相90度。
其结果是DQS的边沿对准数据窗口的中心,提供了最大限度的建立和保持时间。
图9说明了所需的DQS相对于数据的移相。
图9
很显然,现在有一个合理的数据窗口用以捕捉数据。
此DQS信号有几个特性:
·DQS是双向的
·产生的一根DQS线用于8根来自DDR存储器的数据线
·DQS相对于数据的相位取决于实施的操作(读或写)
·DQS不可以自由地工作
·在存储器件中,DQS由DLL产生以使其和数据之间的歪斜最小化
·当信号结束三态后,DQS有一个前同步状态,其变为低。
·当返回三态前,DQS有一个后同步状态,其变为低。
图10描述了一个DDR存储器和FPGA控制器及其相关的数据和控制线。
请再次注意DQS是双向的。
注意提供给存储器的时钟信号是差分的(CLKP和CLKN),以使得工作周期之间的差异最小。
理解用于捕捉/发送数据到/来自存储器的并非时钟信号,这一点很重要。
DDR存储器还需要一个数据屏蔽(DM)信号,用来在写周期时屏蔽数据位。
这样仅允许用一个周期中的两个DQS边沿中的一个来写存储器。
图10 典型的DDR接口
图 11显示了一个DDR接口的写时序。
在此,我们关注离开FPGA控制器时的信号。
注意FPGA控制器发送与数据窗口中心对齐的DQS。
这与前面所提到的来自存储器的边沿对齐的情形不同。
还得注意一个要求:所有数据(用于DDR333)必须满足相对于所有DQS边沿的0.45ns的建立和保持时间。
图11 写过程中的DQ-DQS
典型的SDRAM接口实现方式是每个DQS信号控制8、16或32位。
注意DQS和数据位的比率独立于存储器总的位宽。
一个8位接口将有一个DQS信号。
用FPGA器件实现DDR存储器接口
现在我们已经详细说明了一个典型的DDR接口的要求,我们能够转而在一个FPGA
中实现这一DDR存储器接口了。
存储器读的实现
在这里我们将检查一下设计一个读接口要遇到的挑战以及可获取的解决方案。
在存储器读时FPGA遇到的挑战
1.DQS-DQ 的对齐 - 在狭窄的数据有效窗口中,DQS必须重新对齐(移相90度)来捕捉数据。
系统歪斜和多个DQ线之间的歪斜必须得到处理。
2.数据多路合成和多路分解 - 在读期间,DDR输入数据必须多路分解成两个SDR流。
时钟域转换 - 数据经多路分解后,它必须和一个公共时钟边沿对齐,然后和一个无关的FPGA系统时钟同步。
这个到FPGA时钟域的转换必须考虑DQS选通信号和FPGA系统时钟间的相对相位以避免建立和保持时间的冲突。
解决方案
FPGA包含简化DDR接口的读部分实现的特点。
它们包括:
·经DLL补偿的DQS延时单元
·DDR输入寄存器
·半时钟传送寄存器
·自动的DQS到系统时钟域的转换电路
DDR输入电路
一个完整的DDR收发器或者输入接口的实现需要所有上述所列的部件。
图12描述了将所有这些部件连接在一起实现DDR存储器接口读的一个FPGA的实现。
图12 DDR输入电路
DQS延时块接收来自存储器的、经边沿对齐的DQS信号,并且将它移相90度。
这个经过移相的DQS信号现在可以被FPGA输入寄存器用来捕捉和多路分解上升和下降沿的数据。
注意接下来捕捉上升沿数据的寄存器是一个下降沿触发器。
这个半时钟传输寄存器用DQS的下降沿传送来自第一个寄存器的上升沿数据,以使得数据的上升和下降沿部分现在用相同的DQS的下降沿被送到下一级寄存器。
最终,最后一级寄存器现在能够用同一个FPGA系统时钟边沿来驱动这两组半个的数据。
然而,为了在数据从DQS域转换到FPGA系统时钟域的传送过程中获得最佳的建立和保持时间,这个边沿必须经过仔细的选择。
这就是上面所示的时钟边沿多路选择器的用途。
这种时钟极性选择的方法在后面详细说明。
最糟糕的细节
这是很重要的一点:请注意与一个高速DDR恢复模块的输入部分中的5个寄存器相关的时序是非常紧迫的。
在3纳秒(甚至更小)的建立和保持时间的数据窗口情况下,设计者通常的布线和逻辑延时会压垮系统的时序要求。
如果设计要在高速的情况下工作,许多FPGA结构要求设计者手工地对这些寄存器进行布局和布线。
即便如此,在工作温度和电压下,设计者仍然难以达到DDR333的速度。
现在莱迪思半导体公司提供在一个硬I/O块(IOB)中集成了所有5个输入寄存器和相关布线的FPGA。
这样保证了设计的性能和成功。
设计者只需简单地把I/O块和DQS子模块连接起来而得到确保可以工作的接口。
片上的DLL校准
由于时序非常紧迫, DQS延时模块的歪斜和实际的延时必须得到仔细地控制。
一个低成本的解决方案可能为DQS 延时采用一个开环的固定延时块。
然而,这种方案的性能将随温度和电压的变化而变化。
这将限制最高可达到的DDR
接口速度。
在一个更加完整的解决方案中,用一个闭环方法来补偿影响DQS延时块的温度、电压和工艺的差异。
该方
法采用FPGA中专用的DLL单元,将校准数据(6位总线)送到每个延时单元。
更进一步,一个系统有两个DLL,每一个位于器件相对的一边,能够提供相关延时块的更为精准的补偿数据。
图13说明了这类系统的DLL补偿方法。
这个对齐后的DQS被分配到输入寄存器。
每个DQS支持多达8个DQ。
图13 采用片上DLL的DQS对齐
自动的时钟极性控制
在一个典型的DDR存储器接口设计中,经延时的输入DQS选通信号和内部系统时钟(在读周期中)之间的相位关系是未知的。
许多FPGA器件将这个问题留给用户解决。
LatticeEC系列拥有专用电路来决定这个必要的系统时钟的极性,实现这个选者并且实施这些域之间的数据传送。
为了防止在DQS(经延时的)和系统时钟域间转换时建立和保持时间的冲突,采用了一个时钟极性选择器。
这需要在每个读周期开始时进行计算来确定正确的FPGA系统时钟极性(图14)。
DDR存储器中读操作之前,DQS是三态的(由终端决定)。
三态之后,在前同步状态中DDR存储器间把DQS置为低电平。
一个专用的电路来检测这种变化并产生一个信号指出FPGA系统时钟所需的极性(DDRCLKPOL)。
这个信号用来控制送到同步寄存器的时钟的极性。
图14 自动的时钟极性选择
读时序波形
图15和16展示了基于时钟极性选择逻辑的两种情况下的读数据的传送。
图15 当DDRCLKPOL=0时读数据的传送
图16 当DDRCLKPOL=1时读数据的传送
存储器写的实现
要实现DDR存储器接口的写的部分,两个单数据率的数据流必须先多路合成为一个用两个时钟边沿传送的数据流。
而且,FPGA控制器必须发送与输出数据DQ中心对齐的DQS信号。
在写周期中还使用了数据屏蔽信号(DM)。
将DD
R输出信号(ADDRCMD, DQS, 但不是 DQ, DM)与输出的差分时钟(CLKP/CLKN)的上升沿对齐是FPGA输出控制的职责。
在存储器写时FPGA遇到的挑战:
1.DQS需要与输出的DDR数据DQ实现中心对齐
2.FPGA需要产生差分时钟信号(CLKP和CLKN)。
CLKP需要与地址和控制信号对齐。
3.FPGA控制器必须满足DDR接口标准的tDSS和tDSH参数,它们的定义是DQS下降到CLKP上升的建立和保持时间。
4.DDR输出数据必须由两个SDR流多路合成为一个输出DDR数据流。
解决方案
一个具有完整特性的FPGA解决方案包括一对DDR输出寄存器,输出多路选择器和三态寄存器,以及用于在DDR 存储器接口写的部分中方便地实现必需的不同相位的输出时钟的PLL。
DDR输出逻辑
DDR输出寄存器块能够把两个SDR数据流合成为一个DDR数据流。
这个DDR三态寄存器简化了双向信号的实现(图17)。
图17 DDR输出逻辑
写控制电路必须产生多个相位的系统时钟以便适当地发送来自FPGA的各自的控制信号:
1.一个PLL用来产生一个90度相移的时钟。
这个90度相移的时钟用来产生送入存储器的DQS、地址、控制信号和差分时钟。
注意ADDRESS和CMD仅在时钟速率(SDR)下变化。
然后地址和数据与DQS和CLKP/N信号边沿对齐。
这就要求满足tDSS和tDSH的规范。
2.通过将"0"和"1"赋值到DDR输出寄存器对的输入端可以产生DDR时钟。
然后它被送入一个SSTL25的差分输出缓冲器来产生CLKP和CLKN差分时钟。
用这种方式产生的CLKN可以防止这两个信号间的任何歪斜。
3.由于在内部采用FGPA主时钟产生DQS和ADD/CMD信号,用户将需要实现一个从核心逻辑到DDR存储器的?时钟转换。
这个时序很难达到,因此建议用户先用反向时钟寄存这些信号,这样从核心逻辑到I/O寄存器的转换将只要一个?时钟的转换。
4.当数据DQ和DM离开FPGA时需要被延时90度。
这是为了当DQS到达DDR存储器时,数据和数据屏蔽信号与DQS中心对齐。
这可以通过将CLK相对于DQ和DM数据反向来实现。
DM信号采用与DQ数据引脚所用的相同的时钟来产生。
如果DM引脚置为高电平,存储器将屏蔽掉DQ信号。
图18说明了DDR写接口信号的产生。
图18 存储器写接口信号的产生
写时序波形
图19显示了DDR写操作的DQ数据节点和DQS选通节点的数据传送时序。
当写入DDR存储器件时,DM(数据选通)和ADDR/CMD(地址和控制)信号还会随同数据和选通信号一起被送至存储器件。
图19 存储器写数据传送波形
总结
如通篇所述,系统设计者有许多不同的存储器可选方案。
当对于一个特殊的应用评估一种存储器时,细致的思考是绝对必要的。
我们还总结出了DDR正日渐成为大多数系统的存储器选择。
与其它存储器选择相比,DDR的优势是很明显的。
然而,DDR是一个高速、复杂的接口,要正确的实现需要非常细致的工作。
幸运的是FPGA厂商开始实施一条龙的解决方案,在提供设计灵活性的同时确保了性能和可靠性。