Xilinx的7系列FPGA高速收发器:TX发送端的介绍.docx
Xi1inx的7系列FPGA高速收发器:TX发送端的介绍每一个收发器拥有一个独立的发送端,发送端有PMA(Physica1MediaAttachment,物理媒介适配层)和PCS(Physica1CodingSub1ayer,物理编码赤)组成,其中PMA子层包含高速串并转换(SerdeS)I询/后加重、接收均衡、时钟发生器及时钟恢复等电路。PCS子层包含8B/10B编解码、缓冲区、通道绑定和时钟修正等电路。对于GTX的发送端来说,结构如图1所示。FromOanrw1"RXParaMDtfiFwmRXParaMDettFERXPmMIOaMQocMnAffnctuw(NearWndPCSSOMCjQgCjPMAUx>pMcMFmP八七丽cQW6BKFPGA内部并行数据通过FPGATXInterfaCe进入TX发送端,然后经过PCS和PMA子层的各个功能电路处理之后,最终从TX驱动器中以高速串行数据输出,下面将介绍各个功能电路。FPGATXInterface(TX用户接且):TXInterfaCe是用户数据发往GTX的接口,该接口的信号如表1所示。PortDirC1ockDomainDescriptionTXCHRDISPMODE7rOJInTXUSRC1K2When8B10Bencodingisdisab1ed,Txchardispmode>sUSedtoextendthedatabusfor20-z40-and80-bitTXinterfaces.TXCHARDISpVAU7:0InTXUSRC1K2When8B10Bencodingisdisab1ed,txchrdispv1isUSedtoextendthedatabusfor20-,40-and80-bitTXinterfaces.TXDT63rOJInTXUSRC1K2Thebusfortransmittingdata.ThewidthofthisportdependsonTX_DATA_WIDTH:TX_DATA_WIDTH=】£20:TXDATAU5:0=16bitswideTX-DTWIDTH=32,40:TXDATA31:0=32bitswideTX.DT,W1DTH=64,80:TXDATA63:0=64bitswideWhena20-bitz40-bitor80-bitbusisrequired,theTXCHRD1SPV1andTxchardispmodePOrtSfromthe8BIOBencoderisconcatenatedwiththeTXDATAport.SeeTabk3>2,Pag109.Txusrc1kInC1ockThisportisusedtoprovideadockfortheinterna1TXPCSdatapath.TXUSRC1K2InC1ockThisportisusedtosynchronizetheFIjGA1ogicwiththeTXinterface.Thisc1ockmustbePOCreedgcaj炉M*oTXUSRC1KWI/-4<1tKiprovidedbythe'/表1发送数据接口是TXDATA,采样时钟是TXUSRC1K2,在TXUSRC1K2的上升沿对TXDATA进行采样。TXUSRC1K2的速率由线速率、TXInterfaCe接口位宽和8B/10B是否使能决定(TXUSRC1K2频率二线速率/TX_DATA_WIDTH;比如线速率是10Gbs,TX_DATA_WHDTH等于80,那么TXUSRC1K2的凝率是125MHZ)OTXDATA的位宽可以配置晟16/20/32/40/64/80位宽,通过TX_DATA_WIDTH、TXINTDTWIDTIKTX8B10BEN三个属性设置可以配置成不同的位宽,具体属性如表2所示。TX8B10BENTXDATAWIDTHxNTDatawidthFPGAInterfaceWidthInterna1DataWidth12001620400322040132408016440016016162002020320321632132324004020401404064164C801表2GTX的TXIn1”face分成内部数据位宽和FPGA接口位宽,其中内部数据归属于TXUSRC1K时钟域,FPGA接口数据归属于TXUSRC1K2时钟域,而内部数据位宽支持2byte4byte,FPGA接口数据位宽支持2byte4byte8byte,因此,决定了Txusrc1k和TXUSRC1K2有一定的时钟倍数关系,Txusrc1k和TXUSRC1K2的时钟倍数关系如表3所示,其中TXINTDATAW1DTH属性设置为“0”,表示内部数据位宽为2byte,如果设置为“1”,则表示内部数据位宽为4byte(线速率大于6.6Gbs的时候应当置ii1ff)oFPGAInterfaceWidthTXDATAWIDTHxNTDatawidthTXUSRC1K2Frequency2-Byte16z200FTXUSRC1K2=Ptxusrci.K4-Byte32,400IiTXUSRC1K2=FTXUSRC1K/24-Byte32z401FTXU2D1X在工X8-Byte801PTXUSF二2工7巨本N二表3TXUSR1K和TXUSRC1K2时钟是相关联的,在时钟这两个时钟时应该遵循下面两个准则:1 .TXUSRC1K和TXUSRC1K2必须是上升沿对齐的,偏差越小越好,因此应该使用BUFGs或者BUFRs来驱动这两个时钟(因为TXInterface和PCS子层之间没有相位校正电路或者FIFO,所以需要严格对齐,本人自己的理解)。2 .即使TXUSRe1K、TXUSRC1K2和GTX的参考时钟运行在不同的时钟频率,必须保证三者必须使用同源时钟。发送端的时钟结构:为了能够更好的理解GTX的发送端如何工作,理解发送端的时钟结构很有必要,图2是发送端的时钟结构图。图2其中红框部分和黄底部分的内容是我们需要重点了解的地方,图中的Mgtrefc1k是上一篇中提到的gtx的参考时钟,经过一个IBUFDS_gte2源语之后进入GTX,用以驱动CP11或者QP11对于TXPMA来说,主要实现的功能是并串转换,其并串转换的时钟可以由CP11提供,也可以由QP11提供,由TXSYSC1KSE1选择,TXPMA子层里面有三个红色方框部分是串行和并行时钟分频器,作用是产生并行数据的驱动时钟,其中D分频器主要用于将P11的输出分频,以支持更低的线速率。÷2÷4这个选项由TX_INT_DATAWIDTH决定,如果TX_INT_DATAWIDTH为“0”,则选择÷2,反之选择÷40对于÷4÷5,则由TX_DATA_WIDTH决定,如果是位宽是16/32/64,则选择÷4,如果位宽是20/40/80,则速择÷5°对于Txusrc1k和txusrc1k2由谁驱动呢,官方也卷使用txoutc1k驱动,这样做能精简设计,同时稳定,如何使用TXoUTC1K来做TXUSRC1K和TXUSRC1K2的驱动时钟呢,根据TXUSRC1K和TXUSRC1K2的频率关系,以一个1ane为例,图3表示TXUSRC1K=TXUSRC1K2的驱动方式,图4表示TXUSRe1K二2*TXUSRC1K2的驱动方式。图3图4对于图4,C1KOUTO的值为C1K0UT1的2倍。TX8B10BEncoder:高速收发器的发送端一般都带有8b10b编码整。目的是保证数据有足够的切换提供给时钟恢复电路,编码器还提供一种将数据对齐到字的方法,同时线路可以保持良好的直流平衡。在GTX应用中,如果发送的是D码,则需要将TXCHAR1SK拉低,如果是K码,则将相应的TXCHAR1SK拉高。TXBuffer:了解发送的TXBUffer的作用,首先得搞清楚TX发送端的时钟域,TX发送端的时钟域如图5所示。图5图5中红色方框就是TXBuffer,我们都知道F1FO具有隔离时钟域的功能,在这里也不例外,我们从图中可以知道,TXBUffer连接着两个不同的时钟域XC1K和TXUSRC1K,在发送端的PCS子层内部包含两个时钟域,XC1K(PMA并行时钟域)TXUSRC1K时钟域,为了数据发送的稳定,XC1K和TXUSRC1K必须是速率匹配,相位差可以消除的,TXBUffer主要用于匹配两时钟域的速率和消除两时钟域之间的相位差。TXBUffer也可以被旁路,TX发送端提供了一个相位对齐电路,可以解决XC1k和Txusrc1k时钟域之间的相位差,但是tx_xc1k_se1需设置为“txusr”来保持Xc1k时钟域和Txusrc1k保持同频。TXPatternGenerator:GTX拥有伪随机数列产生电路,伪随机数列是之中看似随机,但是是有规律的周期性二进制数列,有良好的随机性和接近白噪声的相关函数,所以伪随机数列可以用来做误码率测量、时延测量、噪声发生器、通信加密和扩频通信等等领域,在GTX中可以用来测试高速串行通道传输的误码率,图6是GTX的PRBS生成电路。图6可以使能或者旁路这个PRBS生成电路,如果旁路的话TXDATA会传输到发送端的PMAo一般使用PRBS模式测试模型如图7所示。图7TXPo1arityContro1:TX发送端支持对TX发送的数据进行极性控制,从PCS子层输出的编码数据在进入PISO串行化之前进行极性翻转,这部分功能主要是用来弥补其殳的设计错误,如果PCB设计时不慎将TXP和TXN交叉连接的话,可以通过设置TXPO1AR1TY为“1”来翻转信号的极性。