本次我们来学习FPGA的PLL,PLL(Phase Locked Loop)俗称锁相环,在很多的单片机中都有,它主要的目的是为了实现倍频和分频,因为我们系统运行的主频率是固定的,如果我们需要其他的频率,那么就需要超频或者降频,此时就需要锁相环实现。 FPGA的PLL是一个硬件模块,是十分重要的资源。本次博主使用的cyclone IV有四个PLL,为外部的端口提供高速的通信时钟。从数据手册中得到PLL的原理图如下
从上图可以看出,每一个PLL可以输出5路信号,信号的频率取决于C0~C5改变取值即可实现输出频率的改变。本次实验实现PLL输出的不同时钟通过FPGA的IO输出。
首先建立工程pll_test,然后我们需要进行pll的设置,点击IP catalog图标,即下图最右边的那个,搜索pll,点击ALTPLL后进行设置,起一个名字pll.v之后点击确定。
在弹出的设置中,选择输入时钟为50MHz,如下所示。
在Output clocks中选择输出的时钟为25MHz, 使能时钟1,选择50MHz,时钟2选择时钟75MHz,时钟3选择100MHz,如下所示。
新建一个pll_test.v文件,例化PLL ip ,程序如下所示。
`timescale 1ns/1ps
module pll_test(
input clk,
input rst,
output clkout1,
output clkout2,
output clkout3,
output clkout4
);
wire locked;
pll pll_inst(
.inclk0(clk),
.c0(clkout1),
.c1(clkout2),
.c2(clkout3),
.c3(clkout4),
.areset(~rst),
.locked(locked)
);
endmodule
选择对应的端口之后编译再进行下载程序,即可实验成功。
来源:CSDN
作者:Always Sun
链接:https://blog.csdn.net/qq_34020487/article/details/104828475