你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

V6 PCIE应用中GTX接收侧复位案例

发布者:jackzhang 时间:2013-04-09 21:21:33

V6 GTX 在PCIE应用中的复位问题和解决方法

背景

         在V6 PCIE GEN1 X4应用中,客户发现PCIE概率性地不能建链。在检查PCIE状态机,发现状态机停留在CONFIG.POLLING状态下。

检查GTX的状态,每路都没有8B10B错。但是有一条LANE 的输出数据比其他LANE快了16字节。

 

分析

         从现象看,可以确定这个问题和SI无关。整个问题的关键应该在于各个通道间的SKEW。

         可能引入SKEW的方面有:

  1. PCB 线路;
  2. 各路GTX起始工作时间,特别是CDR锁定时间不同;
  3. RX BUFFER指针偏移;
  4. GTX参数设置有错。

和客户分析看,PCB的SKEW是严格控制的,而且它不会导致16字节那么大的SKEW。而每路RXBUFFER 在初始化后是有复位的。但这都不能解决问题。

对于2, 客户说起每路GTX的RXELECIDLE并不是同时变0的。这个表示有GTX跳出OOB状态并不和其他GTX同时。这应该是导致所有问题的关键。

检查代码,我们发现MAX_SKEW参数设置的是7。这个值的单位是RXUSRCLK周期。对于V6,内部固定2字节的位宽。对于8B10B应用,是20bit。而对于PCIE而言,其TS1/TS2的长度是16字节。MAX_SKEW = 7应该太大,在通道绑定时有机会在RXBUFFER里看到2个CBS。那通道绑定模块会错开16字节对齐。这和看到的现象是符合的。

 

解决

         解决这个问题,需要从复位着手。

         既然看到各路的GTX不同时出OOB状态,那可以等到所有的RXELEICLDE都变低后,把所有的GTX都复位一下。然后在RXRESETDONE都拉高后,复位一下RXBUFFER。这样可以让各路GTX的SKEW最小。这是解决问题的一个方面;

         同时,需要把MAX_SKEW改成4。这样可以使通道绑定模块的搜索范围变小,以避免错开对齐的情况发生。

 

 

 

结果

         在按上述说明修改完代码后,我们发现这个问题再也没有出现。整个工程工作正常。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了