征战FPGA之使用clk_wiz的IP核获取任意频率时钟
一、前言
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核获取任意频率时钟相关推荐
- Vivado关于dds IP核实现任意频率的正余弦波输出
Vivado关于dds IP核实现任意频率的正余弦波输出 目录 一.dds IP核的创建与参数配置 1.创建dds IP核 2.参数配置 3.可编程输入设置 4.详细的设置 5.输出频率设置 6.配置 ...
- FPGA设计心得(9)基于DDS IP核的任意波形发生器设计
博文目录 写在前面 正文 设计要求 IP核配置 定制输出数据位宽 定制相位位宽(或频率分辨率) 输出频率 输出正余弦选择以及数据格式 其他设置 电路设计 行为仿真 参考资料 交个朋友 写在前面 数据手 ...
- FPGA中如何使用加法器IP核设计累加器
使用加法器IP核设计累加器 前言 一.顺序累加器设计 二.滑动累加器设计 总结 前言 在之前的一个项目中,我的工程一部分运算中主频达到了400MHz时钟.当时的运算需要用到cnt累加器,但是在最后的综 ...
- FPGA中ISE软件调用IP核导入(.coe)文件并绘制正弦函数
作为一个FPGA小白,本人在学习FPGA软件的过程中看到了这个例子,网上也有相关的教程,奈何实在写的不清楚,我自己花了挺久才弄懂,为了在以后学习中少走弯路,把自己学习到的做个教程吧,供同样是小白的同学 ...
- vivado IP核:ILA、时钟、RAM、FIFO
ILA vivado工具集成了逻辑分析仪,ILA IP核用于替换外部的逻辑分析仪,添加探针来监控内部信号波形变化. 1)IP Catalog 2)搜索栏可搜索IP核,如创建FIFO.RAM等. 3)搜 ...
- 浅谈DDS IP核之频率控制字与相位控制字
1.概述 本文是用于记录vivado中DDS IP核输出任意频率,与任意相位的关键点,即频率控制字与相位控制字的设置. 2.参考文档 <pg141-dds-compiler> <基于 ...
- FPGA之道(14)IP核介绍
前言 IP核是FPGA开发者的老朋友了,可以这么说,只要是做FPGA开发的,都会利用FPGA的IP核进行开发设计,这不像IC设计,什么都要自己设计,使用IP可以加快产生开发进程. 下面摘自<FP ...
- LabVIEW FPGA PCIe开发讲解-7.2节:目前主流的4大Xilinx FPGA PCIe DMA通信IP核讲解
1.要开发一个带PCIe或者PXIe接口的FPGA板卡出来,除了硬件本身外,最重要的就是FPGA芯片里面的PCIe通信代码编写,俗称下位机FPGA编程:还有中间层的驱动文件编写以及上位机PC端的应用程 ...
- 【正点原子FPGA连载】第十九章IP核之双端口RAM实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
最新文章
- 什么是外函数,什么是内函数?闭包(Closure)是什么?说说你对闭包(Closure)的理解?
- 【数据库范式】 分析题第一范式
- poj-1659-Frogs Neighborhood-(图论-是否可图)
- Linux6.5图形模式安装,CentOS 6.5弹性云服务器如何安装图形化界面
- 完美安装ubuntu
- c++语言取整为什么要加0.5_蛋鸡饲料要加石粉,那你知道为什么加?要加什么石粉?我来告诉你...
- Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)
- (剑指Offer)面试题11:数值的整数次方
- java if if else语句_Java if else条件判断语句用法
- 计算机应用用英语,计算机应用常用英语:“windows”
- Amos简介及安装步骤
- SpringBoot启动流程原理+自动装配原理
- win10系统迁移后系统重装_win7/win10系统迁移到新SSD硬盘的方法
- 修复软件图标不正常显示问题
- 星梦小组KTV点歌系统简介
- excel 合格率计算方法
- 现代循环神经网络 - 序列到序列学习
- Visual Studio 2008 项目安装和部署
- Java 8 Stream 总结
- Labview移位寄存器理解(例子说明)
热门文章
- 忠魁互联头条SEO优化:字节跳动打造全新搜索引擎
- 中国第一个女程序员——张绮霞
- 2010nbsp;网络流行语考试题nbsp;(含答案)
- super关键字用法
- 使用jquery实现table表格的动态添加行和列
- 常见的化学测试有哪些?--CPSIA、ROHS、REACH、FDA检测、加州65
- Windows影射模式
- signature=1e5c9cadfac910b9cd55ef06301b71df,Vision-based process control in layered manufacturing
- Word中Mathtype公式编辑无法打空格解决
- Java Service Wrapper 使用经验总结