一、简介
- PLL(Phase-locked loop)即锁相环。是 FPGA 中的重要资源。由于一个复杂的 FPGA 系统往往需要多个不同频率,相位的时钟信号。所以,一个 FPGA 芯片中 PLL 的数量是衡量 FPGA 芯片能力的重要指标。FPGA 的设计中,时钟系统的 FPGA 高速的设计极其重要,一个低抖动, 低延迟的系统时钟会增加 FPGA 设计的成功率。
- 数字锁相环(PLL):主要用于频率综合。使用一个 PLL 可以从一个输入时钟信号生成多个时钟
信号。 - List item
二、PLL IP Core调用 以Vivado软件操作为例
1、新建一个 工程,点击 Project Manager 界面下的 IP Catalog。 2、在IP Catalog中搜索clock,打开下面的 Clocking Wizard,双击打开配置界面。 配置界面 3、 Clocking Wizard 的名字可以修改, 这里我不做修改。在第一个界面 Clocking Options 里, 我们选择 PLL 资源,输入的时钟频率为 50Mhz。 4、 在 Output Clocks 界面里选择时钟输出,这里我选择 clk_out1~clk_out4 四个时钟的输出,频率分别为 100Mhz, 75Mhz, 50Mhz, 25Mhz。这里还可以设置时钟输出的相位,我们不做设置,保留默认相位,点击 OK 完成,(我们可以在左侧预览) 5、在弹出的对话框中点击 Generate 按钮生成 PLL IP 的设计文件。 6、这时一个 clk_wiz_0.xci 的 IP 会自动添加到我们的 项目中, 可以双击它来修改这个 IP 的配置 选择 IP Sources 这页,然后双击打开 clk_wiz_0.veo 文件,这个文件里提供了这个 IP 的实例化模板。我们只需要把框框的中内容拷贝到我们 verilog 程序中,对 IP 进行实例化。 7、下面新建一个顶层文件,并将pll 实例化模板copy进去,做一些修改 代码如下:
`timescale 1ns / 1ps
module pll_test(
input sys_clk,
input rst_n,
output clk_out_100M,
output clk_out_75M,
output clk_out_50M,
output clk_out_25M
);
wire locked;
clk_wiz_0 clk_wiz_0_inst
(
.clk_in1(sys_clk),
.clk_out1(clk_out_100M),
.clk_out2(clk_out_75M),
.clk_out3(clk_out_50M),
.clk_out4(clk_out_25M),
.reset(~rst_n),
.locked(locked));
endmodule
仿真文件如下:
`timescale 1ns / 1ps
module vtf_pll_test;
reg sys_clk;
reg rst_n;
wire clk_out;
pll_test uut (
.sys_clk(sys_clk),
.rst_n(rst_n),
.clk_out_100M(clk_out_100M),
.clk_out_75M(clk_out_75M),
.clk_out_50M(clk_out_50M),
.clk_out_25M(clk_out_25M)
);
initial begin
sys_clk = 0;
rst_n = 0;
#100;
rst_n = 1;
#20000;
end
always #10 sys_clk = ~ sys_clk;
endmodule
仿真
结果:
有问题可以留言私信,看到必回
|