Xilinx 7系列MMCM/PLL的使用模型

news2024/12/28 2:32:56

本文展示了MMCM的一些使用模型(同样适用于PLL),如时钟网络去偏斜、具有内部反馈的MMCM和零延迟缓冲区等。

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

MMCM的主要用途之一是用于时钟网络去偏斜。图3-11和图3-12展示了在这种模式下的MMCM。来自CLKOUT计数器之一的时钟输出用于驱动fabric内部和(或)I/O的逻辑。反馈计数器用于控制输入时钟和输出时钟之间的精确相位关系(例如,如果需要90°相位偏移)。相关时钟波形显示在右侧,适用于输入时钟和输出时钟需要相位对齐的情况。图3-11中的配置最为灵活,但它确实需要两个全局时钟网络。
在这里插入图片描述
CLKFBOUT输出可用于提供反馈时钟信号。当MMCM驱动BUFG和BUFH时,只有同样在反馈路径中使用的那个时钟缓冲器会被去偏移。
在实际应用中,需要确保输入到PFD的两个时钟信号(即参考时钟和反馈时钟)具有相同的频率。这是因为PFD(相位频率检测器)是用来检测这两个时钟信号之间的相位差和频率差的,如果它们的频率不匹配,PFD将无法正常工作,从而导致MMCM无法正确地进行时钟去偏斜和相位对齐。
在这里插入图片描述
举一个例子,如果输入频率ƒIN为166 MHz,D=1,M=6,O=2,那么VCO的频率将是996 MHz,时钟输出频率将是498 MHz。由于在反馈路径中的M值为6,所以PFD的两个输入频率都是166 MHz。
在另一个更复杂的场景中,输入频率为66.66 MHz,D=2,M=30,O=4。在这种情况下,VCO的频率是1000 MHz,CLKOUT输出频率是250 MHz。因此,PFD的反馈频率是1000/30,即33.33 MHz,这与PFD的66.66 MHz/2输入时钟频率相匹配。

2、具有内部反馈的MMCM

当MMCM用作合成器或抖动滤波器,并且MMCM输入时钟和MMCM输出时钟之间不需要特定的相位关系时,MMCM的反馈可以是内部的。由于反馈时钟不会受到核心供电噪声的影响,MMCM的性能会得到提升。当然,CLKIN信号和BUFG上引入的噪声仍然存在(如图3-13所示)。
在这里插入图片描述

3、零延迟缓冲区

MMCM也可以用来生成零延迟缓冲时钟。零延迟缓冲区对于那些需要将单个时钟信号分发到多个目的地,且这些目的地之间需要低偏斜的应用来说是非常有用的。这种配置如图3-14所示。在这里,反馈信号驱动外部芯片,而板上的迹线反馈(the board trace feedback)被设计来匹配到外部组件的迹线(trace)。在这种配置中,假设时钟边沿在FPGA的输入端和外部组件的输入端是对齐的。CLKIN和CLKFBIN的输入时钟缓冲区必须位于同一bank中。
在这里插入图片描述
零延迟缓冲区的概念是指,通过适当的配置,使得时钟信号从MMCM的输出到外部组件的输入之间几乎没有延迟或偏斜。这通常通过精确匹配时钟信号路径的电气特性来实现,以确保时钟边沿在所有目的地同时到达。
但是,在某些情况下,由于外部组件的输入电容和FPGA的反馈路径电容之间的负载差异,精确的时钟对齐无法实现。例如,外部组件的输入电容可能是1 pF到4 pF,而FPGA的输入电容大约是8 pF。这种差异会导致信号斜率不同,本质上就是偏斜。设计师需要了解这种效应,以确保时序正确。
在实际应用中,使用零延迟缓冲区可以确保FPGA内部和外部组件之间的同步操作,从而优化系统性能。它有助于减少由于时钟偏斜引起的时序问题,特别是在需要高精度时钟同步的系统中。

4、CMT到CMT的连接

MMCM和PLL可以通过CMT主干线使用CLKOUT0到CLKOUT3进行级联,从而允许生成更大范围的时钟频率。当使用CMT主干线时,不需要额外的缓冲区(如图3-15和图3-16所示)。由于主干线的延迟未被补偿,因此两个MMCM的输出时钟之间将存在相位偏移。
方程3-12显示了最终输出频率与两个MMCM的输入频率和计数器设置之间的关系。第二个MMCM的输出时钟与输入时钟之间的相位关系是不确定的,因为主干线连接未被补偿,所以在两个MMCM之间会存在一个额外的相位偏移。为了级联MMCM,需要将第一个MMCM的输出路由到第二个MMCM的CLKIN引脚。这条路径提供了最低的设备抖动。使用反相CLKOUTxB输出进行级联是不可用的。
在这里插入图片描述
在这里插入图片描述

5、扩频时钟生成(Spread-Spectrum Clock Generation)

扩频时钟生成(SSCG)被电子设备制造商广泛使用,以减少这些设备产生的电磁干扰(EMI)的频谱密度。制造商必须确保发出的电磁能量水平不会干扰附近其他电子设备的运行。例如,当电话靠近视频显示器时,电话通话的清晰度不应降低。同样,当使用电话时,显示器也不应受到影响。
SSCG通过将电磁能量分散到较大的频率范围内,有效地降低了在窄频率窗口内测量的电场和磁场强度。通过调制SSCG输出,可以降低任何单一频率的峰值电磁能量。
当将SS_EN设置为TRUE时,MMCME2可以从标准固定频率振荡器生成扩频时钟(如图3-17所示)。在MMCME2内部,VCO频率与CLKFBOUT和CLKOUT[6:4,1,0]一起调制。时钟输出CLKOUT[3:2]用于控制调制周期,并不用于一般用途。只要时钟频率调整缓慢,扩频就不会影响MMCME2的周期抖动。
在这里插入图片描述
调整调制周期SS_MOD_PERIOD允许FPGA设计师根据MMCME2的设置选择最接近的调制周期。只要调制频率高于可听频率范围(30 kHz),扩频调制就会减少电磁干扰(EMI)。通常,设计师会选择较低的调制频率,以最大限度地减少引入扩频的影响。
通过SS_MODE(CENTER_HIGH或DOWN_HIGH)增加频率偏差,会增强总体EMI的减少效果,但必须小心确保增加的频率范围不会影响到整个系统的运行。由于扩频时钟和输入时钟以不同的频率运行,因此在时钟域之间传输的任何数据都应使用异步FIFO,以确保数据不会丢失。增加频率偏差将需要更大的FIFO。
另一个设计权衡点在于选择使用中心扩频还是下扩频。选择SS_MODE(DOWN_HIGH,DOWN_LOW)会将频率扩展到较低的频率范围。DOWN_HIGH的频率偏差与CENTER_LOW相似。使用下扩频的决策通常是考虑到扩频对时序分析的影响。
在使用扩频时钟时,设计必须在频率偏差中的最高频率处满足时序要求。因此,如果一个100 MHz的时钟在SS_MODE(CENTER_LOW)下产生3%(±1.5%)的中心扩频,那么这个100 MHz时钟加上3%的中心扩频必须通过时序分析,就像它是一个101.5 MHz的时钟一样。然而,如果SS_MODE(DOWN_HIGH)产生3%的下扩频,则输入频率是频率偏差中的最高频率。因此,对于一个具有3%下扩频的100 MHz时钟,该下扩频时钟在时序分析中仍然被视为100 MHz的时钟。

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

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

相关文章

【2024年最新】NodeMCU-ESP8266刷AT固件教程——适用于esp-12E和esp-12F

硬件图片 原理图 0、工具打包下载 工具包 密码:keduo 1、工具及固件下载 固件下载地址: 欢迎 | 安信可科技 (ai-thinker.com) 下载以下固件: 直接下载地址:AT 固件(固件号:0781) 下载以下工具&#xf…

【SQL代理中转注入】对DVWA登录界面username字段实施注入

一、实验过程 步骤0:注释掉相关username防护,截图如下: 以DVWA为攻击目标,将login.php中第21、22行注释掉 步骤1:源码分析,截图如下: 如此可知,首先需要通过token验证,然…

LeetCode90:子集②

题目描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的 子集 (幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 解题思想 要考虑去重的操作 代码 class Sol…

【java、微服务】MQ

MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。 同步通讯 优点 时效性较强,可以立即得到结果 问题 微服务间基于Feign的调用就属于同步方式,存在一些问题。 耦合度高。每次加…

Shader for Quest 2: 自定义shader在Unity Editor中可以使用,但是在Quest 2中却不可以

GameObject segment GameObject.Find("DisplayArea_" i); MeshRenderer renderer segment.GetComponent<MeshRenderer>(); Material mat new Material(Shader.Find("Custom/MyShader")); mat.mainTexture option.Image360;上面这份代码&#x…

嵌入式Linux driver开发实操(二十一):linux device driver basic设备驱动程序基础

linux的架构框图: 内核空间是内核(即操作系统的核心)执行(即运行)并提供其服务的地方。 用户空间是执行用户应用程序的地方。 内核模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能,而无需重新启动系统。自定义代码可以通过两种方法添加到Linux内…

SpringMVC基础篇(一)

文章目录 1.基本介绍1.特点2.SpringMVC跟SpringBoot的关系 2.快速入门1.需求分析2.图解3.环境搭建1.创建普通java工程2.添加web框架支持3.配置lib文件夹1.导入jar包2.Add as Library3.以后自动添加 4.配置tomcat1.配置上下文路径2.配置热加载 5.src下创建Spring配置文件applica…

BUUCTF-MISC-09文件中的秘密1

9.文件中的秘密1 题目&#xff1a;flag包含在图片的属性中

三款数据可视化工具深度解析:Tableau、ECharts与山海鲸可视化

在数字化时代&#xff0c;数据可视化工具成为了企业和个人进行数据分析和决策的重要助手。市面上众多数据可视化工具各具特色&#xff0c;本文将为您介绍三款热门的数据可视化工具&#xff0c;帮助您更好地理解和利用数据。 首先&#xff0c;让我们来认识Tableau。Tableau是一款…

基于python+django+mysql农业生产可视化系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

网络安全攻击溯源的重要性及挑战

网络安全攻击溯源是一个复杂且至关重要的过程&#xff0c;它涉及对网络攻击事件的来源进行追踪和分析&#xff0c;以便确定攻击者的身份、动机和攻击路径。在IP技术背景下&#xff0c;网络安全攻击溯源更是显得尤为重要&#xff0c;因为IP地址作为网络设备的唯一标识&#xff0…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中&#xff0c;已经讲解过了MQTT的通讯原理和组包过程&#xff0c;现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互&#xff0c;实际上这篇文章已经拖更接近两年了&#xff0c;非常…

python学习:pyqt5

1、安装所需库 pip install pyqt5 pip install pyqt5 -tools 2、导入所需库 # 导入所需库 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget from PyQt5.QtCore import QThread, pyqtSignal 3、多线程举例 # 定义一个继承…

coreldraw2024精简版绿色版安装包免费下载

CorelDRAW 2024是一款矢量图形设计软件&#xff0c;于2024年3月5日正式在全球范围内发布。这款软件在多个方面进行了更新和改进&#xff0c;为用户提供了更多高效、灵活和便捷的设计工具。 首先&#xff0c;CorelDRAW 2024新增了绘画笔刷功能&#xff0c;这些笔刷不仅模拟了传…

Python爬虫入门指南--爬虫技术的由来、发展与未来--实战课程大赠送

爬虫&#xff0c;也称为网络爬虫或网络蜘蛛&#xff0c;是一种自动化程序&#xff0c;专门用于遍历互联网并收集数据。这种技术的起源、发展和未来都与互联网紧密相连&#xff0c;并在信息检索、数据挖掘等多个领域发挥着不可或缺的作用。 "免费IP池大放送&#xff01;助…

dial tcp 192.168.0.190:443: connect: connection refused

1、场景 用nerdctl登录镜像仓库192.168.0.190&#xff08;Harbor&#xff09;&#xff0c;报错 ERRO[0006] failed to call tryLoginWithRegHost error"failed to call rh.Client.Do: Get \"https://192.168.0.190/v2/\": dial tcp 192.168.0.190:…

JavaScript系列------2

1. JS 数据类型&#xff1a; 基本数据类型&#xff1a;number数字型,string字符串型,boolean布尔型,undefined未定义型,null空类型 引用数据类型&#xff1a;object对象 js 是弱数据类型的语言&#xff0c;只有当我们赋值了才知道是什么数据类型。 声明一个变量未赋值就是 un…

【FFmpeg】音视频录制 ② ( 使用 Screen Capturer Recorder 软件生成 ffmpeg 可录制的音视频设备 )

文章目录 一、使用 Screen Capturer Recorder 软件生成音视频设备1、设备查找问题 - 引入 Screen Capturer Recorder 软件2、下载安装 Screen Capturer Recorder 软件3、验证 Screen Capturer Recorder 生成的设备 一、使用 Screen Capturer Recorder 软件生成音视频设备 1、设…

对浅拷贝的理解

问题背景 我之前一直以为浅拷贝出来的新对象和旧对象的引用地址是相同的&#xff0c;但是通过Object和发现浅拷贝的新对象和旧对象的引用地址不同&#xff01;&#xff01; const obj1 { name: "Alice", test: { age: 12 } };const obj4 Object.assign({}, obj1);…

Kafka源码分析(四) - Server端-请求处理框架

系列文章目录 Kafka源码分析-目录 一. 总体结构 先给一张概览图&#xff1a; 服务端请求处理过程涉及到两个模块&#xff1a;kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块&#xff0c;提供了服务端NIO通信能力基础。 有4个核心类&#xff1a;…