FPGA时钟资源详解(3)——全局时钟资源

news/2024/4/29 2:00:12/文章来源:https://blog.csdn.net/apple_53311083/article/details/136997467

 FPGA时钟系列文章总览:
FPGA原理与结构(14)——时钟资源icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/132307564

一、概述

        全局时钟是 FPGA 中的一种专用互连网络,旨在将时钟信号分配到 FPGA 内各种资源的时钟输入处。这种设计考虑了时钟信号在整个芯片上的传播,确保了低偏斜(low skew)、低占空比失真、低功耗以及改进的抖动容忍度。全局时钟网络还支持非常高频率的信号,满足现代高性能电子系统的需求。

1.1 全局时钟网络的设计特点

  • 低偏斜:通过优化时钟信号在 FPGA 内部的传播路径,全局时钟网络能够最小化时钟到达不同资源的时间差异,这对于保证同步操作和提高系统性能至关重要。

  • 低占空比失真:全局时钟网络保证时钟信号的上升沿和下降沿均匀分布,避免时钟信号的占空比发生变化,这有助于维持稳定的时钟周期和提高电路的可靠性。

  • 低功耗:通过减少时钟网络中的电容负载和优化信号传输路径,全局时钟网络设计力求降低功耗,这对于发热控制和提升电池驱动设备的续航能力尤为重要。

  • 改进的抖动容忍度:全局时钟网络通过减少信号抖动,提高时钟信号的稳定性,从而支持高精度的时钟定时需求。

  • 支持高频信号:全局时钟网络被设计来支持非常高频率的信号,满足了现代 FPGA 应用中对快速数据处理和高速通信的需求。

1.2 对全局时钟资源的理解

        理解全局时钟的信号路径有助于深入认识 FPGA 中的各种全局时钟资源,包括但不限于 BUFG(全局时钟缓冲器)、PLL(相位锁定环)和 MMCM(混合模式时钟管理器)。这些资源共同工作,提供精确的时钟管理功能,包括时钟生成、分频、选择和门控等。

        全局时钟资源的有效利用是 FPGA 设计中的关键环节,它不仅影响电路的性能和稳定性,还涉及到系统的功耗和成本。因此,设计师需要根据应用的具体需求仔细规划时钟网络,以实现最优的性能和资源利用效率。

二、时钟树和网——GCLK

        在 Xilinx 的 7 系列 FPGA 架构中,时钟树的设计专注于低偏斜和低功耗运作。这种设计通过断开任何未使用的分支来进一步降低功耗,确保只有需要的时钟信号路径被激活。此外,时钟树还可以用于驱动逻辑资源,例如重置或时钟使能信号,这在需要驱动高扇出/负载网络的应用中尤其有用。

        7 系列 FPGA 的一个显著特点是,全局时钟线的引脚访问不限于逻辑资源的时钟引脚。全局时钟线还可以驱动可配置逻辑块(CLB)中的其他引脚,例如控制引脚 SR和 CE(时钟使能)。这提供了额外的灵活性,允许设计师利用高性能的全局时钟网络来实现快速信号连接和管理大负载/扇出需求。

三、时钟区域

        7系列 FPGA 设备通过使用时钟区域改进了时钟分配机制。时钟区域的设计使得时钟信号的分配更为高效和灵活,有助于提高整体系统的性能和稳定性。以下是7系列设备时钟分配机制的关键特点:

3.1 时钟区域与全局时钟域

3.1.1 时钟区域(Clock Regions)

        时钟区域是 FPGA 内部用于划分和管理时钟信号的物理区域。在 Xilinx 7 系列 FPGA 中,一个时钟区域定义为包含一定数量的可配置逻辑块(CLBs)的区域,通常跨越 FPGA 设备的一半宽度,并向上和向下延伸多个(25个) CLB 行。时钟区域的主要目的是优化和控制时钟信号在特定区域内的分配,以减少时钟偏斜和延迟,提高设计的稳定性和性能。

  • 时钟区域的定义:每个时钟区域可以拥有多达12个全局时钟域。这些全局时钟域能够被任意组合中的32个全局时钟缓冲器驱动,这些缓冲器在单片设备或超大规模集成(SLR,Super Logic Region)中可用。

  • 时钟区域的尺寸:时钟区域的尺寸固定为50个CLB块高(50个I/O块),并跨越芯片的左侧或右侧。这种设计确保了时钟信号可以有效地覆盖特定区域,同时减少信号传播的延迟和偏斜。

3.1.2 全局时钟域(Global Clock Domains)

        全局时钟域指的是 FPGA 设计中被全局时钟信号覆盖的逻辑部分。全局时钟信号通常由全局时钟缓冲器(如 BUFG)分发,旨在提供低偏斜、高稳定性的时钟源给 FPGA 设计中的各个模块。一个全局时钟域可以跨越多个时钟区域,支持设计中不同功能模块的同步运作。

3.2 设备分割与时钟主干

  • 时钟主干:7系列设备中的时钟背骨将设备分割为左侧或右侧。重要的是,这个主干并不位于芯片的中心,这种设计有助于优化时钟信号在芯片上的分布和管理。

  • 时钟区域数量:通过固定时钟区域的尺寸,更大的7系列设备可以拥有更多的时钟区域。7系列 FPGA 提供1到24个时钟区域,不同型号的设备提供的时钟区域数量不同,以满足不同规模设计的需求。

        总之,7系列 FPGA 设备的时钟区域机制为时钟信号的高效分配和管理提供了强大的支持,这对于满足现代高性能电子系统的需求至关重要。通过充分利用这一机制,设计师可以优化他们的时钟网络设计,实现更高的系统性能和稳定性。

四、全局时钟缓冲器

        在7系列的FPGA中,有着多达32个全局时钟缓冲器(BUFG)。32个BUFG被划分成两组,每组16个BUFG,分别位于设备的顶部和底部。

        设备上半部分的 CMT 只能驱动上半部的 BUFG,而下半部分的 CMT 只能驱动下半部的 BUFG。同样,只有同一半设备内的 BUFG 才能作为反馈信号提供给同一半设备内的 CMT。这种设计确保了时钟网络在物理布局上的优化,有助于降低时钟传播延迟和偏斜。

        一个CC(Clock-Capable)input 可以直接连接到同一半设备中(上下划分)的任何全局时钟缓冲器。每对差分时钟引脚都可以连接到PCB上的差分或单端时钟。Xilinx 7系列 FPGA 的CC input 通过存在于时钟主干的垂直时钟网络间接驱动全局时钟缓冲器(BUFG)。任何直接连接到BUFG的资源(例如,GTX收发器)都有顶部/底部的限制。例如,顶部的每个MMCM只能驱动位于设备顶部的16个BUFG。同样,底部的MMCM驱动底部的16个BUFG。

        在7系列设备中,所有全局时钟缓冲器可以驱动所有时钟区域。然而,在单个时钟区域内,只能驱动12种不同的时钟(也就是一个时钟区域最多包含12个全局时钟域)。时钟区域(包括50个CLBs)是时钟树的一部分,其中25行CLB在上,25行CLB在下,横跨设备的一半。

        时钟缓冲器被设计为可以配置为同步或异步无抖动的2:1多路复用器,具有两个时钟输入。存在专用路径(路由资源)用于BUFG级联,以允许选择两个以上的时钟输入。

        在 Xilinx 7 系列 FPGA 的时钟架构中,BUFGCTRL 多路复用器及其所有衍生形式能够在设备上半部和下半部各自的16个时钟缓冲器组内相邻的时钟缓冲器之间进行级联,有效地在上半部和下半部分别创建一个包含16个 BUFGMUX(BUFGCTRL 多路复用器)的环形网络。这种设计极大地增加了时钟网络的灵活性和扩展性,允许设计师构建复杂的时钟选择和分配方案。

        BUFGCTRL 多路复用器的级联:

  • 级联功能:通过将一个 BUFGCTRL 的输出连接到另一个 BUFGCTRL 的输入,可以构建一个连续的时钟路径,这允许从多个时钟源中选择时钟信号,同时最小化时钟传播延迟和偏斜。

  • 环形网络:在设备的上半部和下半部,这些 BUFGCTRL 多路复用器可以形成两个独立的环形网络,每个网络包含16个 BUFGMUX。这种环形结构提供了强大的时钟选择和分配能力,同时保持了低功耗和高效率。

  • 应用:这种级联和环形网络的设计非常适合于需要动态选择不同时钟源的应用,例如在不同操作模式之间切换或实现时钟门控逻辑。

五、全局时钟缓冲器原语

        原语总表如下所示:

        在 Xilinx FPGA 设计中,上面所有的时钟原语(primitives)都是基于 BUFGCTRL 的软件预设衍生而来。BUFGCTRL 是一个非常灵活的全局时钟缓冲器控制原语,提供了广泛的功能,包括时钟选择、时钟门控以及时钟分频等。通过利用这些软件预设,设计师可以实现复杂的时钟管理策略,优化时钟网络的性能和资源利用率。

5.1 BUFGCTRL

        BUFGCTRL 原语能够在两个异步时钟之间进行切换,所有其他的全局时钟缓冲区原语都来自于BUFGCTRL的某些配置。

        BUFGCTRL 是 Xilinx FPGA 中一个非常强大且灵活的全局时钟缓冲器控制原语,它允许设计师基于多种控制信号来选择和管理时钟信号。具有四条选择线(S0, S1, CE0, 和 CE1)以及两条额外的控制线(IGNORE0 和 IGNORE1),BUFGCTRL 提供了对两个输入 I0 和 I1 高度的控制能力。

5.1.1 控制线的作用

  • S0 和 S1:这两条线用于选择输入(I0 或 I1)作为 BUFGCTRL 的输出。通过不同的 S0 和 S1 组合,设计师可以实现时钟输入的动态选择。

  • CE0 和 CE1:时钟使能(Clock Enable)线,用于控制是否使能对应的输入 I0 和 I1。当 CE 线被置为有效(通常是高电平)时,对应的时钟输入被允许通过到输出;当 CE 线为无效时,对应的输入被禁用。

  • IGNORE0 和 IGNORE1:这两条控制线提供了对 BUFGCTRL 行为的额外控制。通过设置 IGNORE 线,设计师可以指示 BUFGCTRL 忽略对应的 CE 线的状态,这在某些特定的时钟管理策略中非常有用。

5.2 BUFG

        BUFG 是 Xilinx FPGA 中的一种基本时钟缓冲器原语,它具有一个时钟输入和一个时钟输出。这个原语基于 BUFGCTRL 设计,但是其一些引脚被固定连接到逻辑高(High)或逻辑低(Low),简化了其使用方式,使其成为实现单一时钟源分配的理想选择。通过将某些控制信号固定为高或低,BUFG 能够以更简单的配置满足大多数常见的时钟缓冲需求。

5.3 BUFGCE and BUFGCE_1

        BUFGCE 是一种在 Xilinx FPGA 设计中用于时钟管理的原语,与 BUFG 类似,但它增加了一个时钟使能(CE)线。这使得设计师能够根据需要动态地使能或禁用时钟信号,提供了对时钟信号更精细的控制,从而优化系统性能和功耗。

        BUFGCE_1 是一种特殊的全局时钟缓冲器,类似于 BUFGCE,但其在时钟使能(CE)控制和时钟信号切换条件方面有所不同。这种差异主要体现在对 CE 输入信号的响应以及时钟信号的输出行为上。

5.3.1 BUFGCE

  • 通用行为:当 CE 输入为高(逻辑高)时,BUFGCE 允许时钟信号从输入传递到输出。当 CE 输入为低(逻辑低)时,时钟信号被阻塞,不会传递到输出。
  • 输出状态:在 CE 为低时,即时钟信号被禁用时,输出的具体状态(高或低)取决于时钟信号被禁用时的最后状态。

5.3.2 BUFGCE_1

  • 特殊的切换条件:BUFGCE_1 的区别在于,如果 CE 输入在即将到来的下降时钟边沿之前为低,则接下来的时钟脉冲不会通过时钟缓冲器,输出保持高。
  • CE 输入的变化:在即将到来的时钟低脉冲期间,CE 的任何电平变化都不会产生效果,直到时钟信号向高跳变。这意味着,即使 CE 在时钟低脉冲期间变高,输出也会保持高状态,直到下一个时钟高脉冲的开始。
  • 时钟禁用时的输出:当时钟被禁用时,输出保持高状态。然而,如果在禁用时钟的过程中,BUFGCE_1 会完成时钟的低脉冲,确保时钟信号的完整性。

5.4 BUFGMUX and BUFGMUX_1

        BUFGMUX 是 Xilinx FPGA 中的一种时钟缓冲器原语,它具备两个时钟输入、一个时钟输出以及一个选择线。这种原语是基于 BUFGCTRL 设计的,通过将某些引脚固定连接到逻辑高(High)或逻辑低(Low),实现了更专用的功能。BUFGMUX 允许设计师根据选择线的状态动态选择两个时钟输入中的一个来传递到输出,从而为设计提供了更大的灵活性和时钟管理能力。

        在 Xilinx FPGA 设计中,BUFGMUX 和 BUFGMUX_1 都是用于时钟信号选择的全局时钟缓冲器原语,但它们在时钟选择行为和逻辑上存在细微差异。这些差异影响了它们在特定设计场景中的应用方式。

5.4.1 BUFGMUX

  • 基本功能:BUFGMUX 允许设计师根据选择信号(S)的状态动态选择两个输入时钟(I0 和 I1)中的一个作为输出。
  • 选择逻辑:通常,当选择信号 S 为高(逻辑高)时,I1 被选为输出;当 S 为低(逻辑低)时,I0 被选为输出。

5.4.2 BUFGMUX_1

  • 特殊行为:BUFGMUX_1 与 BUFGMUX 类似,提供两个时钟输入和一个选择线,但在具体的时钟选择和切换逻辑上可能有所不同。具体差异可能涉及到对选择信号变化的响应时间、时钟切换的同步/异步行为等方面,依据不同的 FPGA 版本和设计需求可能有所调整。
  • 应用场景:BUFGMUX_1 的这些特殊行为使其在需要对时钟切换时机或行为有特殊要求的应用中更为适用。

 5.5 BUFGMUX_CTRL

        BUFGMUX_CTRL是一个更新的时钟缓冲器原语,它取代了旧的BUFGMUX_VIRTEX4 原语。这表明 Xilinx 在其 FPGA 设计工具和库中进行了更新,以提供更加灵活和强大的时钟管理能力。 BUFGMUX_CTRL继承了BUFGMUX的基本功能,并在此基础上增加了更多控制选项,使其更加符合现代 FPGA 设计的需求。

        BUFGMUX_CTRL 的特性如下:

  • 两个时钟输入:提供两个时钟输入端口(I0 和 I1),允许连接两个独立的时钟源。
  • 一个时钟输出:无论选择哪个输入,BUFGMUX_CTRL 都将所选的时钟信号输出到其单一的输出端口。
  • 选择线:通过一个选择线(S),设计师可以控制是将 I0 或 I1 的时钟信号输出。这提供了动态选择时钟信号的能力,适用于需要在运行时切换不同操作模式的设计。
  • 基于 BUFGCTRLBUFGMUX_CTRL 原语是基于 BUFGCTRL 实现的,通过将 BUFGCTRL 的某些引脚固定连接到逻辑高(High)或逻辑低(Low),实现了时钟选择功能。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

文章目录 day4学习内容自媒体文章自动审核今日内容 1 自媒体文章自动审核1.1 审核流程1.2 内容安全第三方接口1.3 引入阿里云内容安全接口1.3.1 添加依赖1.3.2 导入aliyun模块1.3.3 注入Bean测试 2 app端文章保存接口2.1 表结构说明2.2 分布式id2.2.1 分布式id-技术选型2.2.2 雪…

【全栈小5】我的创作纪念日

目录 前言机缘收获粉丝和原创个人成就六边形战士 回顾文章原代码代码优化 憧憬 前言 全栈小5 ,有幸再次遇见你: 还记得 2019 年 03 月 29 日吗? 你撰写了第 1 篇技术博客: 《前端 - 仿动态效果 - 展开信息图标》 在这平凡的一天&…

Matlab之求直角坐标系下两直线的交点坐标

目的:在直角坐标系下,求两个直线的交点坐标 一、函数的参数说明 输入参数: PointA:直线A上的点坐标; AngleA:直线A的倾斜角,单位度; PointB:直线B上的点坐标&#xf…

Git命令及GUI基本操作

不习惯使用Git命令的可移步下面Git GUI基本操作 Git 常用命令 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看本地所有分支 git commit -am "init" 提交并且加注释 git remote add orig…

Linux根据时间删除文件或目录

《liunx根据时间删除文件》和 《Linux 根据时间删除文件或者目录》已经讲述了根据时间删除文件或目录的方法。 下面我做一些补充,讲述一个具体例子。以删除/home目录下的文件为例。 首先通过命令: ls -l --time-style"%Y-%m-%d %H:%M:%S"…

上位机图像处理和嵌入式模块部署(qmacvisual几何测量)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 几何测量是图像处理中经常遇到的一个问题,前面我们曾经讨论过点到直线的距离。不仅如此,qmacvisual还提供了另外三个常用的…

RTSP应用:实现视频流的实时推送

在实现实时视频流推送的项目中,RTSP(Real Time Streaming Protocol)协议扮演着核心角色。本文将指导你通过安装FFmpeg软件,下载并编译live555,以及配置ffmpeg进行视频流推送,来实现一个基本的RTSP流媒体服务…

Spring Boot 防护 XSS + SQL 注入攻击

XSS跨站脚本攻击 ① XSS漏洞介绍 跨站脚本攻击XSS是指攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被解析执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击! ② XSS…

iptables添加端口映射,k8s主机查询不到端口但能访问。

研究原因:k8s内一台主机使用命令查询没有80端口。但通过浏览器访问又能访问到服务。 查询了资料是使用了hostport方式暴露pod端口。cni调用iptables增加了DNAT规则。访问时流量先经过iptables直接被NAT到具体服务去了。 链接: K8s罪魁祸首之"HostPort劫持了我…

单例模式如何保证实例的唯一性

前言 什么是单例模式 指一个类只有一个实例,且该类能自行创建这个实例的一种创建型设计模式。使用目的:确保在整个系统中只能出现类的一个实例,即一个类只有一个对象。对于频繁使用的对象,“忽略”创建时的开销。特点&#xff1a…

快速上手Spring Cloud 七:事件驱动架构与Spring Cloud

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

基于PaddleNLP的深度学习对文本自动添加标点符号(二)

前言 基于PaddleNLP的深度学习对文本自动添加标点符号的源码版来了,本篇文章主要讲解如何文本自动添加标点符号的原理和相关训练方法,前一篇文章讲解的是使用paddlepaddle已经训练好的一些模型,在一些简单场景下可以通过这些模型进行预测&…

【Unity】调整Player Settings的Resolution设置无效

【背景】 Build时修改了Player Settings下的Resolution设置,但是再次Building时仍然不生效。 【分析】 明显是沿用了之前的分辨率设定,所以盲猜解决办法是Build相关的缓存文件,或者修改打包名称。 【解决】 实测修改版本号无效&#xf…

指针数组的有趣程序【C语言】

文章目录 指针数组的有趣程序指针数组是什么?指针数组的魅力指针数组的应用示例:命令行计算器有趣的颜色打印 结语 指针数组的有趣程序 在C语言的世界里,指针是一种强大的工具,它不仅能够指向变量,还能指向数组&#…

[机缘参悟-162/管理者与领导者-151] :受害者心态与受害者思维模式,如何克服受害者思维模式,管理者如何管理这种思维模式的人?

目录 一、受害者心态概述 1.1 什么是受害者心态 1.2 受害者心态的表现形式 1.3 受害者心态在职场上的表现 1.4 受害者思维模式 1.5 受害者心态的危害 二、受害者心态的成因 2.1 概述 2.2 神经网络与受害者心态 三、如何克服受害者心态 3.1 概述 3.2 职场 3.3 家庭…

verilog 从入门到看得懂---verilog 的基本语法各种语句

本篇文章主要介绍verilog里面常用的语句, 包括条件语句、循环语句块语句和生成语句。出了块语句和生成语句,其他的基本和c语言或者m语言一致。 1,if 语句,在需要判断逻辑的时候可以使用if语句,如 从输入a,…

《QT实用小工具·二》图片文字转base64编码

1、概述 源码放在文章末尾 base64编码转换类 图片转base64字符串。base64字符串转图片。字符转base64字符串。base64字符串转字符。后期增加数据压缩。Qt6对base64编码转换进行了重写效率提升至少200%。 下面是demo演示: 项目部分代码如下所示: #ifn…

解决npm init vue@latest证书过期问题:npm ERR! code CERT_HAS_EXPIRED

目录 一. 问题背景 二. 错误信息 三. 解决方案 3.1 临时解决办法 3.2 安全性考量 一. 问题背景 我在试图创建一个新的Vue.js项目时遇到了一个问题:npm init vuelatest命令出现了证书过期的错误。不过这是一个常见的问题,解决起来也简单。 二. 错误…

【aws】架构图工具推荐

碎碎念 以前以为日本冰箱论是个梗,结果居然是真的。用光盘传真其实还能理解(毕竟我也喜欢电子古董2333),但是画架构图居然用的是excel+截图!啊苍天呐,然后看到隔壁工位用excel画web原型又感觉释…

Python 从0开始 一步步基于Django创建项目(13)将数据关联到用户

在city_infos应用程序中,每个城市信息条目是关联到城市的,所以只需要将城市条目关联到用户即可。 将数据关联到用户,就是把‘顶层’数据关联到用户。 设计思路: 1、修改顶层数据模型,向其中添加‘用户’属性 2、根…