以前画PCB,两层板子跑天下,信号线随便拉、线宽差不多就行。但现在芯片速度越来越快,DDR、USB 3.0、PCIe、以太网这些高速接口的信号频率都在几百MHz甚至GHz级别,PCB板上的信号线不再是简单的导线,而是传输线。设计不当的话,信号反射、串扰、阻抗不连续这些问题会让板子根本跑不起来。叠层设计和信号完整性就是解决这些问题的核心手段。
先说说叠层。普通双层板对于低速信号(几十MHz以下)还能凑合用,但高速板至少需要四层:顶层信号、内层电源、内层地、底层信号。四层板的好处是有完整的参考平面,信号线走在参考平面上方,阻抗可控,信号回路短,EMI也小。更高速的设计可能需要六层甚至八层,在四层的基础上增加更多的信号层和电源层,比如六层板常用的叠层是:顶信号、内电、内信、内地、内信、底信号。
阻抗控制是高速PCB设计的基础。信号线的特性阻抗由线宽、介质厚度、介电常数和参考平面决定。比如常用的50Ω单端阻抗和100Ω差分阻抗。在Altium或者KiCad里可以根据叠层参数计算线宽。以四层板为例,如果顶到底的介质厚度是0.2mm,FR-4的介电常数4.6,要做50Ω阻抗的话,线宽大概是0.3mm左右。差分对的话,线宽0.2mm、线距0.2mm能做到100Ω左右,具体要看叠层参数计算。
差分信号布线有几个铁律:等长、等距、参考平面完整。等长是为了保证两根线的传播延迟差在允许范围内,DDR的差分对一般要求长度差不超过5mil到10mil。等距是为了保持差分阻抗一致,别一会儿远一会儿近。参考平面不能被分割,差分对走线下方的参考平面必须完整,不然阻抗会突变,信号会反射。如果必须跨分割平面,要在分割处旁边加回流电容。
信号反射是高速设计里常见的问题。反射的根本原因是阻抗不连续——信号从一个阻抗的导线传到另一个阻抗的导线时,一部分能量会被反射回来。解决办法就是保证整条路径上的阻抗一致:线宽不变、过孔尽量少、连接器的阻抗也要匹配。过孔是PCB上阻抗不连续的主要来源之一,高速信号尽量少打过孔,实在要打的话,换层后的线宽要调整以保持阻抗一致。
串扰是相邻信号线之间的耦合干扰,分近端串扰和远端串扰。减少串扰的办法主要有三个:拉大间距(间距至少是线宽的2到3倍)、增大回流平面的面积、关键信号用差分。另外高速信号尽量走内层,外层容易受外部干扰也容易干扰别的信号。时钟信号和高速数据信号要远离连接器边缘和板边,板边附近的参考平面效应会让阻抗不稳定。
实际设计中的一些经验细节:DDR3/DDR4的地址、命令、控制线要做等长匹配,跟数据线的长度差控制在一定范围内;USB 3.0的9根线(包括地线)要成组走线,保持相对位置;电源平面要分割合理,模拟地和数字地单点连接;去耦电容尽量靠近芯片引脚,过孔要短而粗;晶振下方不要走信号线,加地平面屏蔽。