SerDes艺术

Stauffer, David Robert, et al. High speed serdes devices and applications. Springer Science & Business Media, 2008. 这是一本面向高速串行通信(Serializer/Deserializer,SerDes)领域的经典工程技术书籍,主要介绍 Gbps 级高速串行链路的芯片设计、系统架构、信号完整性问题以及实际应用。它出版于 2008 年,正处于 PCI Express、10Gb Ethernet、光纤通信、高速 FPGA 收发器快速发展的阶段,因此内容非常贴近工程实践。

简单来说,这本书回答的问题是:为什么高速接口要从并行变成串行?一个几Gbps甚至几十Gbps的SerDes链路,芯片内部如何实现?高速信号为什么会失真?如何设计、测试和调试?

Ser——Serializer,串行器,串化器,将并行数据转为串行发送;

Des——Deserializer,解串器,将接收到的串行数据转为并行数据处理。

1. 并行数据总线的弊端

大位宽下所需I/O数量爆炸;布线占地大、等长时序难满足;虽然位宽大,但是牵一发而动全身,整体速率难以提升;不适合高数据吞吐密度工程应用。

2. 源同步接口Source Synchronous Interface

源同步接口架构,这种接口有独立的时钟用于同步接收数据。时钟可以是发送和接收共用的参考时钟,或是由发送端驱动到接收端的时钟。在这种架构中,不需要时钟恢复电路(clock recovery circuits)。

减少I/O数量

image.png

显然,串行化能够减少I/O数量,发送端将n-bit宽的数据串化到k-bit宽的数据总线上传输(k<n),到接收端再恢复。

串化的同时,参数时钟速率相应提高,这势必带来噪声、EMI、功耗等问题。对此,系统中仍然倾向于采用较低频的主时钟,由PLL将其倍频至串行传输所需的高频参考时钟。

时钟转发 Clock Forwarding

如图所示,在两个芯片之间的数据总线中增加一条高速时钟,其时钟源频率略低。芯片中都配置有PLL,用于将时钟源倍频,生成在发送、接收端捕获数据所需高频时钟。此时,CHIP1中PLL的输出时钟既用于驱动其数据发送,也用于接收端CHIP2中的数据采样,这叫做“时钟转发 Clock Forwarding”。

image.png

image.png

由于时钟线与数据线都是从发送端至接收端,时钟线上的任何延迟变化都不需要在时序分析中考虑,只需要关注时钟线与数据线之间的相对延迟。这有点类似于差分抗干扰原理,由于工艺、电压、稳定等环境变化一定程度上能够在时钟线和数据线上相互耦合,接口的时序分析所需裕量较小,建立时间和保持时间也更容易满足要求。

图1.4还示意了高速时钟频率与接口比特率之间的关系——SDR、DDR。SDR(Single Data Rate)即单倍数据速率,DDR(Double Data Rate)即双倍数据速率。接收芯片在 SDR 时钟的每个上升沿(或每个下降沿)捕获数据,在 DDR 时钟的每个边沿(包括上升沿和下降沿)捕获数据。相比 SDR,DDR 的优势在于能够为发送端和接收端提供的带宽更高。考虑最坏情况, I/O 单元以比特率 b Mbit/s 传输 101010…数据,此时数据线上信号频率最高为b/2 MHz;所需SDR 时钟频率为b MHz,是信号频率的两倍;而DDR时钟频率仅为b/2 MHz,与数据线频率一致。因此,可以使用相同的 I/O 驱动器和接收器来驱动和接收数据以及DDR时钟。

无论Clock Forwarding高速时钟是SDR还是DDR,接收端芯片都直接使用此时钟来捕获数据。这一时钟也被接收芯片用于生成同频的内部系统时钟。这些时钟是中同步(mesochronous)的,虽然它们的频率相同(假设它们共享一个公共频率参考),但时钟之间的相位关系未知,并且可能由于PVT变化而改变。因此,接收芯片通常会使用FIFO将接收到的数据从接口时钟域重定时到芯片内部时钟域。为了最大限度地减少时钟分配网络中的延迟,应尽量减少由接口时钟驱动的触发器数量,否则时序问题会更加严重。

高速源同步接口 Higher Speed Source Synchronous Interface

从连续触发的示波器上观察,一个有效的数据位时间窗口就像一个“眼”,称为“眼图”。图1.5所示是一个串行数据眼图。由于发送接收路径的工艺、电压和温度、信号上升和下降时间、转换速率等差异,可能出现眼图闭合(eye closure)。眼图闭合程度越高,接收端就越难找到可靠的采样时间点。图 1.5b 所示的串行数据眼图完全闭合。

image.png

显然,眼图应该尽可能张开(eye opening),其张开程度可以用眼宽(eye width)和眼高(eye height)来衡量。链路的误码率(Bit Error Rate,BER)与眼图的张开程度直接相关。下文将介绍一些最小化眼图闭合的方法。

差分信号传输 Differential Signals

差分信号使用两个电信号的差值/组合(TRUE信号和COMPLEMENT信号)来表示数据位。逻辑0:TRUE信号在其下限电压,COMPLEMENT信号在其上限电压;逻辑1:RUE信号在其上限电压,COMPLEMENT信号在其下限电压。差分接收器根据两个信号之间的差值来判断逻辑值,而不是根据任何一个信号的绝对电平。

差分驱动电路的电流消耗通常呈线性,并且与同等单端驱动电路相比,对电源的噪声影响更小。大多数噪声源会在TRUE信号和COMPLEMENT信号上产生相同的电压变化(共模干扰);这种共模噪声会被差分接收器天然忽略。此外,由于差分信号的一端上升而另一端下降(反之亦然),上升时间和下降时间的差异会相互抵消。

差分信号并没有消除驱动器上升/下降速度的不一致,而是通过互补切换,使两个方向的数据转换都同时包含一次上升过程和一次下降过程,从而显著降低 rise/fall 不对称造成的判决时刻差异。打个比方:单端接收器每次只看一个运动员,所以一次受到“上升沿速度”影响,另一次受到“下降沿速度”影响;差分接收器看的是两个运动员什么时候相遇,因此无论数据向哪个方向翻转,每一次都是“一个快下降 + 一个慢上升”的组合。

当然,如果采用差分传输,那么每个数据位需要占用两个芯片IO,但是其更高的传输速度收益能够弥补这一缺点。

多接口时钟 Multiple Interface Clocks

上述时钟转发中所述接口时钟与发射端用于驱动数据发送的时钟相同,通常从时钟分配网络中尽可能靠近数据触发器的位置驱动输出。数据路径与时钟路径中的任何不同,都会引入相位差异(Phase Variation)。在同一芯片上,不同电路单元之间的工艺、电源网络、温度等都存在差异。在计算能够确保正确采样所需的延迟、建立时间、保持时间时,必须将上述所有的公差和限值考虑在内。当通信的比特率较高时,这些因素会显著限制接口速度,导致眼图开口变小。

为了最大化眼图开口, 从时钟树到各个数据触发器(data flip-flop)以及到时钟输出的路径,应尽可能共用相同的电路单元;同时,时钟输出驱动器应与数据信号的输出驱动器保持尽可能相似的特性。理想情况下,同一个时钟缓冲器(clock buffer)既应驱动时钟输出端(clock output driver),又应驱动所有数据触发器的时钟输入端。 然而,数据总线的位宽越大,实现这种设计就越困难。因为 I/O 驱动器在物理上必须依据封装引脚连接的布局规则分布在芯片不同区域。电路间距离越大,受工艺(Process)差异、电压(Voltage)变化与温度(Temperature)分布影响的程度就越高,也意味着时钟分配网络中可共用的电路越少,从而增加相位不一致与抖动风险。

image.png

有一种折中方法是限制每条接口时钟线所对应的数据位数量。对于更宽的数据总线,可以采用多条接口时钟(multiple interface clocks)的方式,每条时钟分别对应数据总线中的一部分比特位。如图 1.6 所示,一个 k bits 的互联通道被划分为两个数据组,每个组都单独配有一个参考时钟线。 需要注意的是,接收端芯片必须在各自独立的时钟域中采集这两组数据位,并在采样后将这些数据重新定时(retime)到芯片内部的统一时钟域中。

自适应采样边沿(多抽头延迟线)

另一种用于提升源同步接口速度的技术,是在接收端对数据信号进行处理,针对每一位数据自适应地调整采样项目。具体来说:将接收到的接口时钟信号输入一个多抽头延迟线(Multitap Delay Line),并使用由不同时钟相位驱动的多个触发器(flip-flop)同时对数据信号进行采样。随后,通过逻辑电路判断数据跳变(data transition)发生在哪两个相位之间,并选择其中的最佳采样时钟来捕获数据,如图1.7所示。这正是现代 FPGA 中 ISERDES / IDELAY + BITSLICE 的核心工作原理。

img

如图 1.7 所示的这类方案,可能需要在接口初始化时或定期运行时使用特定的训练序列(Training Pattern)进行校准,两次训练周期之间的数据采样相位通常保持不变(静态)。更复杂的实现方式可以根据接收数据的实时特征,或根据嵌入在数据流中的训练符号,对采样相位进行动态调整。另一类架构也可能将数据本身输入延迟线进行处理,而不是仅仅延迟时钟。

需要注意的是,此类方案大多有一个固有特性:其相位调整范围通常不超过 ±1 bit时间(bit time);并且必须保证眼图开口足够大,以便在其中存在一个最佳采样相位。所以说, 源同步接口的相位训练机制只能在“一个比特周期”的范围内进行精细校准,因此信号链路本身必须具备足够的眼图裕度,否则无论延时线多精确都无法稳定采样。

通过上述源同步方案,我们已经可以将单比特链路的数据速率提升到Gbps级别。然而,PVT变化使得在此基础上进一步提升接口速度的 设计变得极其复杂且难以实现。为了获得更高的传输速率, 高速SerDes(Serializer/Deserializer) 架构成为更优方案 ——它通过在数据流边沿(edge transitions)中提取时钟信号(clock recovery)来实现数据采样与同步。

CDR 是 SerDes 的固有特征,是SerDes 接收端的心脏,从高速数据流中提取节拍,实现时钟恢复、相位同步与数据判决。没有 CDR,就没有真正意义上的高速 SerDes 链路。

3. 高速SerDes

在速率达到 2.5 Gbps 及以上时,高速串行器/解串器(High-Speed SerDes, HSS) 成为主流的I/O接口实现方案。与源同步接口(source-synchronous interface)不同,这类器件的接收端内部包含一个时钟与数据恢复电路(CDR, Clock and Data Recovery),该电路可根据数据信号的边沿跃迁(transition edges)动态确定最佳的采样时刻(sampling point)。 换句话说,SerDes 并不依赖单独的外部时钟线,而是直接从数据流中提取时钟信息来实现同步。

image.png

串行器/解串器 Serializer/Deserializer Blocks

均衡器 Equalizers

时钟恢复电路 CDR

差分驱动器

差分接收器

诊断功能

锁相环