随着半导体技术,特别是 FPGA 的发展,单片芯片的处理能力越来越强。现在单片的处理能力都在 1Tbit 以上。而要处理这么多的数据,单靠原来的 LVDS, LVPECL 已经无法满足芯片接口吞吐量的要求。所以,如今越来越多的应用都用到高速 SERDES。
XILINX 的 SERDES 作为业界翘楚,越来越多地被客户接受并广泛应用。而随之而来设计、调试问题,也是让客户感到害怕的问题。特别是客户容易对高速 SERDES 犯怵,碰到问题又无从着手,导致进度受阻,压力倍增。
这是我着手总结 SERDES 设计调试的初衷。
这次主要讲 SERDES 复位设计。
复位的作用
众所周知,现在主流的 FPGA 上实现的都是时序逻辑。时序逻辑有一个特点就是前面的状态会影响到后面的状态。所以在这种应用里,初始状态的确定是整个设计里非常重要的一个环节。复位就是用来初始化逻辑状态用的。
对于 SERDES,根据不同的应用,其时钟方案是不同的。对此,SERDES 的状态,特别是BUFFER 的状态会受到很大的影响。由于 BUFFER 的读写时钟有效稳定的时间不同,大致会引起以下 2 种情况:
1. BUFFER 上下溢出,使得输入输出误码;
2. 多通道应用里,通道间引入偏移,使得各路通道绑定失败。
所以复位设计必须小心,特别需要和时钟方案相匹配,才能给可靠的设计打下良好的基础。
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。
QPLL 和 CPLL 可以供到每个 SERDES 的发(TX)和收(RX)。在 SERDES 里有TX/RXSYSCLKSEL[1:0]端口选择使用哪个时钟源。
复位设计的案例
下面,根据不同的时钟方案,会列出一些复位的方法。
首先需要提醒的一点是