时钟资源介绍
本文以Xilinx ZYNQ为例对FPGA的时钟资源进行介绍。
时钟资源主要有以下几方面:
全局时钟(Global clocks)为整个设备提供时钟;
区域时钟(Regional clocks)为一个区域(和相邻区域)的时钟提供时钟;
IO 时钟(IO clocks)为 IO 结构提供时钟;
时钟管理模块(Clock management tiles)提升时钟质量,如 MMCM(可动态调整)和 PLL。
全局时钟Clock Backbone是全局贯穿的主干道,借助HROW的道路可以为所有的同步原件提供时钟,也将整片FPGA分为左右两部分,局部时钟Clock Region又分为不同的区域,每个区域被HROW分为上下两部分。将上图中阴影部分单独拿出来,如下图:
BUFG:全局时钟缓冲器;BUFH:水平时钟缓冲器;BUFIO:IO时钟缓冲器;BUFR:区域时钟缓冲器;BUFMR(一般用不到);MMCM和PLL都是为了提高时钟质量,但MMCM可以动态调整。
创建时钟IP核
先创建一个工程,并在设计文件中对端口做定义:
module ip_clk_wiz(
input sys_clk,
input sys_rst_n
);
endmodule
1) IP Catalog;
2)搜索栏clock,并选择Clocking Wizard双击打开;
3)时钟命名;选择MMCM/PLL;选择平衡性能;选择输入频率(与外部晶振对应)
4)选择输出时钟个数与频率/相位;
5)根据芯片高/低电平复位有效,选择对应的复位类型。
创建成功:
从.veo文件复制IP模板,粘到设计文件中并将端口连接:
`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 resetn
.locked(locked), // output locked
// Clock in ports
.clk_in1(sys_clk)); // input clk_in1
endmodule
TB:
`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
跑仿真,得到波形图如下图:
文章来源:https://www.toymoban.com/news/detail-431880.html
文章来源地址https://www.toymoban.com/news/detail-431880.html
到了这里,关于Vivado时钟IP核的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!