详解Xilinx FPGA高速串行收发器GTX/GTP(2)--什么是GTX?
GTX本质上是基于SerDes技术的高速串行收发器,它是FPGA内部的底层电路,也叫做Gigabit Transceiver(吉比特收发器,简称为GT)。其中A7系列使用的GT叫GTP,K7系列使用的GT叫GTX,V7系列使用的GT叫GTH和GTZ,它们的结构大致相同,但是线速率的关系是 GTZ>GTH>GTX>GTP,也就是说GTZ跑得最快,GTP跑得最慢。
以K7系列的XC7K325T 芯片为例,它的内部电路分布是这样的:
着重关注一下右上角的4个黄色的电路块,它们就是GTX,图中的GTX单位是Quad,Quad这个词一般是形容和4有关,比如LOL游戏的四杀就叫 quadra kill,这个词源就是Quad。那么一个GTX Bank为什么要叫Quad呢?下面这张结构图是一个很好的解释:
可以看到,每一个GTX Quad都有4个CHANNEL(通道),所以这玩意就给起名成了Quad。一个GTX CHANNEL实际上就是我们说的一个GT Transceiver,比如你说这个芯片有16个GT,实际上就是指的这个FPGA芯片有16个GT CHANNEL。
每个Quad除了4个通道外,还有一个GTX COMMON,common是什么意思呢?通用的,共用的。那这个GTX COMMON就是4个通道共用的。共用什么?时钟!
一个GT QUAD组成如下:
一个QUAD由4个GTXE2_CHANNEL源语和一个GTXE2_COMMON原语构成。GTXE2_COMMON原语包含一个QPLL,之所以叫做QPLL,其中的Q含义就是QUAD,即一个GTX QUAD公用的PLL。每一个GTXE2_CHANNEL原语由:1个Channel PLL,即CPLL,1个Transmitter,1个Receiver组成。之所叫叫CPLL,即Channel PLL,含义是每一个Channel单独拥有的PLL。
GTX收发器的 TX发送端和RX接收端功能独立,且均由 PMA(Physical Media Attachment,物理媒介适配层)和PCS(PhysicalCodingSublayer,物理编码子层)两个子层组成,如下图所示:
PMA子层内部集成了高速串并转换、预加重、接收均衡、时钟发生器及时钟恢复等电路。SERDES是一个串并转换器,负责FPGA内部的并行数据与GTX接口串行数据之间的转换。预加重技术是针对典型物理连接系统中高频部分的补偿,在发送端加一个高通滤波器,放大高频成分,提高信号质量。预加重只在必要情况下使用,因为预加重会导致功耗和EMC辐射的增加。接收均衡主要用于补偿由频率不同而引起的阻抗/衰减差异。时钟发生器及时钟恢复电路在发送端将时钟与数据绑定发送,在接收端对接收到的数据流恢复时钟,从而避免了在高速传输条件下时钟与数据分开传输所带来的时钟抖动等问题。
PCS子层内部集成了8b/10b编/解码、弹性缓冲区、通道绑定和时钟修正等专用电路模块。8b/10b编码可以避免数据流中出现连续的‘0'或‘1'的情况,避免数据传输的不平衡。利用通道绑定通过在发送数据流中加入K码字符,将多个物理上独立的GTX通道绑定成一个时序逻辑上同步的并行通道,通过增加GTX通道数可以提高接口传输的吞吐率,Virtex-6FPGA最多可支持24个GTX的通道绑定。弹性缓冲区解决恢复时钟与本地时钟的不一致问题,并通过对缓存区中的K码匹配对齐实现通道绑定功能。
理论上说要实现GTX的最小必要单元就是PMA, 其主要原因就是核心的模拟部分。 而PCS理论上可以全部由FPGA普通逻辑来实现。 当然作为硬核提供的PCS功能更多、 性能更好、 使用更方便。
Transmitter的数据流大致为:FPGA用户逻辑的数据,进入FPGA TX接口,进入PCS,再经过PMA,转换为高速串行数据输出。Receiver的数据流大致为:数据由PMA部分结构,转换为并行数据进入PCS,再经过RX接口输出给FPGA用户逻辑处理。
GT收发器都位于FPGA芯片的边缘部分,接下来我们可以新建一个工程,看看芯片的Device视图(仍以 XC7K325T 为例):
上图的4部分就是该芯片的4个GTX Quad,每个Quad都位于不同的时钟区域,这对同一时钟域的CLB资源是利好,这样更容易对时钟缓冲器进行管理。每个Quad的示意图如下:
①~④所对应的4个灰色长条就是4个GTX通道,⑤则是共用的GTX COMMON。旁边的绿色方框是互联的管脚,可以实现单个时钟驱动周边通道,
页:
[1]
