实现高速收发器TX通道间相位对齐的方法

本文介绍了两种实现高速收发器TX通道间相位对齐的方法:一是利用TXBufferEnable通过TXPIPPM调整;二是TXBufferBypass模式下通过公共时钟实现自动或手动相位对齐。两种方法均适用于US系列和USPlus系列的GTH和GTY器件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:Zhang Cheng,AMD 赛灵思工程师

在某些协议的应用场合,需要对高速收发器的多个通道之间实现同步,通道间的相位延迟小于一定数量的UI,甚至小于1个UI。然而大多数情况下,高速收发器的相位延迟并不是固定的,导致上电后通道间会产生多个UI的相位延迟,并且每次上电后延迟的UI数量是随机的。

本文将介绍两种实现相位对齐的方法,可适用于US系列和US Plus系列的GTH和GTY器件。

1

TX Buffer Enable

当TX Buffer被使能时,可以通过TXBUFSTATUS的Bit0(Half Full)的状态和TXPIPPM的调整实现TX通道同步。上电后TX通道间的相位和TXBUFSTATUS都处于随机状态,相位超前与延迟以及超前和延迟的UI数量都是不确定的,见下图:

a4d31c0ca1569f5e094ad4ee9495e053.png

1)TXPIPPM调整方法

参照Article 70869的方法对每个通道做TXPIPPM调整:当TXBUFSTATUS[0]的状态为1时,通过调整TXPIPPMSTEPSIZE减少PI值;当TXBUFSTATUS[0]的状态为0时,通过调整TXPIPPMSTEPSIZE增加PI值。TXPIPPMSTEPSIZE是一个5bits端口,其中TXPIPPMSTEPSIZE[4]控制PI值增加或减少,TXPIPPMSTEPSIZE[3:0]为PI值增加或减少的数值。调整流程按下图所示:

149b144a0b0bbe633edc11e831893719.png

2)TXOUTCLK的时钟选择

TXOUTCLK的时钟不能选择TXOUTCLKPMA和TXOUTCLKPCS,对应TXOUTCLKSEL不能设置为 “001” 或 “010” ,建议选择TXPROGDIVCLK时钟作为TXOUTCLK,否则会导致调整无效的情况,即不管如何调整TXPIPPM控制器,TXBUFSTATUS都始终处于常高或者常低的状态。

3)TXPIPPM控制器端口和时序TXPIPPM控制器相关的端口如下所示:

信号名称功能描述
TXPIPPMEN置1开启TXPIPPMSTEPSIZE更新TX PI参数
TXPIPPMOVRDEN置0为正常模式,置1时通过DRP端口设置PI Code
TXPIPPMPD置1开启TXPIPPM的Power Down,正常使用置0
TXPIPPMSEL置1使能TXPIPPM控制器,置0为关闭控制器
TXPIPPMSTEPSIZE [4:0]Bit [4] 控制PI Code增减,Bit [3:0] 控制每次增减的步长

对于不同器件,TXPIPPM的时序略有不同,详细可参考对应GT的User Guide。

4)TXBUFSTATUS的状态变化

TXBUFSTATUS在调整过程中会有一段时间呈现出反复翻转的状态,此时TXPIPPMSTEPSIZE的设置需要一直保持之前的状态直到TXBUFSTATUS的状态稳定后再置为0。

b08ffbe8f8ebccab2eea0da3b1119d7d.png

5)调整完成后的对齐效果

d5fc7744c7c562683571959dd94d1d8b.png

此方法也可以在不同的GT QUAD中实现TX相位对齐,也可以用于控制PCB Deskew控制。

2

TX Buffer Bypass

当TX Buffer被旁路时,在TX相位对齐电路工作之前,每个通道XCLK的相位差是随机的。TX相位对齐的基本原理是Master通道产生TXOUTCLK作为公共时钟通过BUFG_GT与各通道的TXUSRCLK和TXUSRCLK2相连,并且所有通道的XCLK时钟都设置为TXUSR时钟(如下图所示),这样就可以与Master通道产生的公共时钟对齐,从而实现每个TX通道数据的相位对齐,对齐后仅存在各通道与公共时钟微小的相位差。

48443589f102e7aa28ba2c00f4563166.png

TX相位对齐分为自动和手动两种模式,一般常用自动模式。多通道相位自动对齐需要设置以下参数:

1)TXOUTCLK时钟选择

在Basic菜单将TX Buffer设置为Bypass模式,Wizard会自动将XCLK的时钟选择为TXUSR。此时,TXOUTCLK只能选择为TXPLLREFCLK_DIV1、TXPLLREFCLK_DIV2或TXPROGDIVCLK。

248b52080f884758fad6b4c4ed1bedd9.png

2)定义Master通道

Physical Resources中选择Master通道位置,对应产生公共时钟,推荐使用GT column中间位置的通道作为Master。Wizard会将TXSYNCMODE置1代表Master通道,其余通道置0代表Slave通道。四个GT通道需要使用同一个Reference Clock输入。

4d471663625e1235fbd217c38d6875f6.png

3)Structural Options将TX Buffer Bypass 的相关端口勾选。

信号名称功能描述
txdlysresetdone_out:指示TX相位对齐复位完成
txphinitdone_out:指示TX相位对齐初始化完成
txphaligndone_out:指示TX相位对齐完成,当txdlysresetdone_out置1后的第二个上升沿表示相位对齐完成。

在TX相位对齐完成前,即txphaligndone_out第二个上升沿到来前,需要关闭TXPIPPM调整的功能,将TXPIPPMSEL端口置为0。

4)GT内部连接关系 

TX Buffer Bypass多通道相位自动对齐的内部端口连接如下图所示,Wizard会在后台自动生成连接关系,手动模式的连接方式可以参考相应的GT用户手册。

ee4352a34996a309238bd1b7178ee758.png

实际测试结果表明,在txphaligndone_out置1后,Channel0与Channel1-Channel3存在微小的相位差,测量结果如下表所示:

通道相位延迟时间
Lane0-Lane121.5ps
Lane0-Lane2-181.9ps
Lane0-Lane3-192.4ps

参照Datasheet的描述,同一Reference Clock在开启相位对齐并且TX输出为最大速率时的TX lane-to-lane Skew最大值为500ps。

65af8c3401726d8f3d63ccd6d753dc19.png

如果要实现更高精度的相位对齐,可再配合使用TXPIPPM控制器(TX Phase Interpolator PPM Controller)调整。

5)调整完成后的对齐效果

bb6ae7bb571d5137459171eeac22cccc.png

注意:TX Buffer bypass的相位对齐仅限于同一个Column的通道。如果器件有左右两组Column,无法实现左侧通道与右侧通道的相位对齐。

3

Tips

1)本文中提到的UI是 Unit Interval即1bit的周期,比如Linerate = 10Gbps,UI=100ps。
2)本文提供了两种可简单实现TX通道间相位对齐的方法,用户可根据实际应用作调整

4

参考文档

1) UG476 - 7 Series FPGAs GTX/GTH Transceivers
2) UG576 - UltraScale Architecture GTH Transceivers
3) UG578 - UltraScale Architecture GTY Transceivers
4) AR70869  - TX Lane to Lane Alignment

<think>嗯,我现在需要通过Zynq实现LVDS收发,该怎么开始呢?首先,我应该了解一下Zynq的架构。Zynq是Xilinx的SoC,结合了ARM处理器和FPGA逻辑,对吧?所以可能需要同时处理PS(处理系统)和PL(可编程逻辑)部分。 LVDS是低压差分信号,通常用于高速数据传输。那在Zynq里,PL部分应该负责处理LVDS的收发逻辑吧?可能需要使用FPGA的IO资源。我记得Xilinx的FPGA支持LVDS标准,但需要确认Zynq芯片的具体型号是否支持,比如是否需要HR(高范围)或HP(高性能)的Bank。不同的Bank支持的电压和标准可能不同,这一步很重要,否则硬件连接可能出问题。 接下来,收发LVDS信号需要什么样的硬件连接呢?发送端可能需要将单端信号转换为差分信号,接收端则相反。在PL部分,可能需要使用差分IO原语,比如IBUFDS和OBUFDS。这些原语用于将FPGA内部的单端信号与外部差分信号互相转换。是不是这样? 然后,硬件设计方面,LVDS的传输线需要匹配阻抗,通常100欧姆差分。PCB布线时要保证差分对走线等长、对称,减少信号反射和干扰。这点需要注意,但软件配置可能暂时不考虑,先集中在逻辑实现上。 逻辑设计部分,发送端可能需要并转串,比如使用Serializer,而接收端则需要解串器(Deserializer)。Xilinx的FPGA有专用的ISERDES和OSERDES模块,可以用来处理高速串行转换。这些模块应该可以在Vivado里通过IP核或者原语调用。例如,如果LVDS的数据速率较高,比如几百Mbps,可能需要使用这些高速串行器。 另外,时钟管理也很关键。差分信号传输通常需要源同步时钟,即数据与时钟一起传输。在接收端,可能需要用时钟来采样数据。这时候可能需要使用IDELAY和IDDR来处理数据的对齐和时钟域转换。或者用FPGA的MMCM/PLL来生成所需的时钟频率。 如果是使用Zynq的PS部分,可能涉及到通过AXI总线与PL部分通信。比如,PS生成数据,通过AXI发送到PL的LVDS发送模块,或者PL接收的数据通过AXI传回PS处理。但具体实现可能需要配置AXI接口,比如使用AXI Stream或者GPIO。 另外,Vivado中的IP Integrator可以帮助搭建系统。例如,添加PS模块,配置所需的时钟和外设,然后在PL部分添加LVDS收发相关的逻辑模块。或者使用自定义的HDL代码,实例化差分IO和串并转换模块。 举个例子,发送部分可能包括:PS通过AXI-Lite发送数据到PL的FIFO,然后由Serializer将并行数据转换为串行,通过OBUFDS输出LVDS差分信号。接收部分则是通过IBUFDS将差分信号转为单端,再通过Deserializer转换为并行数据,存入FIFO,供PS读取。 时序约束也是必须的,尤其是高速数据传输时。需要为LVDS的时钟和数据线设置正确的约束,确保建立和保持时满足要求。这可能涉及到在XDC文件中定义时钟频率、输入输出延迟等。 调试的话,可能先用ILA(集成逻辑分析仪)来抓取PL内部的信号,看看数据是否正确。如果硬件没有问题,但数据出错,可能需要检查时钟相位、数据对齐,或者调整IDELAY的值。 还有可能需要注意FPGA的Bank电压是否符合LVDS的要求,通常LVDS的电压是2.5V,所以对应的Bank应该配置为支持该电压。例如,Zynq的HR Bank支持2.5V,而HP Bank可能不支持,需要确认芯片手册。 总结一下,步骤大概是:1. 确认硬件支持,包括Bank电压和差分对;2. 在Vivado中配置PL的差分IO,使用原语或IP;3. 设计并串转换逻辑,使用ISERDES/OSERDES;4. 处理时钟管理和时序约束;5. 连接PS和PL的AXI接口进行数据传输;6. 调试和验证。 可能遇到的问题:差分对分配错误,时钟不稳定,数据对齐错误,或者电压配置不正确。需要逐步排查,从硬件连接到逻辑设计,再到软件驱动。</think>在Zynq平台上实现LVDS收发需要结合PS(处理器系统)和PL(可编程逻辑)的协同设计。以下是分步实现的关键步骤和注意事项: --- ### **1. 硬件确认与准备** - **芯片型号与Bank支持** 确认Zynq芯片的PL端Bank支持LVDS标准(如HR Bank支持2.5V电压)。参考芯片手册确保目标引脚支持差分信号。 - **PCB设计** - 差分对走线需等长、对称,阻抗匹配为100Ω。 - 避免跨分割布线,减少信号反射。 --- ### **2. PL端逻辑设计** - **差分I/O原语** - **发送端**:使用`OBUFDS`将单端信号转为差分对。 - **接收端**:使用`IBUFDS`将差分信号转为单端。 ```verilog // 示例:Verilog中实例化差分缓冲器 OBUFDS #(.IOSTANDARD("LVDS_25")) obuf_lvds (.I(tx_data), .O(tx_p), .OB(tx_n)); IBUFDS #(.IOSTANDARD("LVDS_25")) ibuf_lvds (.I(rx_p), .IB(rx_n), .O(rx_data)); ``` - **高速串并转换** - **发送**:使用`OSERDESE2`实现并串转换(如8:1)。 - **接收**:使用`ISERDESE2`实现串并转换。 - 需配合高速时钟(如DDR模式)提升数据速率。 - **时钟管理** - 使用MMCM/PLL生成精确的发送/接收时钟。 - 接收端可能需要动态相位调整(如`IDELAYCTRL`)对齐数据。 --- ### **3. PS与PL的通信** - **AXI接口设计** - 通过AXI4-Lite或AXI4-Stream实现PS与PL的数据交互。 - 示例:PS通过AXI将数据写入PL的FIFO,触发LVDS发送;接收数据通过AXI传回PS。 - **DMA支持** 高速传输时,使用DMA减少CPU开销。 --- ### **4. 时序约束** - 在X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值