FPGA时钟资源详解——时钟Buffer的选择

目录

一、概述

二、时钟Buffer的选择

2.1 BUFG        

2.2 BUFR 和 BUFIO

2.2.1 源同步接口的支持

2.2.2 扩展时钟域转换功能

2.2.3 BUFR 作为简单的时钟分频器

2.3 BUFH

2.3.1 BUFH 的关键特性

2.3.2 应用场景

三、总结

3.1 BUFG(全局时钟缓冲器)

3.2 BUFH(区域时钟缓冲器)

3.3 BUFR(区域时钟缓冲器)

3.4 BUFIO(输入/输出时钟缓冲器)

3.5 BUFMR/BUFMRCE(多区域时钟缓冲器)

3.6 选择考虑因素


一、概述

        本文的内容主要针对的是xilinx的7系列FPGA,7系列的FPGA提供了多种时钟路由资源来支持助设计者实现各种各样的时钟方案和需求。为了最好地利用时钟路由资源,我们需要了解如何将用户时钟从PCB获取到FPGA,判断哪些时钟路由资源是最优的,然后通过使用适当的I/O和时钟缓冲器来访问这些时钟路由资源。

二、时钟Buffer的选择

        7系列的FPGA有着一套丰富的时钟资源。各种buffer类型、时钟输入引脚和时钟连接可以满足多种应用场景。选择合适的时钟资源能够提高路由效率、整体性能和FPGA的资源利用。

2.1 BUFG        

        BUFGCTRL (也就是我们常说的BUFG)是最常用的时钟路由资源。这些真正的全局时钟可以连接到设备上的每个时钟点。然而,在某些情况下,由于性能、功能或时钟资源可用性的原因,使用其他时钟buffer更为有利。在以下的情况中,使用BUFG是最优的:

  • 全局设计范围与功能定位:在大型FPGA设计中,某些设计部分可能需要跨越设备的大面积,而功能的局部化(即将相关功能集中在设备的特定区域内)可能无法实现。这种情况通常需要特别考虑时钟分配和信号完整性,以确保整个设计的性能和可靠性。
  • 硬件功能块:像块RAM、DSP单元或集成IP这样的硬件功能块可能会跨越多个时钟区域,它们可能是级联的,或需要与不在附近的CLBs(可配置逻辑块)连接。在这种情况下,设计者需要仔细规划信号路径和时钟网络,以最小化延迟和干扰,同时优化资源利用率。
  • 时钟切换:应用程序可能需要从停止的时钟切换到另一个时钟,或选择不同频率的时钟(例如,为了降低功耗)。这种切换可以是同步的(无抖动)或异步的。同步切换需要确保在切换过程中不会产生时钟信号的抖动,从而避免影响到正在运行的逻辑。异步切换则不需要时钟之间保持同步,但可能需要额外的逻辑来管理时钟域之间的信号传递。
  • 时钟使能(CE)功能:时钟使能(CE)功能可以在非操作期间用来减少功耗。然而,在大多数情况下,不应依赖CE功能来模拟真正的CE逻辑函数,因为时钟元素的CE延迟限制可能会影响时序。设计者应考虑其他策略来实现功耗优化,例如使用低功耗时钟或在不需要时禁用特定逻辑部分的时钟。
  • CE实现时钟同步:时钟使能(CE)功能在 FPGA 设计中有多种用途,其中一个重要应用是在设备启动后同步初始化的时钟元素。这是指在 FPGA 上电并开始运行后,使用 CE 信号来启动或重置特定的时钟网络或时钟相关的逻辑单元,以确保系统中的各个部分能够在正确的时刻同步工作。

2.2 BUFR 和 BUFIO

        BUFR(Buffer for Regional Clocks)和 BUFIO(Buffer for Input/Output Clocks)的组合主要用于支持源同步接口。这种设计允许在 FPGA 内实现高性能的数据传输和时钟域转换,尤其是在处理高速信号和需要精确时序控制的应用场景中。

2.2.1 源同步接口的支持

  • BUFIO 用于驱动 SelectIOs 的高速侧,这是直接连接到 FPGA 外部接口的时钟。BUFIO 提供了低延迟和高精度的时钟,适用于高速数据传输。
  • BUFR 用于驱动较低速度的反序列化/序列化侧进入 FPGA 逻辑,提供时钟域转换功能。这使得 FPGA 内部逻辑能够以较低的速度处理经过反序列化的数据,同时保持与外部高速数据接口的同步。

2.2.2 扩展时钟域转换功能

        对于需要更多逻辑和/或 I/Os 的接口,超出单一时钟区域的能力,可以使用 BUFMR(或带有时钟使能功能的 BUFMRCE)将时钟域转换功能扩展到上下相邻的时钟区域。BUFMR 用于在多个时钟区域之间传播时钟,确保时钟的一致性和同步。

2.2.3 BUFR 作为简单的时钟分频器

        在某些应用中,需要分频的时钟与源同步 I/O 用例无关时,如果无法使用 MMCM(混合模式时钟管理器)/PLL(相位锁定环)或这些资源不可用于频率分频功能,可以将 BUFR 作为简单的时钟分频器使用。这种情况下,需要特别注意时序和偏差,因为这不是 BUFR 的主要用途。

        总之,BUFR 和 BUFIO 的组合提供了灵活而强大的时钟管理能力,特别是在需要源同步和精确时钟控制的高速接口设计中。

2.3 BUFH

        BUFH是一种用于在局部区域内分配时钟信号的缓冲器。它适用于对局部逻辑或时钟区域内的小范围网络进行时钟分配。

2.3.1 BUFH 的关键特性

  • 区域基础上的全局时钟资源:BUFH 类似于全局时钟资源,但其作用范围限定在两个水平区域内,适用于需要局部时钟信号的设计场景。
  • 反馈到 MMCM/PLL:BUFH 能够作为 MMCM(混合模式时钟管理器)或 PLL(相位锁定环)的反馈,可以补偿时钟插入延迟。
  • 动态功耗降低:BUFH 提供了时钟使能引脚(BUFHCE),当相关逻辑或接口未激活时,可以用来减少动态功耗。这个时钟使能特性允许在每个时钟周期的基础上提供门控时钟。
  • 改善偏斜特性:类似于全局时钟树,BUFH 也可以连接到 CLB(可配置逻辑块)中的非时钟资源(如使能/重置),但提供了更好的偏斜特性。
  • 同步启动时钟元素:BUFH 还可用于时钟区域内时钟元素的同步启动,确保区域内的时钟同步。

2.3.2 应用场景

  • 局部逻辑或接口定位:当接口或逻辑云可以局部化到一个或两个水平相邻的时钟区域时,BUFH 是首选的时钟资源。
  • 降低动态功耗:通过使用 BUFHCE 引脚,设计师可以在逻辑或接口及其相关逻辑未活动时,通过门控时钟来降低动态功耗。
  • 时钟网络优化:在设计需要优化时钟网络,特别是在需要控制时钟偏斜和减少延迟的应用中,BUFH 提供了一种有效的解决方案。

        总的来说,BUFH 在 FPGA 设计中是一种灵活且高效的时钟管理资源,特别适合于需要局部时钟分配和管理的应用。通过合理使用 BUFH,设计师可以在保证性能的同时,优化时钟网络的设计,减少功耗,并提高整体设计的可靠性和稳定性。

三、总结

        在 FPGA 设计中,正确选择时钟缓冲器(Buffer)是确保时钟网络性能和设计稳定性的关键。Xilinx FPGA 提供了几种类型的时钟缓冲器,每种缓冲器针对不同的设计需求和应用场景。在上文中,我们已经给出了官方给出的各个Buffer的适用场景说明。但在实际应用中,大部分情况下,我们都不需要了解这么多。下面给出一些总结性的通用认识:

3.1 BUFG(全局时钟缓冲器)

  • 应用场景:适用于全芯片范围内的主时钟或重要的全局时钟信号。
  • 选择理由:当你需要一个时钟信号被广泛分配到 FPGA 内多个地方时,BUFG 是最佳选择。它能够最小化时钟偏斜并保持时钟信号的稳定。

3.2 BUFH(区域时钟缓冲器)

  • 应用场景:适合于需要在FPGA内部局部区域分配时钟的情况。
  • 选择理由:当设计可以局部化到 FPGA 的特定区域,且该区域需要独立的时钟信号时,BUFH 是合适的选择。它有助于减少全局资源的使用并优化局部时钟网络。

3.3 BUFR(区域时钟缓冲器)

  • 应用场景:适用于需要在较宽区域内但不是全芯片范围内分配时钟的情况,常用于分频时钟信号。
  • 选择理由:当你需要对时钟信号进行分频,且这个分频的时钟需要在某个宽区域内分配时,BUFR是一个好选择。

3.4 BUFIO(输入/输出时钟缓冲器)

  • 应用场景:用于高速I/O接口的时钟,如串行器/反串行器(SerDes)的时钟。
  • 选择理由:对于需要极高速度且低延迟的时钟信号,尤其是在与外部设备通信时,BUFIO 提供了最佳性能。

3.5 BUFMR/BUFMRCE(多区域时钟缓冲器)

  • 应用场景:适用于需要跨越多个时钟区域的时钟分配。
  • 选择理由:当设计要求时钟信号跨越多个相邻的时钟区域,BUFMR 提供了跨区域的时钟分配能力。

3.6 选择考虑因素

  • 设计规模:考虑整个设计的规模和时钟需求,选择最适合广泛分配或局部分配的时钟缓冲器。
  • 时钟频率和稳定性:根据时钟频率和对稳定性的需求,选择相应的缓冲器以最小化延迟和偏斜。
  • 资源利用:考虑FPGA内部可用的时钟资源,合理分配以避免浪费。

        综上所述,选择合适的时钟缓冲器对于优化 FPGA 设计的性能和可靠性至关重要。设计师需要根据具体的设计需求和应用场景,权衡不同时钟缓冲器的特点和优势,做出合理的选择。

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

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

相关文章

OpenCV4.9.0开源计算机视觉库核心功能(核心模块)

转到:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 介绍使用 下一篇:如何使用OpenCV扫描图像、查找表和时间测量 ​ OpenCV核心功能主要有以下各个:本文将开始介绍下列内容: Mat - 基…

SpringBoot配置JWT拦截器

目录 1.背景介绍 2.前提工作 3.具体代码 (1)相关依赖 (2)相关配置文件 (3)JwtUtils类 (4)准备好登录逻辑代码(Dao、Service、Controller) &#xff0…

解决方案Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.

文章目录 一、现象二、解决方案 一、现象 当安装好JDK跟neo4j,用neo4j.bat console来启动neo4却报错: 部分报错信息: Starting Neo4j. WARNING! You are using an unsupported Java runtime. Please use Oracle Java™ 11, OpenJDK™ 11 t…

大白话扩散模型(无公式版)

背景 传统的图像生成模型有GAN,VAE等,但是存在模式坍缩,即生成图片缺乏多样性,这是因为模型本身结构导致的。而扩散模型拥有训练稳定,保持图像多样性等特点,逐渐成为现在AIGC领域的主流。 扩散模型 正如…

设计模式学习笔记 - 设计模式与范式 - 创建型:6.建造者模式:详解构造函数、set方法、建造者三种对象创建方式

概述 本章学习一个比较常用的创建型设计模式,Builder 模式,中文翻译为建造者模式或构建者模式,也有人叫它生成器模式。 建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。比如,你有…

Google ScreenAI代表了一款先进的视觉语言模型,专为用户界面(UI)和视觉情境下的语言理解而设计

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

华为od真题2023-C卷-三叉搜索树

题目描述: 定义构造三叉搜索树规则如下: 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是: 1.如果数小于节点的数减去500,则将数插入节点的左子树2.如果数大于…

政安晨:【深度学习部署】—— TensorFlow Extended(TFX)介绍

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 前言 TensorFlow Extended(TFX&a…

深入了解Redis的过期策略和内存淘汰机制

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

语言模型的原理、实战与评估

语言模型的原理、实战与评估是一个宽泛的话题,下面是对这三个方面简要概述: 语言模型的原理 语言模型(Language Model, LM)是一种统计模型,用于估计一段文本序列的概率分布。它的核心任务是给定一系列词语,计算出这些词语组合成一个完整句子或段落的概率。典型的语言模型…

mysql基础2多表查询

多表查询 多表关系: 一对多 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工,一个员工对应一个部门 实现: 在多的一方建立外键,指向一的一方的主键 多对多 案例: 学生 与 课程的关系 关系: 一个学生可以选修多门课程,一门课程也可以…

MySQL基础复习

目录 一、简单的命令 二、SQL语句分类 三、简单查询 四、条件查询 五、排序 一、简单的命令 net start 服务名称 net stop 服务名称 mysql -uroot -p123456 显示密码形式 mysql -uroot -p 隐藏密码形式 exit 退出 show databases; 查看MySQL中的数据库有哪些 use test…

RuleApp资源社区,知识付费社区,可对接typecho的小程序APP

强大的文章/社区/自媒体客户端,支持打包为安卓,苹果,小程序。包括文章模块,用户模块,支付模块,聊天模块,商城模块等基础功能,包含VIP会员,付费阅读等收费体系&#xff0c…

AttributeError: ‘_MSDataLoaderIter‘ object has no attribute ‘_put_indices‘

问题描述 复现代码过程中遇到错误:AttributeError: _MSDataLoaderIter object has no attribute _put_indices 解决方案 出错的原因是代码中使用了不存在的属性"_put_indices"。这个错误可能与你使用的版本不兼容有关。在pytorch1.x版本中,&q…

c语言函数大全(I开头)

c语言函数大全(I开头) There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quickly. 函数名…

【生产力】Mac 窗口布局工具 Magnet

Magnet 是一款为Mac操作系统设计的实用工具,旨在帮助用户更加方便地管理和组织他们的窗口布局。通过使用Magnet,用户可以轻松地将应用程序窗口拖放到屏幕的各个部分,从而实现窗口的自动排列和大小调整。这款工具特别适合需要同时处理多个应用…

Django Ajax

【一】Json 【1】介绍 JSON(javascript object otaition)是一种轻量级的数据交换格式JSON使用了Javascript的一部分语法来定义其数据格式,但Json是独立于语言的Json采用完全独立于语言的文本格式,使得Json成为理想的数据交互语言…

OD_2024_C卷_100分_72、求最多可以派出多少支团队【JAVA】【双指针】

题目描述 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。 输入描述 第一行代表总人数,范围1-5…

react native 键盘事件

在做修改密码功能是发现他的键盘第一次调起之后然后收起键盘焦点不会消失而且键盘也不会再调起来了 我门线引入需要的组件 import { StyleSheet, View, TextInput, Keyboard, TouchableWithoutFeedback, } from react-native; import React, {useEffect, useState, useRef} fr…

计算机网络原理之四种攻击

目录 一、ARP攻击 二、DNS劫持攻击 三、DOS攻击 四、DDOS攻击 一、ARP攻击 概念: ARP协议的基本功能就是通过目标设备的IP地址,在局域网发送广播包,查询目标设备的MAC地址以保证通信的进行。 原理: 基于ARP协议的这一工作特性&…