DDR2 内存设计布局指导
| 参数 | 指导 |
| DIMM内存插座 | 如果设计中使用了一个DDR2非缓冲非寄存DIMM内存插座,则必然需要在PCB上直接进行DIMM的布线。那么,所有的从FPGA引出到所有内存器件的地址和控制信号引脚必须处在FPGA的同一边(Top or Bottom or Left or Right上下左右四个边之一)。 |
| 阻抗 | ❑所有信号层的单端阻抗必须是50-60Ω,±10%。 ❑所有信号层的差分阻抗必须是100Ω,±10%。 ❑所有未使用的过孔必须去除,因为它们会带来额外的容抗。 |
| 去耦参数 | ❑使用0402封装的0.1μF电容使感抗达到最小。 ❑将VTT电源的去耦电容放置在上拉电阻附近。 ❑在VTT和地之间放置去耦电容。 ❑在每隔一个VTT引脚放置一个0.1μF电容,在每个VDD和VDDQ引脚处放置一个0.1μF电容。 |
| 电源 | ❑GND,2.5V/1.8V必须布成电源层。 ❑内存信号所在Bank的VCCIO必须布成单独的电源层分割,并与其他电源分割保持至少20mils(0.020英寸或0.508mm)的空隙。 ❑VTT必须被布成电源岛或250 mils(6.35mm)宽的电源线。 |
| 一般信号布线 | ❑使用45°转角(不要使用90°转角)。 ❑避免在重要的网络上或时钟信号上形成T型结。 ❑避免使T型结的长度大于250mils(6.35mm)。 ❑不允许信号跨越参考层的分割处。 ❑严格将其他信号线靠近系统复位信号线。 ❑避免将内存信号线布在距离PCI信号或系统时钟信号少于0.025英寸(0.635mm)的地方。 ❑所有的数据、地址和命令信号线必须等长,允许误差±0.250英寸(6.35mm) ❑所有在同一个字节组(DQ/DQS组和对应的DM信号)的信号必须等长,允许误差±0.050英寸(1.27mm)。 |
| 时钟信号布线 | ❑时钟线应该布在内层信号层,表层走线长度应不超过500mils(12.7mm)。 ❑这些信号与其他信号应保证至少10mils(0.254mm)的距离。 ❑时钟信号线差分对的两条线应等长,允许误差±30 mils(0.762 mm)。 ❑不同差分时钟对间距应至少是两条差分线间距的三倍,且必须按差分方式布线(5mils线宽,两条线中心相距10-15mils),并需要与地址、命令信号线等长或长于地址、命令信号线最多100mils(2.54mm)。 ❑时钟线最大长度4.5英寸。 |
| 地址和命令信号布线 | ❑非缓存的地址和命令信号线相比缓存的地址和命令信号线更加易受串扰的影响并且也有更大的噪声。因此非缓存的地址和命令信号应该被布在与数据线(DQ)和写入数据屏蔽线(DM)所在的信号层不同的信号层上,并保证与他们有更大的间距。 ❑不要将差分时钟对(CK)和时钟允许信号(CKE)布在靠近地址信号的地方。 |
| 外部内存布线规则 | ❑对于DQ/DQS数据信号组保证DDR2 DIMM上或FPGA上的引脚到终结排阻(上拉至VTT)的距离不大于500 mils。 ❑对于地址和命令信号组保证DDR2 DIMM上或FPGA上的引脚到终结排阻(上拉至VTT)的距离不大于1000 mils。 ❑DQ/DQS数据信号组信号线平行间距与距离规则如下: ☐平行长度<0.1英寸时,间距应大于4mils(约为信号层与参考层距离的1倍)。 ☐平行长度<0.5英寸时,间距应大于5mils(约为信号层与参考层距离的1倍)。 ☐0.5英寸<平行长度<1英寸时,间距应大于10mils(约为信号层与参考层距离的2倍)。 ☐1英寸<平行长度<6英寸时,间距应大于15mils(约为信号层与参考层距离的3倍)。 ❑地址和命令信号组信号线平行间距与距离规则如下: ☐平行长度<0.1英寸时,间距应大于4mils(约为信号层与参考层距离的1倍)。 ☐平行长度<0.5英寸时,间距应大于10mils(约为信号层与参考层距离的2倍)。 ☐0.5英寸<平行长度<1英寸时,间距应大于15mils(约为信号层与参考层距离的3倍)。 ☐1英寸<平行长度<6英寸时,间距应大于20mils(约为信号层与参考层距离的4倍)。 ❑所有的信号都必须与其他不相关的信号保持20mills的间距。 ❑所有信号最大长度都不能超过6英寸。 |
| 终结规则 | ❑当使用上拉电阻时,推荐使用fly-by终结方式。Fly-by方式可以有助于减少短截线带来的反射问题。 ❑上拉电阻距离引脚应小于0.5英寸,最多不能超过1英寸。 ❑上拉电阻阻值一般为56Ω。 ❑如果使用了排阻,应注意以下事项: ☐不要让地址、命令信号线与数据线(DQ/DQS/DM)共用一个串联终结排阻,以消除排阻内的串扰。 ☐串联电阻和上拉电阻都应采用精度为1-2%的排阻。 ☐串联电阻阻值通常为10Ω到20Ω。 ☐地址和命令信号线串联电阻一般放置在靠近FPGA一端。 ☐数据线(DQ/DQS/DM)串联电阻一般放置在靠近内存的一端(或放在第一个内存插座之前)。 ❑如果使用了终结排阻: ☐排阻与内存的距离应小于750mils。 ☐排阻与FPGA的距离应小于1250mils。 |
本应用笔记提供了在连接Altera FPGA器件和DDR2 SDRAM器件时需要使用的Altera推荐的终结电路图。然而,你还是应该通过对自己的设计进行仿真来得到针对你的设计最适合终结电路图,这是非常重要的。
本应用笔记也提供了仿真结果与实验测得的结果之间的比较,以便你能够自己总结出对于实现最佳信号质量的最佳设计方法。
对于终结电路的设计,Altera推荐使用接收器端的并联终结电阻来达到最佳的信号质量。因此,对于双向信号,例如数据线DQ或数据选通脉冲DQS,推荐使用的终结电路形式是Class II方式。你可以采用在FPGA一边和内存一边外接并联电阻或者启用内存的ODT功能和FPGA的OCT功能,或者组合使用DDR2 SDRAM的ODT功能和在FPGA一侧放置终结电阻,对于一个单向的信号,例如命令线或地址线,推荐的终结方式是Class I方式,在这种方式下终结电阻放置在内存一边。
选择何种FPGA的输出能力选项取决于采用何种终结方式——Class I或Class II——但是根据仿真结果显示,你应当将输出能力设置为与输出驱动器“看到”的负载相匹配的值。对于Class II终结方式,Altera 推荐使用的输出能力设置为25ΩOCT。这种设置能实现最好的结果,因为输出驱动器的输出阻抗与输出驱动器看到的阻抗相匹配。而当采用Class I终结方式时,Altera推荐使用50ΩOCT输出能力设定。
此外,本应用指南描述了不同的内存负载形式对于信号质量的影响。从前文“单/双内存条对比”中可知,高负载值会降低信号的上升速度,延长信号的上升时间,因此会缩小接收端可以看到的信号读取窗口(“眼”)的宽度。你可以通过提高输出能力设定来提高信号的上升速度,但是这回降低输出驱动器的阻抗造成阻抗不匹配。
最后,本应用指南给出了DDR2布局布线指导。虽然本应用指南中的推荐方法是由仿真结果和在Stratix III 主机开发板与Stratix II内存电路板2上的实验结果基础上给出的,但对于任何其他的电路板,你可以应用同样的基本原理来确定最佳的终结方式、驱动能力设置和负载形式。即使具备了这些知识,你仍然很有必要做仿真,采用IBIS或HSPICE模型,来确定你的设计中的信号完整性质量。
鲁文帅翻译整理的飞思卡尔手册
一、DDR2设计核对列表
仿真
1. 内存设计时需利用仿真确定每一信号组的终端电阻的最优值、信号拓扑结构、布线长度。如果在CPU端和存储器端都使用了ODT,则无需再为数据组信号加终端匹配电阻。
信号分为四个组:
(1)数据组:MDQS[8:0],MDQS#[8:0],MDM[8:0],MDQ[63:0],MECC[7:0].
(2)地址组:MBA[2:0],MA[15:0],MRAS#,MCAS#,MWE#.
(3)命令组:MCS#[3:0],MCKE[3:0],MODT[3:0].
(4)时钟组:MCK[5:0],MCK#[5:0].
这些信号组可以占用72位数据(位数据+8位ECC)。有些产品可能会只使用32位数据,使用较少的MCS#、MCKE和MODT信号。另外,有些产品支持可选的MAPAR_OUT和MAPAR_ERR#,用于寄存类型的DIMM。这时,MAPAR_OUT需被作为地址组信号,MAPAR_ERR#可以作为异步信号。
2. 选中的终端方案需满足所有芯片的交流参数,包括电压、迟滞、过冲等。
终端方案
假设设计者选用了与主板类似的主流的终端方案,特别的,假设数据组使用了ODT功能,地址组和命令组使用外部并联电阻。当然,与此不同的终端技术也是有效的。但是需要设计者自己去通过仿真验证。
3. 所选终端电阻的最大功耗应在电源功耗的额定范围之内。
4. 若使用排阻,数据组应该与其他信号组隔离。注意:对于数据组,推荐使用ODT功能,本条只是针对在不使用ODT时而言的。
5. VTT上拉电阻应该被合理放置,即直接连接到存储器总线末端的VTT电源岛上。
6. 若使用了串联终端电阻(主流设计中不多见),应放置在最接近第一个DIMM的位置。
对于分立器件——数据组的串联电阻Rs的放置取决于电路板的设计者。对于读和写都考虑信号完整性(Rs放在中间),而如果仅仅为了布线方便,就把Rs放置在靠近内存的一侧。
7. 对于地址组和命令组,当负载较大时(大于18个内存芯片),可以考虑使用Micron的电容补偿方案,以增加“眼”的大小(包括幅值和过渡时间)。详细可查Micron网站的文章DDR533 Memory Design for Two-DIMM Unbuffered Systems。对于轻负载(4~18片),无需考虑这个方案。
8. 对于分立系统,时钟线需加差分电阻(DIMM已包含该差分电阻)。推荐值100~120欧姆。
9. 每对差分时钟线之间应加5pF电容。若使用DIMM座,该电容应放置在DIMM侧。若使用分立器件,电容加在靠近内存器件侧。
10. 建议在时钟线驱动端附近加0欧电阻使时钟线长度灵活一边调整相位。
VTT参考条款
11. 要考虑基于所选终端方案的最大功耗。
12. VTT需要能够满足稳态和瞬态电流需求。
13. VTT电源岛需做适当的去耦,应为每个排阻或4个分立电阻配置至少1个低ESL电容或2个标准电容。另外,电源岛的两端都需加4.7uF电容。注意:该参考只针对一个VTT顶层,如果在内部还做了分割,则需要加更多的电容。
14. VTT电源岛还需要用大容量电容去耦,至少在电源岛每端放置一个100uF~220uF电容。
15. VTT电源岛应放置在内存通道的末端,并尽可能接近最后一个内存BANK。VTT调节器应接近电源岛。
16. 电源岛布线应使用宽线(约150mil)。
17. 若VTT调节器中有感应引脚,应连接在电源岛中部。
VREF
18. VREF布成宽线(至少20~25mil)
19. VREF应与噪声干扰隔离。保证VREF线与其他信号线间距在20~25mil以上。如果可能,最好用地线隔离VREF线。
20. 在VREF的每个目的引脚使用一个0.1uF电容做去耦。
21. VREF关于VDDQ、温度、噪声的变化应符合JEDEC标准。
22. VREF源应提供系统(包括内存和处理器)所需的最小电流。
23. 若使用了电阻分压网络产生VREF,应保证两个电阻值相同,误差容限1%.
布线
24. 建议DDR2接口的布线顺序为:
(1)数据组,(2)地址组,(3)命令组,(4)时钟组,(5)电源组
这样的顺序使得时钟很容易被调整到与其他信号组近似等长。(而且考虑到数据线要求最高,布线复杂,所以以它为准,然后是地址和命令,最后统筹安排时钟)。假设时钟可以在open critical层任意布线。
25. 全局条款——
●不要让任何布线跨越分割线或间隙。
●保证信号线与参考层边缘间距至少在30~40mil以上。
●过孔上的走线不得超过线宽的一半。
26. 布数据线时,先布最外圈(即最长的数据线),这决定了给其他的内圈数据线附加多少长度(蛇形走线)。
27. 优化分配时钟差分对,以允许所有时钟对在一个单critical层突发传输。
28. DDR2数据总线包含9个字节的数据路径(假设使用ECC字节)。处于同一个数据路径的信号线必须布在同一个critical层,且经过的过孔数目相同。
字节路径0——MDQ[7:0],MDM[0],MDQS#[0]
字节路径1——MDQ[15:8],MDM[1],MDQS#[1]
字节路径2——MDQ[23:16],MDM[2],MDQS#[2]
字节路径3——MDQ[31:24],MDM[3],MDQS#[3]
字节路径4——MDQ[39:32],MDM[4],MDQS#[4]
字节路径5——MDQ[47:40],MDM[5],MDQS#[5]
字节路径6——MDQ[55:48],MDM[6],MDQS#[6]
字节路径7——MDQ[63:56],MDM[7],MDQS#[7]
字节路径8——MECC[7:0],MDM[8],MDQS[8],MDQS#[8]
为提高DDR2数据路径的扇出,轮换的将字节毗连的数据路径布在不同的critical层,参考图1和图2.
注意:如果设备支持ECC,飞思卡尔强烈建议将ECC纳入硬件设计方案中。
29. DDR2数据组——阻抗范围和空间
●单端目标阻抗=50~60欧姆(MDQ,MDM)。
●差分目标阻抗=100~120欧姆(MDQS,MDQS#)。注意:有些产品可能只支持单端模式的选通信号
●选一个solid参考层作为数据组路径的参考层,以为它们提供一个低阻抗的回流路径
●与其他的非DDR2数据组线的布线间距=25mil
●与DDR2数据组的布线间距=10mil(在DIMM内可以减少到7mil)。注意:这是基于数据线宽为5mil的情况
30. 所有的数据路径应匹配在0.5inch之内
31. 假如是高频工作,每条数据路径应与它相应的差分数据选通信号保持线长差距在20mil之内。
32. 当需要为DDR2的某些信号组延长布线时,确保蛇形线平行部分之间至少25mil间距。
33. MDQS/MDQS#差分选通信号布线
注意:有些产品只支持单端的选通信号。
●保持整个长度上的每一段差分线对的长度匹配。线长差异小于10mil。
●通过线宽和线间距保持布线路径上的阻抗连续。
●避免将差分线布在临近噪声信号或高频开关器件(例如时钟芯片)的附近。
●差分阻抗=100~120欧姆(单端是50~60欧姆)
●不要将差分信号对分成两半放在不同层。把MDQS/MDQS#布在相关联的数据路径的相同critical层。
34. DDR2地址组——阻抗范围和空间
●单端目标阻抗=50~60欧姆。
●线长匹配保持在100mil之内。
●以连续的1.8V电源层作为参考层(对于DIMM通常都是这样做的)。
●以连续的1.8V电源层或地层作为参考层(分立的存储器芯片)。
●与非DDR2的地址组信号间距保持25mil以上。
●与DDR2地址组的布线间距=10mil(在DIMM内可以减少到7mil)。注意:这是基于地址线宽为5mil的情况。
35. DDR2命令组——阻抗范围和空间
●单端目标阻抗=50~60欧姆。
●线长匹配保持在100mil之内。
●以连续的1.8V电源层作为参考层(对于DIMM通常都是这样做的)。
●以连续的1.8V电源层或地层作为参考层(分立的存储器芯片)。
●与非DDR2的命令组信号间距保持25mil以上。
●与DDR2命令组的布线间距=10mil(在DIMM内可以减少到7mil)。注意:这是基于命令线宽为5mil的情况。
36. 所有信号组应该调整到时钟参考。由于这是由负载和拓扑结构决定的,所以建议对于时钟的差异采用仿真确定。
其次,多BANK系统中,地址线可能会比控制线(CS,ODT,CKE)负载更大。
特别的:
●最优化地址组的建立/保持时间。
●最优化控制组(CS,ODT,CKE)的建立/保持时间:
●保证写数据的延迟窗满足tDQSS。该条件体现的是JEDEC DDR2标准中的数据选通信号和时钟信号的关系
37. DDR2差分时钟信号:
●保持整个长度上的每一段差分线对的长度匹配。MCK和MCK#长度差异小于10mil。
●通过线宽和线间距保持布线路径上的阻抗连续。
●避免将差分线布在临近噪声信号或高频开关器件(例如时钟芯片)的附近。
●差分阻抗=100~120欧姆(单端是50~60欧姆)
●不要将差分信号对分成两半放在不同层。把MCK/MCK#对布在相同critical层。
38. 所有时钟信号对应该布在同一cricital层(具有同一个solid参考层)。
39. 两对时钟信号的布线长度差异不应该超过25mil。
40. 差分信号对到其他任何信号(包括其他差分信号)的距离要大于25mil。
41. 若使用了非缓冲的DIMM模块,所需的三个时钟信号对都要连接到DIMM槽。
42. 若使用了0欧电阻(见条款10),在该电阻附近使用对地过孔。
MODT/MDIC参考条款
43. MODT正确连接,下面每一组信号要连接相同的物理内存块(BANK),其中n=0~3:
MODT[n],MCS#[n],MCKE[n]。
44. MDI0通过18.2欧的1%精度电阻连接到地,MDI1通过18.2欧的1%精度电阻连接到DDR2电源。
杂项
45. 保持内存通道(控制器和内存条之间的空间)没有噪音和高频器件。(理想的情况是只放置终端电阻和去耦电容)。
46. 上电复位配置引脚要合理设定。注意:不是所有的飞思卡尔产品都支持外部上电复位配置引脚用来选择DDR类型。
缓冲类型DIMM(RDIMM)的拓扑结构(上述条款均成立)
47. 对于使用缓冲类型DIMM内存设备的设计者,应给DIMM复位信号。该复位信号来源于power good主控状态电路。
48. 尽管缓冲类型DIMM的每个块(BANK)只需要一个时钟信号,却仍然需要按照非缓冲DIMM的接法将DDR2的所有时钟信号都接至DIMM连接器,以便稍作改动就可以支持非缓冲的DIMM。
49. 如果处理器支持可选的MAPAR_OUT和MAPAR_ERR#信号,则确保它们按照如下接法:
MAPAR_OUT(来自处理器)=>PAR_IN(位于RDIMM端);
ERR_OUT(来自RDIMM)=>MAPAR_ERR#(位于处理器端)。
50. MAPAR_ERR是OD门,需要4.7K电阻上拉至1.8V。
分立内存的拓扑结构(1~46条款均成立)
51. 按照非缓冲DIMM模块(也就是JEDEC拓扑结构)布线。
52. 以方便数据总线为宜放置器件。在一个确定字节的数据路径内可以交换各个位,但不能跨越字节进行位的交换。
53. 若使用*16设备的单个块,则将DDR2时钟做成点对点的。在靠近源端放置串联电阻RS,分立设备端输入引脚处加差分电阻。
若使用超过5个分立设备,把它们的时钟组织成非缓冲DIMM模块中的结构。也可以在处理器和内存之间外加PLL用以产生附加的时钟信号。
54. 若使用多个物理块,做双堆栈(顶部和底部)以避免地址拓扑结构冗长。
55. 按照手册推荐推DDR2芯片做去耦。典型的是,每个设备使用5个低ESL的电容就足够了。更多信息见Micron网站的Decoupling Capacitor Calculation for a DDR Memory Channel。
56. 为支持扩展,确保多余的NC引脚(未来的地址引脚)也连接上了。
57. 确保集成测试用的测试点。下载本文