[转载]ADV第十五讲课程纪要|串行接口(SerDes)技术简介

P1:

图片

大家晚上好,首先谢谢群主的邀请和组织这次网上课程。这样的分享,我觉得这是一个非常有意义的事情。我今天和大家分享的是SerDes的一个简单介绍。

P2:

图片

第二张PPT是关于我们今天讲的一个主要内容。第一部分,我们先介绍一下背景,讲述为什么要做SerDes,SerDes是干什么的。第二部分是讲SerDes的第一个内容timing,与时钟相关的,然后介绍SerDes的第二个内容,关于数据或者是信号、信号处理。

然后给大家分享一下,近年来比较流行的或者是主要的SerDes设计结构。最后把前面的两部分整合在一起和大家介绍。

P3:

图片

十几年前也就是2000年的时候,基本上很多接口还都是并行的。我们这里举了一个例子在2002年有个PCI x3.0,它是一种并口。同时这一年intel发明了这个PCIe 1.0,这是一个串口。PCIX这是64bit的一个并口,每个通道是1.066Gbps。

在最初的计算机接口技术中主要是使用PCI接口。而这个intel发明的PCIE结构呢,它是一个创新的。它用了SerDes技术。它的一个通道是2.5G,然后它可以是x1,x2,x4,x8和x16。

从总体来看呢,英特尔这个x16 的PCIE 1.0还没有它那个64bit乘以1.066g的PCIX 3.0速度高,但是它没有向前馈clock。因为x16总共有32根线,它的线会少一些。并且这个并口需要有一个同步的clock,它会从TX这边传一个同步clock到RX那边作为前馈同步时钟。这个同步clock的频率是数据的速度的一半,也就是采用DDR这种双边沿采样结构。

但是它这个pciex3.0发布出来之后没有商用。因为它是64bit并行的,在接收端数据之间会相互错开。比如说64bit之间错开之后,它们之间没办法用一个clock可把它们同时接收过来。

最关键的是PCIE是一个串口,所以它存活了下来,一直到现在。PCIe4 16G,PCIe5 32g。最近有很多产品就要出来了。PCIE4去年的时候有很多公司的产品研发出来用在soc上。PCIE5的IP基本上很多公司应该是ready了。

比如X16这种16路,它们之间是相互没有关系的。那每一路采样只需要照顾到自己这一路,把数据收进来就可以了。这是它的一个优越性,它不需要像并口那样有64路的同步。64路并口速度高,但是它有一点通路的不匹配就会导致最终的Phase error,然后在RX这边就会出现接收问题。

还有就是串口的速度越来越快,它可以节省大量的IO。为芯片拥有更高的吞吐率提供了一个可能性。比如PCIE-4单通道的数据率已经达到了16Gbps。

这边是目前用的比较多的一些SerDes环境。下面这个图是一个CPU和GPU通过一个背板连在一起,下面这个是通过一根同轴线cable连在一起。

目前,比如说USB3.1,或者我们视频中用的HDMI,基本上这个速度都会比较高,然后还有更高的就是在光纤通信中CEI-28G、CEI-56G的标准已经出来了,并且在Ethernet里边IE802.03ba/bg/bs,bg是28Gbps、bs是56Gbps,标准也出来了。

P4:

图片

这张PPT里面的图就是在一个Ethernet的应用。在数据中心中,很多像这个冰箱一样的柜子,里面是很多交换机芯片。交换机芯片在这个板卡上通过这个母板连在一起。这里边的很多SerDes都是10Gbps/40Gbps的这种速度。这个40Gbps其实是四个10Gbps一起的速率,也就是4-lane的10Gbps的SerDes。这种是基于802.3 ba协议的,这种现在基本上在很多数据中心已经使用了。

P5:

图片

那么在数据中心使用的这种芯片到芯片的这种互联或者switch交换机,它有一个环境就是背板或者PCB背版,还有一些connector等都有很多loss或者是reflection等等,并且这些loss和它的频率是相关的。另外,SerDes之间的channel都不是很理想,还有很多cross talk。这些loss,reflection和crosstalk和这个板材做的长度、通孔个数等等非常相关。而这些环境会使得设计SerDes非常困难,因为它会导致信号衰减,并且会加入很多非理想的噪声、干扰等等。

P6

图片

P7

图片

这边呢,就是一个刚才我们提到的那个channel的特性。这里第一张图给出了三种它的传输函数,或者说它的s21。在不同的长度,loss区别很大。我们看到第一个蓝色的,它的loss就会比较小,在2.5Gbps时loss大概不到5db;而红色的这种比较长,它的loss在2.5Gbps的时候就有10个dB多一些。这个绿色的一根线,它不光loss多一点,还在10Gbps时有一个很差的一个点的loss,到-60多dB。

一般在设计的时候,会拿一个channel的model一般是Sparameter或者是LGC这种model,然后在前仿真/后仿真去验证我们的design。

从它的冲击响应可以看到红色的在4ns前面一点开始上升,比如说在4ns前一点去sample它,那么可以得到一个数据。但是在后面,比如说4ns多一点的时候去sample它,也可能得到1个1,本来应该是得到了1个0,这就会产生一个错误的数据。

单位冲激响应叠加之后,就会产生一个眼图。或者在PRBS的输入下,折叠输出之后会得到一个眼图。我们看到这个眼图在不同的channel上它的opening,就是高度、宽度差别非常大的。

P8:  

图片

比如在第一个图上面看到这个数据就很容易在Rx这边接收到。第二张图相对来说一个比较好的比较器,也是能分辨出来的。那第三张图中eye就完全就闭合了。在这种情况下怎么去收到数据,并且我们怎么去发送数据,这都是一个比较有挑战的事情。另外5Gbps数据的奈奎斯特频率是2.5GHz,也就是说它的能量主要集中在2.5GHz以内。

P9

图片

并且我们看到,同样是红色的这一根channel它对于5Gbps数据的响应和10Gbps的响应完全不一样。对于5Gbps可以看到还有一点eyeopening,但是当速率上升到10Gbps的时候eye就完全闭合了。那就问题来了,我们再怎么从10Gbps这个眼图中恢复出数据呢,那如果要是速度再进一步上升,比如说到28Gbps,那我们又怎么去恢复出数据呢,这是SerDes需要解决的问题。使得它有一个最好的setup time、hold time等等。

P10

图片

这是一个SerDes的基本结构图。前面就是把并行数据转换成串行数据(一般也叫MUX),然后再给TX发送出去。因为channel本征阻抗是50Ω,所以TX这边加一个termination,50Ω的特征阻抗来保证阻抗匹配。Rx这边同样加一个50Ω特征阻抗来保证匹配,这样才没有反射。然后RX和TX这边分别有负责时序的,比如说PLL和Timing Recovery,这些模块专门为这些电路提供clock。

在这里我主要把它分成两部分,第一部分就是timing,为发送和接收数据提供clock;第二部分就是signaling,就是信号处理。TX边主要是把数据发送出去保证一定的眼高,然后Rx这边把数据恢复出来。因为channel loss之后,signal可能是看不到的。这就说RX主要做两件事,既要恢复数据、又要恢复时序。恢复数据就是要知道是0还是,对于这种PAM 2也就是NRZ类数据来说。并且要找到怎么去、在哪个时间点上去sample这个data,也就是恢复出一个最好的timing。看到下面有个时序图,Rx clock的上升沿采在这个数据它的正中间,center sample,这样一般是最好的。

P11

图片

这里提到BER,如果收到的数据有错误,那么错误的数据和总共收到数据的比值就是误码率BER。Timing上的error和signal上的error都会引起error,都会恶化BER。

误码率BER和noise有一个对应关系。一般要求BER是低于10的-12次方,对应14个sigma的 noise,这里说的noise是Random noise,而sigma就是我们平时说的RMS值。

那么timing上有jitter——Random jitter或者deterministic jitter是都会引起时序上的错误。然后noise同样有随机噪声和确定性噪声。一般BER求在10的-12次方以下,或者更好,有些甚至要求到10的-13次方或者-15次方,这样就会看到更多的噪声。

这个就相当于我们平时,看3个sigma的mismatch,其实这个概率大概是99.7%。那超过3个sigma的概率是3‰。也就是说,如果我们要保证10的负12次方这样的一个概率的话,我们要看到14个sigma。

P12:  

图片

下面就是我们来看一下timing。主要是TX这边transmitter的jitter和PLL,然后RX这边是clockRecovery,我们一般也称之为CDR。

P13:

图片

数据的jitter主要是由clock的jitter决定的,然后加一个C2Q到这边来。

首先,一个随机的数据可能会包含大量的ISI。比如说从电源来的或者是从channel来的。一般,我们会把那个data和clock分开。因为clock不是随机的,它是一个固定的。那么data会干扰clock。然后data上的这些ISI被clock可以滤掉。我们从PPT的第一个图上可以看到,如果data上有jitter,clock的去sample它时候,只要保证setup time满足和hold time满足,那么Q上的jitter和data是没关系的。

第二张图就是说用一个NAND gate,clock 去过滤掉DI上的jitter。和D触发器类似,数据上面有jitter,不会出现在DO这边。

这就说明了我们data上面的jitter其实不是那么在乎,只要保证setuptime、hold time。而clock上的jitter就至关重要。

P14(TX MUX):

图片

这是一个全速率的MUX,它的clock频率和data rate是相同的。这里有一个好的地方就是它最后使用的是一个DFF,而不是用NAND gate。但是它有一个“1UI Critical Path”,如果要保证setup time、hold time,D02这个 DFF的C2Q加MUX的C2Q的delay再加上最后一个DFF的setup time要小于1个UI。这时候让clock工作在和data rate一样的频率,clock的频率较高,routing较困难。

P15(TX MUX):

图片

而Half rate里clock的duty-cycle distortion会影响输出的jitter,因为它不是上升沿触发,而是用clock的高电平去gate掉Dout,或者说是时钟的高低电平选择数据。这时候clock就不需要那么高的频率。但是如果要是再降一下clock的频率,它可以支持在相同的时钟频率下有更高的数据率,但是它更可能会消耗更多的功耗,因为design太复杂了。

P16(Timing):

图片

下面来看一下这个PLL,它主要是为TX,可能也要给RX提供时钟。

P17:

图片

这是一个PLL,这里是一个100M的referenceclock。VCO的时钟经过feedback divider除以一个80后和Reference lock,这样就产生了一个8GHz的clock。PLL里面还有Charge Pump、PFD、LPF等。

P18:

图片

这里简单比较了一下Ring VCO和LC VCO两种区别,不过很多paper或者是资料上都比较这两个区别,我就不再细说了。另外补充一点Ring VCO目前来说有两级、三级、四级、五级,单端和差分的各种结构,三级的这种FOM是最好的,并且是三级单端的这种FOM是最好的。而两级、四级、五级相对都会差一些,五级其实是次之于三级。但有的时候我们需要那个四个Phase,可能就需要四级的,这样的话不得以用四级的,就会降低PLL的FOM。

而LC VCO这边可能也有很多种,包括ClassAB、Class B、Class C、Class D、Class F。基本上2013年就有paper在讲Class D、Class F。Class D在新的工艺下就是当地device的开关电阻非常小时非常优越,因为它在小信号时候晶体管表现为gm,在大信号时候就应该表现出一个开关,所以Class D在新的工艺下是有优越性的。

那么PLL要做到什么样的程度呢,我们来大致算一下。BER为10的-12次方,也就是对应的jitter是14个sigma,也就是说我们可能要看到14个sigma的Jitter。

那么RINGVCO,一般来说可能在5GHz的clock能做到1.5ps的RMS Jitter。有可能会做的更好,但问题是功耗在继续增加。10G的data rate,5GHz的clock就是half rate,14个sigma乘以一个根号2。因为有Rx、TX两端,所以有两个PLL或者是两个VCO,那么它的jitter是1.414×21ps。对于100ps的UI来说占了大概30%,这个地方就是又加上了1点margin。因为14个sigma对应的是10的-12次方,但是我们一般不会真正做到14个sigma,可能会更多。并且对于目前来说比较热门的PAM4来说,它的eye opening会更小,因为它的上升沿有不同transition。这样PAM4的eye opening会小30%。这里的30%具体指的是EYE的宽度,另外EYE的高度比较明显的会小1/3,可能还会更多。

对于14G的clock、28G datarate来说,用RING产生时钟比较困难,并且对这种data rate,jitter要求会更高。比如说RMS jitter 0.2ps,这时候大概占UI的11%。在高频的时候,数据恢复这边(signaling)也会更困难,所以我们尽量要保证这边的Jitter margin多留一点,对于signaling那边来说是一个好处。

P19

图片

一般来说,不考虑Rx第一个sampler或者说clockedcomparator的Setup time的话,EYE center基本上在正中间,但是有时候还有Setup time的影响,它一般可能不是在正中间。

P20

图片

P21

图片

另外一部分就是在RX这边的timingrecovery。这个CDR的主要目的就是找到一个最好的simple点,使得simple的数据尽量多的是对的,也就是说BER尽量的小。那么它找到这个eye可能是正中间,也可能是它最优的一个setup time/hold time点。

和VCO类似,CDR目前也有主要有两种,一种是VCOBASED CDR,还有一种是PI  BASED CDR。VCO是个很消耗power的东西,或者DCO。那PI的power就比较小。

VCO的可以用一个线性的phasedetector,或者是Bang-Bang的。线性的有个好处就是它的带宽可以做得很高,不会有很大的非线性引起的噪声,可以用模拟滤波器。如果是Bang-Bang的类型,基本上都是digital滤波器。

PI是相位插值器,通过内插得到新的相位时钟。PI本身不产生clock,需要一个reference clock,也就是说它需要一个PLL给它供clock。它只作为phase的调制,就是搬运phase,左一点右一点,能够克服一小部分的frequency offset,但是很少。

PI有比较大的INL,一般用多相位输入给PI供其选择来减小INL,也就是把相位分段之后再内插。那就是说如果是用LC tank的两个Phase的PLL的话,可能还需要DLL给它产生多个Phase,比如说八个或者是四个。PI一般输出128或者256个phase点是比较好的选择。

P22:

图片

这是一个基于PI的CDR,它是用了BANG-BANGphase detector,非线性但是功耗很低。然后有两条通路去做low pass filter。它这两条通路一个gain主要是调phase,一个gain调frequency。所以它有一定调制frequency的能力,但是很弱。PI实现digital to phase的convertor。一般resolution有128、256等,甚至有些人做得更高。但是更高的话就意味着你的data会很多,片子面积又很大,功耗就会增加。

CDR的主要性能就是jittertolerance,它可以track PLL那边的一部分jitter。还有就是CDR的bandwidth和它的功耗,bandwidth越高功耗就要更高。

P23:

图片

 上面基本上把timing的相关信息简单介绍下,下面介绍数据处理方面的内容。

P24:

图片

P25

图片

这张图就看到我们的tx和Rx的equalization在什么位置。

数据处理主要是均衡器,TX这边叫emphasis,或者叫FFE。RX这边的均衡器会比较多一些,比如说CTLE。有有源的、无源的,可能还会有些其它的滤波器。然后最重要的还有DEF,它有各种结构。在signal里面还会讲一下T-Coll和ESD,因为这两个在高频的时候会显得非常重要。

P26

图片

有时候那个equalization也就是均衡器可能会不需要,因为如果channel的loss特别好,TX那边直接把信号给发送出来,通过一个50Ω的阻抗匹配。然后RX这边有个50Ω的阻抗匹配,最后直接一个比较器就把它收过来了,这样也是可以的。但是,当channel的insertion loss比较差的时候,这个问题就十分重要了,它可以使得频率响应曲线变得平坦,减少ISI。像刚才说的TX输出阻抗和RX端口阻抗要保证50Ω来匹配channel的阻抗,保证没有反射。在下面的三张图(P26)就是表示均衡器的作用。比如说,Channel一开始时随着频率升高loss越来越大的,但是我如果在5G的时候给它一个gain,而在低频时候没有gain。这样就把5G这个地方给补进来了,看到第三张图绿色的这个就显得比较平坦,这样的ISI就会小。

首先介绍TX端的Equalization。这是一个TX的equalization。这里用了4-tapFFE。除了一个主的以外,前面有一个,后面还有个POST1、POST2,然后都加在一起后经过50Ω输出。这个图的下面也表示了这四个tap是怎么产生的,里面有DFF或者latch产生一个UI一个UI的delay。

P27:

图片

P28:

图片

通过这个PPT来看一下FFE的一个作用,它是怎么消除ISI的。如果没有FFE就是没有pre-emphasis。那么data出来之后高频的信号就变得小。而如果有第一个post的emphasis,可以看到第二张图红色的输出的响应,高频的信号明显变大了,低频信号稍微小一点。

P29:

图片

TX端除了均衡之外还有它的impedance。目前主流的还是有两种,分为电流模和电压模。电压模就是左边这张图。它主要是swing大一些,也就是输出的信号幅度大一点,power可能稍微会低点。但是50Ω阻抗的不是太好,因为它包含了晶体管,意味着晶体管阻抗会随corner变化比较大,然后温飘比较严重,但这个问题可以通过某些方法解决掉。而像右边的图只有一个电阻就很好底下的晶体管是在饱和区的,所以看进去的阻抗非常高,对于对于输出阻抗没有什么影响。

下面我们看一下Rx这边的均衡技术。第一个就是CTLE,连续时间线性均衡器。它主要来补偿channel的loss。它还可以做成是一种无源的,只有RC或者有L。无源的就意味着没有Gain。它只能把低频的减弱,把高平的相对来说是增高能量。并且无源design有个好处就是它不会产生noise,除了R会产生的noise,但是一般来说R会比较小。而晶体管的noise相对多一些。然后CML基本上就是一个放大器,不过它有RC的source degeneration,也就是说在低频时的gain被减弱,而在高平时会有gain。这样产生一个补偿channel的效果。

一般来说CTLE工作的时候功耗会大一些,来保证noise足够小,因为它一般是RX的第一级。另外,在那个奈奎斯特频率,CTLE一般都会有一些Gain。这样后边的noise就不那么敏感了,比如后面VGA、DFE、sampler。第三CTLE一般都是采用可编程的CS、RS,因为channel都不一样,甚至有时还会有自适应算法来自动配置RS、CS。

P30

图片

P31

图片

DFE技术(decisionfeedback equalization)。首先来说它会decision,它决定输入的数据是1还是0。第二个它是有feedback。也就是说它把这个收到的数据,通过一条链路返回到输入,然后再输入上直接减掉一些信息。那么减掉的量的多少,也就是它输入的数据会乘以一个系数。它减掉多少电压,就是这个信号的加权(w)是多少。另外,DEF是非线性的,并且channel也是非线性的,很多时候非线性还非常大。这里包含3点,一个就是decision,第二个就是feedback,然后第三个就是它非线性。

第一个点就是DFE的sampler或者slicer,它是个比较器,主要完成判决是0还是1的任务,它把输入信号一个很小的电压放大成CMOS level,或者是接近CMOS level这一个比较大的信号。

P32:

图片

这张PPT来看一下channel的非线性,DFE的非线性可以恰好补偿channel的一些非线性,因为CTLE或者前端的等一些其他的analog基本上都是线性的,而由于channel各种通孔好复杂,使得它有很多非线性。我们看到第二张图,channel的一个单位冲激响应,后面的post cursors可能会非常非常乱,每个tap到底取多少值,是可能会比较任意的。各个tap需要取多少值对于不同的channel也是不一样的,所以基本上都会有一个自适应的电路在里边。

P33

图片

P34: 

图片

这个就是介绍了两个channel,这两个channel不一样,那么它的DFE可能就是要适应这两个channel。并且一般的自适应电路是alwayson,用它来去cover一些电路或者是那些channel的温飘效应得到。自适应的话就需要额外的比较器,并且一直工作。

这个是DFE自适应的一种方法。为了自适应电路中额外加入了一些比较器,并且给这些比较器输入一个voltage offset信号,这些比较器就会产生error信号。然后根据error和data去判断各个tap是偏大还是偏小,在尽量大的voltage offset时,新加入的比较器能比较出相同数量的正确和错误结果,那就表明data的比较器margin比较大,或者是BER比较小。

P35

图片

P36

图片

这个是DFE一个致命的特点,就是它的第一个tap的timing必须满足在feedback到来的时候clock的上升沿还没有到,也就是clock到的时候feedback一定ready了。所以,这个timing要求delay和setup time小于一个UI,才能保证这个feedback加进来对下一个信号是有效的。如果这样一个时间保证不了,DFE就不能实现。这里还有一种减小这个限制的方法,那就是非折叠的DFE,它的第一个tap其实是预加在了前面两个比较器上,然后根据前一个数据到底是多少来选择从哪一个比较器拿数据作为输出。

下面是ESD和电感相关的东西。刚才我们讲到了那个DFE的一个致命的特点,下边我们在一些例子中还会继续提到。然后ESD电路的作用大家也都知道,但是它对于高速电路来说有一个不太好的地方,就是它有一个很大的寄生cap,这cap会限制我们的带宽,并且它会减小高频的阻抗,使得impedance imbalance。

P37

图片

这个就是T-Coil在TX和RX的使用,它基本上就是补偿电路中比较大的CAP。在TX和RX中的连接基本一样的,就是两个电感跨接在大电容的两边,两个电感有互感,其实就是一个线圈T-coil。

P38

图片

这张PPT是T-coil的版图和它对电路性能的改善情况。

P39

图片

P40

图片

Signaling本上就讲完了,然后下面主要看三个例子。由于时间关系,可能下面三个例子,我们会大致的讲一下重点。然后系统的细节上没时间讲太多。

P41

图片

这是一个28nm 28G的PAM-2的SerDes,它要支持40dBchannel loss。这是2015年的ISSCC,博通的一篇文章。RX直接就是2-Zero CTLE,加了一个4级VGA,然后就是14个Tap的 DFE和DEMUX。后面的就是digital,它包含一些自适应和一些CDR电路,也就是控制PI的 code需要这些digital产生等等。图中的时钟是有一个25G PLL提供的,PLL给它一个6.25G clock,然后自己再用DLL成8个phase再给PI。

它的PI用了6个,也就是产生6个6.25G的clock,它这里是4相位采样,另外两个PI是用给CDR。

PLL是一个LC tank25G的PLL,其实他是支持28GHz的。然后除以2之后再给TX和除以4给RX。TX这边就是MUX,最终应该是SST,也就是我们刚才讲的电压模的一个driver。它有5个tap的FFE,并且loading一个电感来补偿ESD的cap。

P42

图片

这是他的一个SST driver,讲了5个tap的优点。这是跟我们刚才提到的比较类似。

P43

图片

这个是他DFE结构,他这里讲了tap1如果是直接反馈的话,timingmeet不了。所以必须用第二种方法,非折叠的tap1,这样的话,他的时序约束就简单了很多。1.5个ts就是3个UI,就是从左边的1个UI变成了3个UI。这个时间约束只是加了一点点,加了一点点tmux的delay。这里有一个不好的地方,就是它比较复杂。对于tap3到tap14的timing就会好做一点。但这个并不是重点,因为tap1都做掉了。

这是他的整体的一个quarter rate的DFE。这边讲quarterrate的一个优点是时钟频率低。然后每一个sampler有selector有更长的时间去恢复数据。也就是regeneration timing会比较长。这样的话,有效的gain会比较大。由于它积分的时间长,比较器看到的噪声就更倾向于低频,高频的噪声会被平均掉。所以,他噪声会减小SNR会好。另外,他有更好的gain所以更sensitive,等于小信号来说也能折射出到底是0还是1。但是low power方面,其实由于clock多了一倍,sampler也是多了一倍。频率降下来了,但是面积增加一倍,功耗并不一定省。

P44

图片

P45

图片

这是他的一个测试结果。他用一个一米的背板,有40dB的loss去测的。看到这个eye还是非常好的。中间有很多空白的地方。这就是他的margin。在这种环境下还有这么大的margin。这个是对一个比较差的channel的一个测试,我们可以看到DFE都打开的时候效果还是很好的。

P46

图片

下面我们来探讨一下PAM-4。PAM-4主要就是把一个signal分成4个幅度,然后一次传2-bit数据。他的奈奎斯特频率相对datarate来说是四分之一,会更小。它可以看到更好的channel loss。如果在相同的channel loss下,他的data rate也会翻倍。但是他更是sensitive to noise,就是眼睛天然就会小了很多,高度小到1/3,也就是9.5个dB,但是由于眼睛的厚度存在这里,他可能比这个9.5dB还更差。由于高度上是4个level,它对于线性度很敏感。从图中很容易看到,PAM4的眼宽更窄,对jitter也是更加敏感。

P47

图片

这是一个PAM-4的SerDes。是2017年ISSCC Xilinx的文章,还是用DFE做均衡。

P48

图片

我们看到前面CTLE,AGC之后就是10个tap的DFE。他没有做那么多tap。然后有很多digital的部分用off-chip来control了。

P49

图片

基本上我们DFE收到的数据,其实是4个level的温度计码,还要编码成2个二进制码。比较器输出3个数据,分别是DH、DZ、DL;对应3个眼。然后还有4个error,4个电压level。所以他有很多比较器,也就是slicer。

P50

图片

这是DFE的框图,我们看到除了加法器和前面的GM之外。它的比较器很多,center data要3*2个,然后有4个half rate的error level,所以用了7*2个。当然还要自适应,也就是adaptation,这又要额外的sampler,还要有edge。所以加在一起,这个sampler会非常多,并且还是直接反馈的,没有用那种非折叠的。要不然的话,可能要五六十个sampler,非常可怕。

P51

图片

这张图就是为什么他直接反馈能够做到。首先因为它是14nm。14nm工艺在35.7ps的反馈时间还是可以做到的。如果是频率更高,data rate更高,非折叠的话,我们看到他这里讲了,sampler个数要乘以4。因为他是1个bit比特有4种可能性,这里可能用4倍的sampler。

P52

图片

这是他的一个half rate sampler,第一个tap直接反馈。他在sampler的第一个latch后面加了一个inverter直接反馈给下边一个数据,他并没有后边再加一个RS触发器,RS latch的delay会比较长。这是直接反馈可行的第二个原因,他为了做到这一点,这里有所创新。

P53

图片

P54

图片

23dB channelloss的测试结果。他是做不到太好,但是10的-9次方后面如果加FEC。这是1种数据校验的方法。加了这个之后,他的数据BER也可以恢复到10的-12次方,有FEC后,其实BER基本上在10的-6次方都可以恢复到10的-12次方,这个东西很强大。

P55

图片

另外呢,也是一个paper,还有18年的一个教程,还是ISSCC的。它里面都提到了ADC的这种方法。ADC的做法可以支持更高的channelloss。但是如果速度在56G的话,上面提到,用DFE也做出来了,可能性能不是太理想,所以也不一定必须用这种PAM-4 ADC的方法。

P56

图片

这个ADC基本上就是替代了刚才的DFE,但是不只是ADC还有DSP,因为ADC把数据采样到之后不做量化、不做补偿、不做均衡。DSP把这些均衡技术和量化全部做进去了。所以DSP+ADC的功耗肯定要比DFE的功耗高,同样是16nm、相同channel loss的情况下。

但是对于56G这个level是这样,那么112G可能DEF的方法是做不出来的。除此之外,他的提到了TX 4个tap FIR,还有PLL的jitter。

P57

图片

P58

图片

这是测试结果,可以支持的channelloss比上面DFE的要多。

P59

图片

好了,今天我们就是从这4个方面大致介绍一下。SerDes的东西其实是比较复杂的,它涉及到的内容可以非常多。大家有什么问题呢,大家可以讨论,时间也要超过九点了,谢谢大家。

图片
图片

Q1:

哈哈大*:CDR带宽您是怎么选取的呢?

李闻界:一般比PLL带宽大2到4陪,或者更高。主要为了抑制PLL的噪声。

哈哈大*:这个是业内经验吗?

李闻界:我的个人经验。

Q2

名*:李老师,现在频率这么高,业界CDR环路核心部分用模拟方法多还是数字方法更多?

李闻界:这是他的ADC里边的RX的一个结构,它有PLL和RX。这个RX基本上前部还是一样的,就是到后边有个ADC。7 bit或者3bit Time-InterleavedSar ADC,用32路来替换掉了前面那种方法的DFE。后面又是DSP做上了DFE+FFE和ADC的一些calibration。DSP里面他只做了1个tap的DFE和4个tap的FFE,因为DFE对DSP来说也很难做。

Q3

高*:问一下50欧姆是片内还是片外?

李闻界:片内。

Q4

哈哈大*:您觉得对于SerDes的发展趋势而言,今后最大的挑战在哪里?

李闻界:功耗和cost,包括DFE怎么更快,ADC和DSP怎么能更省功耗,怎么可以做的更小。

Q5

Hi,简单*你好老师,高速SerDes的功耗是个大问题,在设计的时候是如何考虑?

李闻界:一般来讲,多加rc隔开一些噪声源,不要浪费不必要的功耗,功耗和噪声在系统上分配合理,再就是采用对噪声不敏感的电路结构。

Hi,简单*非常感谢老师回答,你觉得有没有可能就用CTLE,不用DFE或者ADC用28nm实现28Gbps传输,我觉得DFE和ADC这两东西太吃功耗了

李闻界:@Hi,简单*,看channel,15db loss没问题。很多光通信的都不用DFE。

Q6

*:请问slicer offset对CDR performance会有影响吗?

李闻界:会。

Q7

大*:请教T-coil的layout真是那么画吗?互感看起来不大啊。

李闻界:八边形,四边形都可以,互感可以到0.3到0.4吧。

大*:我看到了你PPT里的那个T-coil了,谢谢!

Q8

大*:bump是什么意思?我真不理解。

李闻界:电感一头是bump,中间是PAD ESD。bump就是要和bounding wire相连的顶层金属。

Q9

大*:请教一个问题,DFE要等CDR phase lock后打开,到稳定需要多少us的时间?

李闻界:可以同时打开。DFE稳定时间还是CDR稳定时间?

大*:我想请教DFE 稳定时间。

李闻界:几个us,算法不同区别交大,快点的1us。

Q10

高*:请教一下,经常有打开补偿与不打开的眼图比较,这种是仿真结果还是实测结果?

李闻界:都有,RX里的很多是仿真图。

Q11:

Pice*CTLE的EQ和VGA先后顺序怎么考虑?

Hanz*VGA在EQ前面。

Pice*@Hanz*,VGA在前不是可以降低后级失调和噪声需求吗?但是看到有人喜欢VGA放后面。

李闻界:@Pice*,考虑信号摆幅和噪声,CTLE可以先把低频压下来。

Pice*@李闻界,对啊,和信号幅度有关。

Hanz*AGC从哪级detect幅度?

李闻界:@Hanz*一般不detect吧。DSP会做。

Pice*@李闻界,您的经验,也是VGA在后比较好?

李闻界:@Pice*,是的。特别对于ADC的RX。

Hanz*不detect 那怎么去控制VGA呢?开环手动调?

李闻界:@Pice*,这个好像大家的做法不太一样。

Hanz*恩,要看构架了。

Hi,简单*个人觉得,VGA放前面很容有isi跑出来,低频幅值衰减比较比较小,很容易被放大限幅,而高频部分的放大取决你VGA的-3dB bandwidth,高速的工艺不好,这个很难搞。

Hanz*看构架吧,PAM4的应该要放在前面。首先要保证前面的线性度。

[转载]serdes关键技术

一、SERDES介绍

随着大数据的兴起以及信息技术的快速发展,数据传输对总线带宽的要求越来越高,并行传输技术的发展受到了时序同步困难、信号偏移严重,抗干扰能力弱以及设计复杂度高等一系列问题的阻碍。与并行传输技术相比,串行传输技术的引脚数量少、扩展能力强、采用点对点的连接方式,而且能提供比并行传输更高带宽,因此现已广泛用于嵌入式高速传输领域。

  Xilinx公司的许多FPGA已经内置了一个或多个MGT(Multi-Gigabit Transceiver)收发器,也叫做SERDES(Multi-Gigabit Serializer/Deserializer)。MGT收发器内部包括高速串并转换电路、时钟数据恢复电路、数据编解码电路、时钟纠正和通道绑定电路,为各种高速串行数据传输协议提供了物理层基础。MGT收发器的TX发送端和RX接收端功能独立,而且均由物理媒介适配层(Physical Media Attachment,PMA)和物理编码子层(Physical Coding Sublayer,PCS)两个子层组成,结构如下图所示

  PMA子层内部集成了高速串并转换电路,预加重电路、接收均衡电路、时钟发生电路和时钟恢复电路。串并转换电路的作用是把FPGA内部的并行数据转化为MGT接口的串行数据。预加重电路是对物理连接系统中的高频部分进行补偿,在发送端增加一个高通滤波器来放大信号中的高频分量进而提高信号质量,但预加重电路会导致功耗和电磁兼容(Electro Magnetic Compatibility,EMC)增加,所以如非必要一般情况下都把它屏蔽掉。接收均衡电路主要用来补偿由频率不同引起的阻抗差异。时钟发生电路与时钟恢复电路在发送端把时钟和数据绑定后发送,在接收端再从接收到的数据流中恢复出时钟,这样可以有效地避免在高速串行传输的条件下时钟与数据分开传输带来的时钟抖动问题。

  PCS子层内部集成了8B/10B编/解码电路、弹性缓冲电路、通道绑定电路和时钟修正电路。8B/10B编/解码电路可以有效的避免数据流中出现连续的‘0’或者‘1’,以保证数据传输的平衡性。通道绑定电路的作用是通过在发送数据流中加入K码字符,把多个物理上独立的MGT通道绑定成一个时序逻辑上同步的并行通道进而提高传输的吞吐率。弹性缓冲电路用来解决恢复的时钟与本地时钟不一致的问题并可以通过对缓冲区中的K码进行匹配对齐来实现通道绑定功能。

  下面将详细讨论SERDES用到的各种关键技术。

二、SERDES关键技术

  简化的SERDES结构图如下图所示

SERDES的优势在于其带宽很高,引脚数目较少而且支持目前多种主流的工业标准,比如Serial RapidIO ,FiberChannel(FC),PCI-Express(PCIE),Advanced Switching Interface,Serial ATA(SATA),1-Gb Ethernet,10-Gb Ethernet(XAUI),Infiniband 1X,4X,12X等。它的线速度能达到10Gb/s甚至更高,主要原因是因为它采用了多种技术来实现这些功能。

2.1 多重相位技术

  如果输入的串行数据流比特率为x, 那么可以使用多重相位以x/4的低速时钟来重新组织数据流。输入的数据流直接连接到4个触发器,每一个触发器运行在时钟的不同相位上(0、90、180以及270)。多重相位技术的数据提取电路如下图所示

  对应的时序图如下图所示

  每个触发器的输出连接到时钟相位小90度的触发器,直到到达时钟相位为0 的触发器。这样,输入数据流就被分解成了1/4输入速率, 4bit宽度的并行数据流。

  在上述的示例电路中,相位等差排列,时钟频率严格等于输入数据流速率的1/4。怎样才能实现呢?我们必须和输入的数据流保持锁定。我们可以使用典型的锁相环来实现这一点,但是锁相环需要一个全速率的时钟,这是很难满足的。锁相环是高速SERDES设计中最重大的改进之一,它主要用于时钟和数据恢复。一般的锁相环需要有运行在数据速率上的时钟,不过可以通过多种技术来避免这种要求,包括分数鉴相器、多重相位锁相环、并行采样以及过采样数据恢复。

2.2 线路编解码技术

  线路编码机制将输入的原始数据转变成接收器可以接收的格式,并保证有足够的切换提供给时钟恢复电路。编码器还提供一种将数据对齐到字的方法,同时线路可以保持良好的直流平衡。线路编码机制也可选择用来实现时钟修正、块同步、通道绑定和将带宽划分到子通道。线路编码机制主要有两种方式,分别为数值查找机制和扰码机制。

2.2.1 8B/10B编解码

  8b/10b编码机制是由IBM开发的,已经被广泛采用。8b/10b编码机制是Infiniband,千兆位以太网, FiberChannel以及XAUI 10G以太网接口采用的编码机制。它是一种数值查找类型的编码机制,可将8位的字转化为10位符号。这些符号可以保证有足够的跳变用于时钟恢复。下表是两个8-bit数据编码为10-bit数据的例子。

  在上面的例子中8-bit数据会导致线路很长时间不出现切换而丢失同步信息。所以8B/10B编解码电路采用了一种叫做运行不一致(Running Disparity)的技术来保证线路良好的直流平衡性能。

2.2.2 运行不一致(Running Disparity)

  8B/10B编解码机制中的直流平衡是通过一种称作“运行不一致性”的方法来实现的。实现直流平衡的最简单办法是:只使用有相同个数0和1的符号,但是这将限制符号的数量。而8B/10B则为各个数值分配了两个不同的符号。其中一个符号有6个0和4个1,这种情况称为正运行不一致符号,简写为RD+,另一个符号则有4个0和6个1,这种情况称为负运行不一致符号,简写为RD-。编码器会检测0和1的数量,并根据需求选择下一个符号,以保证线路的直流平衡。下表给出了一些符号示例

  “运行不一致性”技术的另一个优点是如果数据违反了运行不一致性规则,那么接收器可以通过监控输入数据的运行不一致性规则来检测数据中的错误。

2.2.3 控制字符(Control Characters)

  8B/10B编解码技术将12个特殊字符编码成12个控制字符,通常也称作“K”字符。这些控制字符用于数据对齐,控制以及将带宽划分成为子通道。下表是12种控制字符的编码情况

2.2.4 Comma检测

  Comma指的是用于对齐序列的一个7-bit符号。数据的对齐是解串器的一项重要功能,下图给出了串行流中的有效8B/10B数据示例。

在Serdes中,数据被Comma序列隔开,Comma序列可以自行设置,也可以预先定义好。接收器在输入数据流中扫描搜寻特定的比特序列。如果找到序列,解串器调整字符边界以匹配检测到的Comma字符序列。扫描是连续进行的,一旦对齐确定,所有后续的Comma字符均会发现对齐已经确定。当然,在任意的序列组合里comma字符序列必须是唯一的。

例如,如果我们使用符号K28.7作为Comma字符,则我们必须确保任意有序符号集xy中都不包含比特序列K28.7。使用预定义协议时是不会出现这个问题的,因为Comma字符都是已经定义好的。

  常用的K字符是全部控制字符中的一个或多个特定子集。这些子集中包含K28.1,K28.5,K28.7,这些字符的头7位都是1100000。这种比特序列模式只可以在这些控制字符中出现。其他任意的字符序列或者其他K字符都不包含这一比特序列。因此,这些控制字符是非常理想的对齐序列。在使用自定义协议的情况下,最安全且最常用的解决方案是从比较著名的协议中“借”一个序列。千兆位以太网使用K28.5作为Comma字符。鉴于这个原因,尽管在技术上还有其他的选择,这个字符还是经常被当作Comma字符。

  控制字符的命名方式源于编码器和解码器构建方式,例如:D0.3和K28.5,下图描述了这种方法。

  输入的8位比特被分成5位和3位的数据分别进行5B/6B编码和3B/4B编码,这就是其名字的来源。举例说明, Dx.y表示最低5位的数值对应十进制值x,而最高3位的数值对应十进制值y的输入字节。字母D表示数据字符,而字母K表示控制字符。另一种命名方式中, 8位比特对应于HGF EDCBA,而10位比特对应于abcdei fghj。开销是8b/10b机制的一个缺陷。为了获得2.5Gbit的带宽,需要3.125Gb/s的线路速率。但使用扰码技术可以很容易地解决时钟发送和直流偏置问题,并且不需要额外的带宽。

2.2.4 扰码(Scrambling)

  扰码是一种将数据重新排列或者进行编码以使其随机化的方法,但是必须能够解扰恢复。我们希望打乱长的连0和长的连1序列,将数据随机化。显然,我们希望解扰器在解扰时不需要额外的对齐信息。具有这种特性的码称作自同步码。

  一个简单的扰码器包含一组排列好的触发器,用于移位数据流。大部分的触发器只需要简单地输出下一个比特即可,但是某些触发器需要和数据流中的历史比特相与或者相或。下图描述了此概念。

  扰码方法通常是伴随着多项式出现的,因为扰码的数学原理中使用了多项式。多项式的选择通常是基于扰码的特性,包括生成数据的随机度,以及打乱长的连0、连1的能力。扰码必须避免生成长的连0或连1序列。

  我们希望能够加快触发器的时钟速率。但是想要达到诸如10Gb/s的高速率不是能轻易办到的。但是,还是有方法可以将任意形式的串行数据并行化为y位宽度的并行数据,从而加快进程。如下图所示。

  扰码器消除了长连0、连1序列以及其他会对接收器接收能力有负面影响的序列。但是线路编码机制(例如:8B/10B)的其他功能不是由扰码器提供的,包括:

  1、 字对齐(Word Alignment)

  2、 时钟修正机制(Clock Correction Mechanism)

  3、 通道绑定机制(Channel Bonding Mechanism)

  4、 子通道生成(Sub-Channel Creation)

  某些情况下后三种功能可能是不需要的,而字对齐通常是必要的。如果线路编码使用了扰码,那么字对齐也必须采用相应的方法。例如,我们可以将某些数值排除在容许的数据(或者有效载荷)数值之外。此后,我们可以使用这些禁用的值来创建一个比特流,这个比特流不会在序列的数据部分中出现。如下图所示

  通常,因为存在不允许的数值,所以需要设计数据流中不能出现连0或连1的长度。长的连0、连1会被扰码器打乱,并在解扰时进行恢复。接收数据流的解扰逻辑在数据流中搜寻这些符号并对齐数据。类似的技术还可用于建立其他特性。

2.2.5 4B/5B与64B/66B编解码技术

  4B/5B和8B/10B是类似的。顾名思义,这种机制将4个比特编码成5个比特。4B/5B的编码器和解码器要比8B/10B简单一些。4B/5B的控制字符要少一些,并且不能处理直流平衡和运行不一致性问题。由于编码开销相同但是功能却比较少,所以4B/5B编码机制并不经常使用。它的最大优势是设计的尺寸,不过随着逻辑门价格的降低这个优势也不再明显。4B/5B仍用在各种标准中,包括低速率版本的FiberChannel、音频工程协会-10(AES-10)以及多通道数字音频接口(MADI,一种数字音频复接标准)。

  还有一种新的编码方式称作64B/66B 。我们可以认为64B/66B是8B/10B的简化版本,它具有更低的编码开销,但是实现细节相当不同。在现有的技术用户需求下,人们开发出了64B/66B机制。10G以太网协会要求实现基于以太网的10Gb/s通信。他们可以通过使用4条有效载荷速率为2.5Gb/s、线路速率为3.125Gb/s的链路来实现,但此时SERDES已经可以在单个链路上实现10Gb的解决方案。此时新型SERDES的运行速率已经可以略高于10Gb/s了,但还不能达到12.5Gb/s以支持8B/10B的开销。

  更多的64B/66B编解码技术的实现细节请查看参考文献1。

2.3 包传输技术

  包是一种确切定义的字节集合,包括头部、数据和尾部。

  注意,定义中没有包括源地址和目的地址、 CRC校验码、最小长度、或者开放系统互连协议层。包只不过是一个定义了起点和终点的数据结构。局域网的包通常有很多特性,但是其他用途的包则通常要简单得多。

  包用于各种场合下的信息传递。例如汽车动力布线、手机以及家庭娱乐中心等等。但是,包和千兆位串行链路有什么关系呢?

  通过千兆位串行链路传输的数据多数都是嵌入在某种类型的包中的。Serdes自然需要一种将输入的数据流对齐成字的方法。如果系统需要时钟修正,还必须发送特殊的比特序列或者Comma字符。Comma字符是指示帧的开始和结束的天然标识。如果需要时钟修正,时钟修正序列常常是比较理想的字符。加入有序集合用于指示包的开始、结束以及包的特殊类型之后,我们就有了一个简单而又强大的传输通道。

  idle符号或序列是包的概念的另一要点。如果没有信息需要发送,则发送idle符号。数据的连续传输保证链路能够维持对齐,同时PLL可以保持恢复时钟锁定。下图给出了一些不同标准的包格式。

2.4 参考时钟要求

  千兆位级收发器的输入时钟、或是参考时钟的规格定义是非常严格的。其中包含非常严格的频率要求,通常用每百万次容许频率错误的单位PPM来定义。抖动要求也是十分严格的,通常用时间(皮秒)或者时间间隔(UI)定义。

  如此严格的规定才使得PLL和时钟提取电路能够正常工作。通常系统的每一个印刷电路板都需要有一个精确石英晶体振荡器供MGT使用。这些晶体振荡器的精确度比大多数用在数字系统中的晶体振荡器要高一个级别,而且价格也要高出一截。很多情况下,一般的时钟发生芯片和PLL因为带有很大的抖动,而不能用于MGT。

2.5 时钟修正技术

  千兆位Serdes对传输时钟有非常严格的抖动要求,所以通常不能将恢复时钟作为传输时钟。每一个PCB集合都有唯一的振荡器和唯一的频率。如果两个1GHz的振荡器仅仅有1PPM的频差,同时提供1/20th的参考时钟,则数据流的时钟每秒钟可能会增加或者缺失20,000个周期。因此,在8B/10B编码的系统中,每秒将会额外增加或者损失2万个符号。

  大多数的Serdes都有时钟修正功能。时钟修正需要使用唯一的符号或者符号序列,它们在数据流中是不会出现的。因为时钟修正是对齐的后续处理,所以可以比较容易地通过保留一个K字符、或者一组有序的K字符、或者一个时钟修正数据序列来实现。

  某些情况需要使用4个符号的时钟修正序列。时钟修正通过检测接收FIFO来完成其工作。如果FIFO接近于满,则查找下一个时钟修正序列而不将数据序列写入FIFO。这种操作称作丢弃。相反地,如果FIFO接近于空,则查找下一个时钟修正序列,同时它会被两次写入FIFO。这种操作通常也称作重复。

  时钟修正进行的频数必须足够多,从而可以通过丢弃或者重复来补偿时钟的差异。时钟修正序列和idle序列通常也是一样的。

  有些系统并不需要时钟修正。例如,在很多芯片到芯片(chip-to-chip) 的应用中,同一个振荡器为所有收发器提供参考时钟。相同的参考时钟和相同的速率意味着不需要进行时钟修正。同样,如果所有接收电路的时钟都来自恢复时钟,那么时钟修正也是不需要的。如果FIFO的写入速率和读出速率相等,也没有必要进行时钟修正。

  如果所有的传输参考时钟都是通过一个外部的PLL锁定在一个公共的参考频率上,那么也不需要时钟修正。对于高精确度的串行数字视频链路来说,这是常用的一种结构。所有的传输时钟都是从一个公共的视频参考中获取的。无法锁定到这个信号往往将导致自由滑动的视频流,相对于其他的锁定信号。在1G或2G速率上实现是比较简单的,但是设计一个能够用于10Gb链路且有足够精度的参考时钟是非常有挑战性的。

  下表给出了在不同晶振频率和晶振精度下时钟修正序列之间的最大时钟周期数。

2.6 接收和发送缓冲器

  接收和发送缓冲器,即FIFO,是千兆位级收发器的主要数字接口。FIFO通常是数据写入和读出的地方。发送端通常有一个小型的FIFO,它要求读取和写入的时钟是等时同步(isochronous)的(等时同步是指频率匹配但相位不一定匹配)。

  如果tx_write和tx_read选通信号不是工作在精确相同的频率,则通常采用另外的方法。此时,需要使用一个较大的FIFO,同时要求持续不断地检测FIFO的当前状态。如果FIFO被不断地填充,将最终导致溢出。在这种情况下,必须在输入数据流中检测idle符号。如果检测到idle符号,则不把idle符号写入FIFO。

  反过来,如果FIFO运行较慢则在输出数据流会出现idle符号,数据被传送给用户。此时写指针保持不动,不断重复idle符号。使用idle符号而不使用字节对齐、 Comma字符、时钟修正序列或者通道绑定序列,这一点是非常重要的。为了保证一定的发送速率,所有这些序列都是必需的。

  相对于发送缓冲器而言, MGT内建的接收FIFO通常需要有更深层次的考虑。它的主要目的是为了实现时钟修正和通道绑定。

2.7 通道绑定

  有时候我们需要传送的数据会超过一条串行链路的承载能力。在这种情况下,可以同时使用多条链路来并行传输数据。如果使用这种方式,则输入的数据流必须是对齐的。这个过程通常称作通道绑定。通道绑定可以吸收两个或多个MGT之间的偏差,将数据提交给用户,就像只使用一条链路进行传送一样。通道绑定的过程如下图所示

  不同MGT间数据偏差的一些主要原因:

  1、 传输通道长度的偏差

  2、 传输通道的有源中继器

  3、 时钟修正引起的偏差

  4、 锁定和字节对齐引起的时间偏差

  因为通道绑定需要涉及到收发器之间的通信,所以具体的细节因厂家、器件而异。但是它们有一些共同的特性,例如:指定一个通道作为主通道,指定从通道,还可能需要指定前向从通道。三级通道绑定包括一个主通道和前向从通道,所以通常也称为两-跳通道绑定。

  通道绑定序列必须是唯一的而且是可扩展的,因为可能会添加或丢弃通道绑定序列,所以下行链路中必须忽略。通常时钟修正序列和通道绑定序列之间会有最小间隔符号数。很多基于8B/10B的标准协议规定时钟修正序列和通道绑定序列之间至少需要间隔四个符号。因此,四个符号或字节是比较常用的间隔距离。

2.8 物理信号

  千兆位级Serdes的物理实现普遍采用基于差分的电气接口。常用的差分信号方法有三种:低电压差分信号(LVDS)、低电压伪射级耦合逻辑(LVPECL)和电流模式逻辑(CML)。千兆位链路通常使用CML。CML采用最常用的接口类型,并且通常都会提供AC或DC端接以及可选的输出驱动。部分输入还提供了内建的线路均衡和/或是内部端接。通常端接的阻抗也是可选的。

  下图给出了一个CML型的驱动电路。这些高速驱动电路的原理非常简单。两个电阻中的一个始终都有电流通过,并且此电流和通过另一个电阻的电流不同。

  下图给出了一个MGT接收器的示意图。

2.9 预加重

  千兆位级驱动器最重要的特性可能就是预加重的能力。预加重是在转变开始前的有意过量驱动。如果没有相关的经验,这看起来会像是一个缺陷;看起来就象是一个不好的设计可能发生的上冲和下冲。为了弄懂这么做的意图,我们需要理解符号间干扰。

  如果串行流包含多个比特位时间的相同数值数据,而其后跟着短比特位(1或2)时间的相反数据数值时,会发生符号间干扰。介质(传输通道电容)在短位时间过程中没有足够的充电时间,因此产生了较低的幅度。符号间干扰的示意图如下:

  在符号间干扰的情况下,长时间的恒定值将通道中的等效电容完全的充电,在紧接着的相反数据数值位时间内无法反相补偿。所以,相反数据的电压值有可能不会被检测到。这个问题的解决方法是:转变开始时加入过量驱动,而在任意的连续相同数值时间内减少驱动量,这种过程有时也称作去加重。

2.10 差分传输

  数字设计工程师和PCB设计师们曾经一度认为布线只不过是简单的互连或连线。实际上,原型建造时通常采用一种叫做蛇行布线的技术。实际中并不是一定要运用传输线和传输线理论。如果线路的传输延时只是信号上升时间中的很小一部分,我们可以不使用传输线理论。

  但是随着信号的传输速率的增大,PCB设计过程中就必须使用传输线理论。对于千兆位级操作而言,不仅包括传输线和阻抗控制,还包括差分线路对的阻抗控制。差分线路对阻抗匹配的两条线路是相邻的。两条线路之间的间隔使得两线路相互耦合。如果两线路相隔较远,则称作弱耦合。如果相隔较近,则为强耦合。

  如果给定线路的长度以及叠层结构(会带来给定的阻抗),耦合还会影响线路的阻抗。相同几何形状的差分线路对也会有不同的阻抗。阻抗的精确大小因材料而异,但是板制作厂商通常会提供精确的数据。下表给出了受控阻抗差分线路的各种类型。

2.11 线路均衡

  均衡主要用于补偿由频率不同而引起的阻抗/衰减差异。均衡器有很多种形式,但总体上可以分为有源和无源两种。

  无源均衡器是无源电路,其频率响应可以补偿传输衰减。无源均衡器可以认为是一个滤波器。如果我们的滤波器可以使传输线所使用的各频率通过,而将传输线没有使用的其他频率滤除,那么整体的频率响应就会变得平坦许多。

  有源均衡器可以认为是依赖频率的放大器/衰减器。有源均衡器主要有两种:固定形式有源均衡器和自适应有源均衡器。对于任意的输入数据流,固定形式有源均衡器的频率响应都是一样的。

  固定形式均衡器的增益/衰减量通常是用户可选择的,或者可编程的。部分均衡器有一个简单的控制参数—n 用于设置高增益或低增益,类似于简单音响系统中的低音设置。还有一些均衡器可以独立设置不同频率的增益/衰减量,这和复杂音响系统中的均衡设置是类似的。

  自适应均衡器(也称学习型均衡器)要复杂的多,自适应均衡器需要分析输入信号并检测哪些频率在传输通道中被削弱。测量和调节是以闭环形式实现的。自适应均衡器的频率响应取决于输入的比特流。

  自适应均衡器通常和特殊形式的线路编码机制协同工作。自适应均衡器对于可变通道的链路来说是最合适的,可变通道可以是可变的电缆长度,或是显著的位置依赖的背板系统。固定形式均衡器比较适合于不变系统中,例如:芯片到芯片,平衡化的背板系统以及固定长度电缆的系统。均衡器通常包含在SERDES的模拟前端,或者作为系统的一个独立部分。

2.12 光解决方案

  如果系统中电缆要传输的距离很远(远大于相邻底板的距离),那么通常采用光解决方案。使用光纤可以实现多种长距离传输,例如:楼下到楼上,楼与楼之间,街区之间或者城镇之间。

  光纤系统使用光信号取代电信号来传输信息。最基本的光纤系统包括发送器或信号源、光纤以及接收器,接收器将光脉冲重新转变为电信号。信号源通常是注入型激光二极管(ILD)或者发光二极管(LED),如下图所示。

光纤中的光脉冲传输是基于全反射定理的。全反射定理:如果入射角大于临界值,则光线不会透射而会全部反射回来。简单的说,光纤可以看作是一个内部全是镜子的弹性管线。光线在管道中不停反射前进,就算管道发生了弯曲,光线也能一直前进到达末端。

  光线有两种类型——单模光纤和多模光纤。单模的价格较高,可以传输的距离也较长。多模光纤的价格较低,只能用于短距离传输。

  单模光纤的示意图如下图所示

  多模光纤的示意图如下图所示

  基本的光连接器如下图所示

2.13 循环冗余校验码(CRC)

  设计师还是需要设计一个稳健的系统。首先,他需要检查系统的要求,看是否能够使用常用的方法来解决问题。

  一种方法是错误检测数据重传。检查输入数据中是否有错。如果发现错误,则发送信息给发送者要求重传数据。错误检测的首选方法是CRC。因为CRC十分常用,所以许多SERDES内部都有CRC发生器和检测逻辑。通常重传请求是由上层协议定义的。如果协议支持CRC和重传,或者数据要求正是其所能满足的,那么这种方法将会是最好的选择。

  如果情况不是这样的话,设计师还可以有其他的选择。设计师可以建造并测试所设计的系统,以观察其能否正常工作。SERDES发布的BER可以用来确定测试需要进行到什么程度,所以设计师还是有一些机动空间的。设计师不可能设计出一个远优于发布数据的系统。除了持续测试直到达到发布的BER,设计师还需要在各种极限情况下进行测试(例如,输入抖动十分靠近容限)。如果给系统设计提供更好的输入流,那么结果会更好。  

  数据还提供了另一种值得考虑的选择。多数的数据流都是有模式的,和用于BER测试的伪随机比特流相比,数据流更容易预测。这一点可能是好处也可能是坏处,这取决于传输通道和均衡器适配数据流的情况。所以必须进行测试和调整。所以建造一个系统并观察其能否正常工作,这种方法并不是十分牵强的。尽管如此,如果这种方法会出现操作上的问题,那么前向纠错(FEC)可能会有所帮助。

2.14 前向纠错(FEC)

  由于设计师知道可能会发生错误,所以可以通过提供冗余数据位来恢复这些错误。常用的方法就是利用一些前向纠错码来对数据流中的错误进行纠正。

  前向纠错的定义:添加额外的位,用于帮助恢复错误数据。

  考虑一个待传输的数据块,其大小为NxR字节,分为R行,每行N字节。现在给矩阵的每一行附加额外的一个字节,并给矩阵附加额外的一行。这些地方就是额外的位置。

  数据块的附加信息就保存在这些额外的位置中。此例中,额外的信息是奇偶位。附加字节的每一位代表此行中各字节对应位的奇偶性。也就是说,P[1][0]是D[1.1][0] D[1.2][0]D[1.3][0] …. D[1.N][0]的奇偶性。而对于额外的行而言,其中的每一位就是对应列中各位的奇偶性。也就是说, P[R+1.0][0]是 D[0.0][0], D[1.0][0] D[2.0][0] ….D[N.0][0]的奇偶性。矩阵的示意图如下图所示。

  数据和附加位同时通过链路传输。在另一侧,接收器会检查矩阵的奇偶性。如果数据的任一位是错误的,那么它会标记出来,并通过行值和列值来确定位置。只需要简单的取反,即可纠正该位的错误。多位的错误即可能被纠正,也可能会导致混乱而且会阻止其他错误的纠正,这取决于错误发生的位置。

  这种方法通常称作简单矩阵奇偶性法,而且也是FEC的最初类型。这也是多数FEC方法基本模块。这个例子是简单易懂的,但是它有局限性。针对恶劣环境和性能不好的传输通道,已经开发出多种FEC 方法,例如Viterbi,Reed-Soloman 和 Turbo 编码。所有这些方法都有强大的纠错能力,但是纠错也是有代价的:

  1、运行速度不够快: 与大多数可以在常规结构下发挥作用的方法相比,千兆位级 SERDES的速度较快。

  2、编解码器太过庞大: 编码器和解码器的电路逻辑数量可能会是MGT及其剩余部分的十倍。

  3、编码开销过大: 编码开销就是那些附加的位。编码开销过大常常可以使一种 FEC方法不可行。

三 总结

  Serdes技术中的各种可用功能极大地促进了I/O设计的发展。SERDES的各种功能例如RX定位、时钟管理器、发送/接收FIFO、线路编码器/解码器等被广泛用于提高速度和精确度。SERDES在未来I/O设计中扮演着重要角色,它提供的各种功能也将是高效 I/O器件设计的重要工具。

四 参考资料

  1、ug476_7Series_Transceivers,下载链接:https://www.xilinx.com/support/documentation/user_guides/ug476_7Series_Transceivers.pdf

  2、High-speed serial IO made simple,下载链接:https://pan.baidu.com/s/1Is8oZznS4MCHEOPK5Qwufg   密码:rttp