FPGA的SerDes接口

本文转载自:FPGA之家微信公众号

FPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCI Express, 从ATA到SATA,从并行ADC接口到JESD204, 从RIO到Serial RIO,…等等,都是在借助SerDes来提高性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释SerDes是怎么工作的。SerDes怎么可以没有传输时钟信号?什么是加重和均衡?抖动和误码是什么关系?各种抖动之间有什么关系?本篇小文试着从一个SerDes用户的角度来理解SerDes是怎么设计的, 由于水平有限,一定有不够准确的地方,希望对刚开始接触SerDes的工程师有所帮助。

1. SerDes的价值

1.1并行总线接口
在SerDes流行之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,图1.1演示了系统和源同步并行接口。

随着接口频率的提高,在系统同步接口方式中,有几个因素限制了 有效数据窗口宽度 的继续增加。

  • 时钟到达两个芯片的传播延时不相等(clock skew)
  • 并行数据各个bit的传播延时不相等(data skew)
  • 时钟的传播延时和数据的传播延时不一致(skew between data and clock)
  • 虽然可以通过在目的芯片(chip #2)内用PLL补偿时钟延时差(clock skew),但是PVT变化时,时钟延时的变化量和数据延时的变化量是不一样的。这又进一步恶化了数据窗口。

    源同步接口方式中,发送侧Tx把时钟伴随数据一起发送出去, 限制了clock skew对有效数据窗口的危害。通常在发送侧芯片内部,源同步接口把时钟信号和数据信号作一样的处理,也就是让它和数据信号经过相同的路径,保持相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。

    我们来做一些合理的典型假设,假设一个32bit数据的并行总线,

    a)发送端的数据skew = 50 ps ---很高的要求
    b)pcb走线引入的skew = 50ps ---很高的要求
    c)时钟的周期抖动jitter = +/-50 ps ---很高的要求
    d)接收端触发器采样窗口 = 250 ps ---Xilinx V7高端器件的IO触发器

    可以大致估计出并行接口的最高时钟 = 1/(50+50+100+250) = 2.2GHz (DDR)或者1.1GHz (SDR)。

    利用源同步接口,数据的有效窗口可以提高很多。通常频率都在1GHz以下。在实际应用中可以见到如SPI4.2接口的时钟可以高达DDR 700MHz x 16bits位宽。DDR Memory接口也算一种源同步接口,如DDR3在FPGA中可以做到大约800MHz的时钟。

    要提高接口的传输带宽有两种方式,一种是提高时钟频率,一种是加大数据位宽。那么是不是可以无限制的增加数据的位宽呢?这就要牵涉到另外一个非常重要的问题-----同步切换噪声(SSN)。

    这里不讨论SSN的原理,直接给出SSN的公式 SSN = L *N* di/dt。L是芯片封装电感,N是数据宽度,di/dt是电流变化的斜率。随着频率的提高,数据位款的增加,SSN成为提高传输带宽的主要瓶颈。图1.2是一个DDR3串扰的例子。图中低电平的理论值在0V,由于SSN的影响,低电平表现为震荡,震荡噪声的最大值达610mV,因此噪声余量只有1.5V/2-610mV=140mV。

    Figure 1.2 DDR3串扰演示

    因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好的解决SSN问题,代价是使用更多的芯片引脚。使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。

    1.2 SerDes接口

    源同步接口的时钟频率已经遇到瓶颈,由于信道的非理想(channel)特性,再继续提高频率,信号会被严重损伤,就需要采用均衡和数据时钟相位检测等技术。这也就是SerDes所采用的技术。SerDes(Serializer-Deserializer)是串行器和解串器的简称。串行器(Serializer)也称为SerDes发送端(Tx),(Deserializer)也称为接收端Rx。Figure1.3是一个N对SerDes收发通道的互连演示,一般N小于4。

    可以看到,SerDes不传送时钟信号,这也是SerDes最特别的地方,SerDes在接收端集成了CDR(Clock Data Recovery)电路,利用CDR从数据的边沿信息中抽取时钟,并找到最优的采样位置。

    SerDes采用差分方式传送数据。一般会有多个通道的数据放在一个group中以共享PLL资源,每个通道仍然是相互独立工作的。

    SerDes需要参考时钟(Reference Clock),一般也是差分的形式以降低噪声。接收端Rx和发送端Tx的参考时钟可以允许几百个ppm的频差(plesio-synchronous system),也可以是同频的时钟,但是对相位差没有要求。

    作个简单的比较,一个SerDes通道(channel)使用4个引脚(Tx+/-,Rx+/-), 目前的FPGA可以做到高达28Gbps。而一个16bits的DDR3-1600的线速率为1.6Gbps*16 = 25Gbps,却需要50个引脚。此对比可以看出SerDes在传输带宽上的优势。

    相比源同步接口,SerDes的主要特点包括:

  • SerDes在数据线中时钟内嵌,不需要传送时钟信号。
  • SerDes通过加重/均衡技术可以实现高速长距离传输,如背板。
  • SerDes 使用了较少的芯片引脚
  • 1.3 中间类型
    也存在一些介于SerDes和并行接口之间的接口类型,相对源同步接口而言,这些中间类型的接口也使用串行器(Serializer)解串器(Deserializer),同时也传送用于同步的时钟信号。这类接口如视频显示接口7:1 LVDS等。

    2. SerDes结构(architecture)
    SerDes的主要构成可以分为三部分,PLL模块,发送模块Tx,接收模块Rx。为了方便维护和测试,还会包括控制和状态寄存器,环回测试,PRBS测试等功能。见图2.1。

    Figure 2.1 Basic Blocks of a typical SerDes

    图中蓝色背景子模块为PCS层,是标准的可综合CMOS数字逻辑,可以硬逻辑实现,也可以使用FPGA软逻辑实现,相对比较容易被理解。褐色背景的子模块是PMA层,是数模混合CML/CMOS电路,是理解SerDes去别于并行接口的关键,也是本文要讨论的内容。

    发送方向(Tx)信号的流向: FPGA软逻辑(fabric)送过来的并行信号,通过接口FIFO(Interface FIFO), 送给8B/10B编码器(8B/10B encoder)或扰码器(scambler),以避免数据含有过长连零或者连1。之后送给串行器(Serializer)进行 并->串 转换。串行数据经过均衡器(equalizer)调理,有驱动器(driver)发送出去。

    接收方向(Rx)信号的流向, 外部串行信号由线性均衡器(Linear Equalizer)或DFE (Decision Feedback Equalizer)结构均衡器调理,去除一部分确定性抖动(Deterministic jitter)。CDR从数据中恢复出采样时钟,经解串器变为对齐的并行信号。8B/10B解码器(8B/10B decoder)或解扰器(de-scambler)完成解码或者解扰。如果是异步时钟系统(plesio-synchronous system),在用户FIFO之前还应该有弹性FIFO来补偿频差。

    PLL负责产生SerDes各个模块所需要的时钟信号,并管理这些时钟之间的相位关系。以图中线速率10Gbps为例,参考时钟频率250MHz。Serializer/Deserializer至少需要5GHz 0相位时钟和5GHz 90度相位时钟,1GHz(10bit并行)/1.25GHz(8bit并行)时钟等。

    一个SerDes通常还要具调试能力。例如伪随机码流产生和比对,各种环回测试,控制状态寄存器以及访问接口,LOS检测, 眼图测试等。

    2.1串行器解串器(Serializer/Deserializer)
    串行器Serializer把并行信号转化为串行信号。Deserializer把串行信号转化为并行信号。一般地,并行信号为8 /10bit或者16/20bit宽度,串行信号为1bit宽度(也可以分阶段串行化,如8bit->4bit->2bit->equalizerà1bit以降低equalizer的工作频率)。采用扰码(scrambled)的协议如SDH/SONET, SMPTE SDI使用8/16bit的并行宽度,采用8B/10B编码的协议如PCIExpress,GbE使用10bits/20bits宽度。

    一个4:1的串行器如图xxx所示。8:1或16:1的串行器采用类似的实现。实现时,为了降低均衡器的工作频率,串行器会先把并行数据变为2bits,送给均衡器equalizer滤波,最后一步再作2:1串行化,本文后面部分都按1bit串行信号解释。

    一个1:4的解串器如图2.3所示,8:1或16:1的解串器采用类似的实现。实现时,为了降低均衡器(DFE based Equalizer)的工作频率,DFE工作在DDR模式下,解串器的输入是2bit或者更宽,本文后面部分都按1bit串行信号解释。

    Serializer/Deserializer的实现采用双沿(DDR)的工作方式,利用面积换速度的策略,降低了电路中高频率电路的比例,从而降低了电路的噪声。

    接收方向除了Deserializer之外,一般带有还有对齐功能逻辑(Aligner)。相对SerDes发送端,SerDes接收端起始工作的时刻是任意的,接收器正确接收的第一个 bit可能是发送并行数据的任意bit位置。因此需要对齐逻辑来判断从什么bit位置开始,以组成正确的并行数据。对齐逻辑通过在串行数据流中搜索特征码字(Alignment Code)来决定串并转换的起始位置。比如8B/10B编码的协议通常用K28.5(正码10’b1110000011,负码10’b0001111100)来作为对齐字。图2.4为一个对齐逻辑的演示。通过滑窗,逐bit比对,以找到对齐码(Align-Code)的位置,经过多次在相同的位置找到对齐码之后,状态机锁定位置并选择相应的位置输出对齐数据。

    2.2发送端均衡器( Tx Equalizer)
    SerDes信号从发送芯片到达接收芯片所经过的路径称为信道(channel),包括芯片封装,pcb走线,过孔,电缆,连接器等元件。从频域看,信道可以简化为一个低通滤波器(LPF)模型,如果SerDes的速率大于信道(channel)的截止频率,就会一定程度上损伤(distort)信号。均衡器的作用就是补偿信道对信号的损伤。

    发送端的均衡器采用FFE(Feed forward equalizers)结构,发送端的equalizer也称作加重器(emphasis)。加重(Emphasis)分为去加重(de-emphasis)和预加重(pre-emphasis)。De-emphasis降低差分信号的摆幅(swing)。Pre-emphasis增加差分信号的摆幅。FPGA大部分使用de-emphasis的方式,加重越强,信号的平均幅度会越小。

    发送侧均衡器设计为一个高通滤波器(HPF),大致为信道频响H(f)的反函数H-1(f),FFE的目标是让到达接收端的信号为一个干净的信号。FFE的实现方式有很多,一个典型的例子如图2.5所示。

    调节滤波器的系数可以改变滤波器的频响,以补偿不同的信道特性,一般可以动态配置。以10Gbps线速率为例,图2.5为DFE频率响应演示。可以看到,对于C0=0,C1=1.0,C2=-0.25的配置,5GHz处高频增益比低频区域高出4dB,从而补偿信道对高频频谱的衰减。

    采样时钟的频率限制了这种FFE最高只能补偿到Fs/2(例子中Fs/2=5GHz)。根据采样定理,串行数据里的信息都包含在5GHz以内,从这个角度看也就足够了。如果要补偿Fs/2以上的频率,就要求FFE高于Fs的工作时钟,或者连续时间域滤波器(Continuous Time FFE)。

    图2.7为DFE时域滤波效果的演示,以10Gbps线速率为例,一个UI=0.1 nS=100ps。演示的串行数据码流为二进制[00000000100001111011110000]。

    2.3接收端均衡器( Rx Equalizer)
    2.3.1 线形均衡器(Linear Equalizer)
    www.blog.sina.com.cn/fpgatalk
    接收端均衡器的目标和发送均衡器是一致的。对于低速(<5Gbps)SerDes,通常采用连续时间域,线性均衡器实现如尖峰放大器(peaking amplifier), 均衡器对高频分量的增益大于对低频分量的增益。图2.8为一个线性均衡器的频域特性。通常工厂会对均衡特性封装为数种级别,可以动态设置,以适应不同的信道特性,如High/Med/Low等。

    Figure 2.8 Frequency Response of A peaking Amplifier based Rx Equalizer

    2.3.2 DFE均衡器(Decision Feedback Equalizer)
    对于高速(>5Gbps)SerDes,由于信号的抖动(如ISI相关的确定性抖动)可能会超过或接近一个符号间隔(UI, Unit Interval), 单单使用线性均衡器不再适用。线性均衡器对噪声和信号一起放大,并没有改善SNR或者说BER。对于高速SerDes,采用一种称作DFE (Decision Feedback Equalizer)的非线性均衡器。DFE通过跟踪过去多个UI的数据(history bits)来预测当前bit的采样门限。DFE只对信号放大,不对噪声放大,可以有效改善SNR。

    图2.9演示了一个典型的5阶DFE。接收的串行数据由比较器(slicer)来判决0或者1,然后数据流由一个滤波器来预测码间干扰(ISI),再从输入的原始信号中减掉码间干扰(ISI),从而的到一个干净的信号。为了让DFE均衡器的电路工作在电路线形范围内,串行信号先经过VGA自动控制进入DFE的信号幅度。

    为了理解DFE的工作原理,先来看一个10Gbps背板的脉冲响应,这个背板模型是matlab给出的一个基于实测的模型,具有典型特性。

    图2.10中,一横格代表一个UI的时间。可以看出,一个UI( 0.1nS = 1/10GHz )的脉冲信号,通过背板后,泄漏到前后多个相邻的UI里面,从而对其他UI的数据产生干扰。采样点后面的干扰叫做post-cursor干扰,采样点前面的叫做pre-cursor干扰。DFE的第一个系数 h1(此例中0.175)矫正第一个post-cursor, 第二个系数 h2(此例中0.075)矫正第二个post-cursor。DFE的阶数越多,能够校正的post-cursor也越多。

    用上述的背板传输一个11011的码流,由于post-cursor和pre-cursor的泄漏,如果没有均衡,将会导致’0’不能识别,见图2.11。假定有一个2阶的DFE, 那么‘0’bit处的幅度应该减去第一个’1’bit的h2,第二个’1’bit的h1, 得到0.35-0.075-0.175 =0.1, 足够被识别为0。

    可见,DFE计算历史bits的post-cursor干扰,在当前bit中把干扰减去,从而得到干净的信号。由于DFE只能能够校正post-cursor ISI, 所以DFE前面一般会带有LE。只要DFE的系数接近信道(channel)的脉冲相应,就可以到的比较理想的结果。但是信道是一个时变的媒介,比如温度电压工艺的慢变化等因素会改变信道channel的特性。因此DFE的系数需要自适应算法,自动扑获和跟随信道的变化。DFE系数自适应算法非常学术,每个厂商的算法都是保密的,不对外公布。对于NRZ码,典型的算法准则是基于sign-error驱动的算法。Sign-error是均衡后信号的幅度和期望值的误差,算法以sign-error均方差最小为优化目标,逐次优化h1/h2/h3…。因为sign-error和采样位置是耦合在一起相互影响,因此也可以sign-error和眼图宽度两个准则为目标进行DFE系数的预测。也因此,采用DFE结构的SerDes通常都会带有内嵌眼图测试电路,如图2.9所示。眼图测试电路通过垂直方向上平移信号的幅度,水平方向上平移采样位置,计算每一个平移位置上的误码率BER,从而得到每一个偏移位置与误码率关系的”眼图”,见图2.12。

    Figure 2.12 SerDes Embedded Eye-Diagram Test Function

    2.4时钟数据恢复(CDR)
    CDR的目标是找到最佳的采样时刻,这需要数据有丰富的跳变。CDR有一个指标叫做 最长连0或连1长度 容忍(Max Run Length或者Consecutive Identical Digits)能力。如果数据长时间没有跳变,CDR就无法得到精确的训练,CDR采样时刻就会漂移,可能采到比真实数据更多的1或者0。而且当数据重新恢复跳变的时,有可能出现错误的采样。比如有的CDR采用PLL实现,如果数据长时间停止跳变,PLL的输出频率就会漂移。实际上,SerDes上传输的数据要么利用加扰,要么利用编码的方法来保证Max Run Length在一定的范围内。

  • 8B/10B编码的方法可以保证Max Run Length不超过5个UI。
  • 64B/66B编码的方法可以保证Max Run Length不超过66个UI
  • SONET/SDH加扰得方法可以保证Max Run Length不超过80个UI(BER<10^-12)
  • 在点到点的连接中,大部分SerDes协议采用连续模式(continuous-mode),线路上数据流是持续而没有中断的。在点到多点的连接中,往往采用突发模式(burst-mode)如PON。很显然Burst-Mode对SerDes锁定时间有苛刻的要求。

    Continuous-Mode的协议如SONET/SDH则要求容忍较长的连0, 而且对CDR的抖动传输性能也有严格的要求(因为loop timing)。

    如果收(Rx)发(Tx)是异步模式(asynchronous mode),或者频谱扩展(SSC)应用中,则要求CDR有较宽的相位跟踪范围以跟踪Rx/Tx频率差。

    根据应用场景的不同需求,CDR的实现也有非常多种架构。FPGA SerDes常常采用的基于数字PLL的CDR,和基于相位插值器的CDR。这两种CDR在环路中采用数字滤波器,相对模拟charge pump加模拟滤波器的结构更节省面积。

    图2.13是基于相位插值器的CDR。鉴相器阵列对输入的串行数据与M个等相位间隔的时钟在多个UI的跨度上进行相位比较,得到多个UI跨度上的相位误差信号。相位误差信号的频率很高,宽度也很宽,经过抽取器降速并平滑后,送给数字滤波器。数字滤波器的性能会影响环路的带宽,稳定性,反应速度等。经数字滤波器平滑后的误差信号送给相位插值器(phase rotators)修正时钟相位。最终环路锁定时,理论上相位误差为零,90度偏移的时钟作为恢复时钟采样串行输入。

    图2.14是基于DPLL的CDR, 分为两个环路,对数据锁相的环路(phase tracking loop)和图2.13的CDR工作原理类似。鉴相器阵列对输入的串行数据与M个等相位间隔的时钟进行相位比较(也可能是在多个UI的跨度上),得到相位误差信号。相位误差信号送给数字滤波器。数字滤波器的性能会影响环路的带宽,稳定性,反应速度等。经数字滤波器平滑后的误差信号送给VCO修正时钟相位。最终环路锁定时,理论上相位误差为零,90度偏移的时钟作为恢复时钟采样串行输入。

    基于DPLL的CDR多了一个频率跟踪环路(Frequency Tracking Loop)。这是为了减小CDR的锁定时间,减少对环路滤波器的设计约束。只有当 频率跟踪环路 锁定后,才会切换到数据 相位跟踪环路。相位跟踪环路失锁时,再自动切换到频率跟踪环路。N倍参考时钟(Reference Clock)频率 和 线路速率接近相等,因此两个环路的VCO稳态控制电压是接近相等的。借助 频率跟踪环路,减小了 相位跟踪环路 的捕获时间。

    相位跟踪环路锁定时,频率跟踪环路不会影响相位环路。因此SerDes接收侧对参考时钟的抖动没有很高的要求。

    基于相位插值器的CDR的参考时钟可以是收发公用的PLL,也可以是每个通道独立的PLL。这种结构的参考时钟抖动会直接影响恢复时钟的抖动以及接收误码率。

    鉴相器(PD)

    鉴相器用来比较相位误差,相位误差以UP或者DN的信号表示, UP/DN持续的时间正比于相位误差。一个bang-bang结构鉴相器的例子如图2.15。例子中只用了四个相位的恢复时钟作为例子。

    抽取器和滤波器

    抽取器是为了让滤波器在较低的频率下工作。抽取的步长,平滑的方法都会影响环路的性能。数字滤波器有比例分支(Proportion)和积分分支(Integral)构成,分别跟踪相位误差和频率误差。另外数字滤波器的处理延时也不能太大,如果处理延时过大,就会导致环路不能跟踪相位和频率的快速变化,导致误码。

    CDR的结构不限于以上两种,还有其他很多变种。基本上都是一个锁相环路。环路的跟随性能,稳定性(STABILITY),带宽(bandwidth)/增益(gain)性能分析是一个非常学术的问题,用小信号线形模型分析,有非常多的书籍和资料解释了环路的量化性能。CDR环路有一些的特点总结如下:

    环路带宽

    1.频率低于环路带宽的相位抖动会透过CDR转移到恢复时钟上。换句话说,频率低于环路带宽的抖动可以被CDR跟踪,不会引起误码。高频的抖动分量根据抖动幅度的大小,可能会引起误码。

    2.环路带宽越大,锁定时间越短,恢复时钟的抖动也越大。反之则锁定时间越长,恢复时钟的抖动也越小。作为CDR,我们希望环路带宽大一点,这样可以有更大的抖动容忍能力,但是对于loop timing的应用如SONET/SDH对恢复时钟的抖动有限制,又不能太大。

    3. 开关电源的开关频率一般小于环路带宽,可以被CDR跟踪。但是,一方面开关电源耦合到VCO(Digital to Multi-Phase Convertor)上的噪声不能被环路跟踪,低成本Ring VCO尤其对电源噪声敏感。另一方面开关电源的谐波可能超出环路带宽。

    一些协议提供了CDR增益模板,如SDH/SONET。兼容这些协议需要计算输入和输出的抖动预算。

    2.5 公用锁相环(PLL)
    SerDes需要一个工作在数据波特率上的内部时钟,或者1/2数据波特率的内部时钟,工作在DDR模式。片外提供给SerDes的参考时钟频率远远低于数据波特率,PLL用来倍频产生内部高频时钟。FPGA的SerDes PLL一般有8x,16x,10x,20x,40x模式,以支持常用的SerDes接口协议。比如PCIExpress工作在5Gbps, 在40x模式下需要提供125MHz的片外参考时钟,20x模式下需要提供250MHz的片外参考时钟。

    一个三阶PLL电路如图2.17,输入信号的相位和VCO反馈信号的相位由鉴相器比较,相位误差有charge pump转化为电压或电流信号,经过Loop Filter平滑后产生控制电压,修正VCO的相位,最终使相位误差趋于零。

    Figure 2.17 A 3-order Type II PLL

    PLL的工作过程分为入锁过程和跟踪过程。在入锁过程,环路的模型可以用一个非线性微分方程表示,可以评估捕获时间,捕获带宽等指标。入锁后,在小信号范围内,PLL的模型是一个常系数线性方程,可以在拉普拉斯变换域研究PLL的带宽,增益,稳定性等性能, 图2.18是小信号数学模型。

    PLL以传输函数极点(分母的根)个数命名环路的阶数。VCO对相位有积分作用(Kvco/s),因此不带滤波器的环路称为一阶环。带一阶滤波器的环路称为二阶环。一阶环和二阶环是无条件的稳定系统。然而高阶环路有更多的极点和零点可以独立的调整带款,增益,稳定性,捕获带,捕捉时间等性能。

    PLL的频域传输函数特性主要有环路滤波器F(s)|s=jw决定, 一个通用的PLL频域传输曲线如图2.19所示。有两个重要特征,环路带款和jitter peaking。过大的peaking会放大jitter, 大的阻尼系数(damping factor)可以限制peaking, 但是会增加环路的如锁时间, 影响滚降的速度和固有频率(natural frequency)。

    当环路锁定后,固定相位差:

    Kdc为环路的直流开环增益,Δω为VCO中心频率和受控频率的差。对于charge pump + passive filter结构的PLL相位误差为零。

    当环路锁定后,只有固定相位差,两个输入信号频率相等。

    fr/M = fo/N

    对于输入端的噪声,环路是一个低通滤波器,可以抑制高于环路截止频率的噪声或干扰。作为SerDes的PLL, 希望带宽的小一些,以抑制参考时钟上的干扰和噪声。

    对于VCO噪声,环路是一个高通滤波器的作用。只有低于环路截止频率的VCO噪声得到了抑制。过量的VCO高频噪声会恶化时钟的抖动。低速SerDes(<5Gbps)的VCO出于成本考虑采用Ring结构的VCO,噪声大且对电源敏感。高速SerDes的VCO采用噪声小较小的LC结构VCO。

    3.抖动和信号集成( Jitter, SI )

    抖动是指信号的跳边时刻偏离其理想(ideal)或者预定(expected)时刻的现象。噪声,非理想的信道,非理想的电路都是产生抖动的原因。

    3.1 时钟的抖动(clock jitter)

    Figure 3.1 Clock Jitter

    对于时钟信号,根据应用场景的不同,对抖动的定义也不一样。比如数字逻辑计算时序余量的时候,关心的是周期抖动。而时钟设计人员更喜欢相位抖动,因为可以利用频谱评估相位抖动,并可以用频谱来评估具体的干扰对总相位抖动的贡献。
    参考图3.1,介绍一下几种抖动的定义。

  • 相位抖动(phase jitter)
  • Jphase(n)= tn – n*T。理想时钟的每个周期T都是相等的,没有抖动。真实时钟的跳边沿相对于理想时钟的偏离称作相位抖动。

  • 周期抖动(period jitter)
  • Jperiod(n)= (tn- tn-1)– T。周期抖动是实际时钟的周期相对于理想周期的偏离(deviation)。显然Jperiod(n) = Jphase(n) - Jphase(n-1)。

  • Cycle-to-Cycle jitter
  • Jcycle(n) = (tn- tn-1) - (tn-1- tn-2)。前后相邻的两个周期的偏差是Cycle-Cycle抖动。显然Jcycle(n)= Jperiod(n) – Jperiod(n-1)。

    假设相位抖动的最大值为 +/-Jp, 而且抖动的频率fjitter = 0.5fclock = 0.5/T,也就是,

    tn-2时刻的相位抖动为最大值+Jp ,tn-1时刻的相位抖动为最小值-Jp

    tn时刻的相位抖动为最大值+Jp , tn+1时刻的相位抖动为最小值-Jp

    那么,周期抖动最大值 Jperiod=+/- 2* Jp

    那么,Cycle-Cycle抖动最大值 Jcycle =+/- 4* Jp

    3.2. 数据的抖动(data jitter)
    在高速SerDes领域每个人都在说抖动,因为抖动直接和误码率(BER)相关。

    SerDes发送端的一个重要要求是抖动(jitter generation)----针对特定的码型(pattern),速率和负载情况下,发送端所生成的抖动。

    信号经过信道(channel)到达接收端时,又会进一步放大抖动,不同的码型(pattern)包含的频率成分也不一样,信道对不同频率成分的传输延时也不一样(非线性相位), 产生和数据pattern相关的确定性抖动。阻抗不连续产生的反射,相邻信号的串扰和噪声都会引起数据抖动。

    SerDes接收端的一个重要指标是抖动容忍能力(Jitter Tolerance)----针对特定的码型和误码率要求(BER<10-12),SerDes接收端能够容忍的抖动大小。对抖动评估时,会使用眼图(eye-diagram),浴缸曲线(bath curve),抖动分布柱状图(PDF),抖动频谱(jitter spectrum)等图形手段。

    有一点需要说明,在谈论高速SerDes的数据抖动时(Tj,Rj,Dj etc.),是不包括低频率抖动的。这是因为低频率的抖动被认为是一种wander,可以被CDR跟踪,不会引起误码。在用示波器(SDA)测量数据抖动的时候,可以设置示波器内嵌的CDR环路带宽,示波器测量的抖动数据已经滤掉了低频抖动。

    根据抖动产生的原因和概率密度函数,常常将抖动分为几类。对抖动进行分类的意义在于某些类型的抖动可以被校正,而其他类型的不能被校正。经典的,总抖动Tj(Total Jitter)被分类为确定性抖动Dj (deterministic jitter)和随机抖动Rj (random jitter)。抖动以UI或者ps为单位,可以是均方根值,或者峰峰值。

    3.2.1 Dj
    Dj被进一步细分,

  • DCD(Duty cycle distortion)
  • 占空比失真抖动。差分信号的正端负端的偏置电压不一致,或者上升沿和下降沿时间不一致会导致占空比失真。因为DCD和数据pattern相关,是可以被校正的抖动。

  • DDJ(Data dependent jitter)
  • 数据码型相关的抖动,也称 码间干扰ISI(intersymbol interference)。DDJ是由于不理想的信道导致。是可以被均衡器校正的抖动。

  • Pj(Periodic jitter)
  • 周期性抖动。Pj由电路上周期性干扰源导致。比如开关电源的开关频率,时钟信号的串扰等。虽然电源的开关频率一般在CDR的跟踪范围内,但是低次谐波成分可能会落在环路带宽外,或者jitter peaking区域, 更重要的是电源谐波对CDR内VCO的干扰是不能被抑制和跟踪的,所以对于基于Ring VCO的CDR一定要尽可能的使用LDO供电。Pj不能被均衡器校正.

  • BUJ(Bounded uncorrelated jitter)
  • BUJ由非时钟的干扰源引起。如果干扰源aggressor和victim是异步的,抖动的概率分布为有界的高斯分布,此时也称作CBGJ(Correlated Bounded Gaussian Jitter)。BUJ/CBGJ不能被校正。

    3.2.2 Rj
    Rj有半导体本身的噪声引起,一个重要特征就是Rj的概率密度函数是高斯分布的,没有边界,且和数据pattern无关。只有在一定误码率约束下,才可以被认为是有界的。

    3.2.3 Tj
    数学意义上,抖动的概率分布函数可以近视为高斯分布和双底拉克分布的卷积。

    对高斯分布有贡献的抖动为:

  • Rj为高斯分布
  • 大量Pj叠加的效果也为高斯分布
  • 部分BUJ也为高斯分布
  • 对双底拉克分布有贡献的抖动为:

  • DCD被近视为双底拉克概率分布
  • 高斯分布和双底拉克分布的卷积:

    其中,W被认为是确定性抖动的峰峰值,δ是高斯分布的均方差。见图3.2, 可以看到,随着确定性抖动W的增加,概率密度分布曲线的顶部出现了双峰。一般来讲顶部曲线反映了确定性抖动的大小程度。

    Figure 3.2 PDF of Tj with different Dj and Rj

    把一个UI内的两个跳变沿处(0 UI处和1UI处)的概率分布函数放在一张图中,就是抖动的浴缸曲线(bathtub curve)。因为对数的宽动态范围,Y坐标以对数显示。图3.3为确定性抖动W=0.05UI, 高斯抖动方差0.05UI的浴缸曲线。

    Figure 3.3 Bathtub Curve of Tj with 0.05 Dj peak and 0.05 Rj RMS

    浴缸曲线还会标出对应的误码率BER坐标,比如图中BER=10^-12的峰峰值抖动为Tj(p-p)=0.373*2 = 0.746 UI。曲线下面的面积占总面积的比率就是误码率。比如图中,

    浴缸曲线的顶部主要为确定性抖动Dj的贡献,越靠近底部,高斯抖动的贡献越大,并以高斯曲线的斜率衰减,也因此常利用高斯分布的特性进行估算。下表为高斯分布和均方差关系。

    在规定的BER内,利用该表可以快速估算均方差值和峰峰值之间的关系。比如高斯抖动的均方根0.05UI,误码率要求为10^-12 BER,查表可知Q=7,那么高斯抖动的峰峰值要求是0.05UI*7*2 = 0.7UI。

    如前所述,W=0.05UI,Rj=0.05UI计算出的总抖动Tj=0.746UI;
    利用高斯特性估算的高斯抖动为0.7UI。
    如果按Tj = Rj(0.7UI)+Dj(0.05UI)计算得到0.75U,基本是一致的,差异是因为画图程序有量化误差。

    4.信号集成(SI)及仿真
    4.1信道channel
    SerDes信道关注的频率范围是0Hz到奈奎斯特频率,也就是2倍的信号基频。信号的基频是信号线速率的一半,也就是说信号的奈奎斯特频率就是线速率。信道对信号的损伤包括插入损失(insertion loss),反射 (reflection),串扰(crosstalk)等。这些损伤可以用S-parameter信道模型来表达。S-parameter可以有矢量网络分析仪测量(Vector Network Analyzer)得到。信道不是一个纯阻性网络,还包括容性和感性。这样对不同频率里成分的时延也不一样,从而产生和data pattern相关的抖动。

    信道上的每一个不连续阻抗点都会产生反射,根据反位置的不同,反射信号会以不同的相位叠加在原始信号上,增加或者减小信号的幅度。

    SerDes信号为差分形式,对共模干扰有较强的抑制。如果在+/-端上的干扰有差异,就会引入串扰。通常外部PCB可以保证SerDes数据和干扰源保持足够的距离,但是芯片内部由于考虑到经济性,很难保证SerDes信号和干扰源足够的隔离距离,尤其是一个通道自己的发送信号干扰自己的接收信号。

    4.2 芯片封装Package
    封装package也是信道的一部分。芯片外部的信道可以通过VNA测量的到,而封装的S-parameter通常有芯片制造商提供,仿真时可以把两者级联起来。封装package由于距离较短,insertion loss通常不是主要问题,主要考虑的是阻抗匹配问题。

    4.3 SI仿真
    信号集成性(SI)仿真可以通过把SerDes发送端SPICE模型,封装和信道的S-parameter模型,接收端SPICE模型级联起来搭建仿真平台,利用仿真工具对不同的激励在不同的测试条件作电路仿真。通过测量SerDes接收端的眼图来评估是否满足设计需求。也可以通过实测接收端眼图,检验是否满足接收端的眼图模板,或者协议规定的眼图模板。图4.1为一个实测的3.125Gbps信号的眼图及模板,同时也包含了浴缸曲线和统计图。

    Figure 4.1 Rx-end Eye-diagram of A 3.125Gbps SerDes

    对于高速SerDes(>5Gbps),这种传统的电路仿真方法已经不能满足设计的需求。首先,过量的码间干扰ISI导致接收端眼图完全闭合,但是通过芯片内的DFE均衡后,眼图可能是很好的。其次,电路仿真(SPICE)的速度非常慢,即使是有办法把DFE均衡加入仿真,由于DFE仿真需要足够长时间的bits来训练,此时,电路仿真的仿真时间是不可接受的。

    对于高速SerDes的仿真需要借助统计分析 (statistical analysis) 的方法。统计分析的方法把发送端-信道-接收端的连接近视为线性系统,计算系统脉冲响应h(t),加入噪声源来模拟抖动,然后用激励对脉冲响应进行卷积,得到接收端的信号,这种方法可以把厂家私有的FFE,DFE自适应算法加入仿真。

    统计分析 (statistical analysis)方法不能仿真电路的非线性和时变特性,所以高速SerDes往往要两者结合起来仿真SI。更多关于统计分析 (statistical analysis)方法可以参考。

    5. 结尾
    有人讲过,现在的汽车是如此复杂,以至于虽然每一个零件都有人懂,但是合起来作为整车却没人能够全懂。近些年来,FPGA变的越来越复杂,对工程师的要求也越来越高。要成为一个合格的FPGA应用工程师,不仅要擅长数字电路的设计,还要懂得高速SerDes, 信号集成SI, DSP算法, 多核CPU, 嵌入式操作系统等。每一项技术背后都是一个专业领域,一个人不会在每一个领域内都是专家,只要比别人多学习一点,关键时候就会突出你的价值。本篇主要介绍了SerDes的基本结构和用好SerDes需要掌握一些的知识,希望对你的工作有所帮助。

    最新文章