微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > PCB设计问答 > PCB设计学习讨论 > 分享DDR3 SDRAM DIMM与FPGA介面的实现方法

分享DDR3 SDRAM DIMM与FPGA介面的实现方法

时间:10-02 整理:3721RD 点击:

摘要
       记忆体件无疑会越做越快、容量越来越大、并且每一位(bit)的功耗会越来越低,但是如何设计DDR3 SDRAM DIMM与FPGA的介面呢?DDR3标准规范著重於提升速度、带宽以及降低每bit的功耗,但是它同时也引发了新的设计挑战,除了这些,DDR2 ODT(DDR2片内中断电阻)、斜率衰减(slew rate derating)同样也会增加设计的难度。对DDR3的fly-by电路拓扑要求意味著客户在设计DDR3记忆体的时候必须解决其在PCB板上的资料读取平衡(read leveling)问题。本文内容涉及到建模、仿真和物理布线(physical layout)的实现,这些都必须符合JEDEC规范对终端产品的要求和在PCB上设计DDR3记忆体介面时严格的时序要求。
介绍
      在设计DDR2 DIMM介面时,开发人员所面临的部分难题可以由DDR3 DIMM结构来缓解,但是即便如此,在使用DDR3 DIMM介面时仍然要克服其他的问题。DDR3比DDR2速度更快,并且使用更低的电源,在兼顾低功耗和高传输速率的同时还要满足严格的杂讯容限(noise margin)和更少的SSN。DDR3 DIMM所采用的fly-by电路结构(汇流排拓扑)减少了并发开关信号的数量,但也导致flight-time(flight-time指的是信号在接收器的输入引脚到驱动器的输出引脚之间的时间差)的偏移,它甚至可能达到DIMM的两个周期。也就是说,DDR3记忆体规范所定义的读/写操作的平衡(leveling)特徵可以让控制器调节每个byte lane的时序来补偿flight time的偏移。
       除了要理解DDR3的特徵之外,开发人员还要处理DDR2和DDR3记忆体介面同样存在的问题。在验证复杂的DDR3设计的时候,有效的设计方法要侧重於∶分析所有类型DRAM的介面和控制器ODT电路;在工艺、电压和温度等变数下,I/O缓冲器处於高速、低度、正常速度工作状态验证设计的可行性;仿真所有储存和控制的读写动作;根据资料和控制器信号波形的斜率或者用户提供的衰减表格(derating table)来调节其建立和保持时间(setup/hold time)。
        本文讨论从DDR2到DDR3的移植。首先,解释JEDEC DDR3规范里所提到的读/写平衡特性,然後,再提出一个种方法以更方便的设计和验证DDR3介面,同时讲述怎样设计介面,怎样定义在不同读写周期、不同ODT电路下自动仿真所需要的信号。文中还提出预布局的方法用於改善系统布线工艺。同时解释了为什麽需要斜率衰减(slew rate derating)来满足设定的时序要求,最後,文章讨论怎样确保时序和杂讯容限(noise margin)不受byte lane反射和交叉杂讯的影响。
       注释∶Setup/hold time是测试晶片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,资料稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达晶片,这个T就是建立时间Setup time。如不满足setup time,这个资料就不能被这一时钟打入触发器,只有在下一个时钟上升沿,资料才能被打入触发器。保持时间是指触发器的时钟信号上升沿到来以後,资料稳定不变的时间。如果hold time不够,资料同样不能被打入触发器。移植到DDR3
      DDR3是最新的DDR SDRAM技术版本,跟它的前个版本相比,它具有独特的优点。前面提到,开发人员在实现DDR2 DIMM介面时面临的问题可以由DDR3 DIMM结构来缓解。DDR3的资料传输速率800~1600Mbps,是DDR2的两倍(400~800Mbps)。DDR3的功耗更低,因为它的电压从1.8V降低到1.5V。另外,DDR3 DIMM还具有更少的装载时间和更少的SSN时间,这得益於它采用了fly-by的电路结构。另外,DDR3 DIMM在其DIMM上所具有的中断电阻被用作指令/位址/控制汇流排,这增加了记忆板块的作用,即去除了外部中断电阻的需要。像DDR2、DDR3具有可编程的ODT用於他的DQS(资料控制信号)的byte lane,也就是说,它能够在读取动作的过程中动态的关闭中断电阻,而在写入动作的时候开启中断电阻。为了充分发挥记忆体的这个特性,设计中期望FPGA也能满足这个功能。
       这些突破同时也创造了一些难题,即同时增加性能和降低电压需要更加严格的杂讯容限,而杂讯容限的大小影响著SSN的大小,并且会增加采集资料的误差。选择合适的工具软体本质上就是建立一个具有最小SSN数值的DDR3系统,而具备可调节驱动的FPGA也有助於帮助SSN最小化。DDR3 DIMM所采用的fly-by电路结构导致每个DRAM的资料控制和时钟之间的flight-time的偏差,因为时钟和指令/位址/控制信号的传输横贯DIMM。这些flight-time的偏差可以通过DDR3 DIMM的读写平衡机制计算。

DDR3读写平衡(write and read leveling)
        有效的DDR3读写平衡增加了资料到达每一个DQS组所需的延迟时间,所以它们同时到达每一个储存晶片而不用顾及DIMM上的flight-time的时间差。DDR3的指令/位址/控制信号和时钟信号通过DIMM顺序到达每一个SDRAM晶片上。这有利於布线,但是会导致每个DRAM时钟和控制器(strobe)之间的flight time产生变化。对於DDR3的写入平衡来说,控制器需要将DQS信号严格的按照时序传输到DIMM的每个晶片上。在资料被传输到DDR3 DIMM之前,控制器建立准确的延迟(见图1)以使资料能在恰当的时间传输到DIMM的晶片上。指令/位址/控制汇流排和DDR3控制器上的时钟通过中间路径进入DIMM,然後以雏菊花环(daisy-chain)的形式顺序连接每个储存晶片。



   图1. DDR3 DIMM控制器所使用的写入平衡。


                                                      

                                                                                                     


图2. DDR3 DIMM控制器所使用的读取平衡。  


           从DDR3 DRAM器件的最左端晶片到最右端晶片的延迟时间大於1.6ns。控制器的写入平衡需要补偿跨越记忆体模块的flight-time。记忆体晶片的tDQSS(DQS的上升沿到CK上升沿的时间)大小需要被控制为时钟周期的四分之一。也就是说,在写入平衡过程中控制器需要通过从每个晶片反馈回来的信号来调整DQS和CK信号。

   

                                                                                    


图3. 设计和验证DDR3介面的步骤。


        与写入平衡过程类似的是,DDR3读出平衡需要控制器从DIMM传送来的DQS组信号进行延迟处理,也就是要对它们加入间隔时间以便让所有DQS组信号可以同时到达控制器。读取资料时,资料到达控制器的实际时间可能会被扩大到CAS延迟的两倍。从DIMM上看,第一个晶片离中断电阻最远(见图2)。控制器必须给这个晶片的DQS信号添加最大的间隔时间以匹配DQS的从最近的DRAM晶片到中断电阻的flight-time。


建立和分析DDR3介面的方法
      在这节里,我们按照图3显示的步骤针对DDR3设计挑战提出对应的解决方案。通过这些步骤,开发人员可以建立介面、定义相关的仿真信号与ODT的自定义以使EDA工具软体可以在不同的ODT和I/O PVT条件下仿真所有储存和控制器的读写动作。我们还将叙述读写的平衡是怎样进行建模和仿真的,此外,我们将讨论工具软体是怎样根据资料和控制信号的斜率(slew rate)、用户定义的衰减表格(derating table)来调节标准的建立和保持时间(setup and hold time)。
(1)介面的建立和信号关联
        典型的DDR3介面包含一个控制器和多个分布在一个或者多个DIMM上的DRAM晶片,见图4(a)。其中有四种信号类型∶资料、位址/指令、控制和时钟,它们交叉连接到控制器。不同类型的信号传输方向不同,例如,位址信号总是从控制器向DRAM传输,而不必经过检验。所以,这就需要定义介面的信号汇流排(bus)并标识控制器器件,通过这样来确定所有可以进行分析的驱动/接收的组合。



图4.(a)1-DIMM DDR3介面(b)ODT电路。


       基於上述原因,EDA工具软体必须具备让开发人员建立不同DDR3汇流排的功能,在这里提到的汇流排包含了许多网格(net)。在DDR3介面里包含两种不同类型的汇流排,即单向汇流排(比如位址汇流排)和双向汇流排(比如资料汇流排)。在单向汇流排里,位址/指令/控制信号只从控制器传送到储存晶片上;而在双向汇流排里,资料从不同的DRAM晶片读取或者写入。而且,在单向汇流排里,资料在时钟的上升沿(rising edge)或者下降沿被锁存,而在双向汇流排里,资料在控制器(strobe)的两个变化沿被锁存。

表1. 双模块系统(图5)可采用的不同I/O和ODT配置。




          值得一提的是,在起始同步介面(source synchronous interface)里,资料/位址信号总是沿著相应的strobe/clock信号发射,这样可以将时间差(skew)最小化。为了确保软体能够自动仿真所需要的网格(net),然後建立测量并保持信号的传输时间,就应该要采取措施捕获上述的信号进行分析。如图4(a)所示,要支援不同的DDR3介面信号,工具软体还必须具备分析所有类型汇流排的功能以便得到相应的clock/strobe信号,不仅如此,它还要求允许将不同的通道(lane)或者汇流排t资料合并成不同的clock/strobe信号。
(2)片内中断电阻(On-Die Termination,简称ODT)
       DDR3支援自定义的用於信号传输的ODT,其作用是抑制发射回记忆体的信号,并且减少主板的元件数量。DRAM ODT的引脚可以被用於开启、关闭记忆体的中断电阻,也或者根据需要来用它来设定不同的中断电阻参数,见图4(b)。这种自定义的特性使开发人员能以提高系统信号集成度为目标来改变ODT在接收器是处於工作或者待机状态。举例来说,2-DIMM储存系统的ODT就通常在资料读取和写入的过程中被分别进行设定,分别见图5(a)和图5(b)。在两种不同的ODT设定中,处於待机状态下的接收器的ODT总是开启,同时控制器I/O的ODT只有在它接收资料的时候开启,即在读取的周期内开启。要注意的是,最佳的ODT设定要通过基於布线前後的对空间容量的测量结果来判断。



图5.(a)为读取动作时的ODT;(b)为写入动作时的ODT


        支援这项功能的工具软体允许系统开发人员确定IBIS I/O缓冲器的建模,当它们驱动或者接收资料或者处於待机状态的时候,可以被视为传输不同类型信号的引脚。IBIS模型具备缓慢、快速、典型VI和TV曲线,它能捕获I/O的行为,并且能解决PVT变动的问题。在这种情况下,与SPICE软件相似的宏模型(macro model)会更加精确,但是仿真起来会比使用IBIS模型要慢,因此它也可以作为I/O建模的另一种选择。
在简单使用的流程里,I/O建模的过程应该建立在元件的基础上,而不是引脚。因此,对於一个既定的元件,例如图5中的DRAM1,以及对於每个模型选择器(model selector)来说,都可以从相应的模型选择器中选择驱动器、接收器和ODT电路。因此,所有的元件引脚都使用同样的模型选择器,它们使用同样的I/O和ODT模型。在这里假设图5所示的2-DIMM系统模型如表1所描述的那样,在这个基础上,在DRAM1的写入周期内,控制器内的驱动,主动的DRAM1接收器和待机状态的DRAM2接收器分别使用“DRVR”、“RVCR”和“ODT_80”模型。在从DRAM2和DRAM2驱动器的读取周期内,控制接收器和待机DRAM1接收器分别使用“DRVR”“RCVR_240”“ODT_80”模型。根据介面、ODT以及相关信号,软体可以自动的仿真所有不同ODT和PVT变数下的读写动作。结果是,开发周期被显著的减少。

体积考虑
       正如我们前面提到的那样,不像DDR2所支援的"T-branch"技术(见图6(a))那样,DDR3介面使用fly by的电路拓扑(图6(b))来使位址/指令/控制信号在不同的DIMM上进行传输。这两种电路拓扑面对的同样设计挑战是要确保点对点(point to point)的将控制/时钟信号同步的按照相应的位址传送到接收端。在T-branch的电路结构里,时间差(skew)可以通过平衡stub的长度来最小化。然而,在fly-by的电路结构里,位址信号在不同的时间到达DRAM,即不同的延迟,所以要采用读写平衡机制来补偿这些延迟。


图6.(a)DDR2采用T-branch电路结构;(b)DDR3采用的fly by电路结构。

        支援不同的电路拓扑需要有效的、可靠的SI分析工具以确保开发人员通过体积侦测(space exploration)的方法找到最佳的系统参数,包括stub长度、stub阻抗、线宽、flight time。工具软件的router功能可以使用电子和物理参数来布置不同的信号以满足时序和杂讯的要求。此外,可以根据对fly by电路的延迟的补偿,评估时序参数可以被用於设置clock/strobe信号。因此,布线之後的验证工作要允许配置PRBP。
时序测量和斜率衰减(slew rate derating)
       建立和保持DRAM的时间容限要根据它在1V/ns输入斜率下的回应来决定。如果标准的输入信号斜率不等於1V/ns,那麽供应商会在宣传资料里注明时序要求。著眼於这个限制,DDR3和DDR2规范里都定义了斜率,见图7给出的表格。表格中的资料是根据输入信号的斜率和它们相应的clock/strobe信号得出的。在这些信号的基础上,被建立/保持衰减的数值从相应表格中恢复,然後被加入标准的建立/保持时间以确定时序限制是否符合要求。图8和图9分别给出了不同clock/strobe和不同资料信号的斜率的计算等式。


图7. 斜率衰减举例,表格来源於JEDEC规范。

       位址信号的衰减表格跟资料信号的衰减表格有所不同。此外,资料/位址信号可能具有两个衰减表格,这取决於它的strobe/clock信号是否是单独的还是不同的。这有助於减轻斜率衰减过程的复杂程度,这种缓解作用对於EDA工具软体来说是很有必要的。软体使用仿真的结果来计算输入的建立/保持时间,还会计算data/strobe正常的、相切的斜率,见图9。此外,它还允许将衰减表格与汇流排相关联。根据标准的输入信号和strobe信号的斜率,它会装载衰减表格和查询建立或者保持衰减数值。更重要的是,它将这些数值添加到建立和保持时间里。
SI分析和测量方法
       在设定和布置好DDR3介面之後,就应该对其进行验证以确定它是否符合期望的时序和杂讯容限。验证DDR3设计是一个复杂的过程,完成这项任务的软体必须具备下列的特徵∶
(1)支持所有DDR3特性;
(2)能够生成测量所得的精确结果;
(3)容易使用;
(4)尽可能的自动运行。


图8. 不同输入电压下的斜率∶(a)为下降沿=dVdiff/dtf_diff(b)上升沿=dVdiff/dtr_diff


图9. 建立和维持斜率的计算公式,图片来源於JEDEC规范。


       因此,软体要能自动的在不同ODT和I/O PVT条件下进行所有可能的驱动/接收组合的仿真。而且它还要根据SSTL规范定义的交流和直流阈值(见图10a)来计算时序和杂讯参数,比如建立和保持时间、超调量(overshoot)、杂讯容限等等。支援衰减表格和斜率衰减功能同样也要集成到软体里;软体还必须能生产可管理的报告和在显示幕幕上显示眼图(eye diagram)和有用的资料,见图10a,通过这些来是识别并改变网格(net)的路线,以避免它们违反任何设计规则。


图10.(a)眼图示例;(b)典型的DDR3无源结构。

        软体还需要支援两种SI分析功能∶反射和补偿。映射分析(reflection analysis)的目的在於研究SI的非连续影响,资料、位址、时钟的每一个bit都要被独立的进行仿真。从另一方面来说,全面的分析要求将非连续性(reflection)、耦合(xtalk)和SSN影响都应该被在考虑的范围内。在这种情况下,每一个被筛选的网格从它相邻的网格中被删除以建立xtalk的模型。为了解决SSN的影响,电源线和地线也要进行建模,并且被连接到相应的电源导轨(power rail)。在上述两种情况下,所有的被动结构,例如驱动器和接收器之间的导线绑定、焊料球、交叉连线、延迟线(delay line)、过孔、电源层(power plane)、链结器等等资讯都应该被软体采集到,见图10b,这样才能得到精确的仿真结果。因为DDR3介面的资料率可以达到1600Mbps,它需要在一个上GHz的频带内验证被动模型的有效性。从3D图形的仿真方案显然优於准静态的仿真方案,目前多采用它来生成高带宽的模型。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top