High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

High Speed Serdes 技术概述(一)

导言:

简单介绍一下Serdes的基本概念和技术,希望能够让大家对Serdes有个相对宏观的技术概念。串行器/解串器(Serdes)目前在高速的有线串行通信领域有非常广的应用,比如PCIe,Ethernet等等,目前是有线通信传输的技术热点,很多数据传输都有Serdes的影子。这个系列分四次发完,大概1.5W字。

1.1 并行数据总线

通过芯片的IO传输数据的最简单方法是将数据接口从一个芯片直接连接到下一个芯片(见图1.1)。由于数据通常由一个以上的信息组成,因此数据接口的宽度超过了一个比特。在图中,1号芯片内的n位数据接口通过芯片输出,穿过n位互连,通过2号芯片的输入,连接到接收芯片内的n位数据通路。由于两个芯片的时钟都是由同一个时钟源发出的,所以两个芯片之间的数据传输是同步的。

 

图1.1所示的并行数据总线有两个固有的问题。第一个问题是,每个芯片上需要n个输入/输出(I/O)引脚来传输数据。在历史上的某个时刻,这是可以接受的(巨大的IO开销)。然而,与几十年前相比,摩尔定律推动了芯片上可制造的电路数量的大幅增加。芯片封装技术的引脚密度并没有以与硅电路密度相同的速度增长。因此,I/O引脚的价格大大高于硅电路,将n个I/O引脚专用于上述数据总线对于大多数芯片应用来说是不可接受的。

 

第二个固有的问题涉及到满足时序要求。数据由1号芯片同步启动,并使用相同的时钟在2号芯片中同步捕获。芯片2号输入端的数据必须满足相对于芯片的时钟输入的建立和保持时间。这些建立和保持时间的计算必须有足够的余量,以考虑到两个芯片的时钟分配路径延迟以及通过芯片到启动和捕获触发器的延迟差异。延迟可能根据芯片的工艺、电压和温度(PVT)条件而变化,必须增加余量以考虑最坏情况的变化。对于更高的时钟频率,可能需要在芯片中使用锁相环(PLL)来调整时钟相位,以补偿芯片内的时钟分布延迟,并适应不断变化的工艺、电压和温度条件。如果时钟频率足够高,几乎不可能建立一个能在这个数据总线上可靠地传输数据的系统。

 

图片[1]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.1 芯片间并行数据总线

1.2 源同步接口

 

第1.1节中并行数据总线的两个问题可以通过本节中的讨论对系统修改来消除。这些方法是并行数据总线的扩展。并行数据总线和本节中描述的所有扩展都被认为是源同步接口结构。这种架构包括任何用输入时钟来捕获数据的接口。这可能是发射和接收芯片都使用的参考时钟,或者是发射芯片驱动一个时钟给接收芯片。在这两种情况下,源同步接口都不需要时钟恢复电路。

1.2.1 减少I/O引脚数量

要解决的第一个问题是减少芯片之间传输数据所需的I/O引脚的数量。这是通过将芯片#1输出的n位数据复用到k位互连接口上(k<n),然后将芯片#2输入的k位互连接口解复用到n位内部数据通路上来实现的。这在图1.2中显示。由此产生的系统在每个芯片上只需要k个I/O引脚,而不是以前需要的n个引脚。

 

图片[2]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.2 串行化数据以减少引脚数量

当然,虽然引脚数的要求按k:n的比例减少,但所需的参考时钟频率却按这个比例的倒数增加。由于噪声、电磁干扰(EMI)和功耗的考虑,系统设计者通常不喜欢在系统内分布高速参考时钟。通常,一个较低频率的时钟被使用,芯片中的PLL被用来将这个参考时钟乘以一个可用的频率。由此产生的时钟的相位变化,加上较高的数据传输频率,往往会加剧并行数据总线方法的时序问题。

1.2.2 时钟转发

在图1.3中,在两个芯片之间的数据路径中加入了一个高速时钟。但假设时钟源提供一个比芯片内部数据触发器需要的时钟频率低一些的时钟频率。每个芯片都使用PLL来产生这个频率的倍数时钟。产生的时钟用于启动和捕获各自芯片中的数据。芯片#1中的PLL的输出时钟,用于启动该芯片的数据,也是该芯片的一个输出。这个时钟被2号芯片用来捕获数据。这种方法被称为时钟转发。

 

这种方法的优点是,用于在芯片#1启动(传输)数据的高速时钟可供芯片#2作为捕获数据的参考。在时序分析中不需要考虑驱动两个芯片的时钟网络的延迟变化。只有时钟路径和数据位之间的延迟变化是相关的。这些路径之间由于工艺、电压和温度引起的变化在一定程度上是相互跟踪的。其结果是,接口的定时分析需要较少的余量,因此设置和保持时间更容易满足。

 

到目前为止,我们还没有就高速时钟的频率相对于接口的比特率做出任何区分或建议。一般来说,图中所示的高速时钟可以是单数据速率(SDR)或双数据速率(DDR)(图1.4)。接收芯片在SDR时钟的每个上升沿(或每个下降沿)捕获数据;而有些接收芯片在DDR时钟的每个边缘(包括上升沿和下降沿)捕获数据。

 

图片[3]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.3 与数据一起转发的高速时钟

图片[4]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.4 单倍数据速率和双倍数据速率时钟

与SDR时钟相比,DDR时钟的优势在于对相应的I/O驱动器(输出)和接收器的带宽要求。一个以每秒bMbits的比特率使用的I/O单元需要足够的带宽来传输101010…数据模式。这相当于一个频谱,其基本频率上限为b/2MHz。一个SDR时钟的相应频率是bMHz,是数据频谱限制的两倍。然而,同一接口的DDR时钟的频率只有b/2MHz,与数据的频谱一致。因此,同一个I/O驱动器和接收器可以用来驱动和接收数据以及DDR时钟。

无论高速时钟是SDR时钟还是DDR时钟,接收芯片都使用这个时钟来直接捕获数据。该芯片还使用参考时钟来生成相同频率的内部系统时钟。这些时钟是同步的。虽然频率是相同的(鉴于它们共享一个共同的频率参考),但时钟之间的相位关系是未知的,并且可能由于PVT变化而变化。因此,接收芯片通常将收到的数据从接口时钟域重新过渡到内部芯片时钟域。FIFO被用来执行这种跨时钟域功能。最好是尽量减少由接口时钟触发的触发器的数量,以尽量减少时钟分配网络的延迟;否则时序问题会加剧。

1.2.3  更高速度的源同步接口

可以假定数据位有效的时间窗口被称为“眼”。这个名字源于数据信号在连续触发的示波器上被监测时的波形形状。图1.5a中展示了一个串行数据“眼”的例子。眼闭合可能源于工艺、电压和温度(PVT)的影响,以及信号上升和下降时间、回转率等之间的差异。眼球闭合得越多,就越难找到信号可以可靠采样以接收数据的点。图1.5b中所示的串行数据眼是完全关闭的。

 

尽可能大的“眼”张开是期望出现的。如图1.5c所示,可以测量开眼的宽度和高度。链路的预期误码率(BER)与开眼量(包括宽度和高度)直接相关。本节简要介绍了一些尽量减少数据信号闭眼的方法。在后面的章节中会进一步讨论眼图的情况。

 

图片[5]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.5 串行数据眼图

1.2.3.1 差分信号

非差分信号的上升和下降时间不等,导致闭眼。在芯片上切换的信号也会在芯片的配电网上产生电流变化,这反过来又会引起压降(噪声)的变化,从而导致周围电路的延迟变化。为减少这些现象对眼宽的影响,一个方法是在芯片之间驱动差分信号。

 

差分信号用两个电信号(真信号和补信号)表示数据位。逻辑 “0”是指真信号被驱动到其下限电压,而补信号被驱动到其上限电压;逻辑”1″是指真信号被驱动到其上限电压,而补信号被驱动到其下限电压。差分接收设备根据两个信号之间的差异来解释逻辑位值,而不是根据任何一个信号的电平来单独解释。

 

图片[6]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.6 具有独立高速时钟的多组数据

 

与同等的单端驱动相比,差分驱动电路往往具有线性电流驱动,并在电源上产生较少的噪声。大多数噪声源在真信号和补信号上引起的电压变化是相同的;这种共模噪声被接收器所忽略。另外,由于差分信号的一个边沿在上升,而另一个边沿在下降,或者相反,不平衡的上升和下降时间效应被抵消。

 

差分信号的缺点是,每个数据位需要两个芯片引脚。然而,差分信号带来更高速度,这抵消了它更多引脚消耗的缺点,而单端信号则不可能带来更高的速度。

1.2.3.2 多个接口时钟

图1.3中的接口时钟与用于启动数据的时钟相同,一般来说,它是从时钟分配网络中的某一点驱动的,尽可能接近启动数据的实际触发器。任何不属于数据路径和时钟路径的电路都会引入相位变化。

 

硅工艺在同一芯片上的不同电路之间确实存在差异,电源分配网络可能对不同的电路有不平等的电压降,这可能基于开关电流而变化,温度可能在芯片上的不同点之间变化。在计算接收数据的正确捕获所需的延迟,建立时间和保持时间时,必须考虑到所有这些参数的公差裕度和限制。在较高的比特/波特率下,这些参数可能会大大降低“开眼率”,并成为限制接口速度的主要机制。

 

为了使眼宽最大化,通过时钟树到每个数据触发器和时钟输出的路径应尽可能多地共享,而且时钟的输出驱动器应与数据的输出驱动器相似。理想情况下,同一个时钟缓冲器应该驱动时钟到输出驱动器,并驱动所有数据触发器的时钟输入。数据总线上的位数越多,实现起来就越困难。I/O驱动器必须根据连接到封装引脚的接地规则进行物理分布。电路之间的距离越大,工艺、电压和温度的变化就越大,时钟分配网络中由于缺乏接近性而不能共享的电路路径就越多。

 

图片[7]-High Speed Serdes 技术概述(一)-FPGA常见问题社区-FPGA CPLD-ChipDebug

图1.7 调整接收器中的采样时钟相位

 

用于改善眼宽的一种技术是限制与特定接口时钟线相关的数据位的数量。更宽的数据总线是通过使用多个接口时钟建立的,每个时钟与数据位的一个子集相关。图1.6是一个例子,其中k位互连被细分为两组,每组都有自己的高速接口时钟。请注意,接收芯片必须在不同的时钟域中捕获每组数据位,并需要将这些数据跨时钟域传输到芯片内部的公共时钟域。

1.2.3.3 采样边沿调整

另一种用于允许源同步接口更高速运行的技术是在接收器处处理数据信号,并在每个比特的基础上调整时钟的采样相位。这是通过将接收到的接口时钟信号连接到一个多隙延迟线的输入端,并在多个由不同时钟相位驱动的触发器中捕获数据信号来实现的。然后,可以用逻辑来确定数据转换发生的时钟相位,并选择用于捕获数据的最佳时钟相位。这个方案如图1.7所示。

 

如图1.7所示的方案,可能需要在接口初始化时或定期进行训练模式。如果使用训练模式,相位选择在训练期之间保持静态。更复杂的实现方式是根据收到的数据或根据嵌入在数据流中的训练模式来动态调整。将数据应用于延迟线的替代架构也是可能的。然而,请注意,大多数这些方案的一个固有特点是,相位调整小于正负一个比特时间,必须有一个足够开的“眼”,这样才能存在一个最佳的采样相位。

 

鉴于上面讨论的先进方案,源同步接口的数据速率可以扩展到每个互联位每秒几千兆比特(Gbps)。然而,PVT变化使接口速度的进一步提高变得异常复杂。在这些速度之外,从数据流的边缘转换中提取时钟的高速Serdes设备成为首选解决方案。

请登录后发表评论

    没有回复内容