SerDes interface参考设计_CDR设计(5)

 

5    CDR设计

CDR一直是比较热门的研究方向,现在比较主流的方法有接收端输入数据和本地时钟的关系将其进行分类。常见的 CDR 拓扑结构可以分为如下的三大类:

(1)采用反馈相位跟踪结构。如 PLL,DLL(Delay Locked Loop,延迟锁相环),PI(Phase Interpolator,相位插值器)和 IL(Injection Locked,注入锁定)结构的 CDR。

(2)无反馈的基于过采样(Oversampling)结构的 CDR。

(3)采用相位同步但没有相位跟踪环路的 CDR,如基于门控振荡器[(GatedOscillator)和高 Q 带通滤波结构的 CDR。

    在FPGA内实现CDR属于纯数字逻辑实现方法,对于使用PLL或者DLL锁相的方式在PPGA芯片上是不能够被实现,FPGA内置的PLL无法直接用于CDR,因此无反馈的基于过采样的结构是FPGA实现CDR的主流的方式。

     早期FPGA实现时钟恢复电路的方法,基本都是首先利用FPGA内部的锁相环产生N*f的高频时钟,然后再根据输入信号控制对高速时钟的分频,从而产生与输入信号同步的时钟信号,其中N决定了恢复时钟信号的相位精度,通常N等于8。因此如果输入信号的频率为100MHz,则系统的工作频率就必须达到800MHz,对于中低端FPGA,如此高的工作频率显然无法承受。虽然高端FPGA可以达到GHz的工作频率,但其高昂的价格不适合用于普通用户。而其它基于中低端FPGA实现高速时钟恢复电路的方法,要么需要外部VCO模块,要么只能恢复数据而无法得到同步的时钟信号。

     随后出现利用DLL与过采样想结合的方法,具体的实现过程为利用FPGA的PLL产生多个相位的时钟,每个时钟相位都有固定的相位偏差,如0度、45度、90度。利用同一频率多相位的时钟对数据进行采样,其产生的效果与过采样时类似,但是也会带来一些问题,受到PLL的限制,输出的多相位频率个数不会太多,因此其对时钟的恢复误差会在360/M内,M为输出频率的个数,对于高速的通信,该方法是不适用,对于速率在200MHz以内的数据通信,该方法具有易实现,成本低,研发周期短的优势,非常适合在中低端的FPGA中,实现相对高速的通信。

     本次设计初始的想法是通过上诉同频多相时钟采样法实现FPGA的CRD,同频多相时钟采样法需要在FPGA片内PLL或DCM产生N个与接收数据频率相近、相位相差2π/N的参考时钟,占用较多的PLL和全局时钟资源,而数据延迟链采样法一般以片内逻辑和布线资源构造抽头延迟线,延迟性能与芯片型号相关,且温度变化会造成该方法实现困难且可靠性较低,同时PLL的固有抖动,这种附加抖动会引起数据有效窗口的相应减小, 这样也会限制高速电路的性能。

     同时还有个设想,上述所有的方法原理都是对时钟进行相位的调整,以达到采样时钟与数据同步,可以设想在保持采样时钟不变的情况下,通过延时链将数据进行多抽头等延时输出,由时钟进行采样,以获得与时钟匹配的数据。该设想在部分论文中也得到证实,做法是将输入数据延时45度后,与同频多相的方法配合使用,可以在获得8倍采样效果的情况下,只用4个不同相位的时钟输入。不过该延时单元是建立在FPGA内部有标准的delay模块,用户可设置延时步长,这种延迟单元在xilinx的vitex-4以上的FPGA中可以使用,而HR03没有类似的延迟单元,所以实现也有一定的困难。

     对于上面的设想,初步的想法是利用FPGA内部的反相器代替延时单元,将输入的数据经过一个由反相器组成的延时链,并将数据通过延时链抽头输出,通过对所有输出的bit流数据进行边沿抓取,获得与时钟同步的抽头数据。该方法预计会遇到的问题是反相器的延时,如果一个反相器的延时为1ns,其对200MHz的数据延时相对于5倍的过采样,因此要做到高速率受限于FPGA的反相器的延时,可能还有其他的一些问题,需要在实际操作中进一步实验。

    下面对现在比较主流的CDR方法做一些简单的介绍。

1.1   CDR的工作原理

    一个简单的时钟数据恢复电路示意图如图所示。时钟数据恢复主要完成两个工作,一个是时钟恢复,一个是数据重定时,也就是数据的恢复。时钟恢复主要是从接收到的 NRZ(非归零码)码中将嵌入在数据中的时钟信息提取出来。通常 CDR 是一个有振荡器的反馈环路,通过环路调节振荡时钟的相位来跟踪输入数据中的嵌入时钟。通过分析 NRZ 码的特征可以知道,在随机二进制数据的谱密度中,没有包含数据速率处的谱线,即没有时钟提取所需要的直接信息。为了找到时钟信息,一般采取的办法是边沿检测技术。为了确定最终的采样时钟相位,CDR 中还必须有相位误差检测电路。

                         SerDes interface参考设计_CDR设计(5)_第1张图片

 

     通常 CDR 结构中包含一个锁相环(Phase Locked Loop,PLL)模块,用来调节恢复时钟的频率并补偿由于工艺或温度的变化而导致的频率变化。典型结构的PLL 的捕获范围是很小的,而且当输入数据是随机码的时候,更难获得捕获。因此大多数 CDR 电路中采用了称为“频率辅助捕获”的方法。这种方法是通过频率锁定环路,使得压控振荡器(Voltage-ControlledOscillator,VCO)的振荡频率向接收的数据速率方向变化,直到 VCO 输出振荡频率的误差达到所要求的某个范围内,才使 PLL 的相位锁定环路工作,完成相位的锁定和数据的重定时。频率辅助捕获可以通过外部参考时钟来实现,也可以不用外部参考时钟。如果有外部参考时钟,频率捕获可以通过一个有鉴频鉴相器(Phase Frequency Detector,PFD)的二阶 PLL 来实现。

5.2   基于PLL的CDR

基于 PLL 的 CDR 具有可调节速率的功能,能够比较容易的实现单片集成,但通常需要频率辅助捕获来避免失锁。此类拓扑结构的 CDR 可以根据 PLL 的实现方式分为基于模拟 PLL 或基于数字 PLL 的结构,也可以根据是否采用了外部参考时钟,进一步分为有外部参考时钟和无外部参考时钟的结构。

5.2.1    基于 PLL 的无外部参考时钟的 CDR

SerDes interface参考设计_CDR设计(5)_第2张图片

如图所示为无参考时钟的CDR 结构,由一个频率锁定环路和一个相位锁定环路组成,鉴频模块 FD(FrequencyDetector)来实现 VCO 输出时钟频率与输入数据 D(in)的比较。在 CDR 刚开始工作或者失锁时,FD 开始工作,并通过CP(Charge pump,电荷泵)和 LF(Low-pass Filter,低通滤波器)产生控制电压,使得VCO的振荡频率接近输入数据速率。一旦频率落在相位锁定环路捕获范围内,就由PD(PhaseDetector,鉴相器)的输出来控制VCO 的输出时钟相位锁定到输入数据相位上。此类 CDR 结构存在两个问题:(1)当 FD 和 PD 对 VCO 的控制相互切换时,频率锁定环路和相位跟踪环路可能相互干扰,使 VCO 的电压控制线上产生纹波而导致失锁。(2)在接收到的数据为长的连 0 或者连 1,或者由于内部或外部噪声使得数据上升或下降沿变坏时,FD 可能出现鉴频错误。由于这些问题的存在,通常使频率锁定环路的带宽比相位锁定环路的带宽要小。

相对独立的选择频率锁定环路和相位锁定环路的带宽,可以将系统修改为如图 2-8(b)所示结构,在两个环路中分别有各自的 CP 和 LF。此种结构中,频率锁定环路和相位锁定环路分别控制 VCO 的粗调和细调,而这样带来的一个缺点是由于使用两个 LF 使得最终的版图面积大大增加。

5.2.2    基于 PLL 的有外部参考时钟的 CDR

   SerDes interface参考设计_CDR设计(5)_第3张图片

     图(a)为一个有外部参考时钟输入的 CDR 结构,其中 VCO1和 VCO2是相同的两个模块。与图(b)所示的结构相类似,该结构中也有控制 VCO 的粗调和细调环路,频率锁定环路中的 M 分频器使得参考输入可以是一个较低频率的时钟,通过 PFD 的输出控制使 VCO2的输出时钟频率锁定到输入的参考时钟上。由于 VCO1与 VCO2是一样的,VCO2的控制电压可以用来粗调VCO1,使 VCO1的振荡频率接近或等于输入数据速率。相位跟踪环路中的 PD 通过细调 VCO1使得输出时钟相位与输入数据的相位锁定,通常选择相位锁定环路的增益低于频率锁定环路的增益,以达到对时钟相位的精细控制。这种结构的优点是,相对独立的频率锁定环路使得 CDR 能够比较容易的满足环路稳定性和带宽的要求,并且频率辅助捕获使得相位锁定环路的捕获时间大大缩短。然而存在的缺点是,即使 VCO1与 VCO2有相同的粗调控制电压,但由于电路中存在的失配,仍会导致输出振荡频率存在差异。另外,在某些异步模式的高速串行链路中,通常允许发送数据速率与本地接收频率间存在一定的频率偏移,使 VCO1与 VCO2之间出现一定的频率偏差,由于频率牵引作用可能会使 VCO1的频率从接收数据率偏移到 VCO2的频率上。此外由于存在两个 VCO,也可能会通过衬底和电源产生相互干扰,特别是采用 LC 振荡器的时候,还会导致版图面积很大。

     减小电路版图面积,可采用如图 2-9(b)所示的 CDR 结构。结构中增加了一个频率锁定检测(Locked Detector ,LD)模块,用来先后控制频率锁定环路和相位锁定环路工作,避免了在两个环路中需要各自的 CP、LF 和 VCO 模块。在 CDR启动时,LD 首先使频率锁定环路工作,使 VCO 输出的振荡频率接近 M*F(ref),直到频率相等,然后 LD 再使相位跟踪环路工作直到相位达到锁定。如果在相位锁定状态下由于干扰和噪声导致相位失锁,LD 重新依次地使频率锁定环路和相位锁定环路工作。这种结构与之前描述的无参考时钟的 CDR 结构有一个相似的缺点,当LD使频率锁定环路和相位锁定环路切换工作时,由于切换时的不稳定态或VCO控制电压上出现的纹波,会引起 VCO 输出频率的变化。

5.2.3    基于PI的CDR

     下面来简单介绍基于 PI 的 CDR 电路,一个基于相位插值的 CDR 拓扑结构如图所示。与图 (a)的 CDR 相比,在相位锁定环路中没有CP 和 LP 单元,取而代之的是数字低通滤波器(Digital Low-passFilter,DLF)和电流型数字-模拟转换器(Digital Analog Converter,DAC),而 VCO 由 PI 替代。I.DAC 通过对 PI的直接控制,使 PI 输出的时钟相位产生变化。这种结构的 CDR 与基于 PLL 的 CDR相比,具有环路稳定性增强、捕获时间缩短,并且无抖动峰值的优点,但需要注意的是抖动峰值的消除仅适用于当环路延时与 PI 相位的更新时间相比不是很大的时候。

SerDes interface参考设计_CDR设计(5)_第4张图片

SerDes interface参考设计_CDR设计(5)_第5张图片

     基于 PI 的 CDR 的另外一个优点是能够在源异步方式中,在允许的发送器和接收器频率偏移条件下,可以在很宽的数据率范围内工作。设计基于 PI 的 CDR时,主要考虑的方面是 I.DAC 的精度,PI 的线性度和环路延时,因为这些因素会对 CDR 的抖动性能有直接影响。

     图为 PI 的CDR结构的两种变化形式,采用一个相位选择器替换了图 2-10中的 I.DAC 和 PI。两种结构的共同优点是可以采用更少的模拟电路,因而设计面积更小。图 2-11(a)结构的优点是采用独立的相位和频率锁定环路,降低了环路带宽稳定性的要求,另外在相位跟踪环路中采用数字电路实现方式,降低了工艺、电源电压、温度变化对系统性能的影响。该结构主要的缺点是数字控制时钟相位切换时,将会导致比较大的 cycle-to-cycle 抖动,而且当采用更多级的 VCO 以得到较小间隔的相位时钟时,会使 VCO 的振荡频率降低而功耗增加,版图面积也相应地增大。一种减小由相位切换导致的抖动的方法是,将相位选择输出和 VCO 输出交换,如图 2-11(b)所示,这样使得在相位锁定环路中,经 DLF 的输出信号控制得到的时钟信号的相位跳变,经过频率锁定环路中的 CP 和 LF 的低通滤波变得平缓了,但是这种结构将会导致多通道间不能够再共享同一个参考时钟的频率锁定环路。

5.3   基于过采样的CDR

    目前基于FPGA的全数字CDR(Clock andData Recovery,时钟数据恢复)多采用数字化过采样法,有同频多相时钟采样和数据延迟链采样两种具体的实现方式。其基本原理是采用本地N×f的高速时钟,对信号作N倍过采样,通过对采样数据的分析,判断出数据跳变沿的位置,实时寻找并切换到最佳采样时钟,从而恢复出数据与线路时钟。由于是一种相位前馈技术,过采样法具有较大的频率捕捉范围和较快的捕捉速度。受FPGA工作频率的限制,对高速数据直接采用频率为N×f的时钟采样困难很大,因此两种方法都是模拟N×f采样时钟在一个数据时钟周期内获取N个均匀采样值。为保证时钟恢复质量,N通常取6~8。

基于数据过采样的相位拾取技术如图 3.5 所示,该技术对数据流中的每一个比特都在多个相位点进行采样,得到数据流的过采样表示。从采样信息中提取出数据的跳变信息。基于数据的跳变信息,与数据的比特中心最接近的采样点的采样数据就可作为接收数据。基于数据过采样的相位拾取技术需要对数据进行过采样的特性使得该技术更适合于数据速率较低的应用。

 SerDes interface参考设计_CDR设计(5)_第6张图片SerDes interface参考设计_CDR设计(5)_第7张图片

    过采样法是用高于被采样信号速率几倍的采样速率在一个数据位宽度内采样多次,然后再根据某种判决算法从多次采样的数据中恢复出正确的时钟和数据的方法,即通过随机的等距离多次采样来获得额外的数据信息,并对这些数据信息做进一步处理的方法。过采样结构中采样的结果不仅要提供最终采样的数值信息,还要能够反映采样时钟与数据对齐的情况。由于输入信号的非理想特性,以及采样时钟自身的抖动,系统在工作中往往会出现采样时钟相对输入信号的漂移,即采样的时钟偏离理想的采样点。随着漂移的累积,对应同一个数据位宽内的多次采样值将发生变化,根据这些变化判决算法需对采样过程进行调整,以保证采样的过程能克服非理想因素,保证结果的正确。在一个数据位宽内采样次数的多少决定了对采样结果处理的硬件结构。最少的2倍过采样结构在采样时钟对齐到信号过渡边缘时容易出现数据不稳定的情况,要解决这种情况必须增加额外的硬件来进行边缘检测。3倍过采样结构由于采样结果为奇数,可以采用投票判决的方式来给出结果。4倍及其以上的过采样结构虽然能更加精确的检测出信号过渡边缘的变化,但对于SGbPs的高数据率,采样时钟频率或者相位的增加将会非常困难。

3倍过采样结构中时钟数据对齐的原理如图所示:

SerDes interface参考设计_CDR设计(5)_第8张图片

5.4   基于FPGA同频多相时钟采样的CDR(设计中使用

本次设计采用的为同频多相的时钟采样方法,具体实现过程利用PLL产生两个时钟,分别为clk0与clk90,他们的相位相差为90度,两个输出是完全同步的,通过双边沿对数据进行采样,以获得4倍过采样的效果,具体的实现过程如下图所示:

SerDes interface参考设计_CDR设计(5)_第9张图片

在数据时钟恢复时,将到来的数据分别输入到四个触发器,其中两个触发器由CLK 作为计数时钟(一个用CLK 的上升沿,一个用CLK 的下降沿),另外两个由CLK90 作为计数时钟(一个用CLK90 的上升沿,一个用CLK90 的下降沿),要注意保证从输入引脚到四个触发器的延迟基本一致。

                                              SerDes interface参考设计_CDR设计(5)_第10张图片

对于上图数据时钟恢复电路存在如下的时序关系,如图所示。A、B、C、D 分别表示四个不同的采样点,输入数据1、2、3、4 分别表示四种不同的数据到来的情况。

     图中的第一列触发器的触发分别由时钟CLK 的上升沿、时钟CLK90 的上升沿、时钟CLK 的下降沿及时钟CLK 的下降沿触发。按照这样的方式来触发就可以得到四个数据采样点,即图中所示的A、B、C、D 四个点。这样就将原始时钟周期分成了四个单独的90度的区域,在这里我们定义四个区域为四个不同的时钟域a、b、c、d。这样,如果系统时钟为200MHz,那么图3 所示的电路就相当于产生了800MHz 的采样速率。但是仅仅通过一阶的触发器,输出的采样数据存在亚稳态的问题,因此需对采样点作进一步的处理。这里可将四个采样点通过进一步的触发,除掉亚稳态的问题,从而使采样点移到下一个相同的时钟域。通常,亚稳态的去除要经过两三级的处理,这就使得在有效数据输出前会有数位无效的数据,在数据采样的第一个阶段,电路检测数据线上数据的传输。当检测到有数据传输时,对传输数据的有效性进行确认。确认数据有效后,输出高电平来指示采样点有数据传输。因为有四个输出,所以需要一个复用器来选择数据。复用器从选定的时钟域中选择数据位,例如检测电路确定从时钟域a 中采样的数据有效,那么将时钟域a 中采样的数据通过输出端输出。

     上述设计的中,采用了两个clk0与clk90,实际的测试中,将进一步测试clk0、clk45、clk90、clk135。

其工作原理与上述的方法一直,就是利用4个clk对数据采样,以完成8倍过采用的效果,高精度的过采样对于高速的数据恢复有实际的应用意义,因此该部分设计将是在4倍过采样完成后,对设计的进一步提升的想法。

                                                             SerDes interface参考设计_CDR设计(5)_第11张图片

                                                            SerDes interface参考设计_CDR设计(5)_第12张图片


5.5   基于数据延迟链的CDR(有待测试

基于数据延迟链的CDR的实现过程是用一个全局抽样时钟对多抽头延时线的延时数据进行抽样, 它由数据恢复状态机利用边沿信息不断的从多抽头延时线中选择有效抽样, 然后把正确的抽样送给输出弹。

SerDes interface参考设计_CDR设计(5)_第13张图片

抽样延时线的构成如图所示。对每个通道的输入数据均可利用8抽头的延迟线进行异步抽样。每个通道有两路延迟线: 一个用来在上升沿抽样; 另一个用来在下降沿抽样。每条延迟线都由8个配置为反相器的查找表构成,这样既可保证上升和下降时间的对称, 也能保证抽样数据之间的规则分布。但应注意: 输入单元的输入节点必须以很小的skew到达两条延迟线。基于两种基本的时序约束的时序分析决定了抽头延时和延时链的长度, 抽样延时线的时序分析如图所示。

时序约束分最好情况和最坏情况: 最好情况的时序约束是整个延迟线的最小值必须大于数据总的抖动数, 这个约束决定了抽头的个数; 而最坏情况的时序约束是其最大的抽头延时值必须小于数据的有效窗口, 这个约束决定了延迟线的构成。

你可能感兴趣的:(SerDes)