美文网首页
7系列GTX的TX复位设计

7系列GTX的TX复位设计

作者: 非鱼知乐 | 来源:发表于2019-07-23 05:08 被阅读0次

    http://xilinx.eetrend.com/d6-xilinx/article/2013-04/3890.html

    Xilinx IO Specialist Antony Gu

    1. 前言

    随着半导体技术,特别是FPGA的发展,单片芯片的处理能力越来越强。现在单片的处理能力都在1Tbit以上。而要处理这么多的数据,单靠原来的LVDS, LVPECL已经无法满足芯片接口吞吐量的要求。所以,如今越来越多的应用都用到高速SERDES。

    XILINX的SERDES作为业界翘楚,越来越多地被客户接受并广泛应用。而随之而来设计、调试问题,也是让客户感到害怕的问题。特别是客户容易对高速SERDES犯怵,碰到问题又无从着手,导致进度受阻,压力倍增。

    这是我着手总结SERDES设计调试的初衷。

    这次主要讲SERDES复位设计。

    2. 复位的作用

    众所周知,现在主流的FPGA上实现的都是时序逻辑。时序逻辑有一个特点就是前面的状态会影响到后面的状态。所以在这种应用里,初始状态的确定是整个设计里非常重要的一个环节。复位就是用来初始化逻辑状态用的。

    对于SERDES,根据不同的应用,其时钟方案是不同的。对此,SERDES的状态,特别是BUFFER的状态会受到很大的影响。由于BUFFER的读写时钟有效稳定的时间不同,大致会引起以下2种情况:

    1. BUFFER 上下溢出,使得输入输出误码;

    2. 多通道应用里,通道间引入偏移,使得各路通道绑定失败。

    所以复位设计必须小心,特别需要和时钟方案相匹配,才能给可靠的设计打下良好的基础。

    3. 7系列GTX的时钟结构

    上面说到,复位应该和时钟方案相匹配,所以在这里简单介绍一下7系列GTX/GTH 的时钟结构。

    7系列SERDES是以QUAD为单位的。在一个QUAD里,有

    a) GTX/GTH: 一个QUAD里有4个SERDES;
    b) 2个参考钟:它们可以连到任意一个PLL上。而且可以给上下相邻的QUAD提供参考钟;
    c) CPLL:这是每路GTX/GTH都有的PLL。这个C是指Channel;
    d) QPLL:每个QUAD内的SERDES共享的PLL。这个Q是指QUAD。

    image

    QPLL和CPLL可以供到每个SERDES的发(TX)和收(RX)。在SERDES里有TX/RXSYSCLKSEL[1:0]端口选择使用哪个时钟源。

    image

    4. 复位设计的案例

    下面,根据不同的时钟方案,会列出一些复位的方法。

    首先需要提醒的一点是:对于7系列的SERDES, bit文件下载完(CONFIGDONE拉高)后的500ns时间内的复位是无效的。SERDES需要的复位是脉冲。所以FPGA配置完成后500ns后复位信号才能拉高。

    image

    如果在500ns之前就拉高,那是无效的。需要在后面在有一个正脉冲才行。

    image

    关于这个问题,在XINLIX官网上有AR43482作说明。

    另外相对于以前的SERDES, 在7系列SERDES里多了2个信号:TXUSERRDYRXUSERRDY。这2个信号是用来控制何时进行PCS复位的。

    SERDES的顺序复位是指GTXTXRESETGTXRXRESET有复位脉冲时,SERDES会进行从PMA一直到PCS的复位,最后把TXRESETDONERXRESETDONE拉高。

    PMA和PCS复位涵盖的范围见下表

    image image

    整个复位顺序都是从PMA到PCS的。具体流程可以参考UG476。

    在完成PMA复位后进入PCS复位是,TXUSERRDYRXUSERRDY就是开关。只有当它们为高时才能进入PCS复位,继而完成整个SERDES的复位。TXUSERRDYRXUSERRDY的含义是用户钟TXUSRCLK/TXUSRCLK2RXUSRCLK/RXUSRCLK2都稳定了。这个时候可以进行PCS复位了。

    4. TX复位案例

    4.1 TXOUTCLKSEL = TXOUTCLKPMA

    这种情形下,TXOUTCLK的频率是(LINE RATE)/(INTERNAL DATAWIDHT),它会随着线速度的变化而变化。

    对于7系列SERDES,内部位宽可以有16/20 bit (即2字节)和32/40bit(即4字节)2中选择。跟逻辑接口的外部位宽有2、4、8字节3种选择。由于逻辑可以跑到368MHz以上。所以对于大多数的应用,TXUSRCLK/TXUSRCLK2是可以同频的。此时,其时钟框图就会如下:

    image

    这种复位方案里,有一些要求:

    • SERDES工作在顺序复位模式下(工具产生的代码默认模式)
      . RESETOVRD = 1’b0
      . GTRESETSEL = 1’b0

    • QPLLRESETCPLLRESET需要脉冲复位
      .至少一个参考钟周期

    • QPLLLKDETCPLLLKDET的上升沿上产生GTXTXRESET脉冲,启动SERDES进入顺序复位

    • 同时,把QPLLLKDET/CPLLLKDET连到TXUSERRDY. 最好能延时2~3us以保证TXOUTCLK稳定。

    • TXRESETDONE的第一个上升沿做TXPCSRESET的复位
      .对单路应用不需要这个复位。
      . 对于多路需要对齐输出的应用,需要把所有TXRESETDONE都拉高后做TXPCSRESET复位以减少各路的输出偏移

    4.2 TXOUTCLKSEL = TXOUTCLKPMA,用到MMCM**

    image

    这个和上面一个的差别就是需要用到MMCM。由于MMCM的输入是TXOUTCLK,必须等到TXOUTCLK稳定后才能释放复位;而MMCM给SERDES提供TXUSRCLKTXUSRCLK2,所以TXUSERRDY必须在MMCM稳定后才能拉高。

    同样,对于多通道应用,需要在所有TXRESETDONE拉高后给一个TXPCSRESET脉冲,这样可以减少发送数据通道间的偏移。

    4.3 TXOUTCLKSEL = TXPLLREFCLK_DIV1/2

    这种应用和第一种不同之处在于TXOUTCLK的时钟来源不同,这里是来自于参考钟。所以它会在QPLL锁定之前就稳定下来。当然我们还是可以借用第一种复位方法。只是QPLLLKDET/CPLLLKDET送到TXUSERRDY时不需要延时去等待内部时钟稳定。

    <center> image

    4.4 TXOUTCLKSEL = TXPLLREFCLK_DIV1/2,用到MMCM**

    同样,这种应用可以参考第二种。

    image

    当然由于MMCM的输入时钟是参考钟,所以它的复位释放也不需要等待PLL锁定。所以我们也可以用下面的复位方法

    image

    当然由于MMCM复位要求,QPLLRESET/CPLLRESET的脉宽需要大于3个参考钟周期。

    4.5 TXBUFFER BYPASS情形**

    对于CPRI等有延时精度要求的应用,需要把TXBUFFER旁路。这时需要在上面的复位之外还要有相位对齐电路的复位。

    要能进行相位对齐,对时钟有一定要求:
    1. 同源同频。这里只是做相位对齐,频率必须相同;

    2. 时钟稳定。只有时钟稳定后才能进行相位对齐操作。

    所以相对于前面使能TXBUFFER的应用的复位,在TXRESETDONE拉高后,做一次相位对齐操作就可以了。

    image

    这里需要注意的一点是,TXDLYSRESET的脉宽必须小于50ns。

    整个复位的波形图如下

    image

    和前面不同的是,这里用TXPHALIGNDONE作为后续逻辑的复位信号。这是因为这个信号拉高了,表示SERDES的初始化已经完成,可以工作了。而前面的几种应用,TXRESETDONE的拉高是SERDES能够正常发送数据的标志。

    后语

    由于篇幅所限,现在只把TX部分复位的一些方案简单说明一下。

    对于RX部分的复位,由于涉及到CDR,时钟也会受到对端影响。所以情形要复杂些。

    这会在另一篇里专述。

    相关文章

      网友评论

          本文标题:7系列GTX的TX复位设计

          本文链接:https://www.haomeiwen.com/subject/xprnlctx.html