本章内容:
一)Allegro之DDR3设计 (实操干货)
二)规则设置具体步骤
DDR3信号表: (eg:镁光MT41J256M16HA-15E)
数据信号 | DQ[15:0] DQS[1:0] DM[1:0] | DQ:双向数据总线 DQS:数据选通,用于同步数据传输 (两组DQS差分,分别对应DQ的高/低8位) DM:数据掩码,屏蔽不需要的数据位 |
地址信号 | A[14:0] BA[2;0] | A:地址线 BA:是BANK地址线,3位BA就是8个BANK |
控制信号 | #CS #RAS #CAS #WE CKE ODT | CS:片选 RAS:行地址选通 CAS:列地址选通 WE:写使能 CKE:时钟使能 ODT:动态电阻调节 |
时钟信号 | CLK | CLK:差分时钟(CK,/CK) |
其他 | ZQ | 用于芯片内部的校准, 通常外接 240 欧姆电阻到地,无需控制 |
电源 | VDD(核电压) VDDQ(IO电压与核电压一致) | DDR2:1V8 DDR3:1V5 √ DDR4:1V2 DDR5:1V1 |
一)DDR3的Allegro设计 (实操干货)
你需要掌握:
- 设置差分对+设置相位误差
- 设置区域规则
- 计算阻抗-线宽/距
- 设置等长规则(下文为相对等长设置)
实例(2片DDR3):
(FPGA_U33-->DDR_U31-->DDR_U32)
等长规则:
1.数据线以DQS为基准等长;地址线、控制线、时钟线以时钟线为基准等长
2.数据线最大长度尽量不超过2500mil,组内长度误差范围控制在+/- 25ml,DQS与时钟线长度误差控制在+/-250mil。
3.地址线误差范围控制在±100mil。DQS、时钟差分对内误差范围控制在+/-5mil
二)规则设置具体步骤:
1.先设置Net class
①地址线+控制线
地址线Pin Pair时候,我分了两段等长,U33-U31 和U31-U32.
②四组数据线
同理手动Pin Pair,数据线Pin pair我直接U31-U33.
2.数据线等长
组内信号成员: D0~7, DQS0(差分), DM0
相对等长基准:DQS_P/N (P和N任选一个)
数据线误差:50mil (注意是相对基准信号DQS ±25mil,或者苛刻些±12.5mil)
如果你级联了四片DDR3,数据线误差想设置苛刻些,可以控25mil误差(即0mil:12.5mil)
3.地址线
组内信号成员:A0~A14, BA0~2, CAS,RAS,WE,CS,ODT,CKE,CLK(差分)
相对等长基准:CLK_P/N
地址线误差:200mil (DDR3误差通常±100mil,或者苛刻些±50mil)
由于地址线我Pin Pair了两段,故有两组等长 Match Group:
地址线控±100mil(误差200mil就行了),U31-U32两个DDR间比较好走,我这里就控了±50mil,
当然两段等长都设置±100mil也可以。
(地址线+DATA0+DATA2)
(地址线)
(DATA1+DATA3)
布线注意:
1.数据线走线,尽量要做到同组同层。地址线不要求,一层也走不完。
2.地址线和数据线的相邻参考面要完整,不要断分割。
4. 差分对组间等长 (差分对和差分对)
你可能看过:DQS 以 CLK 时钟走线长度为参照进行走线,走线长度相对于 CLK ±250mil。
这个条件不强制,有时候CLK接近2000mil,DQS可能不足1000mil,不可能舍本逐末的去吧整组数据线都绕长。
我一般是不设置,不放心的话,具体看芯片规格书有没有要求。
我记得赛灵思要求的是CLK比DQS长,最大可长10000mil, 但是如果短的话最多只能短800mil 。
而且,在赛灵思 DDR3 设计中,对于不同字节通道的 DQS 信号,如 DQS1 和 DQS0 之间,通常没有严格规定固定的误差范围。(还是得看不同芯片的要求)
冷知识:
- DDR3:CK/CK# 与 DQS/DQS# 之间允许的偏移必须在 0 到 1600ps 之间。以信号传播速度 6mil/ps 换算,长度偏移范围在 0 到 9600mil 之间。同时,DQS 和 DQ 之间的时延差异应控制在 ±5ps 以内,换算成长度约为 ±30mil。
(大概看一下长度,符合要求即可)
6.差分对-对内等长(相位误差)
相位误差口诀:苛刻:2mil,常规5mil,宽松12mil。
7.芯片内部误差补偿
像我用的紫光FPGA,规格书内明确有芯片内部走线延迟(Time Delay),
我们在做等长的时候,需要把芯片内部的误差加进去,才能真正做到时序等长。
如下图,单位皮秒,你可能需要换算成ns或者mil。
(图片引用自紫光同创的PGL50H)
Pin delay可以从官方demo的PCB中导出获得,也可以直接跟原厂/FAE要,导出Pin delay 步骤
记得打开Pin delay,不然设置都白费~
8.拓扑结构
等长拓扑:菊花链,T型拓扑,Fly-by
图片来源:高速电路中菊花链、fly-by与T点拓扑
我认知里,菊花链和Fly-by,好像没啥区别。 (反正Fly-by也是菊花链,算分支)
Fly-by 拓扑要求连接到每个DDR的 Stub 分支长度远小于信号的波长(Stub短就对了),近乎为零,主信号线保持阻抗的连续性。(常见DDR3及以上)
- 信号传输
- 菊花链拓扑:信号从源端开始,依次经过每一个器件,前一个器件的输出直接连接到下一个器件的输入,每个器件都相当于一个中继器,会对信号进行接收和转发。这种方式可能会导致信号衰减和延迟累积,信号完整性相对较差。
- Fly-by 拓扑:信号沿着阻抗匹配的主干线传播,通过短支路将信号耦合到各个器件,每个器件从主干线获取信号,无需经过其他器件转发,能有效减少信号反射,提高信号完整性。不过,Fly-by 拓扑中负载之间有延时差,导致信号不能同时到达接收端,但可以通过如 Write Leveling 等动态校准机制进行补偿。
(T型拓扑)
这位写的很好:PCB设计笔记(二)——DDR3的布局布线设计
9.阻抗控制
(反正我数据线误差是±25mil,没出过问题,上图写的是±10mil有点苛刻)
相关资料推荐:资料来自博客园
喜欢谢工碎碎念~点个关注~