1 / 22
文档名称:

DDR PCB设计.docx

格式:docx   大小:732KB   页数:22页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

DDR PCB设计.docx

上传人:guoxiachuanyue015 2022/11/27 文件大小:732 KB

下载得到文件列表

DDR PCB设计.docx

文档介绍

文档介绍:该【DDR PCB设计 】是由【guoxiachuanyue015】上传分享,文档一共【22】页,该文档可以免费在线阅读,需要了解更多关于【DDR PCB设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。1引言
DDR2(DoubleDataRate2)SDRAM是由JEDEC(电子设备工程联合委员会)制定的新生代内存技术标准,它与上一代DDR内存技术标准最大的不同:虽然采用时钟的上升/下降沿同时传输数据的基本方式,但DDR2却拥有2倍的DDR预读取能力(即4位预存取技术)。此外,DDR2还增加ODT(内建核心终结电阻器)功能,内建合适的端接电阻,避免了以往因片外连接大片终结电阻带来的制板成本增加。
基于FPGA的SDRAM控制器,以高可靠性、强可移植性、易于集成的特点,逐渐取代以往的专用控制器而成为主流解决方案。本文采用Xilinx公司的Spartan-3A系列FPGA和Hynix公司的DDR2SDRAM器件HY5PS121621实现DDR2控制器的设计。
2FPGA与DDR2存储器接口
图1所示为DDR2与FPGA的外围接口连接图,DDR2的信号线分为:时钟信号线CK/CK;数据信号线Data/DQS/DM;地址信号线Address/BA1/BA0;命令信号线RAS/CAS/WE;控制信号线CS/CKE/ODT。FPGA除与DDR2的所有信号线相连外,还引出外部环回信号线(图中虚线所示),此信号输出送至输入输出模块(IOB),以补偿FPGA与存储器之间的IOB、器件和迹线的延迟。
图IDDR2与FPGA外例接口圉
差分时钟线CK/CK为DDR2数据传输提供时钟,在CK的上升沿和下降沿均有数据被触发;双向差分线
DQS/DQS看作数据的同步信号,写入时由控制器发出,读取时由DDR2产生DQS向控制器发送,它与
读数据边沿对齐而与写数据中心对齐。DN为数据信号屏蔽位在突发写传输时屏蔽不存储的数据;RAS/
CAS/WE作为命令信号线向DDR2发出读取、写人、刷新或预充电命令;片内终结信号线ODT控制是
否需要DDR2进行片内终结。
3DDR2控制器的设计原理
基于FPGA的DDR2控制器设计是由时钟生成模块、存储控制模块和读写数据接口模块组成如图2所示。
图2DDR2控超爲设计皿隔涨田
控制器中所有模块时钟均来自于时钟生成模块,它由数字时钟管理器(DCM)控制,输出90。、180°和270°时钟。该模块还包含延迟校准监视器,用于校准读取数据(DQ)对读取数据选通脉冲(DQS)的延迟,以便读
取数据选通脉冲边沿能够正确对齐DQ有效窗口的中间位置。
读写数据接口模块是整个控制器设计的关键,它负责将用户写入的数据DQ和DOS按照DDR2SDRAM
时序要求发送给DDR2,DDR2在DQS的每一个时钟沿采集写数据。在读取数据时,DDR2SDRAM将
DQS和相关数据发送到与DQ对齐边沿的FPGA。FPGA将接收到的DQS信号经过延迟校准,作为内部
存储读数据的FIFO的写时钟。FPGA为DDR2的每个数据位配置一对读写异步的FIFO,每个数据位都输
入到上升沿(FIFOO)和下降沿(FIFO1)的FIFO中,实现原理如图3所示。
图3空于FVGA的DQ釆車FIFO实现
存储控制模块用于产生DDR2所需的地址和命令信号。DDR2在正常的读写操作前要初始化,因此需向
DDR2发送初始化命令,待初始化完成后才能发送读写命令。对DDR2SDRAM的读写访问为突发模式。
突发写操作需向DDR2提供写命令(User_command)、写数据(User_input_data)和写地址(User_address)
信号,在最后一个写地址发送突发操作完成信号(User_burst_done),并保持2个时钟周期有效下终止写操
作,突发写时序如图4所示。突发读操作需向DDR2提供读命令(User_comm-and)和读地址
(User-address),在最后一读地址发送突发完成信号(User-burst_done),并保持2个周期有效下终止读操
作,突发读时序如图5所示
Tdj
Tl
HOP
nos
XZX
10CKX
硬塩鳖吋用朋
4DDR2控制器的设计及应用
■•■I
寸:
1\
5
T3
为了缩短开发周期,采用Xilinx的MIG软件工具直接生成DDR2控制器设计模块,包括HDL代码和约束
文件。用户可在MIG的GUI图形界面选择对应模板、总线宽度和速度级别,并设置CAS延迟、突发长度、
引脚分配等关键参数。如果设计者所选器件与MIG所列模板不相符,可在代码生成后灵活修改代码,达到
系统要求。代码添加到工程前需硬件验证,采用MIG自动生成的测试模块进行验证。该模块向存储器发出
一系列的写入命令和读取命令,并对写入数据和读回数据进行比较,通过比较信号(led_error)验证控制器
的正确与否。用ChipScope抓取的读数据和相关控制信号时序分别如图6和图7所示,读写比较信号
(led_error)在检测到读写数据相等时输出'0'电平。
在硬件验证通过后,把控制器代码导入到系统工程中,设计者只需输入相应命令(包括读、写和初始化命
令),控制器模块将自动产生命令和控制信号并按照DDR2的时序要求送至DDR2,命令发送完毕提供给用
户一个命令应答信号(User_cmd_ack),设计者根据这一信号判断是否可以发送下一个命令。至于自动刷
新、激活和预充电命令则由控制器自动完成,无需用户干涉。
5结束语
通过MIG工具辅助设计,实现500M/s带宽的DDR2接口数据采集,占用FPGA资源分别为15%IOB
资源,17%逻辑Slice资源和2个DCM。在FPGA中实现DDR2控制器,节省功耗和空间,并缩短系统
开发周期,满足大多数低成本系统设计要求

DDR2布线经验总结
做主板已经两年多了,做过龙芯2F内存条和板载内存颗粒的设计,做过凌动N450内存条和板载内存颗粒的设计。想写点东西总结一下,发现网上已经有很多这类的文章了,现在再写一点就当作是参考补充吧。以下内容主要是针对DDR2667内存的设计。
信号分组:
DDR2的布线中****惯把信号分成若干组来进行设计,分成同组的信号具有相关或者相似的信号特性。
时钟组:差分时钟信号,每一对信号都是同频同相的。ckp0和ckn0为一对。
数据组:对主板64位DDR2内存来说数据每8位(也就是一个byte)为一组可以分为八组,数据dq[0:
7]、数据掩码dqm0、数据选通差分信号dqsp0和dqsn0为一组,以此类推。同个数据组的信号应该在同一个信号层上走线,换层也应该一起换,为了方便在同一个信号层走线可以将数据位互换。比如dq2信号在走线的时候发现如果按照原理图来走线会跟dq4交错,这样就不得不换层走线,我们通过互换数据位就可以使信号走同层,对内存来说每一位存进什么内容读出也是什么内容,互换不会受影响,但是互换的条件必须是在同一组内8个bit之间。
地址/命令组:MA[0:14]、BA0、BA1、BA2、RAS、CAS、WE
控制组:时钟使能CKE、片选CS、终端电阻选通ODT为一组,对内存条来说DIMM0用到了CKE0、CKE1、CS0、CS1、0DT0、ODT1。做板载内存设计的时候,可以只用CKE0、CS0、0DT0,控制4片16位的内存芯片。
PCB叠层:
对六层板来说一般的叠层都是top、GND、singnal2、singnal3、POWER、bottom,信号一般情况下以GND为参考平面比较好。走线的阻抗由走线宽度、走线的铜箔厚度、走线到参考平面的距离、参考平面的铜箔厚度和板介质材料决定,PCB设计的时候应该遵守CPU厂家阻抗设计要求来设置叠层。一般PCB设计软件也能计算阻抗,找PCB生产厂家了解了板材介质厚度的资料后可以自行设计叠层、线宽。地址/命令信号、。
长度控制:
对DDR2这种高频的信号来说走线长度应该计算到CPU核心,这就引入了一个叫封装长度的概念。硅晶元经过物理化学的方法刻蚀而成CPU核心,再将CPU核心封装到一块小的PCB基板上就成了我们常见的CPU。那块小的PCB上管脚到CPU核心的走线长度被称为封装长度。
到同一行列(rank)内存的时钟长度应该控制在正负5mil以内。
同一个数据组内所有走线长度控制在数据选通信号DQS的正负20mil范围内为宜,不同数据组之间长度可以不同,但是应该控制在时钟信号的正负500mil以内。
地址/命令组信号长度控制不是特别严格,INTEL凌动N450要求控制在时钟信号负500mil到正1000m订以内。也就是说最长和最短的信号可以相差1500mil,但是布线的时候还是尽量把信号长度差缩小比较好。布线的时候这组信号长度完全相等也没有问题,但是这样占用的PCB空间也大,花费的时间也多。如果地址/命令信号长度超出时钟信号几千mil,那就需要在BIOS固件中好好调节了。控制在CPU要求的范围内,需要做板载内存的时候只需要配置好内存SPD就可以了。
控制组信号长度控制要求和地址/命令组信号的要求类似,设计的时候应该按照CPU厂家的要求来做,INTEL凌动N450要求控制在时钟信号0mil到正1000mil以内。
走线间距:
一般来说走线都应该按照3W原则来走线,也就是同一个平面上线与线的间距为3倍线的宽度。但是这个不是必须的,intel要求的就比较小。一般走线蜿蜒线的间距可以为16到20mil,对时钟信号可以加大到30mil。不同组信号之间的距离应该适当拉大,可以为20mil以上,地址/命令组和控制组信号的间距可以比较小8mil以下都可以。BGA扇出的地方间距可以小,出线后应该以CPU设计要求来走线。
其它:
VREF走线可以用一根20mil的线,。
VTT走线应该在135mil以上,,两端接10uf大电容。
点对多点的信号,如地址/命令信号、控制信号、时钟信号应该按照“T”形走线,也就是芯片中间走上再分支,长度应该满足CPU设计要求。附拓扑图
DQ/DQM/DQS
cpu
DQ/DQM/DQS
CK
11—
DQ/DQM/DQS
RES—1=1—
DQ/DQM/DQS
如何实现FPGA到DDR3SDRAM存储器的连接
采用90nm工艺制造的DDR3SDRAM存储器架构支持总线速率为600Mbps-(300-800MHz)的高带宽,工作电压低至
,因此功耗小,存储密度更可高达2Gbits。该架构无疑速度更快,容量更大,单位比特的功耗更低,但问题是如何实现DDR3SDRAMDIMM与FPGA的接口呢?
关键词——均衡!
如果没有将均衡功能直接设计到FPGAI/O架构中,那么任何设备连接到DDR3SDRAMDIMM都将是复杂的,而且成本还高,需要大量的外部元器件,包括延时线和相关的控制。
什么是均衡?为什么如此重要?
为了在支持更高频率时提高信号完整性,JEDEC委员会定义了一个fly-by(飞越式)端接方案,该方案采用了时钟和命令/地址总线信号来改善信号完整性以支持更高的性能。当时钟和地址/命令通过DIMM时,fly-by拓扑结构通过故意引起每个DRAM上的时钟和数据/选通之间的飞行时间偏移(flight-timeskew)来减小并发开关噪声(SNN),如图1所示。
,当该偏移被扩展得足够宽时,将不知道数据在两个时钟周期中的哪个内返回。因此,均衡功能可以使控制器通过调节每个字节通道内的时序来补偿这一偏移。最新的FPGA能够为各种应用提供与双倍数据率SDRAM存储器接口的许多功能。但是,要与最新的DDR3SDRAM一道使用,还需要更鲁棒的均衡方案。
FPGAI/O结构
像AlteraStratixIII系列高性能FPGA提供的I/O速度高达400MHz(800Mbps),还具有很高的灵活性,能够支持现有的和新兴的外部存储器标准,如DDR3。
图1:DDR3SDRAMDIMM:飞行时间偏移降低了SSM数据必须被控制器调高到两个时钟周期。
读均衡
在读取操作中,存储器控制器必须补偿由飞越存储器拓扑引起的、影响读取周期的延时。均衡可以被视作为出现在数据通道上的比I/O本身延时还要大的延时。每个DQS都要求一个同步时钟位置的独立相移(经过了工艺、电压和温度(PVT)补偿)。图2显示出同一读取命令下从DIMM返回的两个DQS组。
图2:I/O单元中的17■、下降沿和均衡寄存器。
一开始,每个分开的DQS被移相90度,从而捕获与该组相关的DQ数据。然后用一个自由运行的再同步时钟(频率和相位与DQS相同)将数据从捕获域转移到图2所示用粉红色和橙色连线表示的均衡电路中。在这个阶段,每个DQS组都有一个独立的再同步时钟。
接着DQ数据被送到1T寄存器。图2中给出了一个1T寄存器实例,在上层通道中需要用这个1T寄存器对特定DQS组中的DQ数据位进行延时。注意在该例中,下层通道不需要1T寄存器。通过该过程开始对齐上层和下层通道。任何一个指定的通道是否需要
1T寄存器是自动确定的,这是免费物理层IP内核中校准方案的一部分功能。
随后两个DQS组被传送到下降沿寄存器。如果需要的话,还可以在启动时通过自动校准过程把可选寄存器切换进来或切换出去。最后是将上层和下层通道对齐到同一再同步时钟上,这样就形成了一个将完全对齐的或经过均衡的单倍数据率(SDR)数据传递到FPGA结构的源同步接口。
写均衡
与读均衡类似,不过方向相反,DQS组在不同的时刻发出信号,以便与到达DIMM上的器件的时钟一致,并且必须满足tDQSS参数要求的+/-。控制器必须通过创建反馈环路来调整DQS与CK的关系,在此过程中,控制器会将数据写入DRAM,再通过顺序相位进行扫描读回,直到发现写入窗的终点。为了更好的建立和保持余量,数据应该在好窗口的中间点发出。
其他的FPGAI/O功能创新
高性能的StratixIIIFPGA还具有许多创新性的其他I/O功能,可以实现到各种存储器接口的简单且鲁棒性连接,这种功能包括了动态片上端接(OCT)、可变的I/O延时以及半数据率(HDR)等。
动态OCT
并行和串行OCT为读写总线提供合适的线路端接和阻抗匹配,因此FPGA周边不需要外接电阻,从而减少了外接元件成本,节约了电路板面积,而且降低了布线复杂度。另外,它还大大降低了功耗,因为并联端接在写操作时可以有效地被旁路掉。
用于DQ去偏移(deskew)的可变延时
采用可变的输入和输出延时来跟踪长度失配和电气去偏移。精细的输入和输出延时分辨率(即50皮秒步进)被用于更精细的DQS间去偏移(独立于均衡功能),这种偏移是由电路板长度失配或FPGA和存储器件上I/O缓存的变化所引起的,如表1所示。最终,这增加了每个DQS组的捕获余量。
StratixIIIFPGAI/O延时
•输入卩
变仏
静态心
静态q
合计q
750pw
350ps^
2800psp
3900psp
50psp
50psp
400psr
■输出P
变化卩
I/O缓存卫
合计护
1100pa
150ps^
1250psp
50ps^
50p*
表1:分辨率和绝对值待定特性。
为了将DDR3自动去偏移算法成为启动校准过程的一部分,需要从运行时的FPGA结构实现延时单元。也可以利用输出延时在输出通道中插入少量偏移来有意地减少同时开关的I/O数量。
可靠的捕获
DQS信号用作输入选通信号,它必须移位到一个最佳位置才能捕获读取事务。移相电路可以将输入的DQS
信号移相0°,。,30°,36°,45。,60°,。,72°,90°,108°,120°,135°,144。或180°,具体取决于DLL的频率模式。移相后的DQS信号随后被用作I/O单元各个输入寄存器的时钟。
延时锁定环路(DLL)在整个PVT范围内将相位保持在一个固定位置。DLL模块的相位比较器用于将两个输入之间的相位差保持在零。实现的方法是均匀地修正DLL模块中的特定延时(10-16)。用于更新DLL中某个延时模块的控制信号还被发送到DQS输入路径中的时延模块。例如,可以利用DLL中的全部16个延时单元和DQS相移输入路径中的第4个延时抽头来实现90°的相移:
或者选择DLL中的10个延时单元和DQS相移输入路径中的抽头4来实现36啲相移:
或120°:
该DLL采用频率基准为每个DQS引脚中的延时链动态产生控制信号,并允许它补偿PVT的变化。在
StratixIIIFPGA中有4个DLL,它们都位于器件的边角,目的是使每个DLL能够覆盖器件的两侧,从而可以在器件的各个边上支持多种DDR3SDRAM存储器接口。
跨越高速数据率域和设计简化
DDR捕获寄存器和HDR寄存器支持数据从双倍数据率域(数据在时钟的两个边沿)安全传送到SDR域(数据位于频率相同的时钟的上升沿,但数据宽度加倍),再到HDR域(数据位于时钟的上升沿,数据宽度仍是加倍,但时钟频率仅是SDR域的一半),这样使得内部设计时序更容易实现。
裸片、封装和数字信号完整性改进
FPGA裸片和封装的设计必须为高性能的存储器接口提供更好的信号完整性(即用户I/O与地和电源的比例为81:1,并具有最佳的信号返回路径,如图3所示)。此外,FPGA应该提供动态OCT和可变的偏移率,以便能够控制信号的上升和下降时间以及可编程驱动能力,从而满足所用标准()的要求。
本文小结高性能StratixHIFPGA可以通过提供高存储器带宽、改进的时序余量以及系统设计中的灵活性来弥补高性能DDR3SDRAMDIMM的不足。由于DDR3在实际使用中将很快超过DDR2,故提供更低成本、更高性能、更高密度和优异的信号完整性的高端FPGA必须提供与JEDEC兼容的读写均衡功能,以便与高性能的DDR3SDRAMDIMM相接。FPGA与DDR3SDRAM的有机整合将能够满足目前和下一代通信、网络以及数字信号处理系统的要求