UG476-Xilinx-7Series-FPGA高速收发器使用学习—TX发送端

每一个收发器拥有一个独立的发送端,发送端有PMA(Physical Media Attachment,物理媒介适配层)和PCS(PhysicalCoding Sublayer,物理编码子层)组成,其中PMA子层包含高速串并转换(Serdes)、预/后加重、接收均衡、时钟发生器及时钟恢复等电路。PCS子层包含8B/10B编解码、缓冲区、通道绑定和时钟修正等电路。对于GTX的发送端来说,结构如图1所示。

图1

FPGA内部并行数据通过FPGATX Interface进入TX发送端,然后经过PCS和PMA子层的各个功能电路处理之后,最终从TX驱动器中以高速串行数据输出,下面将介绍各个功能电路。

 

FPGA TX Interface用户接口:

TX Interface是用户数据发往GTX的接口,该接口的信号如表1所示。


表1


发送数据接口是TXDATA,采样时钟是TXUSRCLK2,在TXUSRCLK2的上升沿对TXDATA进行采样。

TX_DATA_WIDTH :设置接口位宽,8b10b使能的时候,位宽必须设置为20,40,或80。8b10b不使能的时候,可以设置为16, 20, 32, 40, 64,或80.

TX_INT_DATAWIDTH: TX的内部数据位宽支持2字节,4字节。

TX_INT_DATAWIDTH=0,   Internal Data Width=2字节,16或20bit;

TX_INT_DATAWIDTH=1,   Internal Data Width=4字节,32或40bit;

TXUSRCLK2的速率由线速率、TX Interface接口位宽和8B/10B是否使能决定.

    TXUSRCLK2频率= 线速率/  TX_DATA_WIDTH ;

比如线速率是10Gb/s,TX_DATA_WHDTH等于80,那么TXUSRCLK2的频率是125MHz)。

TXDATA的位宽可以配置成16/20/32/40/64/80位宽,通过TX_DATA_WIDTH 、TX_INT_DATAWIDTH、TX8B10BEN三个属性设置可以配置成不同的位宽,具体属性如表2所示。


 

表2

         GTX的TX Interface分成内部数据位宽和FPGA接口位宽,其中内部数据归属于TXUSRCLK时钟域,FPGA接口数据归属于TXUSRCLK2时钟域,而内部数据位宽支持2byte/4byte,FPGA接口数据位宽支持2byte/4byte/8byte,因此,决定了TXUSRCLK和TXUSRCLK2有一定的时钟倍数关系,TXUSRCLK和TXUSRCLK2的时钟倍数关系如表3所示,其中TX_INT_DATAWIDTH属性设置为“0”,表示内部数据位宽为2byte,如果设置为“1”,则表示内部数据位宽为4byte(线速率大于6.6Gb/s的时候应当置“1”)。

TX_INT_DATAWIDTH=0,   Internal Data Width=2字节,16或20bit;

TX_INT_DATAWIDTH=1,   Internal Data Width=4字节,32或40bit;


表3

TXUSRLK和TXUSRCLK2时钟是相关联的,在时钟这两个时钟时应该遵循下面两个准则:

1.      TXUSRCLK和TXUSRCLK2必须是上升沿对齐的,偏差越小越好,因此应该使用BUFGs或者BUFRs来驱动这两个时钟(因为TX Interface和PCS子层之间没有相位校正电路或者FIFO,所以需要严格对齐,本人自己的理解)。

2.      即使TXUSRCLK、TXUSRCLK2和GTX的参考时钟运行在不同的时钟频率,必须保证三者必须使用同源时钟。

  

发送端的时钟结构:为了能够更好的理解GTX的发送端如何工作,理解发送端的时钟结构很有必要,图2是发送端的时钟结构图。


图2

  其中红框部分和黄底部分的内容是我们需要重点了解的地方,图中的MGTREFCLK是上一篇中提到的GTX的参考时钟,经过一个IBUFDS_GTE2源语之后进入GTX,用以驱动CPLL或者QPLL。对于TX PMA来说,主要实现的功能是并串转换,其并串转换的时钟可以由CPLL提供,也可以由QPLL提供,由TXSYSCLKSEL选择,TX PMA子层里面有三个红色方框部分是串行和并行时钟分频器,作用是产生并行数据的驱动时钟,其中D分频器主要用于将PLL的输出分频,以支持更低的线速率。

÷2/÷4这个选项由TX_INT_DATAWIDTH决定,如果TX_INT_DATAWIDTH为“0”,则选择÷2,反之选择÷4。

对于÷4/÷5,则由TX_DATA_WIDTH决定,如果是位宽是16/32/64,则选择÷4,如果位宽是20/40/80,则选择÷5。

对于TXUSRCLK和TXUSRCLK2由谁驱动呢,官方推荐使用TXOUTCLK驱动,这样做能精简设计,同时稳定,如何使用TXOUTCLK来做TXUSRCLK和TXUSRCLK2的驱动时钟呢,根据TXUSRCLK和TXUSRCLK2的频率关系,以一个Lane为例,

图3表示TXUSRCLK=TXUSRCLK2的驱动方式,2字节模式,TX_DATA_WIDTH = 16 or 20 and TX_INT_DATWIDTH = 0。

图4表示TXUSRCLK = 2*TXUSRCLK2的驱动方式。4字节模式,TX_DATA_WIDTH = 32 or 40 and TX_INT_DATWIDTH = 1。8字节模式:TX_DATA_WIDTH = 64 or 80 and TX_INT_DATWIDTH = 1

单个line:

    

多个line:

                                                                                                                              图3         

单个line:                              

多个line


                                                                                           图4

对于图4,CLKOUT0的值为CLKOUT1的2倍。

 

TX 8B/10B Encoder:高速收发器的发送端一般都带有8b/10b编码器。目的是保证数据有足够的切换提供给时钟恢复电路,编码器还提供一种将数据对齐到字的方法,同时线路可以保持良好的直流平衡。在GTX应用中,如果发送的是D码,则需要将TXCHARISK拉低,如果是K码,则将相应的TXCHARISK拉高。

了解发送的TXBuffer的作用,首先得搞清楚TX发送端的时钟域,TX发送端的时钟域如图5所示。

图5

图5中红色方框就是TXBuffer,我们都知道FIFO具有隔离时钟域的功能,在这里也不例外,我们从图中可以知道,TX Buffer连接着两个不同的时钟域XCLK和TXUSRCLK,在发送端的PCS子层内部包含两个时钟域,XCLK(PMA并行时钟域)TXUSRCLK时钟域,为了数据发送的稳定,XCLK和TXUSRCLK必须是速率匹配,相位差可以消除的,TX Buffer主要用于匹配两时钟域的速率和消除两时钟域之间的相位差。

TX Buffer也可以被旁路,TX发送端提供了一个相位对齐电路,可以解决XCLK和TXUSRCLK时钟域之间的相位差,但是TX_XCLK_SEL需设置为“TXUSR”来保持XCLK时钟域和TXUSRCLK保持同频。

TX Buffer Bypass:


单线,自动模式:


单线,手动模式





TX Pattern Generator:GTX拥有伪随机数列产生电路,伪随机数列是之中看似随机,但是是有规律的周期性二进制数列,有良好的随机性和接近白噪声的相关函数,所以伪随机数列可以用来做误码率测量、时延测量、噪声发生器、通信加密和扩频通信等等领域,在GTX中可以用来测试高速串行通道传输的误码率,图6是GTX的PRBS生成电路。


图6

可以使能或者旁路这个PRBS生成电路,如果旁路的话TXDATA会传输到发送端的PMA。一般使用PRBS模式测试模型如图7所示。


图7

 

TX Polarity Control:TX发送端支持对TX发送的数据进行极性控制,从PCS子层输出的编码数据在进入PISO串行化之前进行极性翻转,这部分功能主要是用来弥补PCB的设计错误,如果PCB设计时不慎将TXP和TXN交叉连接的话,可以通过设置TXPOLARITY为“1”来翻转信号的极性,。

<think>好的,我现在需要帮助用户查找关于FPGA GTP约束的配置和使用方法。用户之前提到了引用内容,其中引用了四个资料,其中引用[4]提到了GTP的IP核配置和Example工程,这可能与约束有关。用户现在的问题是关于GTP约束的具体配置和使用教程。 首先,我需要回忆一下FPGA设计中的约束文件通常包括时序约束和物理约束。对于高速收发器如GTP,约束可能涉及时钟、引脚分配、电气特性等。根据引用[4],用户生成IP Example工程时可能涉及到时钟配置,比如DRP时钟的单改差分,这可能需要在约束文件中指定时钟源和引脚位置。 接下来,用户可能需要的约束包括: 1. 引脚约束:确定GTP收发器的TX和RX引脚位置,参考FPGA手册或开发板原理图。 2. 时钟约束:为参考时钟和DRP时钟提供正确的频率和时序约束。 3. 电气标准:设置GTP通道的电压、预加重、均衡等参数,这可能通过IP核配置或约束文件指定。 4. 时序例外:如多周期路径或虚假路径,确保时序分析正确。 然后,我需要检查引用内容中的相关信息。引用[4]提到修改DRP时钟为单输入,使用IBUF原语和BUFG,这可能需要在约束文件中添加时钟网络约束。例如,使用XDC文件中的create_clock命令来定义时钟频率,以及set_property来指定引脚位置。 此外,用户可能需要参考Xilinx官方文档,如UG482(7 Series FPGAs GTP Transceiver User Guide),其中详细说明了约束配置。例如,GTP的参考时钟约束、差分引脚对的定义,以及高速信号完整性相关的约束设置。 可能还需要考虑IP核生成的约束文件,在Example工程中可能已经包含了一些基本的约束,但用户需要根据具体硬件调整引脚位置和时钟参数。例如,在引用[4]的Example工程中,修改tx_disable信号和时钟输入方式,这些都需要在约束文件中反映出来。 用户的问题还可能涉及如何验证约束是否正确应用,比如通过时序分析工具检查是否满足要求,或者使用ILA抓取信号验证数据传输。引用[4]中提到ILA用于环回测试,这可能需要在约束中正确设置探测信号。 最后,可能需要指导用户查阅官方教程和文档,以及如何利用已有的例程进行修改。例如,引用[2]提到的快速上手教程可能包含约束配置的示例,用户可以参考这些资源进行学习。</think>以下是与Xilinx FPGA GTP约束配置及使用相关的技术要点,结合官方文档和工程实践经验整理[^2][^4]: ### 一、GTP约束配置核心要素 1. **引脚约束** 需在XDC文件中明确定义GTP差分对位置: ```tcl set_property PACKAGE_PIN H11 [get_ports GTP_CLK_P] set_property IOSTANDARD LVDS_25 [get_ports GTP_CLK_P] set_property DIFF_TERM TRUE [get_ports GTP_CLK_P] ``` 2. **时钟约束** GTP参考时钟需满足±100ppm精度要求: ```tcl create_clock -name GTP_REFCLK -period 8.0 [get_pins GTP_COMMON/GTREFCLK0] ``` 3. **收发器特性约束** 通过GT控制参数设置电气特性: ```tcl set_property GT_TX_PREEMPHASIS 3 [get_hw_sio_gt {GTPE2_CHANNEL_X0Y0}] set_property GT_RX_EQUALIZER 2 [get_hw_sio_gt {GTPE2_CHANNEL_X0Y0}] ``` ### 二、配置流程示例(基于Vivado) 1. **IP核配置阶段** 在Transceiver Wizard中设置: - Line Rate:1.485Gbps(对应SD-SDI) - Reference Clock:148.5MHz - Data Encoding:8B/10B 2. **生成Example工程后** 需修改约束文件: ```tcl # 修正DRP时钟配置(单时钟示例) create_clock -name drp_clk -period 20.0 [get_ports drp_clk_in] set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets drp_clk_IBUF] ``` 3. **特殊信号处理** 针对开发板硬件设计调整约束: ```tcl # 禁用TX功率管理 set_property PULLUP true [get_ports gtp_tx_disable] ``` ### 三、调试关键约束 1. **时序例外约束** 对跨时钟域路径添加约束: ```tcl set_false_path -from [get_clocks drp_clk] -to [get_clocks txusrclk] ``` 2. **眼图扫描约束** 通过SIBERT工具配置扫描参数: ```tcl set_property EYE_SCAN_VOLTAGE 1.0 [get_hw_sio_links] set_property EYE_SCAN_HORZ_RANGE 0.5 [get_hw_sio_links] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值