【Vivado】clock ip核的使用

这篇具有很好参考价值的文章主要介绍了【Vivado】clock ip核的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、绪论

​ Clock在时序逻辑的设计中是不可或缺的,同时对于Clock的编写和优化也能体现一个FPGA工程师的技术水平,Clock的分频,倍频在设计项目时都有可能用到,对于分频,可以通过代码的方式进行实现,而倍频,就要用到我们今天的主角——Clock IP核。熟练使用Clock IP核是学习FPGA的基础,需要熟练掌握。

2、简介

专业词汇解释:

PLL(Phase Locked Loop) :为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。其具有时钟倍频、分频、相位偏移和可编程占空比的功能。

CMT(Clock Management Tile):时钟管理器,包含了DCM/PLL/DCM等。

MMCM(Mixed Mode Clock Manager):混合模式时钟管理器, MMCM 功能是 PLL 的超集 ,在PLL的基础上加上了相位动态调整功能,因为PLL是模块电路,而动态调相是数字电路,所以叫Mixed Mode。MMCM是在Virtex-6中被引入的,而且Virtex-6中也只有MMCM。

DCM:在较早的FPGA中使用,比如Sparten-3和Virtex-4,后面的器件不再使用了。在Virtex-4中,CMT包括一个PLL和两个DCM。DCM的核心是DLL,即Delay Locked Loop,它是一个数字模块,可以产生不同相位的时钟、分频、倍频、相位动态调整等,但精度有限。

*笔者在使用Xilinx Spartan_6系列的fpga时的CMT是由DCM与PLL组成,而目前Xilinx 7 系列器件中的每个CMT由一个MMCM和一个PLL组成。

​ Xilinx 7 系列器件中具有时钟管理单元 CMT 时钟资源, xc7a100t 芯片内部有 6 个 CMT, 为设备提供强大的系统时钟管理以及高速 I/O 通信的能力。 时钟管理单元 CMT 的总体框图如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ 前面已经介绍了在Xilinx 7系列的芯片中,一个CMT由一个MMCM和一个PLL组成。下面对MMCM和PLL进行对比:

vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ 由两张图我们可以直观看到MMCM和PLL的组成结构基本相同。
​ MMCM( Mixed-Mode Clock Manager)混合模式时钟管理器, MMCM 功能是 PLL 的超集,它是在 PLL的基础上加了相位动态调整功能, PLL 是模拟的,而动态调相是数字电路,所以称为混合模式。其相对于 PLL 的优势是相位可以动态调整,占用面积较大。 MMCM 主要用于驱动器件逻辑( CLB、 DSP、 RAM 等)的时钟。 PLL 是和 IO 资源紧密绑定的,占用面积小,常用于为内存接口生成所需的时钟信号,但也具有与其他器件逻辑的连接,因此如果需要额外的功能,它们可以用作额外的时钟资源。

​ Xilinx 提供了用于实现时钟功能的 IP 核 Clocking Wizard,该 IP 核能够根据用户的时钟需求自动配置器件内部的 CMT,以实现用户的时钟需求。在这里我们主要讲解的是如何使用该 IP 核,有关该 IP 核的更详细介绍,可以参阅 Xilinx 官方的手册文档“PG065, Clocking Wizard v5.2 LogiCORE IP Product Guide”(点击跳转)。

3、实验目的

开发平台:vivado2020.1

开发板:Xilinx Artix-7 xc7a100tfgg676-2

目的:使用开发板输出 4 个不同时钟频率或相位的时钟, 并在 Vivado 中进行仿真以验证结果

4、程序设计

1、先建立一个ip_clock的工程

2、创建clock ip核,在 Vivado 软件的左侧“Flow Navigator”栏中单击“IP Catalog”,
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

然后在下图中搜索“clock”,如下图所示,双击“ Clocking Wizard ”后弹出 IP 核的配置界面。
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

3、配置 IP 核
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ 接下来切换至“ Output Clocks”选项卡,在“ Output Clock”选项卡中,勾选前 4 个时钟,并且将其“ Output Freq(MHz)”分别设置为 100、 100、 50、 25,注意,第 2 个 100MHz 时钟的相移“Phase(degrees)”一栏要设置为 180。其他设置保持默认即可,如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ “ Port Renaming”选项卡主要是对一些控制信号的重命名。这里我们只用到了锁定指示 locked 信号,其名称保持默认即可,如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ “ MMCM Setting”选项卡展示了对整个 MMCM/PLL 的最终配置参数,这些参数都是根据之前用户输入的时钟需求由 Vivado 来自动配置, Vivado 已经对参数进行了最优的配置,在绝大多数情况下都不需要用户对它们进行更改,也不建议更改,所以这一步保持默认即可,如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

​ 最后的“ Summary”选项卡是对前面所有配置的一个总结,在这里我们直接点击“OK”按钮即可,如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

接着就弹出了“Generate Output Products”窗口,我们直接点击“Generate”即可,如下图所示:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

等待一会儿,窗口可以看见生成的IP核,此处介绍如何查看ip核的源文件和模板文件。如下图所示,点击此处>可查看源文件。
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

然后点击下方"IP Sources" ,如图所示,便是模板文件。
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

模板文件里有例化 IP 核的模板,如下所示:

 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(resetn), // input resetn
    .locked(locked),       // output locked
   // Clock in ports
    .clk_in1(clk_in1));      // input clk_in1

4、编写程序

接下来创建一个新的设计文件,命名为clk_wiz.v,代码如下:

module 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

它将 IP 核例化后,加上了输入输出,其原理图如下:
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件

5、仿真测试

设计完成之后,需要进行仿真,查看结果是否符合预取,创建一个“tb_clk_wiz.v”的仿真文件,仿真代码编写如下:

`timescale 1ns / 1ps

module tb_clk_wiz();
reg  sys_clk;
reg  sys_rst_n;

wire clk_out1;
wire clk_out2;
wire clk_out3;
wire clk_out4;
wire locked;

clk_wiz clk_wiz_inst(
   .sys_clk(sys_clk),
   .sys_rst_n(sys_rst_n),
   .clk_out1(clk_out1),
   .clk_out2(clk_out2),
   .clk_out3(clk_out3),
   .clk_out4(clk_out4),
   .locked(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;

endmodule

仿真结果如下图所示,结果符合预期。
vivado时钟ip核调用,vivado ip核,fpga开发,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-795128.html

到了这里,关于【Vivado】clock ip核的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado中VIO IP核的使用

      Vivado中的VIO(Virtual Input/Output) IP核是一种用于调试和测试FPGA设计的IP核。它允许设计者通过使用JTAG接口读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与FPGA内部寄存器进行交互。通过使用

    2024年02月06日
    浏览(87)
  • IP核的使用之FIFO(Vivado)

    在开始介绍 FIFO IP核 之前,我们先设想这么一个 实际场景 :FPGA内部有个16位计数器,以50MHz的频率计数,此时,我们希望随机截取计数器连续256个计数周期的值发到电脑上进行分析处理。用串口发送到电脑上。( 数据产生速率大于数据使用速率 ),此时需要使用存储器先将

    2024年01月18日
    浏览(48)
  • Vivado PLL锁相环 IP核的使用

    本文纯属学习笔记,使用的FPGA是Xilinx的XC7A35TFGG484-1,使用Vivado调用PLL IP核来实现倍频效果,使50Mhz的晶振时钟源倍频到100Mhz、200Mhz和400Mhz。 Clocking Options 1.MMCM与PLL相比,PLL的时钟质量更高,所以对时钟质量要求较高的时候需要选择PLL,但是一般可以不用纠结。 2.修改Input Fre

    2024年02月08日
    浏览(40)
  • vivado DDS IP核的使用及仿真

    参考:https://blog.csdn.net/weixin_45303812/article/details/123704440 新人第一次写文档,有错误的地方请大佬指点。 文档:Xilinx官网搜DDS Configuration 可配置参数 : 1.Configuration Options,有如下三种模式 Phase Generator and SIN/COS LUT (DDS): 相位和sin和cos的数据都是IP核自己产生 Phase Generator only:

    2023年04月15日
    浏览(48)
  • VIVADO中FFT核的使用(FPGA计算FFT和IFFT)

             关于这方面的内容,有些文章已经写的很好很详细了。不过我在使用的过程中,还是踩了一些坑,我在这里详细的介绍了IP核每一个设置的作用,然后写了个fft计算和ifft计算的环路的测试程序。应该可以帮大家学会使用fft的同时,也对它有个较为全面的理解。

    2024年01月18日
    浏览(39)
  • 如何使用Synplify综合vivado带IP核的工程

    下面的说法来自网上: 综合时间更好,综合出来所使用的逻辑更少 综合的时序更好 在IC设计中,使用Synplify综合+Vivado组合比较多。synplify 用于生成网表,然后将网表倒入FPGA中,进行布局布线等操作。 Libero集成开发环境中Synplify应用与提高-Microsemi(Actel) FPGA开发工具——周

    2024年02月11日
    浏览(51)
  • 基于FPGA的数字时钟(使用vivado)

    使用两个四位数码管,可以实现时钟分钟秒钟显示,高两位设置不显示。 换了一个新开发板,nexys4ddr,资料不多,最多使用的就是一本英文Reference Manual。 其实是老师觉得我计数器还差点,得再练练。 Digilent NEXYS4DDR Vivado2018.3 60进制秒钟计数然后进1分钟 60进制分钟计数然后进

    2024年02月03日
    浏览(44)
  • FPGA原理与结构——时钟IP核的使用与测试

    系列文章目录:FPGA原理与结构(0)——目录与传送门         本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考: FPGA原理与结构——时钟IP核原理学习 https:/

    2024年02月09日
    浏览(38)
  • 【Lattice FPGA 开发】IP核的调用

    本文介绍Diamond开发软件进行IP核调用与对应官方文档查找方法。 Diamond软件中,根据所选目标FPGA器件型号的不同,调用IP核的方式不同。共两种:一种是“IPexpress”;另一种是“Clarity Designer”。 IPexpress调用IP核: Clarity Designer调用IP核: 接下来分别对两种情况的调用进行说明

    2024年04月12日
    浏览(49)
  • FPGA原理与结构(16)——时钟IP核的使用与测试

    系列文章目录:FPGA原理与结构(0)——目录与传送门         本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考: FPGA原理与结构——时钟IP核原理学习 https:/

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包