Vivado下PLL实验

news2024/9/28 1:26:35

文章目录

  • 前言
  • 一、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 / 1ps

module pll_test(
    input sys_clk,  // 50MHz
    input 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 / 1ps

module 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 
begin
    sys_clk = 1'b0;
    rst_n = 1'b0;   // 对于按键来说我们进行的是低电平的一个复位
    # 100 rst_n = 1'b1;
end

always #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_X0Y15
 clk_inst/inst/plle2_adv_inst (PLLE2_ADV.CLKIN1) is provisionally placed by clockplacer on PLLE2_ADV_X0Y0

The 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 device
 clk_inst/inst/plle2_adv_inst (PLLE2_ADV.CLKFBOUT) is provisionally placed by clockplacer on PLLE2_ADV_X0Y0
 and 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,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT-day4

画一个时钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> #include <QPainter> #include <QTimer> #include <QTime>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } Q…

红队打靶:Fowsniff打靶思路详解(vulnhub)

目录 写在开头 第一步&#xff1a;主机发现和端口扫描 第二步&#xff1a;Web渗透 第三步&#xff1a;pop3服务器渗透 第四步&#xff1a;获取初始立足点 第五步&#xff1a;ssh登陆的banner脚本提权 总结与思考 写在开头 本篇博客在自己的理解之上根据大佬红队笔记的…

初学phar反序列化

以下内容参考大佬博客&#xff1a;PHP Phar反序列化浅学习 - 跳跳糖 首先了解phar是什么东东 Phar是PHP的压缩文档&#xff0c;是PHP中类似于JAR的一种打包文件。它可以把多个文件存放至同一个文件中&#xff0c;无需解压&#xff0c;PHP就可以进行访问并执行内部语句。 默认开…

性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具&#xff0c;JConsole使用Java虚拟机(Java VM)&#xff0c;提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台&#xff0c;标准版(Java SE平台)6&#xff0c;JConsole的已经更新到目前的外观…

Windows平台Qt6中UTF8与GBK文本编码互相转换、理解文本编码本质

快速答案 UTF8转GBK QString utf8_str"中UTF文"; std::string gbk_str(utf8_str.toLocal8Bit().data());GBK转UTF8 std::string gbk_str_given_by_somewhere"中GBK文"; QString utf8_strQString::fromLocal8Bit(gbk_str_given_by_somewhere.data());正文…

20-SpringCloudAlibaba-3

七 分布式事物处理 1 认识本地事物 什么是事物 事务就是针对数据库的一组操作&#xff0c;它可以由一条或多条SQL语句组成&#xff0c;同一个事务的操作具备同步的特点&#xff0c;事务中的语句要么都执行&#xff0c;要么都不执行。 举个栗子&#xff1a; 你去小卖铺买东西&…

《已解决 Bug TypeError: Cannot read property ‘props‘ of undefined (React)》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

2023_Spark_实验十一:RDD高级算子操作

//checkpoint &#xff1a;sc.setCheckpointDir("hdfs://Master:9000/ck") // 设置检查点val rdd sc.textFile("hdfs://Master:9000/input/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(__) // 执行wordcount任务的转换rdd.checkp…

Windows虚拟机访问网页证书错误问题

问题&#xff1a; 显示证书错误&#xff0c;图片加载不出来&#xff0c;看着很别扭&#xff0c;如下&#xff1a; 方法: 1.先导出可用的证书&#xff1a; 可以将自己正常环境的证书导出来&#xff08;google浏览器为例&#xff09; 浏览器右上角三个竖点——设置——隐私设…

阿里云服务器开放的一个新端口,重启防火墙,端口未启动

问题&#xff1a; 阿里云网页开放的一个新端口后&#xff0c;重启防火墙&#xff0c;端口未启动&#xff0c;之前配置的也都停止了。 解决&#xff1a; 原因可能是阿里的服务控制了&#xff0c;只能一个个端口开启了。把新配置新端口也单独启用。 开启80端口指令 firewall-cm…

mysql启动不了问题

突然昨天早上起来&#xff0c;就发生了这一幕&#xff1a; 启动MySQL服务时出现&#xff02;mysql本地计算机上的MySQL服务启动后停止。某些在未由其他服务或程序使用时将自动停止&#xff02; 几经周折&#xff0c;终于在一个大佬的贴下求得了启动成功的经验&#xff0c;其中我…

Qt---day4---9.20

qt完成时钟&#xff1a; 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QtDebug> #include <QPainter> #include <QTimerEvent> #include <QTime>QT_BEGIN_NAMESPACE names…

VirtualBox安装RockyLinux并使用ssh访问

文章目录 1 前言2 安装 Rocky Linux2.1 新建虚拟机2.2 设置虚拟机内存和CPU数量2.3 设置虚拟机硬盘大小2.4 完成设置2.5 启动虚拟机2.6 Rocky Linux 的安装2.6.1 直接回车2.6.2 等待 check 完成2.6.3 设置语言2.6.4 设置最小化安装2.6.5 去除分区设置的感叹号2.6.7 设置 root 账…

Hive 优化建议与策略

目录 ​编辑 一、Hive优化总体思想 二、具体优化措施、策略 2.1 分析问题得手段 2.2 Hive的抓取策略 2.2.1 策略设置 2.2.2 策略对比效果 2.3 Hive本地模式 2.3.1 设置开启Hive本地模式 2.3.2 对比效果 2.3.2.1 开启前 2.3.2.2 开启后 2.4 Hive并行模式 2.5 Hive…

详解C++静态多态和动态多态的区别

目录 1.多态的概念与分类 2.多态的作用 3.静态多态 4.动态多态 5.总结 1.多态的概念与分类 多态&#xff08;Polymorphisn&#xff09;是面向对象程序设计&#xff08;OOP&#xff09;的一个重要特征。多态字面意思为多种状态。在面向对象语言中&#xff0c;一个接口&…

【深度学习实验】前馈神经网络(三):自定义多层感知机(激活函数logistic、线性层算Linear)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集 2. 激活函数logistic 3. 线性层算子 Linear 4. 两层的前馈神经网络MLP 5. 模型训练 一、实验介绍 本实验实现了一个简单的两层前馈神经网络 激活函数…

一、【漏洞复现系列】Tomcat文件上传 (CVE-2017-12615)

1.1、漏洞原理 描述: Tomcat 是一个小型的轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件&#x…

100G QSFP28 100km光模块最新解决方案

随着信息时代的到来&#xff0c;数据传输的速度和距离要求越来越高。目前&#xff0c;易天光通信发布了具有超低成本、可实现100G超长距离传输新方案——100G QSFP28 100km光模块&#xff0c;该方案是在100G ZR4 80km光模块上的全面升级。 一、产品概述 100G ZR4 100km是专为…

requests模块高级用法练习

文章目录 模拟浏览器指纹发送get请求发送post请求文件上传服务器超时 模拟浏览器指纹 打开http://10.9.75.164/php/functions/setcookie.php网页&#xff0c;找到请求头的UA字段&#xff0c;这段信息是浏览器的指纹&#xff08;包括当前系统、浏览器名称和版本&#xff09;&am…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时&#xff0c;经过了九一八&#xff0c;回想起了祖国曾经的伤疤&#xff0c;勿忘国耻&#xff0c;振兴中华&#xff01;加油&#xff0c;逐梦少年&#xff01; 前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;…