IP核——PLL/MMCM的使用
一、实验任务
本节实验任务是使用 Zynq 开发板输出 4 个不同时钟频率或相位的时钟,并在 Vivado 中进行仿真以验
证结果,最后生成比特流文件并将下载到开发板上,使用示波器来测量时钟的频率。
二、程序设计
- 了解FPGA的时钟资源
- 了解MMCM/PLL
设计文件
module ip_clk_wiz (
input sys_clk,
input sys_rst_n,
output clk_100m ,
output clk_100m_180 ,
output clk_50m ,
output clk_25m ,
output locked
);
clk_wiz_0 u_clk_wiz_0 (
// Clock out ports
.clk_out1(clk_100m ), // output clk_out1
.clk_out2(clk_100m_180 ), // output clk_out2
.clk_out3(clk_50m ), // output clk_out3
.clk_out4(clk_25m ), // 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文件
module tb_ip_clk_wiz ();
//激励信号一般定义为 reg型
reg sys_clk;
reg sys_rst_n;
wire clk_100m;
wire clk_100m_180;
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_wiz u_ip_clk_wiz (
.sys_clk (sys_clk ),
.sys_rst_n (sys_rst_n ),
.clk_100m (clk_100m ),
.clk_100m_180(clk_100m_180),
.clk_50m (clk_50m ),
.clk_25m (clk_25m ),
.locked (locked )
);
endmodule