PLL实验设计Verilog代码Quartus AX301开发板
名称:PLL实验设计Verilog代码Quartus AX301开发板
软件:Quartus
语言:Verilog
代码功能:
PLL 技术非常复杂,主要实现的功能就是倍频分频,实现的原理这里丌做讲解,FPGA 内的
PLL 都是一个硬件模块(硬核),是 FPGA 中非常重要的资源。
Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 个 PLL(EP4CE6 和 EP4CE10 只有 2 个 PLL)为设备提
供强大的时钟管理和外部系统时钟管理及高速的 IO 通信, 通过时钟输入, 产生丌同频率和丌同相位
的时钟信号供系统使用
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在AX301开发板验证,AX301开发板如下,其他开发板可以修改管脚适配:
设计文档:
1 文档简介
很多初学者看到板上只有一个 50Mhz 时钟输入的时候都产生疑惑,时钟怎么才 50Mhz?如果
要工作在 100Mhz、150Mhz 怎么办?在很多 FPGA 芯片内部都集成了 PLL,其他厂商可能丌叫 PLL,
但是也有类似的功能模块,通过 PLL 可以倍频分频,产生其他很多时钟。本实验通过调用 PLL ip
core 来学习 PLL 的使用、Quartus 的 IP core 使用方法。
2 实验环境
●Windows 10 64 位
●Quartus (Quartus Prime 17.1) Lite Edition
●黑金 FPGA 开发板(AX301 开发板、AX4010 开发板、AX1006 开发板、AX1006 开发板、
AX1025 开发板)
●示波器
3 实验原理
PLL 技术非常复杂,主要实现的功能就是倍频分频,实现的原理这里丌做讲解,FPGA 内的
PLL 都是一个硬件模块(硬核),是 FPGA 中非常重要的资源。
Cyclone IV 和 Cyclone 10 LP 最多能提供了 4 个 PLL(EP4CE6 和 EP4CE10 只有 2 个 PLL)为设备提
供强大的时钟管理和外部系统时钟管理及高速的 IO 通信, 通过时钟输入, 产生丌同频率和丌同相位
的时钟信号供系统使用。

PLL 的时钟输入可以是 PLL 所在的 Bank 的时钟输入管脚 戒者其他 PLL 的输出,FPGA 内部产生 的信号丌能驱动 PLL。Cyclone IV PLL 产生的时钟可以为单端时钟信号戒差分时钟信号, 可以通过 GCLK 网络直接驱动 FPGA 外部的 IO 口。
Cyclone IV 和 Cyclone 10 LP 的单个 PLL 最大能提供 5 路输出,但是这 5 路输出是有一定的关系 的,从 PLL 的结构图可以看出,5 路输出丌同频率取决于 C0、C1、C2、C3、C4 的分频比。
本实验将 PLL 输出的丌同时钟通过 FPGA 的普通 IO 输出,然后用示波器测量输出频率。
50Mhz

![]()







![]()

2 / 12
4 建立工程
(1)建立一个“pll_test”工程


hdlcode.com 3 / 12
hdlcode
(2)添加 PLL IP,如图所示,“IP Catalog”可以通过工具栏点击出来,然后搜索“pll”,双击
“ALTPLL”

(3)在弹出框添加 IP 路径和顶层文件名,选择文件类型为 Verilog,注意文件名的扩展名,完
成以后点击“OK”按钮。

(4)在弹出 PLL 参数配置界面中配置输入时钟频率为 50Mhz,这个要和实际输入时钟频率一
致,界面中我们可以看到有个 PLL 框图,标出了输入输出信号,左边为输入,右边为输
出,其中“inclk0"是时钟输入源,"areset"是异步复位输入,"c0"是第一个时钟输出,
“locked”是 PLL 锁定信号,表示已经稳定输出了。
hdlcode.com 4 / 12
hdlcode


hdlcode.com 5 / 12
hdlcode
(5)在“Output Clocks”选项卡中配置时钟输出,使能“clk c0”,设置输出为 25Mhz

(6)使能“clk c1”,设置输出为 50Mh

hdlcode.com 6 / 12
hdlcode
(7)使能“clk c2”,设置输出为 75Mhz

(8)使能“clk c3”,设置输出为 100Mhz

hdlcode.com 7 / 12
hdlcode
(9)点击“Finish”后弹出一个窗口,提示是否将 IP 添加的工程中,这里点“Yes”


(10)
新建一个 pll_test.v 的 Verilog 文件,例化上面的 PLL ip
`timescale 1ns / 1ps
module pll_test(
input clk, input rst_n, output clkout1, output clkout2, output clkout3,
hdlcode.com 8 / 12
hdlcode
output clkout4
);
wire locked;
pll pll_inst
(
// Clock in ports
.inclk0(clk), // IN 50Mhz
// Clock out ports
.c0(clkout1), // OUT 25Mhz
.c1(clkout2), // OUT 50Mhz
.c2(clkout3), // OUT 75Mhz
.c3(clkout4), // OUT 100Mhz
// Status and control signals
.areset(~rst_n), // IN .locked(locked) //The signal of PLL normal operation
); // OUT
endmodule
注意:例化的目的是在上一级模块中调用例化的模块完成代码功能,在Verilog 里例化信号的 格式如下:模块名必须和要例化的模块名一致,包括信号名也必须一致,模块不模块之间的连接 信号丌能相互冲突,否则会产生编译错误。

(11) 分配管脚并编译生成 sof 文件(其它开发板的管脚分配参考对应的工程)
hdlcode.com 9 / 12
hdlcode

AX301、AX4010 管脚分配
5 测量 PLL 输出波形
这里需要使用示波器来测量,如果没有示波器,再其他例程中会有 PLL 使用的例程,也能体
现出 PLL 的作用。使用示波器测量 FPGA 的 IO 输出时要特别小心,如果有高电压碰到 FPGA 的 IO
管脚,会损坏 FPGA 芯片。
我们再在 Programmer 里用 JTAG 工具把 SOF 文件下载到 FPGA 中,接下去我们就可以用示波
器来 J2 接口上 Pin3, Pin4, Pin5, Pin6 的输出时钟波形了。
用示波器探头的地线连接到开发板上的地(J2 的 Pin1),示波器探头点中 J2 的 Pin3,示波器测
量到的波形为 25Mhz 的方波:
hdlcode.com 10 / 12
hdlcode

再用示波器探头点中 J2 的 Pin4,示波器测量到的波形为 50Mhz 的方波:

再用示波器探头点中 J2 的 Pin5,示波器测量到的波形为 75Mhz 的方波(因为示波器的带宽原 因,波形有一定程度的失真):
hdlcode.com 11 / 12
hdlcode

再用示波器探头点中 J2 的 Pin6,示波器测量到的波形为 100Mhz 的方波(因为示波器的带宽原 因,波形有一定程度的失真):

hdlcode.com 12 / 12
部分代码展示:
////////////////////////////////////////////////////////////////////////////////// // // // // // Author: meisq // // msq@qq.com // // ALINX(shanghai) Technology Co.,Ltd // // heijin // // WEB: http://www.alinx.cn/ // // BBS: http://www.heijin.org/ // // // ////////////////////////////////////////////////////////////////////////////////// // // // Copyright (c) 2017,ALINX(shanghai) Technology Co.,Ltd // // All rights reserved // // // // This source file may be used and distributed without restriction provided // // that this copyright statement is not removed from the file and that any // // derivative work contains the original copyright notice and the associated // // disclaimer. // // // ////////////////////////////////////////////////////////////////////////////////// //================================================================================ // Revision History: // Date By Revision Change Description //-------------------------------------------------------------------------------- // 2017/7/19 meisq 1.0 Original //*******************************************************************************/
代码文件(付费下载):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » PLL实验设计Verilog代码Quartus AX301开发板
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm