当前位置: 首页 > news >正文

Vivado下PLL实验

文章目录

  • 前言
  • 一、CMT(时钟管理单元)
    • 1、CMT 简介
    • 2、FPGA CMT 框图
    • 3、MMCM 框图
    • 4、PLL 框图
  • 二、创建工程
    • 1、创建工程
    • 2、PLL IP 核配置
    • 3、进行例化
  • 三、进行仿真
    • 1、创建仿真文件
    • 2、进行仿真设置
    • 3、进行行为级仿真
  • 四、硬件验证
    • 1、引脚绑定
    • 2、生成比特流文件
    • 3、验证
  • 五、资源自取


前言

本节介绍一下赛灵思锁相环的一个使用方法,我手头的 AC7020 fpga 开发板上面有一个 50MHz 的晶振连接在 PL 端,晶振输出链接到 FPGA 的全局时钟(MRCC),这个 CLK 可以用来驱动 FPGA 内的用户逻辑电路,该时钟源的原理图如图所示:
在这里插入图片描述
但是在我们实际应用当中呢我们可能想要使用特定大小的频率,比如 25MHz 或者 100MHz,那么我们可以使用赛灵思的锁相环的 IP 实现它的时钟分频或者倍频。


一、CMT(时钟管理单元)

1、CMT 简介

Xilinx7 系列器件中的时钟资源包含了CMT(全称 Clock Management Tile,即时钟管理单元),每个 CMT 由一个 MMCM(全称 Mixed-Mode Clock Manager,即混合模式时钟管理)和一个 PLL(全称 Phase Locked Loop,即锁相环)组成,

  • MMCM(混合模式时钟管理):是基于 PLL 的新型混合模式时钟管理器,实现了最低的抖动和抖动滤波,为高性能的 FPGA 设计提供更高性能的时钟管理功能。
    • MMCM 在 PLL 的基础上加上了相位动态调整功能,
  • PLL:为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取数据 等。PLL 用于振荡器中的反馈技术。
    • 锁相环拥有强大的性能,可以对输入到 FPGA 的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟;

MMCM 相对 PLL 的优势就是相位可以动态调整,但 PLL 占用的面积更小,而在大部分的设计当中大家使用 MMCM 或者 PLL 来对系统时钟进行分频、倍频和相位偏移都是完全可以的。

2、FPGA CMT 框图

下图为 7 系列 FPGA CMT 的一个简单的结构,最左边是输入的一些时钟源,最右边是输出。
在这里插入图片描述

3、MMCM 框图

下图是 MMCM 的框图,可以看到它包含 8 个相位的拍 + 1 个可变相位拍
在这里插入图片描述

4、PLL 框图

下图是 PLL 的框图,可以看到它只包含 8 个相位的拍
在这里插入图片描述

二、创建工程

1、创建工程

创建一个名字为 pll_test 的工程
在这里插入图片描述

2、PLL IP 核配置

1、点击 IP Catalog,搜索 clock,找到 Clocking Wizard 并双击
在这里插入图片描述
2、在 Clocking Option 下按如下图进行配置

  • Primitive 选择 PLL
  • Input Clock Information 中的主时钟的输入频率填上我们板子晶振频率:50MHz
    在这里插入图片描述

3、在 Output Clocks 下按如下图进行配置,并点击 OK
我们输出 200MHz、100MHz、50MHz、25MHz 这么四路不同频率的时钟
在这里插入图片描述
4、点击生成 Generate
在这里插入图片描述

3、进行例化

1、创建一个名为 pll_test.v 文件
在这里插入图片描述
2、复制例化模板到我们刚创建的 pll_test.v 文件中
在这里插入图片描述
3、对 pll_test.v 文件进行修改,修改之后的代码如下(这里我们只输出 25MHz 信号

`timescale 1ns / 1psmodule pll_test(input sys_clk,  // 50MHzinput rst_n,output clk_out);wire pll_locked;    clk_wiz_0 clk_inst(// Clock out ports.clk_out1(),     // output clk_out1.clk_out2(),     // output clk_out2.clk_out3(),     // output clk_out3.clk_out4(clk_out),     // output clk_out4// Status and control signals.reset(~rst_n), // input reset.locked(pll_locked),       // output locked// Clock in ports.clk_in1(sys_clk));      // input clk_in1  endmodule

三、进行仿真

1、创建仿真文件

创建名为 vtf_pll_test.v 的仿真文件,并进行例化编写 verilog 仿真程序

`timescale 1ns / 1psmodule vtf_pll_test;reg sys_clk;
reg rst_n;
wire clk_out;pll_test pll_inst(.sys_clk    (sys_clk),  // 50MHz.rst_n      (rst_n),.clk_out    (clk_out));initial 
beginsys_clk = 1'b0;rst_n = 1'b0;   // 对于按键来说我们进行的是低电平的一个复位# 100 rst_n = 1'b1;
endalways #10 sys_clk = ~sys_clk;  // 10ns 时钟翻转产生 25MHz 时钟endmodule

在这里插入图片描述

2、进行仿真设置

①、右键 Run Simulation -> Simulation Settings…
在这里插入图片描述
②、设置仿真时间,这里填 200us 即可
在这里插入图片描述

3、进行行为级仿真

①、左键 Run Simulation -> Run Behavioral Simulation
在这里插入图片描述
②、将 vtf_pll_test 下的 pll_inst 下的 clk_inst 的 clk_out1、clk_out2、clk_out3、clk_out_4、reset、locked 拖拽到仿真界面 Name 栏下
在这里插入图片描述
③、点击 Run for 10us,可以看下图结果
在这里插入图片描述

四、硬件验证

1、引脚绑定

1、点击 “Open Elaborated Design”,再打开 Window 下的 I/O Ports
在这里插入图片描述
2、查看原理图
①、T11 -> rst_n,T0 -> clk_out
在这里插入图片描述
②、U18 -> sys_clk
在这里插入图片描述
③、因此分配情况如下:
在这里插入图片描述
④、进行保存
在这里插入图片描述
⑤、生成的 pll.xdc 文件如下图:
在这里插入图片描述

2、生成比特流文件

①、点击 “Generate Bitstream”,直接生成 bit 文件
在这里插入图片描述
出现了如下报错:

[Place 30-172] Sub-optimal placement for a clock-capable IO pin and PLL pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_inst/inst/clk_in1_clk_wiz_0] >

clk_inst/inst/clkin1_ibufg (IBUF.O) is locked to IOB_X0Y15clk_inst/inst/plle2_adv_inst (PLLE2_ADV.CLKIN1) is provisionally placed by clockplacer on PLLE2_ADV_X0Y0The above error could possibly be related to other connected instances. Following is a list of 
all the related clock rules and their respective instances.Clock Rule: rule_pll_bufg
Status: PASS 
Rule Description: A PLL driving a BUFG must be placed on the same half side (top/bottom) of the deviceclk_inst/inst/plle2_adv_inst (PLLE2_ADV.CLKFBOUT) is provisionally placed by clockplacer on PLLE2_ADV_X0Y0and clk_inst/inst/clkf_buf (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y5

在这里插入图片描述
把这条提示加入 XDC 约束文件里面即可,原理就是绕过 PAR 的检查。

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_inst/inst/clk_in1_clk_wiz_0]

在这里插入图片描述
②、选择 Open Hardware Manager 并点击 OK

在这里插入图片描述
③、插上 fpga 仿真器及其电源,选择 Auto Connect
在这里插入图片描述
④、右键 xc7z020_1 -> Program Device
在这里插入图片描述

3、验证

找一个示波器用探头接到 T10 引脚查看输出,可以看到 25MHz 方波信号
在这里插入图片描述

五、资源自取

基于vivado 2017.4 的 pll 测试


我的qq:2442391036,欢迎交流!


相关文章:

Vivado下PLL实验

文章目录 前言一、CMT&#xff08;时钟管理单元&#xff09;1、CMT 简介2、FPGA CMT 框图3、MMCM 框图4、PLL 框图 二、创建工程1、创建工程2、PLL IP 核配置3、进行例化 三、进行仿真1、创建仿真文件2、进行仿真设置3、进行行为级仿真 四、硬件验证1、引脚绑定2、生成比特流文…...

简单理解推挽输出和开漏输出

推挽输出原理图&#xff1a; 特点&#xff1a; 1、INT1时&#xff0c;OUTVDD&#xff1b;INT0时&#xff0c;OUTGND。 2、推挽输出的两种输出状态&#xff0c;一种是PMOS管S级端的电压VDD&#xff0c;一种是NMOS管S端的地GND。 开漏输出原理图&#xff1a; 特点&#xff1a; …...

C++之va_start、vasprintf、va_end应用总结(二百二十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

OpenCV自学笔记十一:形态学操作(一)

目录 1、腐蚀 2、膨胀 3、通用形态学函数 4、开运算 5、闭运算 1、腐蚀 腐蚀&#xff08;Erosion&#xff09;是数字图像处理中的一种形态学操作&#xff0c;用于消除图像中边界附近的细小区域或缩小对象的大小。腐蚀操作通过卷积输入图像与结构元素&#xff08;也称为腐…...

封装全局异常处理

文章目录 1 定义错误码类2 定义业务异常类3 全局异常处理器4 使用5 前端请求效果总结 1 定义错误码类 ​ 可以定义各种错误码枚举&#xff0c;比如业务&#xff0c;系统相关的报错信息 /*** 错误代码* 错误码** author leovany* date 2023/09/23*/ public enum ErrorCode {SU…...

python的requests响应请求,结果乱码,即使设置了response.encoding也没有用的解决方法

一、问题 如图&#xff1a; 一般出现乱码&#xff0c;我们会有三种解决方式&#xff0c;如下但是图中解决了发现还是不行, response.encodingresponse.apparent_encoding通过看网页源码对response.encodingutf8指定编码格式或者直接通过response.content.decode()来获得源码 出…...

PyCharm 手动下载插件

插件模块一直加载失败&#xff0c;报错信息&#xff1a; Marketplace plugins are not loaded. Check the internet connection and refresh. 尝试了以下方法&#xff0c;均告失败&#xff1a; pip 换源Manage Plugin Repositories...HTTP 代理设置...关闭三个防火墙 最后选…...

Gnomon绑定基础(约束 IK 节点)

点约束 方向约束 父约束 目标约束 修改后 对象方向 IK控制柄 直的骨骼&#xff0c;指定IK怎么弯曲 直的骨骼&#xff0c;指定IK怎么弯曲 样条曲线 数学节点 乘除节点 混合节点 注意...

STL常用遍历,查找,算法

目录 1.遍历算法 1.1for_earch 1.2transform 2.常用查找算法 2.1find&#xff0c;返回值是迭代器 2.1.1查找内置数据类型 2.1.2查找自定义数据类型 2.2fin_if 按条件查找元素 2.2.1查找内置的数据类型 2.2.2查找内置数据类型 2.3查找相邻元素adjeacent_find 2.4查找指…...

BCC源码内容概览(1)

接前一篇文章&#xff1a;BCC源码编译和安装 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件&#xff0c;其中一些是同时包含C和Python的单个文件&#xff0c;另一些是.c和.py的成对文件&#xff0c;还有一些是目录。 跟踪&#xff08;Tracing&#xff09; exam…...

mysql限制用户登录失败次数,限制时间

mysql用户登录限制设置 mysql 需要进行用户登录次数限制,当使用密码登录超过 3 次认证链接失败之后,登录锁住一段时间,禁止登录这里使用的 mysql: 8.1.0 这种方式不用重启数据库. 配置: 首先进入到 mysql 命令行:然后需要安装两个插件: 在 mysql 命令行中执行: mysql> INS…...

从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)

上一篇从Arthas的源码引出了Java动态字节码技术&#xff0c;那么这一篇就从几种Java字节码技术出发&#xff0c;看看Arthas是如何通过动态字节码技术做到无侵入的源码增强&#xff1b; Java大部分情况下都是解释执行的&#xff0c;也就是解释.class文件&#xff0c;所以如果我们…...

Ubuntu中安装Anaconda 如何将 路径导入为全局变量

第一步&#xff1a;将你的anaconda 路径复制下来&#xff0c;在终端输入对应路径。 echo export PATH"/home/你的用户名/anaconda3/bin:$PATH" >> ~/.bashrc 第二步&#xff1a;在终端输入下面命令或者重启系统。 source ~/.bashrc 在对应的anaconda安装目…...

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt&#xff0c;并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…...

【LeetCode-简单题】589. N 叉树的前序遍历

文章目录 题目方法一&#xff1a;单循环栈做法方法二&#xff1a;递归 题目 方法一&#xff1a;单循环栈做法 关键在于子节点的入栈顺序&#xff0c;决定了子节点的出栈顺序&#xff0c; 因为是前序遍历 所以压栈顺序先让右边的入栈 依次往左 这样左边的节点会在栈顶 这样下次…...

Linphone3.5.2 ARM RV1109音视频对讲开发记录

Linphone3.5.2 ARM RV1109音视频对讲开发记录 说明 这是一份事后记录&#xff0c;主要记录的几个核心关键点&#xff0c;有可能很多细节没有记上&#xff0c;主要是方便后面自己再找回来! 版本 3.5.2 一些原因选的是这样一个旧的版本&#xff01; 新的开发最好选新一些的版…...

Unity用相机实现的镜子效果

首先登场 场景中的元素 mirror是镜子&#xff0c;挂着我们的脚本&#xff0c;Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小&#xff0c;x是-2&#xff0c;为了反转一下贴图 相机直接可以禁用掉&#xff0c;用…...

计算机网络分类

按照覆盖范围分类 &#xff08;1&#xff09;个域网&#xff1a;通常覆盖范围在1&#xff5e;10m。 &#xff08;2&#xff09;局域网&#xff1a;通常覆盖范围在10m&#xff5e;1km。 &#xff08;3&#xff09;城域网&#xff1a;覆盖范围通常在5&#xff5e;50 km 。 &…...

AI AIgents时代 - (三.) AutoGPT和AgentGPT

前两篇讲解了Agent的原理和组件&#xff0c;这节我将给大家介绍两个agent项目&#xff0c;给出它们的工作原理和区别&#xff0c;并教大家亲手尝试使用 Agents&#x1f389; &#x1f7e2; AutoGPT&#x1f916;️ 我们的老朋友&#xff0c;之前文章也专门写过。AutoGPT 是一…...

Jmeter接口自动化和Python接口自动化,如何选择?

选择Jmeter或Python进行接口自动化测试取决于您的具体需求和环境。以下是一些可以考虑的因素&#xff1a; 1. 语言熟悉度&#xff1a;如果您对Java更熟悉&#xff0c;那么Jmeter可能是更好的选择。而如果您的团队或个人对Python更熟悉&#xff0c;那么Python可能是更好的选择。…...

Sqilte3初步教程

文章目录 安装创建数据库创建和删除表插入行数据 安装 Windows下安装&#xff0c;首先到下载页面&#xff0c;下载Windows安装软件&#xff0c;一般是 sqlite-dll-win32-*.zip sqlite-tools-win32-*.zip下载之后将其内容解压到同一个文件夹下&#xff0c;我把它们都放在了D:\…...

详解Python中的json库

目录 1. json简介2. dumps/loads3. dump/load4. jsonl格式 1. json简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;用于在不同应用程序之间传递数据。它是一种文本格式&#xff0c;易于阅读和编写&#xff0c;同时也易于…...

【Spring Boot】Spring Boot源码解读与原理剖析

这里写目录标题 前言精进Spring Boot首选读物“小册”变“大书”&#xff0c;彻底弄懂Spring Boot全方位配套资源&#xff0c;学不会来找我&#xff01;技术新赛道&#xff0c;2023领先抢跑 前言 承载着作者的厚望&#xff0c;掘金爆火小册同名读物《Spring Boot源码解读与原理…...

C++学习(1)

一、C概述&#xff08;了解&#xff09; C在C语言的基础上添加了面向对象编程和泛型编程的支持 二、helloword程序&#xff08;掌握&#xff09; #define _CET_SECURE_NO_WARNINGS//在开发软件visual studio编译 c文件时, visual studio认为strcpy,scanf等函数不安全的导致报…...

机器人如何有效采摘苹果?

摘要&#xff1a;本文利用动捕数据构建拟人运动模型&#xff0c;对比观察两种苹果采摘模式&#xff0c;并对系统性能进行全面评估&#xff0c;为提高机器人采摘效率提供创新方法。 近期&#xff0c;一项关于苹果采摘机器人的有趣研究—— "Design and evaluation of a rob…...

C# OpenCvSharp Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Open…...

rust数组

一、定义数组 &#xff08;一&#xff09;一维数组 1.指定所有元素 语法格式 let variable_name: [dataType; size] [value1,value2,value3];例如 let arr: [i32; 4] [10,20,30,40];2.指定初始值和长度 所有元素具有相同的值 语法格式 let variable_name: [dataType; siz…...

ubuntu | 安装NVIDIA套件:驱动、CUDA、cuDNN

CUDA 查看支持最高的cuda版本 nvidia-smiCUDA Version:12.2 区官网下在12.2.x最新的版本即可CUDA Toolkit Archive | NVIDIA Developer 下载安装 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo…...

JAVA学习笔记

一、学习要点 java的最大优势就是跨平台&#xff1b; java的三个版本&#xff0c;javaSE标准版本&#xff0c;javaEE企业版本&#xff0c;javaME微型版本&#xff08;用的比较少&#xff09;&#xff1b; JVM(Java Virtual Machine&#xff0c;Java虚拟机)&#xff1b; JRE…...

车载软件架构 —— 持续集成持续交付

车载软件架构 —— 持续集成持续交付 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 对学习而言,学习之后的思考、思考之后的行动、行动之后的改变更重要,如果不盯住内层的改变量,那么在表层投…...

wordpress 获取模板路径/网络销售好做吗

健康检查功能不会更新后端服务器域名解析 我的后端服务器使用动态域名&#xff0c;当动态域名的地址变了之后就会不断出现以下错误&#xff1a; 2013/03/23 16:27:37 [error] 21253#0: check time out with peer: 113.96.37.249:60080 2013/03/23 16:27:37 [error] 21257#0: c…...

wordpress wp config/百度平台我的订单

参考资料&#xff1a;OpenDDS环境搭建-Windows 10_Saint_EK的博客-CSDN博客_opendds环境搭建由于项目中需要使用到OpenDDS&#xff0c;故记录下环境搭建过程。安装环境windows 10 64位已安装 Visual Stdio 2017、Visual Stdio 2019安装步骤总述&#xff1a;需安装Perl、ACETAO、…...

网站开发维护入哪个科目/台州做优化

Lua 数据类型 Lua 是动态类型语言&#xff0c;变量不要类型定义,只需要为变量赋值。 值可以存储在变量中&#xff0c;作为参数传递或结果返回。 Lua 中有 8 个基本类型分别为&#xff1a;nil、boolean、number、string、userdata、function、thread 和 table。 数据类型描述nil…...

公司官网用wordpress/站长工具seo综合查询怎么用

问题&#xff1a; 用reactive对象抽取出的所有属性值的都是非响应式的 解决&#xff1a; 用toRefs可以将一个响应式reactive对象的所有属性值转换为响应式的ref属性。 <template><div id"nav"><h3>{{id}}</h3><h3>{{name}}</h3>…...

权威的网站制作/百度关键词价格

编程的异常处理很重要&#xff0c;当然Sql语句中存储过程的异常处理也很重要&#xff0c;明确的异常提示能够快速的找到问题的根源&#xff0c;节省很多时间…… 编程的异常处理很重要&#xff0c;当然Sql语句中存储过程的异常处理也很重要&#xff0c;明确的异常提示能够快速的…...

科技网站 石家庄/苏州关键词优化排名推广

推荐教材 1、《R语言编程基础》,林智章、张良均 主编,人民邮电出版社。 2、《R语言与数据挖掘》,张良均、谢佳标、杨坦等著,机械工业出版社。 3、 《R语言基础与数据科技应用》,沈刚主编,人民邮电出版社。 4、《R语言商务数据分析实战》,韩宝国、张良均主编,人民邮电出…...