GTX高速收发器Transceiver之发射端Transmitter(UG476)

之前写好的忘了放出来了。另外一篇:GTX高速收发器Transceiver概述与收发共同特征(UG476)

目录

Ch3.Transmitter

FPGA TX Interface

1.Interface Width Configuration

2.TXUSRCLK and TXUSRCLK2 Generation

3.Using TXOUTCLK to Drive the TX Interface

TX 8B/10B Encoder

TX Gearbox

TX Buffer

TX Polarity Control

TX Fabric Clock Output Control


Ch3.Transmitter

 

GTX高速收发器Transceiver之发射端Transmitter(UG476)

FPGA TX Interface

1.Interface Width Configuration

FPGA TX 接口的数据位宽由多个参数设置决定:

TX_DATA_WIDTH:当8B/10B编码器使能的时候,是一定要设置为20/40/60/80bits的,否则设置为16, 20, 32, 40, 64,或80;

TX_DATA_WIDTH取决于FPGA Interface Width 和 TX8B10BEN。

 

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 [2]。

他们的关系如下:

GTX高速收发器Transceiver之发射端Transmitter(UG476)

当不使用8B/10B编码器,且TX_DATA_WIDTH为20、40或80时,使用TXCHARDISPMODE 与TXCHARDISPVAL端口将TXDATA端口从16位扩展到20位,从32位扩展到40位,或者从64位扩展到80位。

 

 

2.TXUSRCLK and TXUSRCLK2 Generation

TXUSRCLK是GTX/GTH发射机中PCS逻辑的内部时钟。

GTX高速收发器Transceiver之发射端Transmitter(UG476)
TXUSRCLK2是所有信号进入GTX/ GTH收发机TX端的主同步时钟。,这些信号在上升沿采样。
TXUSRCLK2的速率由线速率、TX Interface接口位宽和8B/10B是否使能决定:
TXUSRCLK2频率= 线速率/TX_DATA_WIDTH ;
比如线速率是10Gb/s,TX_DATA_WHDTH等于80,那么TXUSRCLK2的频率是125MHz。
 Internal Data Width属于TXUSRCLK时钟域,FPGA Interface Width属于TXUSRCLK2时钟域,
TXUSRCLK2 and TXUSRCLK有一个固定关系如Table 3-3:

GTX高速收发器Transceiver之发射端Transmitter(UG476)

TXUSRLK和TXUSRCLK2时钟是相关联的,在时钟这两个时钟时应该遵循下面两个准则:
 1.      TXUSRCLK和TXUSRCLK2必须是上升沿对齐的,偏差越小越好,因此应该使用BUFGs或者BUFRs来驱动这两个时钟(因为TX Interface和PCS子层之间没有相位校正电路或者FIFO,所以需要严格对齐,本人自己的理解)。
2.      即使TXUSRCLK、TXUSRCLK2和GTX的参考时钟运行在不同的时钟频率,必须保证三者必须使用同源时钟[2]。

3.Using TXOUTCLK to Drive the TX Interface

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

GTX高速收发器Transceiver之发射端Transmitter(UG476)

二者频率为二倍关系且多通道时,需要使用MMCM进行分频:

GTX高速收发器Transceiver之发射端Transmitter(UG476)

 

 

TX 8B/10B Encoder

高速收发器的发送端一般都带有8b/10b编码器。目的是保证数据无直流分量和时钟恢复,编码器还提供一种将数据对齐到字的方法。在GTX应用中,如果发送的是D码,则需要将TXCHARISK拉低,如果是K码(控制字符),则将相应的TXCHARISK拉高[3]。

启用8B/10B编码器会通过TX路径增加延迟。如果不需要,可以禁用或绕过8B/10B编码器,以最小化延迟。

极性偏差(running disparity,RD)

为了保证0与1个数相等,编码器总是计算传输的1个数和0个数之间的差值,并且在每个传输字符的末尾,使差值为+1或-1,称为RD。

RD不仅可以由8B/10B编码器产生,还可以通过TXCHARDISPMODE 与TXCHARDISPVAL进行控制,如表3-6所示。

 

GTX高速收发器Transceiver之发射端Transmitter(UG476)

TX Gearbox

一些高速数据速率协议使用64B/66B编码来减少8B/ 10B编码的开销,同时保留编码方案的优点。TX Gearbox支持64B/66B和64B/67B。

TX Buffer

TX Buffer Bypass

TX Pattern Generator

TX Polarity Control

如果在PCB设计时不慎将TXP和TXN差分引脚连接反了,则可以通过极性控制来弥补这个设计错误,端口TXPOLARITY:

 

GTX高速收发器Transceiver之发射端Transmitter(UG476)

TX Fabric Clock Output Control

发送端PLL之后的详细时钟架构,分为Serial Clock Divider(转变为串行之后的时钟)和Parallel Clock Divider and Selector(并行时钟)

Serial Clock Divider:

GTX高速收发器Transceiver之发射端Transmitter(UG476)

 

其中红框部分和黄底部分的内容是我们需要重点了解的地方,图中的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。

TXOUTCLKPCS和TXOUTCLKFABRIC是冗余输出。在新设计中使用TXOUTCLK。

IBUFDS_GTE2是额外时钟方案灵活性的冗余输出。

Parallel Clock Divider and Selector

主要就是TXOUTCLK的选择问题了,如上图所示,

TXOUTCLKSEL控制选择,

3’b001: TXOUTCLKPCS

3’b010: TXOUTCLKPMA

3’b011: TXPLLREFCLK_DIV1 or TXPLLREFCLK_DIV2(建议使用)

端口描述与属性就不列了看手册就可以。

 

(看着看着我都觉得不需要翻译了,直接看英文就好,讲的挺详细的,并且这东西不可能地毯式的看完,需要什么看什么)

TX Phase Interpolator PPM Controller

TX Configurable Driver

TX Receiver Detect Support for PCI Express Designs

TX Out-of-Band Signaling

 

 

  1. Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟篇https://blog.csdn.net/ladywn/article/details/52836818
  2. UG476-Xilinx-7Series-FPGA高速收发器使用学习—TX发送端 https://blog.csdn.net/ningjinghai11/article/details/80677620
  3. Xilinx-7Series-FPGA高速收发器使用学习—TX发送端介绍https://blog.csdn.net/ladywn/article/details/52985461
  4. ug476_7Series_Transceivers.

 

上一篇:LeetCode 391. 完美矩形


下一篇:Coloring Rectangles