您好,欢迎访问三七文档
理解SerDesFPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCIExpress,从ATA到SATA,从并行ADC接口到JESD204,从RIO到SerialRIO,…等等,都是在借助SerDes来提高性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释SerDes是怎么工作的。SerDes怎么可以没有传输时钟信号?什么是加重和均衡?抖动和误码是什么关系?各种抖动之间有什么关系?本篇小文试着从一个SerDes用户的角度来理解SerDes是怎么设计的,由于水平有限,一定有不够准确的地方,希望对刚开始接触SerDes的工程师有所帮助。Contents1.SerDes的价值...11.1并行总线接口...11.2SerDes接口...31.3中间类型...42.SerDes结构(architecture)42.1串行器解串器(Serializer/Deserializer)62.2发送端均衡器(TxEqualizer)82.3接收端均衡器(RxEqualizer)92.4时钟数据恢复(CDR)132.5公用锁相环(PLL)162.6SerDes编解码...182.7SerDes收发Driver及差分接口转换...192.8SerDes环回和调试...193.抖动和信号集成(Jitter,SI)193.1时钟的抖动(clockjitter)193.2.数据的抖动(datajitter)204.信号集成(SI)及仿真...234.1信道channel234.2芯片封装Package.244.3SI仿真...245.结尾...256.参考资料了解更多的内容,可以阅读以下内容。...251.SerDes的价值1.1并行总线接口在SerDes流行之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,图1.1演示了系统和源同步并行接口。随着接口频率的提高,在系统同步接口方式中,有几个因素限制了有效数据窗口宽度的继续增加。l时钟到达两个芯片的传播延时不相等(clockskew)l并行数据各个bit的传播延时不相等(dataskew)l时钟的传播延时和数据的传播延时不一致(skewbetweendataandclock)虽然可以通过在目的芯片(chip#2)内用PLL补偿时钟延时差(clockskew),但是PVT变化时,时钟延时的变化量和数据延时的变化量是不一样的。这又进一步恶化了数据窗口。源同步接口方式中,发送侧Tx把时钟伴随数据一起发送出去,限制了clockskew对有效数据窗口的危害。通常在发送侧芯片内部,源同步接口把时钟信号和数据信号作一样的处理,也就是让它和数据信号经过相同的路径,保持相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。我们来做一些合理的典型假设,假设一个32bit数据的并行总线,a)发送端的数据skew=50ps---很高的要求b)pcb走线引入的skew=50ps---很高的要求c)时钟的周期抖动jitter=+/-50ps---很高的要求d)接收端触发器采样窗口=250ps---XilinxV7高端器件的IO触发器可以大致估计出并行接口的最高时钟=1/(50+50+100+250)=2.2GHz(DDR)或者1.1GHz(SDR)。利用源同步接口,数据的有效窗口可以提高很多。通常频率都在1GHz以下。在实际应用中可以见到如SPI4.2接口的时钟可以高达DDR700MHzx16bits位宽。DDRMemory接口也算一种源同步接口,如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。Figure1.2DDR3串扰演示因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好的解决SSN问题,代价是使用更多的芯片引脚。使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。1.2SerDes接口源同步接口的时钟频率已经遇到瓶颈,由于信道的非理想(channel)特性,再继续提高频率,信号会被严重损伤,就需要采用均衡和数据时钟相位检测等技术。这也就是SerDes所采用的技术。SerDes(Serializer-Deserializer)是串行器和解串器的简称。串行器(Serializer)也称为SerDes发送端(Tx),(Deserializer)也称为接收端Rx。Figure1.3是一个N对SerDes收发通道的互连演示,一般N小于4。可以看到,SerDes不传送时钟信号,这也是SerDes最特别的地方,SerDes在接收端集成了CDR(ClockDataRecovery)电路,利用CDR从数据的边沿信息中抽取时钟,并找到最优的采样位置。SerDes采用差分方式传送数据。一般会有多个通道的数据放在一个group中以共享PLL资源,每个通道仍然是相互独立工作的。SerDes需要参考时钟(ReferenceClock),一般也是差分的形式以降低噪声。接收端Rx和发送端Tx的参考时钟可以允许几百个ppm的频差(plesio-synchronoussystem),也可以是同频的时钟,但是对相位差没有要求。作个简单的比较,一个SerDes通道(channel)使用4个引脚(Tx+/-,Rx+/-),目前的FPGA可以做到高达28Gbps。而一个16bits的DDR3-1600的线速率为1.6Gbps*16=25Gbps,却需要50个引脚。此对比可以看出SerDes在传输带宽上的优势。相比源同步接口,SerDes的主要特点包括:lSerDes在数据线中时钟内嵌,不需要传送时钟信号。lSerDes通过加重/均衡技术可以实现高速长距离传输,如背板。lSerDes使用了较少的芯片引脚1.3中间类型也存在一些介于SerDes和并行接口之间的接口类型,相对源同步接口而言,这些中间类型的接口也使用串行器(Serializer)解串器(Deserializer),同时也传送用于同步的时钟信号。这类接口如视频显示接口7:1LVDS等。2.SerDes结构(architecture)SerDes的主要构成可以分为三部分,PLL模块,发送模块Tx,接收模块Rx。为了方便维护和测试,还会包括控制和状态寄存器,环回测试,PRBS测试等功能。见图2.1。Figure2.1BasicBlocksofatypicalSerDes图中蓝色背景子模块为PCS层,是标准的可综合CMOS数字逻辑,可以硬逻辑实现,也可以使用FPGA软逻辑实现,相对比较容易被理解。褐色背景的子模块是PMA层,是数模混合CML/CMOS电路,是理解SerDes去别于并行接口的关键,也是本文要讨论的内容。发送方向(Tx)信号的流向:FPGA软逻辑(fabric)送过来的并行信号,通过接口FIFO(InterfaceFIFO),送给8B/10B编码器(8B/10Bencoder)或扰码器(scambler),以避免数据含有过长连零或者连1。之后送给串行器(Serializer)进行并-串转换。串行数据经过均衡器(equalizer)调理,有驱动器(driver)发送出去。接收方向(Rx)信号的流向,外部串行信号由线性均衡器(LinearEqualizer)或DFE(DecisionFeedbackEqualizer)结构均衡器调理,去除一部分确定性抖动(Deterministicjitter)。CDR从数据中恢复出采样时钟,经解串器变为对齐的并行信号。8B/10B解码器(8B/10Bdecoder)或解扰器(de-scambler)完成解码或者解扰。如果是异步时钟系统(plesio-synchronoussystem),在用户FIFO之前还应该有弹性FIFO来补偿频差。PLL负责产生SerDes各个模块所需要的时钟信号,并管理这些时钟之间的相位关系。以图中线速率10Gbps为例,参考时钟频率250MHz。Serializer/Deserializer至少需要5GHz0相位时钟和5GHz90度相位时钟,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,SMPTESDI使用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的解串器采用类似的实现。实现时,为了降低均衡器(DFEbasedEqualizer)的工作频率,DFE工作在DDR模式下,解串器的输入是2bit或者更宽,本文后面部分都按1bit串行信号解释。Serializer/Deserializer的实现采用双沿(DDR)的工作方式,利用面积换速度的策略,降低了电路中高频率电路的比例,从而降低了电路的噪声。接收方向除了Deserializer之外,一般带有还有对齐功能逻辑(Aligner)。相对SerDes发送端,SerDes接收端起始工作的时刻是任意的,接收器正确接收的第一个bit可能是发送并行数据的任意bit位置。因此需要对齐逻辑来判断从什么bit位置开始,以组成正确的并行数据。对齐逻辑通过在串行数据流中搜索特征码字(AlignmentCode)来决定串并转换的起始位置。比如8B/10B编码的协议通常用K28.5(正码10’b1110000011,负码10’b0001111100)来作为对齐字。图2.4为一个对齐逻辑的演示。通过滑窗,逐bit比对,以找到对齐码(Align-Code)的位置,经过多次在相同的位置找到对齐码之后,状态机锁定位置并选择相应的位置输出对齐数据。2.2发送端均衡器(TxEqualizer)SerDes信号从发送芯片到达接收芯片所经过的路径称为信道(channel),包括芯片封装,pcb走线,过孔,电缆,连接器等元件。从频域看,信道可以简化为一个低通滤波器(LPF)模型,如果SerDes的速率大于信道(channel)的截止频率,就会一定程度上损伤(distort)信号。均衡器的作用就是补偿信道对信号的损伤。发送端的均衡器采用FFE(Feedforwardequalizers)结构,发送端的equalizer也称作加重器(emphasis)。加重(Em
本文标题:理解SerDes
链接地址:https://www.777doc.com/doc-6816908 .html