一、前言

clk时钟在FPGA开发中具有举足轻重的作用,不管是串口UART,HDMI还是对各种视频编码芯片的驱动等都用到了clk。最近也在学习FPGA的跨时钟域,因此想着先学习一下FPGA的时钟生成。采用IP核clk_wiz可以直接生成的时钟频率范围最大可到4.687MHz-800MHz,但无法直接生成低频率的时钟,为了解决这个问题,可采用时钟分频的方法间接生成。例如,串口用的最多的一个频率是115200,此时可将该频率倍频至clk_wiz可生成的时钟频率范围内,这里取11.52MHz,然后再对该频率进行一百分频即可得到115200的频率。又如要生成9600的频率,可先倍频至9.6MHz,再将clk_wiz生成的频率进行一千分频即可得到9600的时钟频率。采用这种方法理论可以得到任何频率的时钟,而且误差在10Hz以内。经过实测,生成的115200时钟误差为4Hz,生成的9600时钟误差为2Hz,精度较高。(本文使用的软件为Vivado 2018.3,硬件为ZedBoard(xc7020clg484-1),语言为Verilog。)

二、过程

**1、**首先建立一个空的工程,建立过程这里不详细说明,有需要的小伙伴可以查一下教程。随后在左上角找到Flow Navigator->PROJECT MANAGER->IP Catalog,并左击即可打开导入IP核的窗口。在Search栏输入clk,并选择我们需要到的IP核。如下图所示。

2、①双击上图中的红圈5中的IP核即可进入IP的配置窗口。这一步需要注意几个地方,一个是在界面中Clocking Options->Primitive中的模式选择。MMCM模式的功能比PLL的多一些,而且PLL允许的时钟输出频率范围为6.25MHz-800MHz,MMCM允许的时钟输出频率范围为4.687MHz-800MHz,这里选择MMCM模式;一个是Clocking Options->Input Clock Information,该部分是IP核的输入时钟频率设置,默认即可,为100MHz。

接下来配置时钟输出。界面上找到Output CLocks,该部分就是配置输出时钟频率的窗口,这里输出了一个50MHz时钟,一个11.52MHz时钟(115200进行一百倍频后的频率)和一个9.60MHz时钟(9600进行一千倍频后的频率),其他配置默认即可。界面配置如下图所示。

配置完以上即可,此时可以点击Summary查看相关配置,如下图。随后便可以点击OK完成IP核的配置。在随后弹出的窗口中直接点击Generate即可生成我们所需的IP核clk_wiz。此时可在工程中看到创建的IP核。


3、①接下来就是编写Design Sources。在Sources界面上右击,点击Add Sources进入文件创建界面。

创建一个source文件如下图(因不是本文重点,故不细说)。

到此创建完一个.v文件,用于存放相应的代码。将提供的工程里的…\Use_Clk_Wiz\Use_Clk_Wiz.srcs\sources_1\new\use_clk_wiz.v文件里的代码复制到刚刚创建的文件里即可。
创建一个仿真文件,如下图所示(不是本文重点,故简化)。

到此创建完一个.v仿真文件,用于存放相应的代码。将提供的工程里的…\Use_Clk_Wiz\Use_Clk_Wiz.srcs\sim_1\new\sim_1.v文件里的代码复制到刚刚创建的文件里即可。

**4、**到这一步便可进行仿真了。在左上角找到Flow Navigation->SIMULATION->Run Simulation,并点击,选择Run Behavioral Simulation即可进入仿真界面,如下图。此时将仿真时间改为1秒并进行仿真即可得到波形输出(记得把波形输出窗口缩小才能看到波形脉冲,按Ctrl+滚动鼠标),如下图。


从上面的波形图可以看出,clk_out_1输出了一个50MHz的时钟,clk_out_2输出了一个115196Hz的时钟(与115200相差4Hz,精度较高),clk_out_3输出了一个9631的时钟(与9600相差31Hz,主要是因为clk_wiz输出的是9.631MHz的时钟导致的,这个是IP核的分辨率问题,此时可以调节分频数来得到更为准确的频率,这里我把输出频率设为19.2MHz,进行2006分频,可以得到9602的时钟频率,结果如下图所示)。

三、总结

使用IP核clk_wiz可以直接生成4.687MHz-800MHz的时钟频率,间接生成任意频率的时钟,频率误差可保证在10Hz以内,精度较高,但当产生较低频时,需要编写分频程序,相对来说麻烦,因此下篇博客将使用DDS相应的IP核直接产生任意频率的时钟而不需要分频。本博客对应的Vivado工程链接如下:https://pan.baidu.com/s/1Uo2fhI71jGWuZj7vJdSpgQ,提取码:gt7z。如果有什么问题或建议,欢迎各位读者留言交流讨论。

征战FPGA之使用clk_wiz的IP核获取任意频率时钟相关推荐

  1. Vivado关于dds IP核实现任意频率的正余弦波输出

    Vivado关于dds IP核实现任意频率的正余弦波输出 目录 一.dds IP核的创建与参数配置 1.创建dds IP核 2.参数配置 3.可编程输入设置 4.详细的设置 5.输出频率设置 6.配置 ...

  2. FPGA设计心得(9)基于DDS IP核的任意波形发生器设计

    博文目录 写在前面 正文 设计要求 IP核配置 定制输出数据位宽 定制相位位宽(或频率分辨率) 输出频率 输出正余弦选择以及数据格式 其他设置 电路设计 行为仿真 参考资料 交个朋友 写在前面 数据手 ...

  3. FPGA中如何使用加法器IP核设计累加器

    使用加法器IP核设计累加器 前言 一.顺序累加器设计 二.滑动累加器设计 总结 前言 在之前的一个项目中,我的工程一部分运算中主频达到了400MHz时钟.当时的运算需要用到cnt累加器,但是在最后的综 ...

  4. FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数

    作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学 ...

  5. vivado IP核:ILA、时钟、RAM、FIFO

    ILA vivado工具集成了逻辑分析仪,ILA IP核用于替换外部的逻辑分析仪,添加探针来监控内部信号波形变化. 1)IP Catalog 2)搜索栏可搜索IP核,如创建FIFO.RAM等. 3)搜 ...

  6. 浅谈DDS IP核之频率控制字与相位控制字

    1.概述 本文是用于记录vivado中DDS IP核输出任意频率,与任意相位的关键点,即频率控制字与相位控制字的设置. 2.参考文档 <pg141-dds-compiler> <基于 ...

  7. FPGA之道(14)IP核介绍

    前言 IP核是FPGA开发者的老朋友了,可以这么说,只要是做FPGA开发的,都会利用FPGA的IP核进行开发设计,这不像IC设计,什么都要自己设计,使用IP可以加快产生开发进程. 下面摘自<FP ...

  8. LabVIEW FPGA PCIe开发讲解-7.2节:目前主流的4大Xilinx FPGA PCIe DMA通信IP核讲解

    1.要开发一个带PCIe或者PXIe接口的FPGA板卡出来,除了硬件本身外,最重要的就是FPGA芯片里面的PCIe通信代码编写,俗称下位机FPGA编程:还有中间层的驱动文件编写以及上位机PC端的应用程 ...

  9. 【正点原子FPGA连载】第十九章IP核之双端口RAM实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

最新文章

  1. 什么是外函数,什么是内函数?闭包(Closure)是什么?说说你对闭包(Closure)的理解?
  2. 【数据库范式】 分析题第一范式
  3. poj-1659-Frogs Neighborhood-(图论-是否可图)
  4. Linux6.5图形模式安装,CentOS 6.5弹性云服务器如何安装图形化界面
  5. 完美安装ubuntu
  6. c++语言取整为什么要加0.5_蛋鸡饲料要加石粉,那你知道为什么加?要加什么石粉?我来告诉你...
  7. Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)
  8. (剑指Offer)面试题11:数值的整数次方
  9. java if if else语句_Java if else条件判断语句用法
  10. 计算机应用用英语,计算机应用常用英语:“windows”
  11. Amos简介及安装步骤
  12. SpringBoot启动流程原理+自动装配原理
  13. win10系统迁移后系统重装_win7/win10系统迁移到新SSD硬盘的方法
  14. 修复软件图标不正常显示问题
  15. 星梦小组KTV点歌系统简介
  16. excel 合格率计算方法
  17. 现代循环神经网络 - 序列到序列学习
  18. Visual Studio 2008 项目安装和部署
  19. Java 8 Stream 总结
  20. Labview移位寄存器理解(例子说明)

热门文章

  1. 忠魁互联头条SEO优化:字节跳动打造全新搜索引擎
  2. 中国第一个女程序员——张绮霞
  3. 2010nbsp;网络流行语考试题nbsp;(含答案)
  4. super关键字用法
  5. 使用jquery实现table表格的动态添加行和列
  6. 常见的化学测试有哪些?--CPSIA、ROHS、REACH、FDA检测、加州65
  7. Windows影射模式
  8. signature=1e5c9cadfac910b9cd55ef06301b71df,Vision-based process control in layered manufacturing
  9. Word中Mathtype公式编辑无法打空格解决
  10. Java Service Wrapper 使用经验总结