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

本文探讨了在使用Quartus的PLL时遇到的错误信息,指出PLL只能连接特定的时钟输入引脚,并解释了其背后的原理。通过分析手册、原理图和PLL设计的目的,解释了为何PLL不能接受FPGA内部信号作为输入。

曾经在使用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都要约束一下?所以,你只能另寻妙计了。

<think>好的,我现在需要解决用户在Quartus II中遇到的错误15065和信息提示15024的问题。用户提到PLL的时钟输入端口inclk[0]没有被非反向的输入引脚驱动,或者没有连接到另一个PLL,而且INCLK[0]没有连接。首先,我应该回忆一下Quartus II中PLL配置的基本要求。 首先,错误15065说明inclk[0]必须由非反向的输入引脚或另一个PLL驱动。这意味着用户可能尝试使用普通的逻辑信号或反向后的引脚作为PLL的时钟源,这是不允许的。PLL的时钟输入必须直接来自FPGA的专用时钟输入引脚,或者来自另一个PLL的输出,而不能经过任何逻辑处理,比如反相器或者组合逻辑。 接下来,信息提示15024指出INCLK[0]没有连接,这可能意味着用户在设计中没有正确地将时钟信号连接到PLL的inclk[0]端口。需要检查代码或原理图中是否将时钟信号正确分配给PLL的输入。例如,在Verilog或VHDL中,是否实例化了PLL组件,并正确连接了时钟输入。 可能的解决方案包括: 1. 确保时钟源是专用的时钟输入引脚,并且没有经过反相或其他逻辑处理。 2. 检查PLL实例化是否正确,特别是inclk[0]的连接是否存在。 3. 在Quartus的设置中,检查PLL的配置,确保时钟源设置正确。 4. 如果用户使用的是内部逻辑产生的信号作为时钟,需要更改为专用的时钟引脚或另一个PLL的输出。 还需要考虑FPGA型号的不同可能影响PLL的配置要求,比如某些型号可能允许特定的配置。此外,用户可能没有正确约束时钟引脚,导致Quartus无法识别正确的驱动源。建议用户检查引脚分配文件(.qsf)中的设置,确保时钟引脚被正确指定为时钟输入。 另外,用户可能忽略了PLL的输入必须通过全局时钟网络,这需要正确的引脚分配和约束。如果用户使用了一个普通的GPIO引脚而不是专用的时钟引脚,就会触发这个错误。因此,需要确认使用的引脚是否是专用的时钟输入引脚。 最后,建议用户查看Quartus的文档或错误信息的帮助部分,获取针对错误15065和15024的官方解决方案,这可能包括具体的步骤或配置选项。例如,Altera的文档可能建议使用特定的原语或属性来正确驱动PLL的输入。</think>### Quartus II错误15065及信息15024解决方法 #### 错误原因分析 1. **错误15065**:PLL的时钟输入端口$inclk[0]$必须由**非反向输入引脚**或**其他PLL输出**直接驱动,禁止使用逻辑信号或反向后的信号[^1]。 2. **信息15024**:检测到$inclk[0]$未连接有效时钟源,可能因物理连接缺失或信号路径错误导致。 --- #### 分步解决方案 **步骤1:检查时钟源类型** - 确认时钟信号来自FPGA专用时钟引脚(如`CLK_50M`),而非普通I/O引脚。 - **错误示例**:使用经过反相器(如`~clk_in`)或逻辑门处理的信号驱动PLL- **正确示例**: ```verilog // 直接连接专用时钟引脚到PLL输入 pll_instance pll_inst (.inclk0(clk_50m), ...); ``` **步骤2:验证PLL连接** - 在代码中明确绑定PLL的$inclk[0]$端口,避免悬空: ```qsf # 引脚约束文件(.qsf)示例 set_location_assignment PIN_G1 -to clk_50m set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk_50m ``` **步骤3:配置PLL参数** -Quartus II的PLL配置工具(如ALTPLL)中,确认输入时钟源选择正确: ``` Input clock source -> Dedicated clock input pin ``` **步骤4:检查级联配置** - 若使用级联PLL,需通过`PLL_OUT`端口连接而非普通信号: ```verilog pll_first pll1 (.inclk0(clk_50m), .c0(pll1_out)); pll_second pll2 (.inclk0(pll1_out), ...); // 正确级联 ``` --- #### 调试流程图 $$ \begin{cases} \text{错误持续} & \rightarrow \text{检查PLL配置向导参数} \\ & \rightarrow \text{重新生成PLL IP核} \\ \text{问题解决} & \rightarrow \text{验证时序约束} \\ \end{cases} $$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值