4. 走线拓扑与端接:点对点拓扑、菊花链拓扑、星形拓扑、串联端接、并联端接、AC端接
走线拓扑和端接,说白了就是信号在PCB上怎么走、怎么停。我见过不少工程师,原理图画得漂亮,仿真跑得飞起,结果板子一回来,信号反射得一塌糊涂。问题往往就出在拓扑和端接的匹配上。
这一章,咱们把常见的拓扑结构和端接方式掰开揉碎了讲。你想想看,信号从驱动端出发,经过传输线,到达接收端。如果路径上阻抗不连续,或者末端没人管,信号就会反射回来,跟原来的信号叠加,造成过冲、下冲、振铃。嗯,这就是我们要解决的问题。
核心原则:拓扑决定了信号的路径,端接决定了信号的归宿。两者必须协同设计,缺一不可。
4.1 点对点拓扑
点对点,最简单也最干净。一个驱动,一个接收,中间一根线。我个人的习惯是,只要条件允许,优先用点对点。为什么?因为没那么多麻烦事。
信号从驱动端出发,沿着传输线跑到接收端。如果接收端是开路的,信号到了末端发现没路走了,就会原路反射回去。反射系数接近1,也就是说,信号电压会翻倍。这就是过冲的来源。
我的经验:在DDR4的数据线上,点对点拓扑配合源端串联端接,效果非常好。我曾经在一个项目里,用点对点拓扑跑到了3200MT/s,眼图张得很大。
点对点拓扑的端接选择很灵活:
- 源端串联端接:电阻放在驱动端,靠近输出引脚。阻值等于传输线特性阻抗减去驱动端输出阻抗。比如50Ω的线,驱动端输出阻抗20Ω,那就串一个30Ω的电阻。
- 末端并联端接:电阻放在接收端,拉到VCC或GND。这种方式功耗大,但信号质量最好。
- 末端AC端接:电阻串联电容后到GND。既吸收了反射,又省了功耗。
4.2 菊花链拓扑
菊花链,就是一根线串起多个负载。DDR3的地址线、控制线,用的就是这种拓扑。说白了,就是信号从驱动出发,先经过第一个负载,再到第二个,再到第三个……
这里有个大坑:每个负载的引脚都会产生寄生电容,这些电容会改变传输线的阻抗。信号每经过一个负载,就会有一部分能量被反射回来。负载越多,反射越复杂。
我曾经踩过的坑:在一个DDR3项目中,我把地址线走成了菊花链,但没注意负载间距。结果第三个颗粒的信号质量一塌糊涂。后来发现,负载间距超过了信号上升沿长度的1/6,产生了严重的反射叠加。记住,菊花链的负载间距必须严格控制,一般建议小于信号上升沿长度的1/6。
菊花链的设计要点:
- 负载间距:尽量小,最好小于1/6的上升沿长度。
- 末端端接:菊花链的末端必须端接。通常用并联端接拉到VTT(端接电压)。
- 分支长度:每个负载的stub(分支线)越短越好,最好控制在200mil以内。
| 参数 | 建议值 | 说明 |
|---|---|---|
| 负载间距 | < 1/6 Tr | Tr为信号上升时间 |
| 分支长度 | < 200 mil | 越短越好 |
| 末端端接 | 并联到VTT | 阻值等于特性阻抗 |
4.3 星形拓扑
星形拓扑,就是驱动端在中间,每个负载单独拉一根线过去。像星星一样,中心发光,四周接收。这种拓扑在时钟信号中很常见。
星形拓扑的好处是,每个负载看到的路径长度基本一致,信号到达时间差很小。但坏处也很明显:驱动端的负载电容是所有分支的电容之和,驱动能力不够的话,信号上升沿会变慢。
我个人的建议是,星形拓扑适合负载数量少(2-4个)、且对时序要求严格的场景。比如时钟芯片给多个ADC提供时钟,用星形拓扑就很合适。
关键点:星形拓扑的每个分支必须独立端接。不能只端接一个分支,其他分支不管。否则,未端接的分支会产生反射,干扰整个网络。
星形拓扑的端接方式:
- 每个分支末端并联端接:最可靠,但功耗大。
- 源端串联端接:在驱动端串一个电阻,阻值等于特性阻抗除以分支数。但这种方式对分支长度一致性要求很高。
- AC端接:每个分支末端用RC串联到GND,兼顾信号质量和功耗。
4.4 串联端接
串联端接,也叫源端端接。电阻串在驱动端,靠近输出引脚。原理很简单:驱动端输出阻抗一般比较低(10-20Ω),加上串联电阻后,总阻抗等于传输线特性阻抗。这样,信号从驱动端出发时,就不会产生反射。
但注意,串联端接只消除了驱动端的反射。信号到了接收端,如果接收端是开路,还是会反射。不过这个反射信号回到驱动端时,会被串联电阻吸收掉。所以,串联端接适合点对点拓扑,或者负载离驱动端很近的菊花链。
我的习惯:串联电阻的取值,我一般先算:Rs = Z0 - Rout。Z0是传输线特性阻抗,Rout是驱动端输出阻抗。然后通过仿真微调。实际项目中,22Ω、33Ω、47Ω是常用值。
串联端接的优缺点:
- 优点:功耗低(电阻不消耗直流电流),不增加直流负载,适合低功耗设计。
- 缺点:只能用于点对点或短距离菊花链,对负载数量敏感。
4.5 并联端接
并联端接,就是在接收端放一个电阻,拉到VCC或GND。阻值等于传输线特性阻抗。这样,信号到了末端,直接被电阻吸收,没有反射。
并联端接的效果最好,信号质量最干净。但代价是功耗大。因为电阻上一直有直流电流流过。比如50Ω的端接电阻,拉到1.5V的VTT,静态电流就是30mA。如果地址线有20根,那就是600mA的电流。嗯,发热问题就来了。
注意:并联端接的电阻必须靠近接收端放置。我曾经见过有人把端接电阻放在离接收端1英寸远的地方,结果反射根本没被吸收。记住,端接电阻到接收引脚的距离,不要超过200mil。
并联端接的变种:
- 上拉到VCC:适合高电平有效的信号。
- 下拉到GND:适合低电平有效的信号。
- 分压端接:用两个电阻,一个上拉一个下拉,等效阻抗等于特性阻抗。DDR的VTT端接就是这种。
4.6 AC端接
AC端接,就是并联端接的改良版。在电阻后面串一个电容,再到GND。电容隔断了直流路径,所以没有静态功耗。但电容对高频信号是短路的,所以反射信号还是会被电阻吸收。
AC端接的电容取值很关键。电容太小,低频信号过不去,波形会失真。电容太大,又失去了省功耗的意义。我一般取电容的阻抗在信号最低频率处小于电阻值的1/10。
// 电容取值估算
// 假设信号最低频率为1MHz,端接电阻50Ω
// 电容阻抗 Xc = 1/(2*pi*f*C)
// 要求 Xc < 5Ω (50Ω的1/10)
// C > 1/(2*pi*1e6*5) ≈ 31.8nF
// 实际常用33nF或47nF
我的经验:AC端接在DDR4的地址线上用得很多。既保证了信号质量,又省了功耗。但要注意,电容的ESR(等效串联电阻)不能太大,否则会影响高频性能。我一般用X7R材质的MLCC,ESR在几十毫欧级别。
三种端接方式的对比:
| 端接方式 | 功耗 | 信号质量 | 适用场景 |
|---|---|---|---|
| 串联端接 | 低 | 中等 | 点对点,低功耗 |
| 并联端接 | 高 | 最好 | 高速信号,菊花链末端 |
| AC端接 | 低 | 好 | 高速信号,低功耗 |
最后说一句,拓扑和端接的选择,没有绝对的正确答案。我见过有人用点对点拓扑加串联端接跑DDR5,也见过有人用菊花链加并联端接跑DDR3。关键是要理解每种方案的原理和局限,然后根据你的项目需求——速率、负载数量、功耗预算、布局空间——来做选择。
嗯,这一章的内容就到这儿。拓扑和端接是信号完整性的基本功,搞懂了它们,很多高速设计的问题就能迎刃而解。