如何理解GTX接收通道相关模块?(高速收发器三)

  点击进入高速收发器系列文章导航界面


  前文讲解了GTX的时钟及发送通道相关内容,本文讲解GTX接收通道的一些功能及其IP配置,接收往往比发送设计更难,与调制解调,加密解密其实相差不大,后者难度都比前者高出很多。GTX的接收通道的功能相比发送通道更加重要,需要从接收的串行数据中恢复数据,并且解码,字节对齐等等。

在这里插入图片描述

图1 GTX/GTH收发器接收框图

  GTX接收部分的框图如下所示,也包括PCS和PMA两部分,PMA部分主要处理模拟信号,内部有均衡器、并串转换模块等,而PCS则是对接收的并行数据进行处理,包括极性翻转、8B/10B解码、弹性Buffer、字节对齐等等模块。

在这里插入图片描述

图2 GTX/GTH收发器接收框图

  下面从接收通道输入数据到输出数据的方向,依次对各个模块做简要讲解:

1、模拟前端

  从手册中可以获知,接收通道的开始部分有一个模拟前端,结构如下图所示,模拟前端一般就是对信号进行放大、滤波等等,消除信号传输过程中的一些干扰,并且然后端能够正常采集输入信号,该电路也是类似作用。

在这里插入图片描述

图3 模拟前端

  由于GTX的差分信号线速率很高,可以达到10.312Gb/S,并且传输距离可能会很长,导致接收数据的幅值可能很小,甚至达不到检测要求,比如输入端发送时幅值有1.5V,经过几十米的光纤传输,到接收端时,幅值可能只有600mv了。

  解决方式就是在发送时,通过预加重、后加重把幅值增大一点,同时在接收时把门限降低一点,比如接收时检测幅值大于500mv就认为是高电平了,还是正确检测到衰减后的信号。

  至于预加重、后加重、检测门限设置多少合适,这与实际的信号传输路径和线速率有关。一般做法是当硬件条件确定后,通过眼图对所有参数进行扫描,确定一个最合适的参数,用作后续开发的值就行了。

  眼图内容在后续眼图测试时进行讲解。

2、RX OOB

  GTX接收器支持解码串行ATA(SATA)和串行连接SCSI(SAS)规范中描述的带外(OOB)序列,并支持PCI Express规范中描述的信标。这个与SATA、PCIE这些协议有关,如果不使用这些协议,可以忽略,具体使用时在查阅手册即可。

3、DFE

  根据功率和性能之间的系统级权衡,GTX接收通道有两种类型的自适应滤波器可以使用。其中的适用于,如果传输过程中损耗比较小,可以使用低功耗模式(LPM)的节能自适应滤波器,对应结构如下图所示。

在这里插入图片描述

图4 LPM模式

  如果传输过程中损耗比较大,传输距离远,此时应该使用DFE自适应滤波器,对应结构如下图所示。DFE通过提供更接近的滤波器参数调整来更好地补偿传输信道损耗,DFE模式是一种离散时间自适应高通滤波器,抽头值是由自适应算法设置的该滤波器的系数。

在这里插入图片描述

图5 DFE模式

  在调用IP时,如下图所示,在1处可以设置滤波器类型,短距离、低损耗首选LPM模式,节省功耗。

  在2处把接收数据的幅值检测设置为可编程,之后可以通过IP端口信号gt0_txdiffctrl_in的值调节输入检测幅值。

在这里插入图片描述

图6 IP设置

4、RX Clock Divider

  这部分与发送通道的时钟部分一致,直接去查看发送通道的原理即可。对应框图如下所示,与发送通道一摸一样,不再赘述。

在这里插入图片描述

图7 RX串行和并行时钟分频器

  注意接收端只有一对差分数据线,并没有时钟线,接收端如何采集数据线的数据呢?

  接收端可以得知数据传输的频率,从而确定时钟频率,但是如何得知时钟的相位呢,发送的时候在时钟双沿完成的并串转换。由上图知,串并转换也应该是在时钟双沿进行的,此时就需要保证时钟与数据的相位关系。

  因此上图中QPLL或CPLL输出时钟进入PMA之后,需要先经过CDR调整时钟相位,然后再经过分频作为串并转换模块的串行时钟和并行时钟,保证时钟与数据的相位关系正确。

  时钟数据恢复(CDR)技术是从接收的串行数据中提取恢复的时钟和数据的相位关系,CDR的结构框图如下所示。

在这里插入图片描述

图8 CDR结构

  CDR原理手册中是这么说的:CDR状态机使用来自边沿和数据采样器的数据确定输入数据流的相位并控制相位插值器(PI)。边缘采样器的相位被锁定到数据流的过渡区域,而数据采样器的相位位于数据眼的中间。

  具体实现方式可能就是CDR FSM能够精确控制相位,根据两个输入去调整相位偏移量,猜测是这样。

5、SIPO

  串并转换模块,将接收的串行数据转换为并行数据,然后输出到PCS侧进行解析。

6、Polarity

  如果PCB的RXP和RXN差分走线被意外交换,GTX接收的差分数据就会反转。GTX接收通道可以在串并转换之后对PCS中的并行字节进行反转,以抵消差分对上的反转极性。

  在配置IP时勾选RXPOLARITY选项,可启用接收极性控制引脚,当gt0_rxpolarity_in信号为高电平时,接收数据极性翻转。

在这里插入图片描述

图9 勾选接收极性控制引脚

  便于阅读,将接收通道的图在贴一遍,如下所示。

在这里插入图片描述

图10 GTX/GTH收发器接收框图

7、PRBS Checker

  GTX收发器接收器包括一个内置的PRBS检查器,如下图所示,能够检测四种函数对应的PRBS序列,与前文发送端生成的四种PRBS序列保持一致。

在这里插入图片描述

图11 PRBS序列检测器

  要使用内置PRBS检查器,检测序列类似必须为与发送通道发送的PRBS序列匹配。

  如果输入数据被发送器反转或RXP/RXN反转,则接收数据也应通过控制RXPOLARITY反转,否则,PRBS检查器不会锁定。

  当PRBS检查器运行时,会在传入数据中查找选定的PRBS序列。当它找到该模式时,它可以通过将输入数据与预期数据进行比较来检测PRBS错误。

8、Comma Detect and Align

  字节对齐,低速串口UART这种通信会有一个起始位,来判断一次传输的开始,但是GTX这类高速串行接口在传输数据时,并没有起始位、停止位这类标志,那接收端如何确定每个字节的开始位置呢?

  下图是发送端发送一段数据,接收机可能因为上电等各种原因,并不是从第一位数据开始接收的,可能是从红色框开始接收第一个并行数据,也可能是从蓝色框位置接收第一个数据,也可能是紫红色框处开始接收,该如何确定哪个位置开始接收数据才能正确解析出并行数据?

在这里插入图片描述

图12 接收数据

  这里的功能与ISERDESE的功能其实一致,需要在合适的位置接收数据,对齐方式就是通过检测规定的K码数据来调整串并转换的起始位置。

  如上图所示,首先将蓝色框中的10位数据通过8B/10B解码,如果解码结果是设定的K码,则从蓝色框开始,每10位数据转换为并行数据去解码输出。

  如果蓝色框中的解码结果不是K码,则将起始位置后移一位,把紫红色框中10位数据拿去解码,之后再进行比对,循环往复,直到检测到K码为止。

  为了使对齐成为可能,发射机发送一个可识别的序列,即Comma,通常称为逗号。接收方在传入数据中搜索逗号,当发现逗号时,将该逗号移动到一个字节边界,以便接收的并行字与发送的并行字匹配。

  如下图中1所示,字节对齐常用K码为K28.5,2处可以设置在数据的什么位置进行字节对齐检测,一般可以设置为全程检测。

在这里插入图片描述

图13 IP设置

  2处还有个comma Mask信号,检测器支持检测部分K码的数值。如下图所示,Mask高三位设置为0,则检测K码时,不需要检测高三位,只需要低5位满足要求即可,从而实现部分检测。但一般不会这么使用,了解即可。

在这里插入图片描述

图14 K码部分检测

  图13的3处Decode valid comma only勾选后,检测器就只会检测默认的K28.5和K28.1的K码。勾选Combine plus/minus commas使用双字节对齐检测,要求比较严格时才会使用。

  查看图13中1处可知,当K码设为K28.5后,由于8B/10B编码的极性问题,下面会出现两种编码结果Plus Comma和Minus Comma,两种编码的各位数据相反。检测器怎么知道检测哪种编码的K码呢?通过使能图中4的ENPCOMMALIGN和ENMCOMMALIGN两个选项进行选择,与其中一种模式对齐即可。

  为实现字节,GTX有两种方式,一种是自动对齐,IP默认使用自动对齐。另一种是手动对齐,勾选图13的RXSLIDE来启用手动对齐,该功能与ISERDESE一致,通过拉高一个信号来对串并转换的起始位置进行调整,如果不是需要字符,则继续调整,会比较麻烦。

  RXBYTELSALIGN信号为高电平时,表示已经完成字节对齐,输出给用户的数据正确。RXBYTEREALIGN信号为高电平时,表示IP正在进行字节对齐。RXCOMMADET为高电平表示检测到K码,该信号有效几个周期。

  在线路速率大于5 Gb/s且系统噪声过大的应用中,字节对齐模块可能会错误地对齐错误的字节边界,并在没有有效数据时错误地拉高RXBYTEISALIGNED信号。在此类应用中,应进行系统级检查,以检查RXBYTEISALIGNED是否符和数据的有效性。

9、8B/10B Decoder

  8B/10B解码模块,将接收的10位并行数据解码位8位并行数据,具体的在8B/10B相关文章进行讲解,本文不过多叙述。

10、RX Elastic Buffer

  弹性buffer主要用于解决PMA并行时钟域(XCLK)和PCS内部并行时钟域RXUSRCLK的跨时钟域问题。

  XCLK是串并转换后,并行数据的时钟信号,由图7可知,QPLL或者CPLL的时钟经过CDR相位调整后作为串并转换模块的时钟。

  而RXUSRCLK一般是由TXOUTCLK或者RXOUTCLK经过MMCM生成的,而TXOUTCLK或者RXOUTCLK的来源有几种,可能并不是CDR输出时钟,因此XCLK和RXUSRCLK的相位不相同,即两者是异步时钟。

  需要解决两个时钟域的相位差,最简单的方法就是使用buffer,如下图所示。

在这里插入图片描述

图15 弹性buffer

  与发送通道一样,接收通道提供了两种解决方式,一种是通过buffer同步数据,优点是用户不需要进行控制,硬核内部即可完成同步,缺点在于延迟比较大,如果对延迟没有要求,首选buffer,IP设置如下所示。

在这里插入图片描述

图16 使能接收通道buffer

  注意如果发送通道和接收通道的协议和速率一致,可以使用TXOUTCLK生成RXUSRCLK,原因在于同一个高速收发器的发送和接收通道共用同一个QPLL和CPLL,那么TXOUTCLK和RXOUTCLK其实可以是同一QPLL或者CPLL的参考时钟信号。

  当然如果对延迟比较敏感,则可以将弹性buffer旁路,使用相位对准电路调整SIPO并行时钟域和XCLK之间的相位差,实现从SIPO到PCS可靠数据传输。还可以通过调整RXUSCLK来补偿温度、电压变化,从而执行RX延迟对齐。接收相位和延迟组合对准可以由GTX收发器自动执行或由用户手动控制。

  当RX恢复时钟用于提供RXUSRCLK和RXUSRCLK2时,可以旁路RX弹性buffer以减少延迟。当RX弹性buffer被旁路时,通过RX数据路径的延迟很低且具有确定性,但时钟校正和通道绑定不可用。

  相位对准电路整体还是比较复杂的,并且支持多个通道对齐,手册中也花费了大量篇幅进行讲解,如果需要该模式,还是推荐阅读手册,毕竟目前我也没有使用该模式,不好讲解。

11、RX PIPE Control与RX Geartox

  这个与发送通道的 PIPE Control应该功能是一样的,与PCIE协议有关,不使用该协议时可以忽略。

  RX Geartox与TX Gearbox类似,只有在使用64B/66B或者64B/67B编码的时候,才会被使用,其余时间忽略。

12、RX Status Control及时钟校正

  RX Status Control对弹性buffer的一些状态进行检测,包括溢出等等,然后去做一个时钟纠正的处理。

  RX弹性buffer用于同步两个不同的时钟域RXUSRCLK和XCLK的数据,XCLK是从CDR恢复的时钟。即使RXUSRCLK和XCLK以相同的时钟频率运行,频率差异也始终很小,日积月累,也会导致读写数据的速率不一致,可能造成数据溢出。

  这是因为RXUSRCLK和XCLK差异决定的,并不能消除,因此提供了一种时钟纠正的方式来防止数据出现错误。为了允许校正,发送数据时需要在有效数据中周期性的插入一个或多个特殊字符,GTX接收通道可以根据需要在弹性buffer中删除或者复制这些字符。

  当弹性buffer快要装满数据时,可以删除buffer中的一些特殊字符使得buffer不被溢出。当弹性buffer快要被读空时,可以复制一些特殊字符存入buffer,防止弹性buffer被读空,最终使得弹性buffer始终保持在半满的状态。

  由于XCLK和RXSUCLK频率只有微小差异,所以可以通过上述方式进行纠正,防止buffer上溢或者下溢。

在这里插入图片描述

图16 时钟校正概念视图

  上述所说的特殊字符一般为K码,IP设置如下所示,勾选1处启用时钟校正功能,在2处选择每次插入特殊字符的个数,3处设置需要插入特殊字符的数值,4处确定插入的字符是不是K码。下图插入2个特殊字符,一个是K28.5对应的8’hBC,另一个是普通字符8’h50。

在这里插入图片描述

图17 IP中时钟校正设置

13、通道绑定

  XAUI和PCI Express等协议结合了多个串行收发器连接,以创建一个更高吞吐量的通道。每个串行收发器连接称为一个通道,除非每个串行连接的长度完全相同,否则通道之间的偏斜会导致数据同时传输,但到达时间不同。

  RX buffer可以用作可变延迟模块,信道绑定消除了GTX收发器各个通道之间的偏斜。用于绑定信道的发送通道在发送数据都同时发送信道绑定字符(或字符序列)。

  当接收到序列时,GTX接收通道可以确定每个通道之间的偏斜,并调整RX buffer的延迟,以便在RX fabric用户界面上呈现无偏斜的数据。

  后续在使用PCIE这种多通道协议时,在进行详细了解,本质上发送端向每个通道同时发送一组数据,接收端检测这组数据,确定每条线路延迟,进而调整弹性buffer输出数据的延迟,来达到多个通道输出给用户的数据对齐的目的。

14、用户接收端口

  经过前文这么久的讲述,终于来到最后GTX接收数据的用户接口了,毫无疑问该接口的主要作用就是将接收的数据输出给用户。

  该接口的所有信号与RXUSRCLK2的上升沿对齐,读取数据RXDATA的位宽可以配置为2、4或8字节,实际位宽与RX_DATA_WIDTH和RX_INT_DATAWIDTH的取值有关,与发送通道的设置一样,如下图所示。

在这里插入图片描述

图18 FPGA RX接口数据路径配置

  接口宽度配置7系列GTX收发器包含2字节和4字节内部数据路径,可通过设置RX_INT_DATAWIDTH属性进行配置。FPGA接口宽度可通过设置RX_DATA_WIDTH属性进行配置。

  当8B/10B解码器使能时,RX_DATA_WIDTH必须配置为20位、40位或80位,这种情况下,FPGA RX接口仅使用RXDATA端口。

  当8B/10B解码器被旁路且RX_DATA_WIDTH为20、40或80时,RXDISPERR和RXCHARISK端口用于将RXDATA端口从16位扩展至20位、32位扩展至40位或64位至80位,如下图所示。

在这里插入图片描述

图19 旁路8B/10B解码器时接收的RX数据

  IP相关配置如下图所示,因为细节与发送通道的用户接口其实是一致的,所以这里就不再赘述。

在这里插入图片描述

图20 IP配置数据位宽及解码方式

  最后手册还讲解了RXUSCLK和RXUSCLK2,这部分内容与TXUSCLK其实一致的,区别在于RXUSCLK和RXUSCLK2可以通过TXOUTCLK生成,也可以通过RXOUTCLK生成。而TXUSCLK和TXUSCLK2一般只推荐使用TXOUTCLK通过MMCM生成。如下IP配置所示。

在这里插入图片描述

图21 时钟源的设置

  本文到此结束,手册中这部分内容有一百二十多页,此处用五千多字进行简要概括,像通道绑定很多与PCIE、SATA协议有关内容并没有进行讲解,需要使用推荐查看手册详解。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Zynq是Xilinx公司的一款片上系统(SoC),其中集成了一颗ARM处理器和FPGA。而GTX/GTH是Xilinx 7系列FPGA中的高速收发器。下面是一些基本概念: 1. GTX/GTH收发器GTX(Gigabit Transceiver)/GTH(Gigabit Transceiver Hard)是Xilinx 7系列FPGA中的高速串行收发器。它们支持多种协议,包括PCI Express、SATA、USB3.0、10Gb Ethernet等。GTX/GTH收发器的特点是高速、低功耗和灵活性。 2. 通道通道是指GTX/GTH收发器中的一个物理通道,它包括一个发送端和一个接收端。一个GTX/GTH收发器可以包含多个通道。 3. 数据速率:数据速率是指GTX/GTH收发器传输数据的速度,通常以Gbps为单位。不同的协议有不同的数据速率要求,因此GTX/GTH收发器支持多种数据速率。 4. 传输协议:GTX/GTH支持多种传输协议,包括PCI Express、SATA、USB3.0、10Gb Ethernet等。每种协议有不同的数据速率和传输格式要求,因此GTX/GTH收发器需要配置不同的参数以支持不同的协议。 5. 时钟和时序:GTX/GTH收发器需要使用时钟信号以同步发送和接收数据。时钟信号的频率和时序对于数据传输的稳定性和可靠性非常重要。GTX/GTH收发器支持多种时钟配置方式,包括外部时钟、内部PLL时钟等。 6. 驱动器和接收器:GTX/GTH收发器的驱动器和接收器是用来控制发送和接收数据的电路。驱动器控制数据的发送,接收器控制数据的接收GTX/GTH收发器支持多种驱动器和接收器配置方式,包括预加重、均衡器、解调器等。 以上是一些基本概念,对于GTX/GTH的详细配置和使用,需要参考Xilinx的相关文档和实验指南。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电路_fpga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值