参考资料为PCIe Base Spec和CEM Spec。
1.1 时钟架构分类
PCIe参考时钟的三种架构:
- Common Refclk (Shared Refclk) Architecture
- Data Clocked Rx Architecture
- Separate Refclk Architecture
下面,我们来简单地聊一聊前面说到的三种参考时钟架构,首先是
1.2 Common Refclk Architecture
Common Refclk (Shared Refclk) Architecture的示意图如下图所示,
这种参考时钟架构是Spec推荐使用的,链路两端的器件均使用同一个参考时钟源。
即使使能了带有扩频的参考时钟源,时钟抖动也只有-300~+2800ppm。其次,当PCIe链路处于L0s或者L1状态时,即使链路上没有数据流,Rx CDR依然可以设计出保持锁定的状态,这样做的好处是,链路从L0s或L1状态恢复到L0状态的时间将会更短。
1.3 Data Clocked Rx Architecture
Data Clocked Rx Architecture的示意图如下图所示:
从示意图来看,这种参考时钟架构最为简洁,Rx端器件的CDR并不需要参考时钟,而是直接从数据流中恢复出时钟。不过这种结构的Rx CDR几乎很少在FPGA的SerDes中使用,因为在没有外部参考时钟的协助下,CDR实现锁定都是一个很大的挑战,还要保证在5600ppm的抖动范围内不失锁(对于带有扩频时钟的PCIe链路来说)。
注: 绝大部分的FPGA SerDes都是多协议SerDes,除了支持PCIe外,往往还需要支持其他主流的串行协议,比如SATA、USB、DisplayPort、HDMI、Ethernet (Q)SGMII、CoaXpress、CPRI、FPD-Link II/III、Serial RapidIO、SLVS-EC等等。这种参考时钟架构对于PCIe来说行得通,对于其他的某些串行协议来说可能是无法实现的。
1.4 Separate Refclk Architecture
Separate Refclk Architecture的示意图如下图所示:
PCIe Spec强烈不推荐使用这种参考时钟架构,尽管这是其提出的三种参考时钟架构之一。PCIe Spec强调,如果使用这种架构,扩频时钟必须被禁止使用(2.5GT/s & 5GT/s),因为这中情况下使用扩频时钟的话,CDR的带宽需甚至需要大于5600ppm,这对于CDR来说是非常大的挑战。
需要注意的是,PCIe Base Spec V3.x中,提到对于8GT/s的PCIe链路而言,在Separate Refclk Architecture下实现扩频时钟也是可行的(即Separate Refclk With Independent SSC (SRIS) Architecture),但是需要更复杂的CDR设计,具体请参考Spec相关章节。
SSC - Spread Spectrum Clocking 作用:扩频时钟技术主要是用来降低EMI。
CC - Common Clocked architectures (CC)
SRIS - Separate Refclk Independent SSC
SRNS - Separate Refclk with No SSC
Note:
Separate Refclk Independent SSC (SRIS) Architecture
Separate Reference Clocks With No SSC (SRNS) Architecture
The maximum difference with SRNS is 600 ppm which can result in a clock shift once every 1666 clocks. The maximum difference with SRIS is 5600 ppm which can result in a clock shift every 178 clocks.
SRNS允许600ppm,而SRIS允许5600ppm(其中SSC允许5000ppm,TX/RX允许600ppm)
如果使用SSC,所有使用SSC芯片的时钟必须同源
如果不使用SSC,各芯片的时钟不要求同源。