FPGA原理与结构——时钟IP核原理学习

news2024/10/5 15:22:47

一、前言

        在之前的文章中,我们介绍了FPGA的时钟结构

FPGA原理与结构——时钟资源icon-default.png?t=N7T8https://blog.csdn.net/apple_53311083/article/details/132307564?spm=1001.2014.3001.5502        在本文中我们将学习xilinx系列的FPGA所提供的时钟IP核,来帮助我们进一步理解时钟的原理,从而快速实现我们的设计需求。

二、时钟IP核

1、简介

        我们本次讨论的对象是Xilinx的 Clocking Wizard v6.0 IP核 。时钟向导(Clocking Wizard)帮助我们实现自己需要的输出时钟频率,相位和占空比,它是通过一个混合模式的时钟管理器(MMCM)(E2/E3/E4)或锁相环路(PLL)(E2/E3/E4)原语来实现的。它还有助于验证仿真中输出产生的时钟频率,提供了一个可在硬件上进行测试的可合成的实例设计。它还支持扩频特性,这有助于减少电磁干扰。图2-1显示了时钟向导的方框图:

2、性能

(1)最大频率:不同的器件之间有所不同,具体的请查阅手册

(2)功率:最小化功率特性最小化原件所需的功率,但可能会牺牲频率、相位偏移或占空比精度。

(3)输出:可以最多提供7个不同的时钟输出。

3、IP核结构

        时钟向导会生成源代码HDL,以实现时钟网络。生成的时钟网络通常包括一个时钟原语(MMCM(E2/E3)_ADV或PLL(E2/E3)_ADV)和一些附加电路,其中通常包括缓冲器和时钟引脚。网络分为分段,如图3-12所示。下面的部分将描述这些部分的详细信息。

三、MMCM和PLL

        在简单介绍了时钟这个IP核后,我们开始今天的重点,在之前的内容中,我们一直提到时钟IP核是通过例化MMCM和PLL这两个原语来实现的,这究竟是什么,其工作原理是怎么样的,接下来我们来一探究竟。

1、FPGA的时钟资源

        在之前的文章中,我们有介绍过7系列的FPGA中,每个时钟区域对应一个CMT(clock management tile),CMT由一个MMCM(mixed-mode clock manager)和一个PLL(phase-locked loop)组成。
  PLL的英文全称为Phase-Locked Loop,即锁相环,是一种控制反馈电路。PLL对时钟网络进行系统级别的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比的功能。锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。

  MMCM是混合模式时钟管理器,相当于能够进行精准相移的PLL。(PLL为模拟电路,动态调相位数字电路)。7系列fpga中的PLL是MMCM功能的一个子集,它基于MMCM,而不一定基于以前的PLL设计。
  总结:MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小
  MMCM/PLL的参考时钟输入可以是IBUFG(CC)即具有时钟能力的IO输入、区域时钟BUFR、全局时钟BUFG、GT收发器输出时钟、行时钟BUFH以及本地布线(不推荐使用本地布线来驱动时钟资源)。绝大多数情况下,MMCM/PLL的参考时钟输入为IBUFG(CC)即具有时钟输入能力的IO输入。

        所以我们进行一个简单的总结,在FPGA中,PLL和MMCM是时钟管理单元CMT的组成部分,其主要功能可以概括到以下三点:(1)作为一个频率范围很广的频率合成器;(2)可作为外部或内部时钟的抖动滤波器;(3)去时钟倾斜

2、结构对比

        输入多路复用器从IBUFG、BUFG、BUFR、BUFH、GTs(仅限CLKIN)或互连(不推荐)中选择参考和反馈时钟。每个时钟输入都有一个可编程的计数器分频器(D)每个时钟输入都有一个可编程的计数器分频器(D)。

        下面给出了MMCM和PLL的具体结构分析:

        其中 MMCM 的功能是 PLL 的超集,其具有比 PLL 更强大的相移功能。MMCM 主要用于驱动器件逻辑(CLB、DSP、RAM 等)的时钟。PLL 主要用于为内存接口生成所需的时钟信号,但也具有与器件逻辑的连接,因此如果需要额外的功能,它们可以用作额外的时钟资源。
         PLL 由以下几部分组成:前置分频计数器(D 计数器)、相位-频率检测器(PFD,Phase-Frequency Detector)电路,电荷泵(Charge Pump)、环路滤波器(Loop Filter)、压控振荡器(VCO,Voltage Controlled Oscillator)、反馈乘法器计数器(M 计数器)和后置分频计数器(O1-O6 计数器)。PFD用于产生与两个时钟之间的相位和频率成比例的信号。该信号驱动电荷泵(CP)和回路滤波器(LF)产生一个基于VCO的参考电压。PFD向电荷泵和循环滤波器产生上或向下信号,以确定VCO应以更高或更低的频率工作。当VCO工作频率过高时,PFD激活一个下降信号,导致控制电压降低,降低VCO工作频率。当VCO在过低的频率下工作时,一个上升信号将增加电压。VCO产生8个输出相位和1个可变相位,用于精细相位转移。
        在工作时,PFD 检测其参考频率(FREF)和反馈信号(Feedback)之间的相位差和频率差,控制电荷泵和环路滤波器将相位差转换为控制电压;VCO 根据不同的控制电压产生不同的震荡频率,从而影响Feedback 信号的相位和频率。在 FREF和 Feedback 信号具有相同的相位和频率之后,就认为 PLL 处于锁相的状态。在反馈路径中插入 M 计数器会使 VCO 的震荡频率是 FREF信号频率的 M 倍,FREF信号等于输入时钟(FIN)除以预缩放计数器(D)。参考频率用以下方程描述:FREF= FIN/D,VCO 输出频率为 FVCO=FIN*M/D,PLL 的输出频率为 FOUT=(FIN*M)/(N*O)。
        除了整数除法输出计数器外,MMCM还为CLKOUT0和CLKFBOUT添加了一个分数计数器。
        Xilinx 提供了用于实现时钟功能的 IP 核 Clocking Wizard,该 IP 核能够根据用户的时钟需求自动配置器件内部的 CMT 及时钟资源,以实现用户的时钟需求。

 3、MMCM和PLL的使用示例

        本节中的示例显示了MMCM,但是,它们同样可以应用于PLL。使用MMCM和/或PLL有几种设计方法。ISE或Vivado设计工具中的时钟向导可以帮助生成各种MMCM和PLL参数。此外,MMCM还可以手动实例化为一个组件。MMCM也可以与IP核合并。IP核将包含和管理MMCM。

3.1 Clock Network Deskew(时钟网络去偏斜)

        MMCM的主要用途之一是对时钟网络的去歪斜。一个CLKOUT用来驱动逻辑资源,而另一个反馈时钟用来精确控制输入和输出时钟之间的相位关系,右边的波形图展示了输入和输出需要相位对齐时的情况(图中的输入2和输出5是对齐的)。反馈计数器用于控制输入时钟和输出时钟之间的精确相位关系(例如:90°的相移)。下图中的配置是最灵活的,但它需要两个全局时钟网络(BUFG)。

        我们也可以通过BUFH来实现,原理是相同的

3.2 MMCM with Internal Feedback(MMCM内部反馈)

        当MMCM被用作频率合成和抖动过滤,并且对输出和输入的相位没有要求时,可以用内部信号作为反馈信号。此时MMCM的性能会更好,因为反馈时钟没有经过其他电源供电的元件,因此,也就没有其他电源的噪声。但是从CLKIN和BUFG的噪声还是照常。

 3.3 Zero Delay Buffer(零缓冲Buffer)

           MMCM也能被用来生成一个无延迟的buffer clcok, 如下图。无延迟的buffer可以把一个时钟信号扇出给多个目的地,并且信号之间的偏斜很小。它们之间有一个低偏斜的应用程序。此配置如图3-14所示。在这里,反馈信号驱动出芯片和板跟踪反馈被设计为将跟踪与外部组件相匹配。在这种配置中,假设时钟边缘在FPGA的输入和外部组件的输入处对齐。CLKIN和CLKFBIN的输入时钟缓冲区必须在同一bank中。

四、总结

        在本文中我们对于xilinx系列的FPGA所提供的时钟IP核:Clocking Wizard v6.0 IP核进行了简单的介绍,然后对于FPGA中时钟的CMT结构进行了解读,介绍了MMCM和PLL的作用与区别,最后介绍了一些MMCM和PLL的使用示例。理解IP核的原理可以帮助我们更好地使用IP核,在接下来的文章中,我们也将介绍这个IP核的具体使用方式。

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

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

相关文章

实现带头双向循环链表

🌈带头双向循环链表 描述:一个节点内包含两个指针,一个指向上一个节点,另一个指向下一个节点。哨兵位指向的下一个节点为头节点,哨兵位的上一个指向尾节点。 结构优势:高效率找尾节点;高效率插入…

RabbitMQ工作模式-主题模式

主题模式 官方文档参考:https://www.rabbitmq.com/tutorials/tutorial-five-python.html 使用topic类型的交换器,队列绑定到交换器、bingingKey时使用通配符,交换器将消息路由转发到具体队列时,会根据消息routingKey模糊匹配&am…

[学习笔记] fhq Treap 平衡树

fhq Treap 也叫无旋Treap (好像?我也不知道) 反正我带旋 Treap 是不会滴,其他的平衡树也不会(但是会平板电视) fhq Treap 好写,码量小,缺点是常数比较大 定义 二叉搜索树 二叉搜…

为什么说模电难学?因为它至少是这27个基础知识的排列组合!

1、基尔1、基尔霍夫定理的内容是什么? 基尔霍夫电流定律:在电路任一节点,流入、流出该节点电流的代数和为零。 基尔霍夫电压定律:在电路中的任一闭合电路,电压的代数和为零。 2、戴维南定理 一个含独立源、线性电阻…

在抖音开店卖货的流程是什么?最全解答如下,建议新手认真看完!

我是王路飞。 同样是在抖音卖货,为何如今大多数人都是选择在抖音开店,而不再是选择做账号、开直播了呢? 原因很简单,因为门槛和变现方式。 相比短视频和直播带货的起号、变现难度越来越大,低门槛的抖音小店显然更适…

Origin热图的做法

1.数据准备 2.绘制-选择带标签热图 3.图表调整 右边标签- 下方标签-复制格式,再到左边或者右边选择 粘贴所有 图中的标签及颜色 直接双击在属性框更改 主框的其他特征在属性框选择 色阶的控制 直接选择色阶的属性框

Endnote中查看一个文献的分组的具体方法——以Endnote X8为例

Endnote中查看一个文献的分组的具体方法——以Endnote X8为例 一、问题 当Endnote中使用分类方法对文献进行分组管理后,有时需要重新调整该文献的分组,则需要找到这个文献在哪个分组中。本文阐述怎样寻找一个文献的分组的位置信息。 二、解决方法 1.选…

Spooling的原理

脱机技术 程序猿先用纸带机把自己的程序数据输入到磁带中,这个输入的过程是由一台专门的外围控制机实现的。之后CPU直接从快速的磁带中读取想要的这些输入数据。输出也类似。 假脱机技术(Spooling技术) 即用软件的方式来模拟脱机技术。要…

Kubernetes技术--k8s核心技术Controller控制器

1.Controller概述 Controller是在集群上管理和运行容器的对象。是一个实际存在的对象。 2.pod和Controller之间的关系 pod通过controller实现应用的运维,包括伸缩、滚动升级等操作。 这里pod和controller通过label标签来建立关系。如下所示: 3.Deployment控制器应用场景 -1:…

RabbitMQ工作模式-发布订阅模式

Publish/Subscribe(发布订阅模式) 官方文档: https://www.rabbitmq.com/tutorials/tutorial-three-python.html 使用fanout类型类型的交换器,routingKey忽略。每个消费者定义生成一个队列关绑定到同一个Exchange,每个…

win10底部任务栏开机后长时间未响应的解决办法

https://blog.csdn.net/hj960511/article/details/128746025?share_tokenAA088876-4477-44B8-B978-5C7C7726D552&tt_fromcopy_link&utm_sourcecopy_link&utm_mediumtoutiao_ios&utm_campaignclient_share win10底部任务栏开机后长时间未响应的解决办法-CSDN博…

亚马逊云科技re:Inforce大会:为企业提供端到端的安全防护能力

2023年,生成式AI带来了无数的创新,并将会在行业应用中产生更多的新能力、新场景。与此同时,关于生成式AI的风险管控成为各方关注焦点,数据隐私、合规保护、防欺诈等,已成为生成式AI时代的安全合规的新话题。 随着云上业…

(一)SpringBoot 整合WebSocket 前端 uniapp 访问

第一次使用WebSocket,所以最需要一个及其简单的例子,跑通之后,增加自己对该技术的理解。(技术基础介绍就免掉了,后面再补) 案例逻辑:目前只有一个用户,而且是一个用户给服务器发送数…

linux系统中详解u-boot之网络移植与调试

​今天给大家讲一讲如何完善u-boot网络部分的移植和调试。 一、前章回顾 上一章,已经讲过如何讲uboot.2022.10版本移植到我们自己的imx6ull开发板上,但是最后编译下载后网络部分未能正确识别,今天我们就来讲一讲网络部分的调试。 上一篇ub…

静力触探数据智能预处理(2)

静力触探数据智能预处理(2) 前言 数据处理方式已由手工1.0、计算机辅助2.0到人工智能3.0的趋势发展。现场采集的静力触探数据通常是由仪器厂家开发的数据采集软件保存,将原始数据导入Excel中,数据格式需要花费一定的时间整理&am…

Git管理本地代码

一、Git配置 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改 – global全局配置 通过 --global 选项可以设置全局配置信息 …

第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 D5连接喇叭正极,GND连接喇叭负…

推荐一本AI+医疗书:《机器学习和深度学习基础以及医学应用》,附21篇精选综述

当代医学仍然存在许多亟待解决的问题,比如日益增加的成本、医疗服务水平的下降...但近几年AI技术的发展却给医疗领域带来了革命性的变化,因此AI医疗迅速兴起。 从目前已知的成果来看,人工智能在医学领域的应用已经相当广泛,智能诊…

【pyqt5界面化工具开发-14】初始牛刀-登录工具

目录 0x00 前言: 一、准备好ui的加载 二、获取对应的触发事件 三、触发事件绑定 三、输入内容的调用 三、完善登录逻辑 0x00 前言: 在逻辑代码的处理添加数据包的请求,返回数据包的判断,就可以完整实现登录检测的一个界面化…

zookeeper介绍、zookeeper的安装与配置

1、zookeeper介绍 1.1 官网说明 官方地址:http://zookeeper.apache.org/ 它是拿来管理 Hadoop、Hive、Pig的管理员, Apache Hbase和Apache Solr以及阿里的Dubbo等项目中都采用到了Zookeeper。 一句话:ZooKeeper是一个分布式协调技术、高性…