Vivado下PLL实验

2023-11-12


前言

本节介绍一下赛灵思锁相环的一个使用方法,我手头的 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,欢迎交流!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vivado下PLL实验 的相关文章

  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • PRBS笔记

    1 概述 PRBS 伪随机二进制序列 也称为伪随机码 通常被用来测试高速信号的信号质量 伪随机 也说明了该码流并不是真正的随机 而是具有特性属性 码流由 多项式 决定 具有重复周期 PRBS具有多种阶数 如PRBS7 PRBS15 PRBS
  • STM32【复习串口】

    串口复习加深理解笔记 杂谈 USART FLAG TXE发送缓冲区空标志 说明可以往数据寄存器写入数据了 但并不代码数据发送完成了 USART FLAG TC发送完成标志 这个才是代表USART在缓冲区的数据发送完成了 即从机接收到了数据
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • 【FPGA】面试问题及答案整理合集

    面试问题及答案整理合集 1 硬件描述语言和软件编程语言的区别 2 FPGA选型问题 3 建立时间和保持时间问题 3 亚稳态问题 4 竞争和冒险问题 5 乒乓操作问题 6 同步和异步逻辑电路 7 同步复位和异步复位 8 MOORE 与 MEE
  • BUCK电路分析(二)

    BUCK电路分析 二 PSIM仿真同步BUCK电路 在上片文章中 初步的分析了BUCK电路的工作原理 本章使用PSIM软件仿真BUCK电路 观察分析BUCK电路器件关键波形 图1是同步BUCK电路图 开关频率设置为200K 固定占空比 在仿
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • 【ZYNQ学习】PL第一课

    这节课讲什么 这节课的名字本来是想写为LED 但这一课里除了LED也有按键 又想换为GPIO控制 但关于PL的GPIO控制 不应该这么草率和简单 而且这一课有很多和ZYNQ或者PL关联性不强的东西要说 所以我写了删删了写改了好几遍 终于定为
  • 串口通信知识点总结

    串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串口按电气标准及协议来划分
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r

随机推荐

  • unityShader之固定渲染管线

    固定渲染管线功能较单一 能实现的效果不多 基本快要被淘汰了 老式的机器上还能用一用 附上几个脚本示例简单说明一下 shader likang king01 properties Color MainColor color 0 0 0 1 固
  • 【C#学习笔记】指针使用

    using System namespace ConsoleApplication2 class Program static void Main string args int a 5 unsafe int pa a Console Wr
  • 浅谈边缘计算

    一 概念 定义 1 维基百科对边缘计算的定义如下 边缘计算是一种优化云计算系统的方法 在边缘执行分析和知识生成减少受控系统和数据中心之间的通信带宽 2 OpenStack基金会对边缘计算的定义如下 边缘计算是为应用开发者和服务提供商在网络的
  • 【LeetCode102】二叉树的层序遍历

    题目描述 首刷自解 vector
  • 【Vue 常用属性】

    Vue 常用属性 vue常用的属性有 数据属性 方法 计算属性 监听属性 数据属性 组件的data 选项是一个函数 Vue 会在创建新组件实例的过程中调用此函数 它应该返回一个对象 然后Vue 会通过响应性系统将其包裹起来 并以 data
  • JDK8特性--Stream(求和,过滤,排序)

    Stream简介 Java 8 API添加了一个新的抽象称为流Stream 可以让你以一种声明的方式处理数据 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象 元素流在管道
  • Modern OpenGL---09 纹理(纹理单元可贴多个纹理)

    对之前画的矩形基础上贴上纹理 在片段着色器中 声明一个采样器 表示纹理位置 每个纹理位置叫做纹理单元 比如 0 1等 当只有一个纹理事时 纹理单元默认为0 当有一个以上的纹理时 则需要通过uniform从外部设置每个纹理单元的值 需要注意的
  • Makefile实例,利用Makefile给多文件、多目录C源码建立工程

    0 前言 粉丝留言 想知道如何使用Makefile给多个文件和多级目录建立一个工程 必须安排 关于Makefile的入门参考文章 可以先看这篇文章 Makefile入门教程 为了让大家有个更加直观的感受 一口君将之前写的一个小项目 本篇在该
  • Jenkins系列:2、Jenkins构建流水线

    Jenkins系列 2 Jenkins构建流水线 文章目录 Jenkins系列 2 Jenkins构建流水线 1 前言 2 创建自由项目 2 1 创建简单示例 2 2 构建触发器 构建环境 构建 构建后操作简介 3 最后 1 前言 上一节我
  • Process.Start 为什么会引发“系统找不到指定的文件”异常

    目录 前言 深入探究 结论 前言 偶然发现 如果想用如下代码在 NET 6 中打开指定 URL Process Start https baidu com 会引发异常 而同样的代码在 NET Framework 中是可以正常执行的 难道 N
  • 为什么某些网站有些地方打得开,有些地方打不开?

    我们都知道 网站是由 域名 空间 网页组成 如果这三部分中有其一出问题 网站都不能打开 我们在浏览器输入要访问的网站网址时 我们的计算机首先要找到这个网站放在那台服务器上 找到这台服务器后 再找这个网站放在那个目录下 那就是我们常说的 网站
  • UI设计用什么软件?这3个必用!

    在当今数字化时代 UI设计在各行各业都扮演着重要角色 但为了进行UI设计 需要使用专业的软件 在线UI设计软件是最受欢迎的选项之一 因为它们可以轻松创建和编辑设计 并且无需下载或安装任何软件 那么 有哪些在线UI设计软件呢 本文将介绍三款最
  • gpt_academic使用注意事项

    不要开启360等安全卫士
  • Padavan各源码融合教程

    本文涉及的Padavan源码如下 https github com hanwckf rt n56uhttps github com chongshengB rt n56uhttps github com padavanonly rt n56
  • JavaScript中的Object.defineProperty()和defineProperties()

    文章同步到github ECMAS 262第5版在定义只有内部采用的特性时 提供了描述了属性特征的几种属性 ECMAScript对象中目前存在的属性描述符主要有两种 数据描述符 数据属性 和存取描述符 访问器属性 数据描述符是一个拥有可写或
  • 小程序图片加载失败binderror方法处理

    场景 我们在小程序项目中的一个图片列表 当某些图片加载失败后 直接显示空白 这样用户体验不好 为了解决当图片加载失败 我们给一个默认图片代替 参考官方给的图片加载失败的处理方法 binderror cover image 微信开放文档 第一
  • vue3+vite 使用 postcss-pxtorem、autoprefixer 实现自适应和自动添加前缀

    自动添加前缀 自适应 1 安装 postcss pxtorem 和 autoprefixer npm install postcss pxtorem save npm i autoprefixer 2 vite config js引入并配置
  • 解决 无法解析名称 NaiveBayes.fit。/i get Undefined variable “NaiveBayes“ or class “NaiveBayes.fit“.

    应用朴素贝叶斯分类器时候 发现报错无法解析名称 NaiveBayes fit 这是因为 你想用NaiveBayes 适用于MATLAB R2018b 根据NaiveBayes的R2014b发布说明 fit被fitNaiveBayes取代 同
  • 【Flutter】时间轴高度自适应最佳实践

    1 使用部件 画圆圈 使用 canvas drawCircle 和属性为 paint style PaintingStyle fill 画笔画两个实心圆 画竖线 使用 canvas drawLine 和属性为 paint style Pai
  • Vivado下PLL实验

    文章目录 前言 一 CMT 时钟管理单元 1 CMT 简介 2 FPGA CMT 框图 3 MMCM 框图 4 PLL 框图 二 创建工程 1 创建工程 2 PLL IP 核配置 3 进行例化 三 进行仿真 1 创建仿真文件 2 进行仿真设