详解Xilinx FPGA高速串行收发器GTX/GTP(9)--TX/RX通道

目录

1、TX端的剩余模块

1.1、TX PIPE Control

1.2、TX Gearbox

1.3、PCIE Beacon

1.4、SATA OOB

1.5、Phase Adjust FIFO

1.6、Polarity

1.7、PISO

1.8、TX Pre/Post Emp和10、TX Driver

1.9、 TX OOB and PCIE

1.10、TX Driver

1.11、TX Phase Interpolator Controller(包括12)

2、RX端的剩余通道

2.1、RX模拟前端

2.2、RX OOB

2.3、RX Equalizer (DFE and LPM)

2.4、CDR

2.5、SIPO

2.6、Rx Gearbox

2.7、Clock Correction

2.8、Channel Bonding


              文章总目录点这里:《FPGA接口与协议》专栏的说明与导航


1、TX端的剩余模块

        在前面几篇文章已经把TX端的比较重要的模块都介绍过一遍了,剩下的不太常用(或者比较简单)的模块在这篇文章一次性介绍完。首先贴出TX通道的架构图,并把模块编号:

image-20240811222633076

1.1、TX PIPE Control

        全称为Physical Interface for PCI Express,PCIe物理层接口。如果使能PCIE接口,则该通道是PCIE的数据通道,否则将不会被使用。

1.2、TX Gearbox

        一些高速数据速率协议使用64B/66B编码来减少8B/10B编码的开销,同时保留编码方案的优点。TX Gearbox提供了对64B/66B和64B/67B编码支持。常见的高速协议Interlaken就采用了64B/67B编码方案。TX Gearbox支持2字节和4字节接口定义,数据加扰是在FPGA逻辑内实现的。这部分的内容在后面讲 64B/66B编码再详解。

1.3、PCIE Beacon

        PICE唤醒功能,只有在使用PCIE协议时才会用到,否则不考虑。

1.4、SATA OOB

        SATA是硬盘接口,建立通信主要是通过检测OOB(Out Of Band)实现的,并且向上层传输连接情况,因此只有在使用SATA协议时,才会使用该模块,否则不用考虑。

1.5、Phase Adjust FIFO

        相位调整FIFO缓冲器,TX端的时钟分布如下:

image-20240811221233846

        在发送端的PCS子层里面有两个并行时钟域,分别是PMA相连的并行时钟(XCLK)和TXUSRCLK时钟。要传输数据,XCLK速率必须与TXUSRCLK速率匹配,并且必须解决两个域之间的所有相位差。

  GTX的发送数据通道包括一个FIFO缓冲器和一个TX相位对准电路,用于解决XCLK和TXUSRCLK域之间的相位差。FIFO缓冲器优势就是设计比较简单,用户可以不用去管内部实现,只需要在调用IP时勾选相关选项即可,缺点是FIFO的延迟比较大,导致用户把数据输入GTX到GTX输出数据的时间比较长,如果不考虑这部分延迟,推荐直接使用FIFO即可(Xilinx推荐)。如果对延时比较敏感,则可以使用相位对齐电路,只不过需要用户自己编写这部分控制代码,难度比较大而且很麻烦。

        下表给出了这两种方法在选取时的权衡:

image-20240811221400905

1.6、Polarity

        极性控制,这个作用比较大,主要时针对PCB设计时将差分对设计反了,模块内部可以将极性反转,从而解决PCB设计问题。在生成IP时勾选极性控制选项,如果PCB设计或者其他板卡引脚极性相反时,只需要将该信号设置为1’b1,将板卡内部的极性输出也翻转即可,如下图所示。

image-20240811221712757

1.7、PISO

        Parallel In Serial Out,即并入串出,也就是并串转换器。

1.8、TX Pre/Post Emp和10、TX Driver

  GTX的TX驱动器是高速电流模式差分输出缓冲器,如下图所示。为了最大限度地提高信号完整性,具有差分电压控制、光标前和光标后传输预加重、校准终端电阻功能。

image-20240811222406966

        高速信号在长距离、线速率较高的传输时,损耗是很严重的。经过损耗衰减之后,为了让接收端还能检测到数据,在发送端会做预加重和去加重处理,增大差分输出信号的摆幅等等,让其经过传输损耗之后差分信号的幅值变为零。

  用户只需要调节两个参数的值就可以调节预加重和去加重了,在配置IP时勾选下面两个选项即可。至于参数具体应该设置为多少,要根据实际的电路进行眼图扫描,然后确定最佳参数。

image-20240811222434172

1.9、 TX OOB and PCIE

        使用PCIE、SATA协议时才会使用的功能,暂时不介绍。

1.10、TX Driver

        见第8条。

1.11、TX Phase Interpolator Controller(包括12)

  TX相位插值器控制器模块,允许使用PCS中的TX相位插值器PPM(百万分之一)控制器模块来控制TX PMA中的TX PI,以优化高速数据传输过程中的信号质量,保持传输的稳定性和可靠性。

2、RX端的剩余通道

        在前面几篇文章已经把RX端的比较重要的模块都介绍过一遍了,剩下的不太常用(或者比较简单)的模块在这篇文章一次性介绍完。首先贴出RX通道的架构图:

image-20240811225954688

2.1、RX模拟前端

        RX模拟接收前端(AFE)是高速电流模式输入差分缓冲器,如图4-2所示。该缓冲器具有以下特性:

  • 可配置的RX端接电压

  • 校准的端接电阻

image-20240811225913108

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

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

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

2.2、RX OOB

        接收器RX提供:

  • 支持解码SATA和SCSI协议要求的OOB信令以及PCIe规范描述的信令

  • 支持SATA/SAS OOB信令的GTP接收机包括解码OOB信号状态所需的模拟电路

  • 支持解码SATA/SAS OOB信号突发的状态机COM序列

        带外信号,为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道。GTP收发器接收器支持解码串行ATA(SATA)和串行连接SCSI(SAS)规范中描述的带外(OOB)序列,并支持PCI Express规范中描述的信标。支持SATA / SAS OOB信令的GTP收发器接收器包括解码OOB信号状态和状态机所需的模拟电路,以解码SATA / SAS COM序列的OOB信号突发。GTP收发器接收器还通过使用PCI接口(PIPE)规范的PHY接口中定义的接口信号,支持符合PCI Express的信标。FPGA逻辑对信标序列进行解码。

2.3、RX Equalizer (DFE and LPM)

        接收通道有两种类型的自适应滤波器可以使用。如果传输过程中损耗比较小,可以使用低功耗模式(LPM)的节能自适应滤波器;如果传输过程中损耗比较大,传输距离远,此时应该使用DFE自适应滤波器。

        在调用IP时,左侧可以设置滤波器类型,低损耗首选LPM模式。在右侧可以把接收数据的幅值检测设置为可编程,之后可以通过IP端口信号gt0_txdiffctrl_in的值调节输入检测幅值。

image-20240811230720358

2.4、CDR

        时钟数据恢复(CDR)技术是从接收的串行数据中提取恢复的时钟和数据的相位关系,是GTX和SerDes技术的一大基石,GTX之所以跑这么快,不用传时钟是一个很大的原因,因为没有时钟自然就没有Skew过大的问题。

image-20240811230801115

2.5、SIPO

       Serial In  Parallel Out ,即串入并出,也就是串并转换器。

2.6、Rx Gearbox

        RX Geartox与TX Gearbox类似,只有在使用64B/66B或者64B/67B编码的时候才会被使用,后续一起讲解。

2.7、Clock Correction

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

        Clock Correction,时钟校正,RX弹性buffer用于同步两个不同的时钟域RXUSRCLK和XCLK的数据,XCLK是从CDR恢复的时钟。即使RXUSRCLK和XCLK以相同的时钟频率运行,频率差异也始终很小,日积月累也会导致读写数据的速率不一致,可能造成数据溢出。这是因为RXUSRCLK和XCLK差异决定的,并不能消除,因此提供了一种时钟纠正的方式来防止数据出现错误。即通过删除或者复制特定的空闲字符来防止 RX 弹性缓冲器上溢出或者下溢出,如图所示:

        具体来说,就是要要保证缓存区始终处于半满状态,这种状态既不会因读空导致数据中断或重复,也不会应写满造成数据覆盖,而时钟纠正就是通过动态调整保证缓冲区时钟时半满状态。调整方式时插入空闲字符,也就是K28.5(也可能时别的K码),当读比较快时,可能导致下溢读空,这时候就插入特殊字符进行调整,如果快溢出了就删除写特殊字符。

image-20240811231939710

2.8、Channel Bonding

        弹性缓冲区不仅可以时钟纠正,还能支持通道绑定。在使用XAUI和PCI Express之类的协议时会将多个GT组合在一起,以实现更高的吞吐量。如果使用这种方式,则不同点GT的数据流必须是对齐的。这个过程通常称作通道绑定。通道绑定可以吸收两个或多个通道之间的偏差,将数据提交给用户,就像只使用一条链路进行传送一样。

        一般会在TX发送端的数据流中加入一个特殊序列,称之为“通道绑定序列”,各个接收端收到通道绑定序列之后,指定其中一个接收端为主通道。主通道和从通道之间存在“CHBONDO”通信链路,主通道向各个从通道发送通道绑定序列在缓冲区的位置,各个从通道根据自己的通道绑定序列在缓存区的位置,计算与主通之间的偏差,调整缓存区的读指针,从而实现各个通道同步输出数据,如下图所示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值