当前位置: 首页 > news >正文

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

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

目录

一、概述

二、Clock-Capable I/O

三、I/O 时钟缓冲器 —— BUFIO

3.1 I/O 时钟缓冲器

3.2 BUFIO原语

四、区域时钟缓冲器——BUFR 

4.1 区域时钟缓冲器

4.2 BUFR原语

五、区域时钟网

六、多区域时钟缓冲器——BUFMR/BUFMRCE

6.1 多区域时钟缓冲器

6.2 BUFMR/BUFMRCE原语

七、水平时钟缓冲器—— BUFH, BUFHCE

7.1 水平时钟缓冲器

7.2 BUFH, BUFHCE原语


一、概述

        区域时钟网络(Regional Clock Networks)在 Xilinx 7系列 FPGA 设计中提供了与全局时钟网络(Global Clock Network)相独立的时钟分配机制。这种区域性的时钟网络通过 BUFR(区域时钟缓冲器)实现,与全局时钟缓冲器(如 BUFG)相比,BUFR 提供的时钟信号范围限定在单个时钟区域内,且一个I/O时钟信号仅驱动单个bank。这种设计使得区域时钟网络特别适用于源同步接口设计。

二、Clock-Capable I/O

        在FPGA设计中的每个时钟区域,每个 I/O 组在每个 I/O 列中都有四对具备时钟能力(Clock-Capable)的 I/O 引脚对。这些具备时钟能力的 I/O 引脚对是位于特定位置的专用 I/O 对,它们与附近的区域时钟资源和其他时钟资源有特殊的硬件连接。此外,这些具备时钟能力的 I/O 对还可以作为常规的 I/O 对使用。每个bank都有四个专用的具备时钟能力的 I/O site。当作为时钟输入使用时,具备时钟能力的引脚可以驱动 BUFIO、BUFMR 和 BUFR。每个 I/O 列支持区域时钟缓冲器(BUFR)。每个设备有两个 I/O 列。

        一个 CCIO(Clock-Capable I/O)可以驱动同一区域内的任何 BUFR,但只有专用的 CC(具备时钟能力的引脚)可以以 1:1 的关系驱动特定的 BUFIO,而 MRCC(多区域时钟控制器)可以驱动 BUFMR。这意味着 CCIO 到特定 BUFIO 或 BUFMR 的连接只有一个。这些连接和资源分配机制为 FPGA 设计提供了高度的灵活性和精确的时钟管理能力,有助于实现高效和稳定的系统设计。

三、I/O 时钟缓冲器 —— BUFIO

3.1 I/O 时钟缓冲器

        I/O 时钟缓冲器(BUFIO)是 7 系列设备中提供的一种时钟缓冲器。BUFIO 在 I/O 组内驱动一个专用的时钟网络,这个网络独立于全局时钟资源。因此,BUFIO 特别适合于源同步数据捕获(前向/接收器时钟分配)。BUFIO 由位于同一bank的具备时钟能力的 I/O、来自 MMCM 的高性能时钟(HPC),或者位于同一及相邻区域的 BUFMR 驱动。在一个时钟区域内,每个bank有四个 BUFIO。每个 BUFIO 可以在同一区域/bank内驱动单个 I/O 时钟网络。BUFIO 不能驱动逻辑资源(如 CLB、块 RAM、DSP 等),因为 I/O 时钟网络仅覆盖同一bank/时钟区域内的 I/O 列。

3.2 BUFIO原语

        BUFIO是一个时钟输入,时钟输出缓冲区。在输入和输出之间存在一个相位延迟。

四、区域时钟缓冲器——BUFR 

4.1 区域时钟缓冲器

        区域时钟缓冲器(BUFR)是 7 系列设备中提供的另一种时钟缓冲器,它能够独立于全局时钟树,将时钟信号驱动到位于同一时钟区域内的专用时钟网络。每个 BUFR 能够驱动它所在区域内的4个区域时钟网络。与 BUFIOs 不同,BUFRs 既可以驱动 I/O 逻辑,也可以驱动逻辑资源(如 CLB、块 RAM 等)。BUFRs 可以由具备时钟能力的引脚、局部互连、MMCMs 的高性能时钟输出(CLKOUT0 至 CLKOUT3)或同一及相邻区域内的 BUFMRs 驱动。此外,BUFRs 还能够生成相对于时钟输入的分频时钟输出,分频值是一个介于 1 到 8 的整数。对于需要时钟域交叉或串转并转换的源同步应用而言,BUFRs 是理想的选择。

        每个 I/O 列都支持区域时钟缓冲器。每个设备有两个 I/O 列。BUFRs 也可以直接驱动 MMCM 的时钟输入和 BUFGs。

4.2 BUFR原语

        BUFR是一个时钟输入/时钟输出缓冲器,能够划分输入时钟频率。7系列FPGAs缓冲器也可以直接驱动MMCM时钟输入和缓冲器。

五、区域时钟网

        7系列 FPGA 设备除了包含全局时钟树和网络外,还包含区域时钟树和网络。区域时钟树同样设计用于低偏斜和低功耗运作,未使用的分支会被断开。区域时钟树还负责管理负载/扇出,尤其是当所有逻辑资源被使用时。

        区域时钟网络不会贯穿整个 7 系列设备,而是仅限于单个时钟区域。一个时钟区域包含四个独立的区域时钟网络。要访问区域时钟网络,必须实例化 BUFRs。

        为了利用区域时钟网络的优势,设计师需要在设计中实例化 BUFR。通过 BUFR,可以将时钟信号精确地分配给同一时钟区域内的逻辑资源,支持复杂时钟管理需求。实例化 BUFR 时,设计师可以根据具体的设计需求选择合适的分频比例,以及决定是否启用其他高级功能,如时钟门控。

六、多区域时钟缓冲器——BUFMR/BUFMRCE

6.1 多区域时钟缓冲器

        BUFMR 是一种在 7 系列 FPGA 设备中用于支持跨多个区域/bank的时钟缓冲器,它取代了在先前 Virtex 架构中可用的 BUFR 和 BUFIO 的多区域/bank支持功能。每个bank内设有两个 BUFMR,每个缓冲器可以由同一bank内的一个特定的多区域时钟控制器(MRCC)驱动。MRCC 引脚在引脚名中标有 MRCC(例如:IO_L12P_T1_MRCC_12 或 IO_L12N_T1_MRCC_12),表示这些引脚为多区域时钟控制器引脚,包括 P 引脚和 N 引脚。BUFMR 可以驱动同一区域/bank内的 BUFIO 和/或 BUFR,以及上方和下方区域/bank内的 BUFIO 和 BUFR。

6.2 BUFMR/BUFMRCE原语

        BUFMR(多区域时钟缓冲器)是一种具有时钟使能(CE)功能的时钟输入/输出缓冲器。取消使能 CE 会停止输出时钟。BUFMR 被设计用来驱动 BUFR(区域时钟缓冲器)和 BUFIO(I/O时钟缓冲器),以便将时钟信号路由到同一区域/银行及相邻的区域/bank。BUFMR 可以由同一区域内的多区域时钟控制器(MRCC)或是 GT(吉比特收发器)时钟驱动。

        要将 BUFMR 或 BUFMRCE 与 BUFIOs 结合使用,接口引脚必须位于三个bank之内。同样地,如果要与 BUFRs 结合使用,逻辑必须位于最多三个区域(region)内(如果使用了三个 BUFRs)。如果在与 BUFRs/BUFIOs 所在的同一bank或区域中放置了存储器接口,那么从 BUFMR 到该bank或区域中的 BUFHs/BUFIOs 的连通性可能会受到限制。

        BUFMRCE 的拓扑结构显示了如何将 BUFMRCE 与相邻的 BUFIOs 或 BUFRs 连接,以及它们如何分布在 FPGA 设计中。BUFMRCE 提供了一种高效的方式来管理跨多个bank或区域的时钟信号,但它的使用需要仔细考虑银行或区域内的资源分配和布局,以确保时钟信号的有效传输和最小化布局限制。

七、水平时钟缓冲器—— BUFH, BUFHCE

7.1 水平时钟缓冲器

        水平时钟缓冲器(BUFH)在单个区域内驱动一个水平的全局时钟树主干。每个区域有 12 个 BUFH 可供使用。每个 BUFH 都有一个时钟使能引脚(CE),允许动态地关闭时钟。BUFH 可以由以下来源驱动:

  • 同一区域内的 MMCM/PLL 输出
  • BUFG 输出
  • 同一或水平相邻时钟区域的 GT 输出时钟
  • 局部互连
  • 来自同一水平相邻区域/银行的左侧或右侧 I/O 银行的具备时钟能力的输入

        BUFH 提供了一种有效的方式来扩展时钟信号的覆盖范围,尤其适合于需要在 FPGA 设计的特定区域内分配时钟信号的情况。通过使用 BUFH,设计师可以实现对时钟信号的精确控制,包括根据需要动态启用或禁用时钟,从而优化系统性能和功耗。

7.2 BUFH, BUFHCE原语

        要使用 BUFH,逻辑必须适应水平相邻的两个区域(左和右)。时钟使能引脚可以完全关闭时钟,从而实现潜在的功耗节省。与 BUFG 驱动两个相邻区域相比,BUFH 的功耗和抖动更低。

        这表明 BUFH 特别适用于需要跨越水平相邻区域分配时钟信号的设计,同时对功耗和时钟信号质量有较高要求的场景。利用 BUFH 的时钟使能功能,设计师可以根据系统的实际需求动态管理时钟信号,不仅优化了系统的性能,还有效降低了功耗。

 

相关文章:

  • Redis部署中的问题总汇
  • 【ansible】Failed to connect to the host via ssh Permission denied
  • Python中模块
  • 让IIS支持.NET Web Api PUT和DELETE请求
  • 《web应用技术》第一次课后练习
  • 【热门话题】Yarn:新一代JavaScript包管理器的安装与使用
  • 网络七层模型之数据链路层:理解网络通信的架构(二)
  • Go第三方框架--gin框架(二)
  • 五种免费的Python开发环境及具体下载网址
  • Java与Go:字符串转IP
  • 2.6 IDE(集成开发环境)是什么
  • 最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程
  • 【设计模式】中介者模式的应用
  • IDEA或Pycharm设置Python环境报Cannot set up a python SDK的某种解决方案——更换IDEA或Pycharm的版本
  • 高效物联网连接技术创新:ECWAN边缘协同自组网的未来——基于ChirpLAN窄带扩频技术的无线混合组网
  • axios 和 cookie 的那些事
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • js 实现textarea输入字数提示
  • JS函数式编程 数组部分风格 ES6版
  • leetcode46 Permutation 排列组合
  • orm2 中文文档 3.1 模型属性
  • OSS Web直传 (文件图片)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpringCloud集成分布式事务LCN (一)
  • Vue--数据传输
  • 阿里云前端周刊 - 第 26 期
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 如何解决微信端直接跳WAP端
  • 译有关态射的一切
  • 原生 js 实现移动端 Touch 滑动反弹
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • # 安徽锐锋科技IDMS系统简介
  • #14vue3生成表单并跳转到外部地址的方式
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #NOIP 2014# day.2 T2 寻找道路
  • #微信小程序:微信小程序常见的配置传值
  • $GOPATH/go.mod exists but should not goland
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)图像的%2线性拉伸
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)WLAN定义和基本架构转
  • .NET delegate 委托 、 Event 事件
  • .NET Remoting学习笔记(三)信道
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net语言中的StringBuilder:入门到精通
  • /var/lib/dpkg/lock 锁定问题
  • @Repository 注解
  • @Transactional类内部访问失效原因详解
  • [c#基础]DataTable的Select方法
  • [java]删除数组中的某一个元素
  • [LeetCode] NO. 387 First Unique Character in a String
  • [leetcode]114. Flatten Binary Tree to Linked List由二叉树构建链表