之前写好的忘了放出来了。另外一篇: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
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]。
他们的关系如下:
当不使用8B/10B编码器,且TX_DATA_WIDTH为20、40或80时,使用TXCHARDISPMODE 与TXCHARDISPVAL端口将TXDATA端口从16位扩展到20位,从32位扩展到40位,或者从64位扩展到80位。
TXUSRCLK是GTX/GTH发射机中PCS逻辑的内部时钟。
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:
TXUSRLK和TXUSRCLK2时钟是相关联的,在时钟这两个时钟时应该遵循下面两个准则:
1. TXUSRCLK和TXUSRCLK2必须是上升沿对齐的,偏差越小越好,因此应该使用BUFGs或者BUFRs来驱动这两个时钟(因为TX Interface和PCS子层之间没有相位校正电路或者FIFO,所以需要严格对齐,本人自己的理解)。
2. 即使TXUSRCLK、TXUSRCLK2和GTX的参考时钟运行在不同的时钟频率,必须保证三者必须使用同源时钟[2]。
对于TXUSRCLK和TXUSRCLK2由谁驱动呢,官方推荐使用TXOUTCLK驱动,这样做能精简设计,同时稳定,如何使用TXOUTCLK来做TXUSRCLK和TXUSRCLK2的驱动时钟呢,根据TXUSRCLK和TXUSRCLK2的频率关系,以一个Lane为例且二者频率相等的时候:
二者频率为二倍关系且多通道时,需要使用MMCM进行分频:
高速收发器的发送端一般都带有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所示。
一些高速数据速率协议使用64B/66B编码来减少8B/ 10B编码的开销,同时保留编码方案的优点。TX Gearbox支持64B/66B和64B/67B。
TX Buffer Bypass
TX Pattern Generator
如果在PCB设计时不慎将TXP和TXN差分引脚连接反了,则可以通过极性控制来弥补这个设计错误,端口TXPOLARITY:
发送端PLL之后的详细时钟架构,分为Serial Clock Divider(转变为串行之后的时钟)和Parallel Clock Divider and Selector(并行时钟)
Serial Clock Divider:
其中红框部分和黄底部分的内容是我们需要重点了解的地方,图中的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