一、PLL简介
PLL (Phase Locked Loop),锁相环,是一种反馈控制电路。其功能主要是时钟倍频、分频、相位偏移和可编程占空比。
二、Vivado软件PLL创建
1、新建pll_test工程,点击Project Manager界面下的IP Catalog。
2、再在IP Catalog界面里搜索框搜索Clocking,找到下面的Clocking Wizard,双击打开配置界面。
3、进入配置界面。默认这个Clocking Wizard的名字为clk_wiz_0, 可以修改。在第一个界面Clocking Options里,输入的时钟名字可以修改。输入的时钟频率也可以修改,这里我设置为20Mhz。
4、在Output Clocks界面里可以选择clk_out1~clk_out4四个时钟的输出,这里我只选择一个时钟clk_out1,频率我设置为50Mhz。这里还可以设置时钟输出的相位,我没有设置。
5、在弹出的对话框中点击Generate按钮生成PLL IP的设计文件。
pll_test工程中自动生成一个clk_wiz_0.xci,双击可以修改IP的配置。
三、pll ip实例化
1、在IP Sources界面找到clk_wiz_0.veo文件,文件中是IP的例化模板。我们只需要将文件中内容复制粘贴到我们verilog程序中,对IP进行实例化。
2、我们在创建一个顶层设计文件来实例化这个PLL IP, 编写pll_test.v代码如下。注意PLL的复位是高电平有效,也就是高电平时一直在复位状态,PLL不会工作。而rst_n是低电平复位,因此需要反向连接到PLL的复位。
`timescale 1ns/1ps
module pll_test(
input clk ,//20m系统时钟
input rst_n ,
output clk_out//pll clk output
);
//参数定义
wire locked;
//ip核例化
clk_wiz_0 instance_name
(
// Clock out ports
.clk_out1 (clk_out ), // output clk_out1
// Status and control signals
.reset (~rst_n ), // input reset
.locked (locked ), // output locked
// Clock in ports
.clk_in1 (clk )
);
endmodule
3、保存工程后,pll_test自动成为了top文件,clk_wiz_0成为Pll_test文件的子模块。
四、对实例化顶层文件仿真
1、我们在创建一个仿真激励文件来仿真这个pll_test顶层文件, 编写pll_test_tb.v代码如下。
`timescale 1ns / 1ps
//
// Module Name: _led_test_tb
//
module pll_test_tb;
// Inputs
reg sys_clk;
reg rst_n;
// Outputs
wire clk_out;
// Instantiate the Unit Under Test (UUT)
pll_test u_pll_test (
.clk(sys_clk), //system clock 20Mhz on board
.rst_n(rst_n), //reset ,low active
.clk_out(clk_out), //pll clock output 50Mhz
);
initial begin
// Initialize Inputs
sys_clk = 0;
rst_n = 0;
// Wait 100 ns for global reset to finish
#100;
rst_n = 1;
// Add stimulus here
#20000;
// $stop;
end
always #10 sys_clk = ~ sys_clk; //5ns一个周期,产生50MHz时钟源
endmodule
2、运行后PLL的lock信号会变高,说明PLL IP锁相环已经初始化完成。clk_out有时钟信号输出,输出的频率为输入时钟频率20Mhz的5/2, 为50Mhz。文章来源:https://www.toymoban.com/news/detail-460557.html
文章来源地址https://www.toymoban.com/news/detail-460557.html
到了这里,关于【FPGA】Vivado软件 PLL IP核使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!