一、创建一个新的工程
不会新建工程的可以看一下我之前的博客,这里只展示一些简略的新建工程过程。
新建好工程后的页面
二、添加ip核
本文配置了四个时钟输出,分别是clk0(100Mhz),clk1(100Mhz,180°相位延迟),clk2(50Mhz),clk4(25Mhz)
点击ok直接生成
点击generate
看到如图所示界面代表IP核已经生成成功了
三、测试IP核
点击“+”新建design source文件
将IP核的.veo文件的代码复制到新建的.v文件,并写好代码(.v文件代码如下所示)
`timescale 1ns / 1ps
module ip_clk_wiz(
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 reset
.locked(locked), // output locked
// Clock in ports
.clk_in1(sys_clk)); // input clk_in1
endmodule
编写仿真文件
首先还是点击加号,创建simulation sources
仿真文件代码如下所示。文章来源:https://www.toymoban.com/news/detail-501766.html
`timescale 1ns / 1ps
module tb_ip_clk_wiz();
reg sys_clk;
reg sys_rst_n;
wire clk_100m;
wire clk_100m_180de;
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 ip_clk_wiz_u(
.sys_clk (sys_clk),
.sys_rst_n (sys_rst_n),
.clk_out1 (clk_100m),
.clk_out2 (clk_100m_180de),
.clk_out3 (clk_50m),
.clk_out4 (clk_25m),
.locked (locked)
);
endmodule
点击run simulation,选中第一个行为级仿真,观察波形
波形正确
文章来源地址https://www.toymoban.com/news/detail-501766.html
到了这里,关于手把手教你在Vivado创建一个PLL或MMCM的IP核(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!