图1.1是一个简单的四层PCB(印制电路板)设计图的局部。芯片之间的信号线,就像一根根水管,将芯片连通,实现芯片之间的信息传输。硬件工程师的职责是保证这些信息传输通道能正确工作,以使各芯片之间实现正确的信息传输。
图1.1 一个简单的四层PCB设计图的局部
但正确的信息传输,需要满足怎样的要求呢?
例如,发送端芯片TX需将一个信息传递给接收端芯片RX,则二者之间需建立一个信号传输链路。
TX和RX之间信号传输的目的,是把发送端的信息无失真地传递到接收端。对于芯片而言,这个信息是一个数字序列。只要RX能接收并正确识别出TX发送的数字序列,则传输链路满足要求。
〖讨论〗
链路上信息的传送基于信号。自然界的一切信号,均是随时间连续变化的模拟信号。发送端TX将数字序列,经过I/O口(输入/输出接口)的处理,变成连续的信号,送到传输链路上;而接收端接收到随时间连续变化的信号,经过I/O口的处理,变成数字序列,供芯片接收端RX处理。
硬件工程师设计的电路需满足的要求之一,便是确保该传输链路能满足发送、接收数字序列的一致性。
但如上所述,真正在链路上传输的是随时间连续变化的模拟信号,而不是理想的数字“1”和“0”。TX的I/O口需把待发送的数字序列转变为连续变化的模拟信号,而RX的I/O口需把收到的连续变化模拟信号经采样转变为数字序列,这中间涉及采样、量化的过程。所以,一旦链路上传输的连续变化模拟信号在波形上发生了严重畸变,则RX采样得到的数字序列,就有可能不同于TX发送的数字序列。
当然,最理想的情况是,TX发送出的连续变化信号,与RX接收到的连续变化信号,在波形上完全相同。但由于第3章将展开讨论的一系列因素,这种理想情况无法实现。真实的情况是,链路两端的波形通常都会存在明显差异。
图1.2展示的发送端波形和接收端波形,来自一条各方面均控制得比较好的信号链路的两端。可以看出,即使在这样一条链路上,链路两端的波形也并非完全相同。
图1.2 发送端波形和接收端波形举例1
从电路工作的要求看,并不要求接收端和发送端波形完全一致。真正需要满足的是,在接收端的每个采样位置采样得到的数字信号,与发送端对应位置发送出来的数字信号应保持一致。
如图1.3所示,发送端发出三个脉冲,相应地,经历一段延时之后,接收端收到这三个脉冲。假设接收端要求,采样后判别“1”和“0”的界限分别是500mV和300mV,即电压高于500mV被视作数字“1”,低于300mV被视作数字“0”。在仅以这一点作为判决依据的前提下,如图1.3中波形所示,对应发送端发送的三个脉冲“1”,接收端均可逐一准确地采样到“1”。如此,尽管TX和RX波形存在差异,也没有影响信息的传递。
图1.3 发送端波形和接收端波形举例2
说明:工程上判别信号采样的正误,除幅度判决门限外,还有时序要求,另外,信号边沿的单调性、边沿爬升时间、信号在幅度上的振荡等情况,也会对信号采样产生影响。
因此,不能把波形不发生改变作为信号传输链路的要求。任何一条PCB信号链路,无论以何种方式控制,必然存在波形畸变。
真正需要控制的是,将波形畸变控制在允许的范围之内,使接收端RX在采样时,即使感受到的波形和发送端TX的波形存在差异,也不影响采样,并能获得正确的数字序列。
把这一点扩充到电源传输链路,也完全适用。即使电源链路上存在一定的噪声,只要将噪声控制在允许的范围之内,不影响电源电路的工作,并满足负载芯片的要求即可。
所以,即使信号链路上出现了各种问题,导致波形明显畸变;即使电源噪声很大,导致波形受到了较大干扰,只要不违背接收端芯片的要求,则设计就仍然是正确的。
〖扩展〗
明确这一点,就能进一步地理解以下几个设计和调试中经常遇到的情况。
情况1 :板上信号的实测波形极为糟糕,却没有造成任何电路运行方面的故障。
原因:信号的畸变仍然在接收端芯片允许的范围之内,并没有违背任何接收端的要求。
情况2 :板上信号的实测波形看上去挺漂亮,数据传输却出现了错误。
原因:从表面上看,信号波形规整平滑,但违背了接收端的要求。例如,笔者多次遇到由于信号边沿爬升时间不满足接收端芯片的要求而导致的故障。
情况3 :很多理论上的推导和实现方式很完美,但在实践操作中却需额外增加各种约束。
原因:理论设计完美,并不代表实际应用也完美。例如,常说的“各方面控制得比较好”就是一种较理想的状态。在实际工程电路中,由于元器件的差异、PCB制造工艺的偏差、环境的差异等因素,理想状态并不存在。第5章会提到,在DDRx SDRAM的Fly By走线拓扑结构中,只要做好精准的阻抗匹配,并把端接电阻放到走线链路的末端,则不论端接电阻到最后一颗芯片的距离有多远,都将获得相同的、理想的波形。但事实上,几乎所有的设计指南(也常称为设计要求、应用指南等),均对该距离做了最大走线长度的约束,其原因就在于这种“精准的阻抗匹配”理想状态并不存在,任何设计均存在一定程度的阻抗不匹配。即使计算时精准匹配,在芯片输入端寄生参数、元器件制造、PCB生产等人为无法精确控制的环节也会引入各种不匹配。所以,需将这些因素考虑在内,在设计中加入各种额外的约束。