zl程序教程

您现在的位置是:首页 >  其他

当前栏目

软硬件融合技术内幕 终极篇 (13) —— 飞鸽传书的背后 (上)

技术 背后 13 融合 终极 内幕 软硬件 飞鸽传书
2023-06-13 09:17:15 时间

在前几期,我们介绍了CPU内存SSD盘的实现原理。CPU利用寄存器进行指令运算,并将运算的结果放入内存。如果期望数据在断电后不丢失,则利用SSD盘进行高速的持久化存储。

我们注意到一个细节:

在较早期,CPU与北桥的前端总线是并行接口,北桥到DRAM的接口,以及北桥到南桥的PCI总线均为并行总线。我们举一个例子:

图中,最重要的地址线AD[31:00],以及在PCI-X中扩展的AD[63:32],是并行的。但是,随着PCI总线的演进,此种方式最终被抛弃。

这是为什么呢?

基于前面几篇的知识基础,我们了解到,北桥会在CLK的下降沿到来之前,把32/64bit的地址或数据信号发送到并行的AD[31:00]和AD[63:32]。其他PCI设备在收到CLK下降沿的时候,从AD[31:00]和AD[63:32]获取地址信息和数据信息。

那么,有一个理想与现实对比的问题是必须要面对的:

我们期望的CLK和AD[31::0],信号是这样理想化的:

如图,在每个CLK的下降沿,到达PCI Device的AD[31:00]都处于稳定状态,PCI Device可以接收到来自PCI根桥的并行传输信号。但是,这一理想化模型成立的条件是,32条AD线的传输时间是差不多的!

我们知道,PCB板上传输信号的电路材质是几乎100%的纯铜。电信号在铜线中的传输速度是光速的75%,约2.2x10^8米每秒,也就是每ns约0.22米。此外,如果电路存在寄生电容等情况,也会对信号传输造成时延的增加。

当PCI时钟信号频率上升到133MHz的时候,时钟周期是7.5ns。按10%允许误差计算,32条/64条AD信号线的传输延迟的误差,不允许超过0.75ns。如果我们进一步提升CLK频率,这方面的挑战会进一步增加。

另一方面的挑战在于信号的误码。

我们教科书上的数字信号的波形是横平竖直的,但实际上数字信号受到电子线路的寄生电容和寄生电感的影响,会变成这个样子:

这是因为,电路中寄生电容和寄生电感会产生一个寄生振荡。当寄生振荡的最大振幅达到原波形的一半的时候,就一定会造成误码。在数字电路中,误码是致命的。如果地址产生误码,会导致读写的目标错误,而指令误码会导致执行错误的指令。

那么,如何解决这两方面的挑战呢?

让我们回想计算机中一个古老而富有生机的接口——串口。

在最早的PC-XT计算机中,就提供了若干个串口,一般也成为COM口,标准情况下配置2个,称为COM1和COM2。

如图,一般的COM口有9个针脚,但一般实际上使用3个就可以了,它们分别是地线GND,接收RX和发送TX。

由于串口是连接计算机外部设备的,受到电气物理条件的限制,其工作频率最高为115.2KHz,在每个时钟周期内可以传输1bit,也就是波特率为115200。显然,这个速率只能用于一些低速外设的连接,如键盘、鼠标等。

在工业控制等场合,需要增加串口的传输距离,并且避免受到误码干扰的影响,工程师们对串口进行了电气信号方面的改造和传输协议方面的优化。

在实践中,我们发现,传输线受到干扰时,其旁边的线路也会受到强度相近的干扰。如两条平行的线路A和B,A电平为5V时,受到-3V强度的干扰后,电平为2V。而B电平为0V,受到干扰后电平为-3V。此种干扰叫做共模干扰。那么,如果用两条传输线的电压差作为判断0和1的依据,就可以抵抗绝大部分干扰信号了。因此,在工业控制领域,串口往往使用RS-485/422标准的电气信号来表示0和1。

RS-485/422规定,数据的收发各通过一对差分线来传输。每对差分线分为A线和B线,当A线电平比B线电平高2-6V的时候,认为逻辑信号为1,而B线电平比A线电平高2-6V的时候,认为逻辑信号为0。

我们发现,当传输线受到共模干扰的时候,由于A和B的传输电平同时受到干扰,因此,不会对传输的逻辑0或1造成影响!

注意这个图,当信号受到干扰的时候,A和B同时被干扰。在析出逻辑信号时,只要对A和B做减法就可以得到0或1的数字信号。

这种现象背后的原理,叫做差分传输对共模干扰的抑制。在工程技术中,越来越多的数字信号利用差分传输,从以太网、HDMI、USB、PCI-E到内存总线,都采用了这种传输方式。由于差分传输能够抑制共模干扰,传输线上的电压也可以大幅度降低,可以从10V以上降低到1.8V左右,大大节约了器件成本和能源消耗。

那么,万一差分传输出现了误码该如何应对呢?

我们下期分解。