关于Quartus中错误信息PLL must be driven by a non-inverted input clock pin的解释

来源:互联网 发布:福州大学网络vpn 编辑:程序博客网 时间:2024/05/23 20:47

曾经在使用Quartus的PLL时,出现如下错误。


这个错误信息的意思是:PLL必须由同相的时钟输入引脚驱动。

这就跟我们用LEs实现的IP有区别了。先看一下手册。


红圈部分已经说明了PLL只能连CLK0、CLK1、CLK2、CLK3,这四个引脚(再通过选择器来选择其中一路时钟做为PLL的输入),除此之外都连不了。

再看看开发板上的原理图。



上面两张图,很清晰地告诉你,有源晶振接了CLK0和CLK4。正好,这块FPGA,有两个PLL,也就是说这两个PLL都能使用有源晶振做为PLL的输入。

此外,每四路时钟输入引脚做为一组给PLL提供输入,所以,这里8个时钟输入引脚,为2个PLL提供输入。


手册上面,也很明确地写出来了。n为0,就对应PLL1;n为1,就对应PLL2,我这里的芯片只有两个PLL,当然,某些型号是有四个PLL的,原理都一样。

为什么PLL不能把FPGA的内部信号作为时钟输入?如:内部的LEs实现的分频器的输出不能接在PLL的输入。

最为通俗的解释就是:PLL是硬核,输入这部分的电路相当于PCB,是固定死的(只把输入固定,输出是可以接LE的)。


为什么要固定PLL的输入?再看一下手册。


PLL分布在FPGA的四个角,同时,力求PLL输出的全局时钟到FPGA内部的每个结节(寄存器等)的时延尽量相等。这就非常符合同步设计原则了。另一方面,全局时钟跟一般的信号线有区别,全局时钟需要带的负载多,要求有一定的驱动能力;一般的信号线的要求刚好相反。所以,负载多的时候,一般给全局时钟加个global,以增加驱动能力。

再想一下,PLL的输入由有源晶振提供,全局时钟由global驱动,如果这两个时钟都流遍整块芯片的内部,工艺方面更加复杂,同时串扰也不好解决,最致命的是,PLL的输入由LE提供,那么PLL输入和输出的建立、保持时间都变得不固定了!难道你每次用PLL都要约束一下?所以,你只能另寻妙计了。

0 0