系统:win10
软件编辑和程序下载平台:Quartus II
仿真平台:modelsim
FPGA:EP4CE6
1 PLL IP核简介
1 锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号
的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通
常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,
输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相
环名称的由来。
锁相环可以将50MHz的输入频率转换为最多5种不同的频率, 还可以进行相位的转移
注意: PLL的时钟输入可以来自于时钟专用输入引脚,FPGA内部产生的信号不能驱动PLL。
2 实际工程
1 创建空工程
2 tools->Megawizard Plug(魔法棒) ->Creat
3 进入设置向导
B/S 和 clock界面点击next
2PLL也不需要配置点击next配置第一个输出时钟
配置第2个时钟
配置第三个时钟
配置第四个时钟
添加仿真库 EDA
完成创建
可以查看pll保存路径下的.v文件
然后是例化模块
注意保存到rtl文件夹中
module ip_pll(
input sys_clk,
input sys_rst_n,
output clk_100m,
output clk_100m_180deg,
output clk_50m,
output clk_25m
);
wire locked;
wire rst_n;
assign rst_n = sys_rst_n & locked;
pll_clk u_pll_clk (
.areset (!sys_rst_n),
.inclk0 (sys_clk),
.c0 (clk_100m),
.c1 (clk_100m_180deg),
.c2 (clk_50m),
.c3 (clk_25m),
.locked (locked)
);
进行自动仿真设置,
仿真文件配置
`timescale 1 ns/ 1 ns
module ip_pll_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg sys_clk;
reg sys_rst_n;
// wires
wire clk_25m;
wire clk_50m;
wire clk_100m;
wire clk_100m_180deg;
// assign statements (if any)
ip_pll i1 (
// port map - connection between master ports and signals/registers
.clk_25m(clk_25m),
.clk_50m(clk_50m),
.clk_100m(clk_100m),
.clk_100m_180deg(clk_100m_180deg),
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n)
);
initial
begin
sys_clk = 1'b0;
sys_rst_n = 1'b0;
#20 sys_rst_n = 1'b1; //延时100ns 复位信号拉高
#2000 $stop;
end
always #10 sys_clk = ~sys_clk; //延时10ns反转
endmodule
最终仿真图