(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理

PLL生成的时钟输出到普通IO的处理

不管是differential clock capable pin(差分) 和single ended clock capable pin(单端)输入PLL产生的时钟输出pll_out1~6都可以直接给FPGA的其它模块使用,但如果要接入普通的IO接口,这需要经ODDR模块稍加处理下。

(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理

(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理

不管是differential clock capable pin(差分) 和single ended clock capable pin(单端)输入PLL产生的时钟输出pll_out1~6都可以直接给FPGA的其它模块使用,但如果要接入普通的IO接口,这需要经ODDR模块稍加处理下。

ODDR模块原语如下:

(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理

如果需要哪个时钟输出到IO,则将相应的输出时钟如pll_out1输入到 ODDR 原语中,得到IO_clk_out时钟输出,能够输出到FPGA 的普通 IO。      

(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理

为什么要用ODDR处理?因为如果直接从 BUFG 上连接到 OBUF 上,在编译器 map 的过程中就会出现错误,为避免这个错误,另一种方法就是在约束文件中加上一条约束,让编译器忽略时序约束的要求,直接通过普通逻辑资源连接。但这样 Clock 输出的时延和抖动(Jitter)都会变差。

下图就是PLL的时钟模块产生的clk_out6,经过ODDR处理之后产生的pll_out6信号(其他的pll_out1~5可以直接接其它模块)就可以直接接普通IO引脚了。(这样可以用示波器测试其生成的波形状态)

(PLL时钟第二篇)PLL生成的时钟输出到普通IO的处理