智多晶PLL IP动态相位调整

在FPGA中,动态相位调整(DPA)主要实现LVDS接口接收时对时钟和数据通道的相位补偿,以达到正确接收的目的。在LVDS输入接收时,随着单线传输速率不断接近于1 Gb/s,使每位所占的时间窗不断减小,导致采样时钟对信号线的采样点很难在其有效区间进行准确采样;再加上传输路径的不同,各数据线和采样时钟到达接收端的延迟时间不能保证完全一致,从而带来了各信号线之间的位偏移(Bit Skew)和字偏移(Word Skew),如下图所示。

1.png

位偏移为采样时钟沿不在各数据窗口的中心位置采样,可能会导致数据采样保持时间不够长,易使bit位发生瞬间突变,从而导致接收的数据不稳定;字偏移是指采样接收后的各数据信号之间不同步,使得同时在发送端发送的数据在接收端却不能同一时刻被采样,导致接收的数据无效。因此我们可能需要将时钟的相位做出调整,使得时钟能稳定的采集到输入的数据。工作的核心就是锁相环PLL的相位调整功能,产生时钟的不同相位,接着看哪些相位能正确地采集到输入数据,然后取窗口中间的一个时钟相位,作为正常工作时的采样时钟。这样接口上具有最大的时序裕量,从而保证链路的可靠性。

智多晶的PLL IP支持动态相位调整功能。在IP Creator中例化PLL的IP时,打开动态相位调整功能,即可开启PLL输出时钟的相位动态调整。

IP例化示例如图所示

2.png

在勾选了动态相位之后,IP会开启动态相位调整对应的信号接口。其中PHASESEL[1:0]可选择做动态相位调整的输出端口,“00”选择CLKOP通道,“01”选择CLKOS通道,“10”选择CLKOS2通道,“11”选择CLKOS3通道;PHASEDIR选择相位调整方向,“1”表示相位做正向调整,“0”表示相位做负向调整;PHASESTEP为动态相位调整的触发信号,每一个脉冲实现一次相位调整。

动态相位调整的实现代码如下所示

通过按键切换动态相位调整的方向

3.png

使用按键触发生成动态调整的脉冲信号,每一次按键,完成一次相位调整

4.png

下图程序中,CH_SEL为相位调整的时钟通道选择,例程中设置为“01”,即实现动态相位调整的通道为CLKOS

5.png

在测试中,选择将CLKOP通道输出的时钟作为参考信号,与CLKOS信号做对比。分别选择了0次相位调整、18次相位调整、36次相位调整和54次相位调整,其测试结果如下图所示。实测60调整实现相位360°偏移。

6.png

图1 初始相位

7.png

图2 18次相位调整

8.png

图3 36次相位调整

9.png

图4 54次相位调整

如有客户朋友需要获取源码,请联系智多晶的市场销售人员。

文章来源:智多晶

最新文章

最新文章