Transmitter功能介绍
每个收发器(Transceiver)包括一个独立的发射器(Transmitter),它由PCS和PMA组成。下图显示了发射器(Transmitter)的功能块。并行数据从FPGA逻辑流入FPGA TX接口,通过PCS和PMA,然后作为高速串行数据流出TX驱动器 。
如下图所示,GTX/GTH Transceiver的TX功能框图:
可见,TX中包含以下功能块:
- FPGA TX Interface
- TX 8B/10B Encoder
- TX Gearbox
- TX Buffer
- TX Buffer Bypass
- TX Pattern Generator
- TX Polarity Control
- TX Fabric Clock Output Control
- TX Phase Interpolator PPM Controller
- TX Configurable Driver
- TX Receiver Detect Support for PCI Express Designs
- TX Out-of-Band Signaling
TX Interface
下面会有取舍的介绍,本文主要介绍TX Interface,即逻辑并行数据与TX交互的窗口,还有Tx 8B/10B编码模块。
关于这部分,我们在GT Transceiver的时钟篇已经介绍了一部分,和时钟有关的一部分,可见下方的往期回顾。
FPGA逻辑生成并行数据使用的时钟是TXUSRCLK,它来自于时钟TXOUTCLK,而TXOUTCLK的来源,可以是GT Transceiver的外部参考时钟,这些都可以参考下面的往期回顾。
TX 8B/10B编码
许多协议对输出数据使用8B/10B编码。8B/10B是一种行业标准的编码方案,它用每个字节的两个比特的开销来换取实现的直流平衡和bounded disparity,以允许合理的时钟恢复。
GTX/GTH收发器有一个内置的8B/10B TX路径(集成的硬核资源),对TX数据进行编码而不消耗FPGA资源。启用8B/10B编码器会增加通过TX路径的延迟。如果不需要,可以禁用或绕过8B/10B编码器,以尽量减少延迟。
8B/10B位和字节排序
8B/10B编码器后的位顺序与如下 "8B/10B编码表 "中的顺序相反,因为8B/10B编码要求先传送位a0,而GTX/GTH收发器总是先传送最右边的位。
为了与8B/10B匹配,GTX/GTH收发器中的8B/10B编码器会自动颠倒位序。
下图显示了当TX_DATA_WIDTH=20、40和80时GTX/GTH收发器传输的数据。TXDATA使用的比特数和相应的字节顺序由TX_DATA_WIDTH决定。
-
如果TX_DATA_WIDTH = 20,只使用TXDATA[15:0]
-
如果TX_DATA_WIDTH = 40,只使用TXDATA[31:0]
-
如果TX_DATA_WIDTH = 80,使用全部TXDATA[63:0]
当8B/10B编码器被绕过,TX_DATA_WIDTH被设置为10的倍数,10位字符以这种格式传递给TX数据接口。- 相应的TXCHARDISPMODE代表第9位 - 相应的TXCHARDISPVAL代表第8位 - 相应的TXDATA字节代表[7:0]位
Running Disparity
8B/10B编码是直流平衡的,也就是说,传输的1和0的长期比例应该正好是50%。为了实现这一点,编码器总是计算传输的1和0的数量之间的差异,并在每个字符传输结束时,使其差异为+1或-1。这个差值被称为Running Disparity。
为了适应使用Disparity来发送控制信息的协议,运行中的Disparity不仅可以由8B/10B编码器产生,而且还可以通过TXCHARDISPMODE和TXCHARDISPVAL来控制,如下所示。例如,发送的空闲字符与颠倒的Disparity可能被用来触发时钟校正。
上面提到了TXCHARDISPMODE和TXCHARDISPVAL,其基本含义以在表中说明,下面介绍下这两个端口的位与