最近,通过实验最终确定,在Xilinx 7系列690T芯片上使用多个GTX接口传输千兆位以太网数据帧时,个别GTX接口在某些测试条件下会出现少量帧丢失。具体来说,GTX接口使用QPLL和CPLL。
情况描述本次调试的主要任务是调优FPGA 板(型号690T)上的24 个GTX 接口(对应24 个SGMII 接口)。每个BANK有4个GTX接口,每个连接器也有4个GTX接口。如下所示。
1. 如果遇到有问题的波形,请连接数据源并下载自环回程序来测试接口。我们看到X1 AB、X2AB 和X3 AB 正常,X1 CD、X2 CD 和X3 AB 正常。将正常端口和丢帧端口连接到同一个地面检测端口进行测试,并下载相同的程序。当一个256字节的固定帧被发送到错误的端口时,我在VIVADO中捕获了信号,发现我收到的是一个超短帧并且是错误的帧。而且帧头是错误的。
2. 测试场景1:24 端口BANK 和连接器分配
盒子里面的方框是BANK,横线是连接器的测试状态。接口环回使能,X1 AB、X2 AB、X3 AB 收发正常,X1CD、X2 CD、X3 CD 有丢帧。 3. 测试场景2:12 端口BANK 和连接器分配
测试情况:使能接口环回。本例中X1 AB和X1 CD的现象与上面24端口的情况相同(约束方法相同,X1 CD有丢帧,但之前的12端口测试是正确的)。不过,此时X3 CD已成功接收。 (注意,此时X3 CD和24口测试程序的约束是不同的。此时,X3 CD有两个主核和两个从核。最初,一个主核我怀疑它可能无法支持3个从核或1个(配置插件的Bank的时钟接线有问题) 4.测试场景3:Beta版本BANK和连接器分布。
测试情况:使能接口环回。此时X1 AB的数据1、2正常,数据3、4为丢帧,X1 CD的数据5、6为丢帧,数据7、8正常。可以看到,典型的数据端口有一个主核和一个从核。从核心是唯一丢失帧的数据端口。分析:在测试条件1和2下,X1 AB可以成功发送和接收数据,此时可以排除硬件问题。然而,使用测试3中的约束,我们发现两个接口也丢帧。
通过上述三种方案验证了方案思路,我们怀疑是从核无法独立工作。当我查看GTX手册时,GTX外部时钟使用模式显示如下。
必须为每个收发器实例化GTXE2_CHANNEL/GTHE2_CHANNEL 原语。如果您想要高性能QPLL,则需要实例化GTXE2_COMMON/GTHE2_COMMON 原语。如果速度要求不高,可以在每个QUAD 块上使用多个GTX 接口,每个通道使用QPLL,或使用CPLL。必须分为master和slave。使用QPLL 时,参考时钟通过IBUFDS_GTE2 原语输出到GTXE2_COMMON/GTHE2_COMMON 原语。 GTXE2_COMMON/GTHE2_COMMON 原语生成的时钟为其他通道提供信号。 QUAD 块中只能有一个GTXE2_COMMON/GTHE2_COMMON,因此使用QPLL 时,QUAD 块存在主/从区别。为了解决本次调试时从核无法独立运行的问题,采用了CPLL方式,每个通道都有一个CPLL,不区分主从。每个内核都通过IBUFDS_GTE2 原语连接到单端参考时钟输出。注释掉程序中的GTXE2_COMMON/GTHE2_COMMON 原语,并将GTXE2_COMMON/GTHE2_COMMON 输入到内核的输出连接到零,如下所示。
以下基础知识是从网上获取的。随着Xilinx 7系列FPGA集成度的提高,其高速串行收发器不再占用单独的参考时钟,而是使用四路将串行高速收发器分组为4A串行高电平。高速收发器和COMMOM (QPLL) 组成一个四路,每个串行高速收发器称为一个通道。 QPLL 和CPLL 之间的区别在于它们支持不同的线路速率。对于CPLL,支持的线路速率为1.6 GHz 至3.3 GHz,GTX 支持两个级别的线路速率,并支持从5.93 GHz 开始的较低波特率。 8.0GHz,波特率上限支持9.8GHz至12.5GHz,GTH不分档,支持线速8.0GHz至13.1GHz。 Xilinx 7 系列FPGA 集成了四种串行高速收发器:GTP、GTX、GTH 和GTZ,适用于不同的器件类型。下图显示了支持的不同线路速率。系列类型、支持的收发器类型以及最大收发器数量。
随着Xilinx 7系列FPGA集成度的提高,其高速串行收发器不再占用单独的参考时钟;而是将串行高速收发器分为4个串行高速收发器和1个COMMOM(QPLL)。转换成)组成一个四元组,每个串行高速收发器称为一个通道。以XC7K325T为例,下图为FPGA中的GTX。
每个串行高速收发器包括发送器和接收器。内部结构如下。
发送方和接收方在功能上独立,由两个子层组成:PMA(Physical Media Attachment,物理媒体适配层)和PCS(Physical Coding Sublayer,物理编码子层)。 PMA 子层包括高速串并转换(Serdes)、预加重和后加重、接收均衡、时钟发生器和时钟恢复电路。 PCS子层包括8B/10B编解码器、缓冲器、通道绑定和时钟校正等电路。 GTX发射机处理流程:首先对用户逻辑数据进行8B/10B编码后进入发射缓冲区。这个缓冲区主要是PMA子层和PCS子层两个时钟域的时钟分离,解决了问题。最终通过高速Serdes进行并串转换解决了时钟速率匹配和相位差的问题,可以根据需要进行预加重和后加重。请注意,如果在PCB 设计过程中TXP 和TXN 差分引脚错误地连接在一起,则可以通过极性控制来补偿此设计错误。接收器和发送器端的处理是相反的,有很多相似之处,所以这里不再赘述,但值得注意的是带有时钟校正和通道的RX接收器弹性缓冲器。绑定功能。
以上是GTX性能和结构特点的概述。下面详细分析GTX时钟结构。
以7 系列GTX 为例,每个四路都有两个外部差分参考时钟源。 1个quad的时钟结构如下图所示。
红框部分是两个差分参考时钟输入。每个外部参考时钟输入必须经过IBUFDS_GTE2源语言后才能使用。绿色框是来自另一个四路的参考时钟输入。 7系列FPGA支持多个参考时钟源经过选择器后,使用相邻(南北)quad的参考时钟作为当前quad的参考时钟。它有两种方式输入:QPLL和CPLL,如图5和图6所示。对于GTX通道,可以单独选择参考时钟,并且可以选择QPLL。或CPLL、QPLL 和CPLL。区别在于两者支持的线路速率不同。 QPLL支持的线路速率高于CPLL。图7显示了外部参考时钟模型的详细结构。红色箭头表示QPLL 通道,黄色箭头表示CPLL 通道。
每个四元组都有两个外部参考时钟,因此您可以为每个四元组选择两个不同的参考时钟,如下图所示。每个通道的接收器和发送器可以独立选择参考时钟。
如果用户需要使用另一个四路的参考时钟源作为当前四路的参考时钟,只要满足以下三个条件即可使用: 1. 只能使用来自当前四元以上四元的参考时钟。 2. 只能使用当前的quad。底部四元组中的参考时钟源无法驱动超过三个四元组收发器(它只能驱动当前四元组和上面的两个相邻四元组)。如果满足上述条件,则将另一个四路设置为当前四路的参考时钟,如下图所示。请注意,图中的红色框表示相邻的四边形。
QPLL 和CPLL 之间的区别在于它们支持不同的线路速率。对于CPLL,支持的线路速率为1.6 GHz 至3.3 GHz,GTX 支持两个级别的线路速率,并支持从5.93 GHz 开始的较低波特率。 8.0GHz,波特率上限支持9.8GHz至12.5GHz,GTH不分档,支持线速8.0GHz至13.1GHz。当通道以超出CPLL 工作范围的线速运行时,需要QPLL。 GTXE2_COMMON 原语封装了使用时实例化GTX QPLL 的需要。完整的文本。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/668071.html