1)实验平台:正点原子开拓者FPGA 开发板
2)摘自《开拓者FPGA开发指南》关注官方微信号公众号,获取更多资料:正点原子
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-13912-1-1.html
![f89c5ff08830b9a8041607f63e25deaa.png](https://i-blog.csdnimg.cn/blog_migrate/648993a9ced8c737ab79ab7a8f4c96c3.jpeg)
第十三章 IP核之PLL实验
PLL的英文全称是Phase Locked Loop,即锁相环,是一种反馈控制电路。PLL对时钟网络
进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。
对于一个简单的设计来说,FPGA整个系统使用一个时钟或者通过编写代码的方式对时钟进行分
频是可以完成的,但是对于稍微复杂一点的系统来说,系统中往往需要使用多个时钟和时钟相
位的偏移,且通过编写代码输出的时钟无法实现时钟的倍频,因此学习Altera PLL IP核的使
用方法是我们学习FPGA的一个重要内容。本章我们将通过一个简单的例程来向大家介绍一下
PLL IP核的使用方法。
本章包括以下几个部分:
13.1 PLL IP核简介
13.2 实验任务
13.3 硬件设计
13.4 程序设计
13.5 下载验证
PLL IP核简介
锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号
的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通
常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,
输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相
环名称的由来。
PLL的结构图如图 13.1.1所示。
![60d877e73bfc377208dff51ec251671e.png](https://i-blog.csdnimg.cn/blog_migrate/d9080436c9548c79fd038ecabefbb260.jpeg)
图 13.1.1 PLL结构图
PLL由以下几部分组成:前置分频计数器(N计数器)、相位-频率检测器(PFD,Phase
Frequency Detector)电路,电荷泵(Charge Pump)、环路滤波器(Loop Filter)、压控振
荡器(VCO,Voltage Controlled Oscillator)、反馈乘法器计数器(M计数器)和后置分频
计数器(K和V计数器)。
在工作时,PFD检测其参考频率(FREF)和反馈信号(Feedback)之间的相位差和频率差,
控制电荷泵和环路滤波器将相位差转换为控制电压;VCO根据不同的控制电压产生不同的震荡
频率,从而影响Feedback信号的相位和频率。在FREF和Feedback信号具有相同的相位和频率之
后,就认为PLL处于锁相的状态。
在反馈路径中插入M计数器会使VCO的震荡频率是FREF信号频率的M倍,FREF信号等于输入时钟
(FIN)除以预缩放计数器(N)。参考频率用以下方程描述:FREF= FIN/N,VCO输出频率为FVCO=
FIN*M/N,PLL的输出频率为FOUT=(FIN*M)/(N*K)。
我们开发板上的FPGA芯片型号为EP4CE10,内部含有2个PLL,为设备提供强大的系统时钟
管理以及高速I/O通信的能力。外部时钟经过锁相环,产生不同频率和不同相位的时钟信号供
系统使用。需要注意的是,PLL的时钟输入可以来自于时钟专用输入引脚,FPGA内部产生的信
号不能驱动PLL。
Altera提供了用于实现PLL功能的IP核ALTPLL,在这里我们需要说明的是,有关ALTPLL的
工作原理和ALTPLL的组成结构,我们就不在进一步进行讲解了,我们主要讲解的是如何使用
ALTPLL IP核,对ALTPLL的工作原理和ALTPLL的组成结构感兴趣的朋友,可以参考 Altera提供
的ALTPLL IP核的用户手册。
实验任务
本节实验任务是使用FPGA开发板输出4个不同时钟频率或相位的时钟,并通过Modelsim软
件对ALTPLL IP核进行仿真,来向大家详细介绍一下ALTPLL IP核的使用方法。
硬件设计
本章实验将ALTPLL IP核产生的四个时钟输出到FPGA的扩展口IO上,也就是开发板P7扩展
口的第5、6、7和第8脚。扩展口原理图如图 13.3.1所示:
![e1c9fd544eaad3c37911c2a4e838346b.png](https://i-blog.csdnimg.cn/blog_migrate/d8fe58f6891491a90b7b68052db77574.jpeg)
图 13.3.1 扩展口原理图
本实验中,各端口信号的管脚分配如下表所示。
表 13.3.1 IP核之PLL实验管脚分配
![f462ab3f695d43a31b7cf5d7b82020b0.png](https://i-blog.csdnimg.cn/blog_migrate/da4b4a2274583bf048806e0e66e75b21.jpeg)
![baa0520df9aa1d88150a8f53f00556fa.png](https://i-blog.csdnimg.cn/blog_migrate/a4f4eca5a5ee6ffdb58deb90b98b23f3.jpeg)
程序设计
首先创建一个名为ip_pll的工程,在这里我们就不再给出Quartus II软件创建工程的详细
过程,如果大家对Quartus II软件的创建过程还不熟悉的话,可以参考“第四章 Quartus II
软件的安装和使用”章节中的Quartus II软件的使用部分。新建后的工程如图 13.4.1所示:
![3ef271d05dd55dbae5a0e1e6b27c1e44.png](https://i-blog.csdnimg.cn/blog_migrate/a73c3c18a6e0713a17a1aedc070363e4.jpeg)
图 13.4.1 工程新建完成页面
创建好了工程以后,接下来我们创建PLL IP核。我们在Quartus II软件的菜单栏