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

 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.mzph.cn/news/771129.shtml

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

相关文章

免费redis可视化工具windows/mac都可以使用,开源免费

官方地址:RedisInsight | The Best Redis GUI github开源地址:GitHub - RedisInsight/RedisDesktopManager Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具。 官方下载方式 滚动到页面底…

FPGA时钟资源详解(4)——区域时钟资源

FPGA时钟系列文章总览:FPGA原理与结构(14)——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564 目录 一、概述 二、Clock-Capable I/O 三、I/O 时钟缓冲器 —— BUFIO 3.1 I/O 时钟缓冲器 3.2 BUFIO原语 四、区域时钟…

High 级别反射型 XSS 攻击演示(附链接)

环境准备 如何搭建 DVWA 靶场保姆级教程(附链接)https://eclecticism.blog.csdn.net/article/details/135834194?spm1001.2014.3001.5502 测试 打开靶场找到该漏洞页面 先右键检查输入框属性 还是和之前一样的,所以直接输入 HTML 标签提交…

Vue 发送Ajax请求多种方式

1. 发送ajax请求的方式 方案一:jq 的ajax(在 vue 中不推荐同时使用)方案二:js 原始官方 fetch方法方案三:axios 第三方 2. 方案一 后端视图函数 from rest_framework.viewsets import ViewSet from rest_framework…

云数据库认识

云数据库概述 说明云数据库厂商概述Amazon 云数据库产品Google 的云数据库产品Microsoft 的云数据库产品 云数据库系统架构UMP 系统概述UMP 系统架构MnesiaRabbitMQZooKeeperLVSController 服务器Proxy 服务器Agent 服务器日志分析服务器 UMP 系统功能容灾 读写分离分库分表资源…

刚删除的文件怎么找回?刚删除的文件重新找回方法

电脑是我们办公、生活和娱乐必不可缺少的设备,里面存储着我们很多重要的文件。但是,有时候我们不小心误删了文件,或者是不小心删除了一些重要的数据等,要怎么进行恢复呢?今天,小编就专门给大家讲下刚删除的文件重新找回方法。 方法一: 文件不小心删除了,请立即停止对硬…

JavaParser 手动安装和配置

目录 前言 一、安装 Maven 工具 1.1 Maven 软件的下载 1.2 Maven 软件的安装 1.3 Maven 环境变量配置 1.4 通过命令检查 Maven 版本 二、配置 Maven 仓库 2.1 修改仓库目录 2.2 添加国内镜像 三、从 Github 下载 JavaParser 3.1 下载并解压 JavaParser 3.2 从路径打…

蓝桥杯单片机快速开发笔记——利用定时器计数器设置定时器

一、基本原理 参考本栏http://t.csdnimg.cn/iPHN0 二、具体步骤 三、主要事项 如果使用中断功能记得打开总中断EA 四、示例代码 void Timer0_Isr(void) interrupt 1 { }void Timer0_Init(void) //10毫秒12.000MHz {AUXR & 0x7F; //定时器时钟12T模式TMOD & 0xF0;…

python网络爬虫实战教学——requests的使用(2)

文章目录 专栏导读1、POST请求2、响应3、Cookie设置 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程…

Typecho 博客文章评论添加显示 UserAgent(UA)的功能

本篇文章实现了为 Typecho 博客文章评论添加显示 UserAgent(UA)的功能本功能可替代 UserAgent 插件,更美观、简洁且好看 效果显示 大概就是这样了,实际效果请看我的评论! 目前可以识别的操作系统以及浏览器 食用方…

Qt教程 — 3.5 深入了解Qt 控件:Display Widgets部件(1)

目录 1 Display Widgets简介 2 如何使用Display Widgets部件 2.1 QLabel组件-显示图像或文本 2.2 QCalendarWidget组件-日历简单的使用 2.3 QLCDNumber组件-控件作时钟的显示 2.4 QProgressBar组件-模拟手机电池充电 2.5 QFrame组件-绘制水平/垂直线 Display Widgets将分…

【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)

快乐的流畅:个人主页 个人专栏:《C语言》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、红黑树的概念二、红黑树的模拟实现2.1 结点2.2 成员变量2.3 插入情况一:uncle在左&#xff…

【Python】Scrapy整合FastAPI实现爬虫API 附大量示例

文章目录 前言1. 网页分析入门1.1 基本原理1.2 Scrapy 原理 2. 创建项目2.1 创建Scrapy项目2.2.1 创建Scrapy项目2.2.2 创建Spider2.2.3 执行Demo 2.2 引入FastAPI 2. 获取Cookie3. 数据建模3.1 Scrapy 数据建模3.2 SQLAlchemy 创建实体类 3. 分析网页3.1 xpath 分析3.2 css 分…

Kotlin协程CoroutineScope命名空间CoroutineName,Kotlin

Kotlin协程CoroutineScope命名空间CoroutineName&#xff0c;Kotlin import kotlinx.coroutines.*fun main(args: Array<String>) {val myName CoroutineName("fly")runBlocking {CoroutineScope(Dispatchers.IO).launch {repeat(3) {val name coroutineCont…

厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能结构篇

厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能结构篇 好几年前&#xff0c;应朋友之邀&#xff0c;为其工厂的厨余垃圾处理设备研发一套用于对现场的生产及维护进行远程查看、管理和质量监控的厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件系统。 因为…

9.串口通信

串口基本认识 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方 式的扩展接口。串行接口&#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简 单&#x…

搭建 canal 监控mysql数据到RabbitMQ

项目需求&#xff1a; 使用canal监控mysql某个库某个表&#xff0c;或者多个库&#xff0c;多个表---- update/inster/create 操作&#xff0c; 系统版本mysql版本java版本canal版本rabbitMQ版本Rocky 9.2MySQL 8.0.26openjdk 11.0.221.1.6rabbitmq-server 3.12.4 mysql 配置…

淘宝扭蛋机小程序开发:开启线上扭蛋新体验

随着科技的飞速发展和移动互联网的普及&#xff0c;线上娱乐方式也变得越来越多样化。为了满足广大用户对于新鲜、有趣的娱乐体验的需求&#xff0c;我们决定开发一款淘宝扭蛋机小程序&#xff0c;为用户带来全新的线上扭蛋乐趣。 淘宝扭蛋机小程序将结合淘宝平台的优势资源&a…

flask_restful渲染模版

渲染模版就是在 Flask_RESTful 的类视图中要返回 html 片段代码&#xff0c;或 者是整个html 文件代码。 如何需要浏览器渲染模板内容应该使用 api.representation 这个装饰器来定 义一个函数&#xff0c; 在这个函数中&#xff0c;应该对 html 代码进行一个封装&#xff…