Vivado 时钟IP核的使用
简介
在Xilinx的FPGA中,CMT包含PLL和MMCM。
PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。
MMCM(混合模式时钟管理):是基于PLL的新型混合模式时钟管理器,实现了最低的抖动和抖动滤波,为高性能的FPGA设计提供更高性能的时钟管理功能。
时钟IP核的配置
IP核名称为Clocking Wizard,直接在IP Catalog中搜索即可。
要注意更改输入时钟的频率,以及第二页末端reset的有效电平
配置好之后点击OK再点击生成即可
时钟IP核的使用
等待生成完成之后可以在IP Sources中找到.veo文件
该文件中生成了例化模板,可以直接拷贝使用
顶层文件代码示例:
`timescale 1ns / 1ps
module ip_clk(
input sys_clk ,
input sys_rst_n ,
output clk_out1 ,
output clk_out2 ,
output clk_out3 ,
output clk_out4 ,
output locked
);
clk_wiz_0 instance_name
(
// Clock out ports
.clk_out1(clk_out1), // output clk_out1
.clk_out2(clk_out2), // output clk_out2
.clk_out3(clk_out3), // output clk_out3
.clk_out4(clk_out4), // output clk_out4
// Status and control signals
.resetn(sys_rst_n), // input resetn
.locked(locked), // output locked
// Clock in ports
.clk_in1(sys_clk)); // input clk_in1
endmodule
tb文件编写:
`timescale 1ns / 1ps
module tb_ip_clk(
);
reg sys_clk ;
reg sys_rst_n ;
wire clk_100M ;
wire clk_100M_n ;
wire clk_50M ;
wire clk_25M ;
wire locked ;
initial begin
sys_clk=1'b0;
sys_rst_n=1'b0;
#200
sys_rst_n=1'b1;
end
always #10 sys_clk=~sys_clk;
ip_clk ip_clk_u(
.sys_clk (sys_clk) ,
.sys_rst_n (sys_rst_n) ,
.clk_out1 (clk_100M) ,
.clk_out2 (clk_100M_n) ,
.clk_out3 (clk_50M) ,
.clk_out4 (clk_25M) ,
.locked (locked)
);
endmodule
仿真波形: