FPGA时钟资源详解(2)——Clock-Capable Inputs

news2024/11/24 12:00:54

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

目录

一、概述

1.1 为什么使用CC

1.2 如何使用CC

二、Clock-Capable Inputs

2.1 SRCC

2.2 MRCC

2.3 其他用途

2.3.1 作为普通I/O使用

2.3.2 连接到CMT


一、概述

        在 FPGA 设计中,将外部用户时钟引入 FPGA 是一项重要的任务,对整个系统的性能和稳定性有着直接影响。为了实现这一点,外部时钟必须通过称为时钟可用(Clock-Capable, CC)输入的差分时钟引脚对引入。

1.1 为什么使用CC

  1. CC提供了到内部全局和区域时钟资源的专用、高速访问路径。这是因为它们使用专用的布线,最小化了信号传播延迟和抖动,从而确保了时钟信号的质量和时序精度。

  2. 保证时序:为了保证各种时钟特性的时序,必须使用时钟能力输入作为时钟信号的输入。这些特性可能包括时钟分频、时钟选择、时钟门控等复杂的时钟管理功能。

  3. 避免使用通用I/O:通用I/O引脚通过局部互连接入FPGA,这些互连并不为高速时钟信号设计,使用它们传输时钟信号可能会导致时序问题、增加信号抖动,从而影响系统的稳定性和性能。

1.2 如何使用CC

  • 差分信号:为了最大限度地减少噪声和提高信号完整性,外部时钟通常应该以差分形式引入FPGA。差分时钟信号可以有效地抵消电磁干扰(EMI)和跨越电源或地线引起的电压波动。

  • 专用引脚:设计时,应确保外部时钟信号连接到 FPGA 上指定的时钟能力输入引脚。这些引脚在 FPGA 的数据手册或引脚配置文件中有明确的标识。

  • 布局考虑:在 PCB 设计阶段,应该小心布局差分时钟线,并尽量减少它们的长度和弯曲,以保持信号的完整性。同时,注意避免时钟线与高速数据线或其他可能产生干扰的信号线过于靠近。

        通过正确使用CC,设计师可以确保外部时钟信号以最高的质量进入 FPGA,为设计提供稳定可靠的时钟资源。这对于满足严格时序要求、优化性能和保证系统稳定性至关重要。

二、Clock-Capable Inputs

        每个 I/O bank位于一个时钟域内,它包含有50个 I/O 引脚。在这50个 I/O 引脚中,有4组CC inputs 引脚对(共8个)。每个 CC input 引脚具有如下的特性:

  • 可以连接到PCB上的差分或单端时钟(单端时钟输入必须连接到P端)
  • 可以配置成任何I/O标准(包括差分I/O标准)
  • 具有P侧(主)和N侧(从)

        在 I/O bank 中的这4组CC引脚被划分成2类:2个MRCC和2个SRCC。

2.1 SRCC

        SRCC(Single Region Clock Controller)在 Xilinx FPGA 设计中是用于时钟管理的一个重要组件。SRCC 能够访问单个时钟区域(Clock Region)内的资源,同时还能够管理连接到全局时钟树以及位于同一列上下的其他 CMT(Clock Management Tile)的时钟信号。这种设计使得 SRCC 能够支持灵活而高效的时钟分配策略,适应复杂的设计需求。SRCC 能够驱动的时钟线如下:

  • 区域时钟线(BUFR, BUFH, BUFIO):在同一个时钟区域内,SRCC 可以驱动这些区域性的时钟缓冲器。这允许设计师在局部区域内实现精确的时钟分配和管理,优化时钟网络的性能和资源利用。

  • 同一时钟区域及相邻时钟区域内的 CMT:SRCC 能够控制同一区域内及相邻区域的 CMT,提供对更广泛时钟资源的访问和管理能力。这增强了设计的灵活性,允许更复杂的时钟管理方案。

  • 全局时钟线(BUFG):在设备的上半部或下半部,SRCC 可以驱动全局时钟缓冲器(BUFG)。这使得 SRCC 不仅限于局部或区域性的时钟分配,也能够影响整个设备的全局时钟策略,从而实现广泛的时钟网络设计。

2.2 MRCC

        MRCC(Multi-Region Clock Controller)是一种在 Xilinx FPGA 设计中用于管理时钟信号的高级组件。与 SRCC(Single Region Clock Controller)类似,MRCC 能够访问和控制时钟信号,但其功能扩展到了多个时钟区域,提供了更广泛的覆盖范围和灵活性。这种设计使得 MRCC 特别适合于那些需要跨越多个时钟区域进行时钟分配和管理的复杂应用。MRCC 的功能如下:

  • 多时钟区域访问:MRCC 能够访问多个时钟区域以及全局时钟树,这使得设计师可以在 FPGA 设计的更广泛区域内实施统一的时钟管理策略。

  • 驱动多时钟区域缓冲器(BUFMR):MRCC 可以驱动 BUFMR,这是一种特殊的时钟缓冲器,用于跨越多达三个时钟区域的时钟信号分配。这种能力对于大型 FPGA 设计至关重要,特别是当设计需要跨越多个逻辑区域协同工作时。

  • 与 SRCC 相同的基本功能:在提供多区域时钟管理的同时,MRCC 保持了与 SRCC 相同的基本功能,包括访问和控制连接到全局时钟树的时钟信号。

2.3 其他用途

      Clock-capable inputs是 FPGA 设计中非常灵活的资源,能够根据设计需求作为时钟输入或普通的I/O使用。这种灵活性提供了重要的设计优势,特别是在I/O资源紧张或需要精简设计以节省成本和空间时。下面详细介绍这些功能及其应用:

2.3.1 作为普通I/O使用

        I/O标准配置:当不作为时钟使用时,时钟能力输入引脚可以配置为任何单端或差分I/O标准,使其能够兼容不同的电气接口和信号要求。这为设计提供了极大的灵活性,允许设计师根据需要调整每个引脚的功能。

2.3.2 连接到CMT

  • 同一时钟区域的CMT连接:CC input 可以直接连接到同一时钟区域内的时钟管理单元(CMT,Clock Management Tile)。这种连接提供了高效的时钟信号传输路径,有助于实现稳定和精确的时钟分配。

  • 跨区域的CMT连接:CC input 还可以连接到上下相邻时钟区域内的CMT,尽管存在一些限制。这种跨区域的连接能力使得设计师可以更灵活地规划时钟网络,特别是在需要跨越多个时钟区域分配时钟信号的复杂设计中。

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

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

相关文章

Day23 代码随想录(1刷) 二叉树

669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代…

安踏,步入“高端化”的甜蜜陷阱

文丨黄小艺 2023年3月14日,徐阳重回安踏担任CEO的第二天,就颇为急切地拉了一场高层会议。 面对在场的安踏老人们,徐阳提了两个很终极的问题,“是什么让过去30年的安踏获得了成功?”“未来30年,如果安踏想…

mysql80-DBA数据库学习1-数据库安装

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…

智慧公厕的技术融合策略

智慧公厕是迎合现代城市发展需要的一项重要基础设施,其设计的技术融合策略在实现公共厕所泛在感知、互通互联、协同构筑智慧城市等方面起到了关键作用。本文将以智慧公厕源头实力厂家广州中期科技有限公司,大量精品案例现场实景实图实例,从物…

NetCore3.1 Controller中直接返回JObject对象抛出异常解决方案

问题描述 在NetCore 3.1的Web项目中,Controller有一个方法直接返回JObject对象时,抛出了异常 S y s t e m . N o t S u p p o r t e d E x c e p t i o n : T h e c o l l e c t i o n t y p e ′ N e w t o n s o f t . J s o n . L i n q . J O b j …

FID离子流采集硬件方案设计

一、原理简介 氢离子火焰检测器(Flame Ionization Detector, FID)是气相色谱仪中常用的一种检测器,主要用于检测有机化合物。它的工作原理基于在高温氢气/空气火焰中,有机化合物会发生离子化放出电子的过程。 1、FID的基本结构 燃烧器: 内部有一个小型燃烧池,燃烧池顶端有一个…

GA遗传算法和ALNS算法的区别(我的APS项目七)

博主用最简单的方式告诉你遗传算法是什么,估计这是网上最简单的遗传算法入门教程了。首先我们先带入一个问题,我们要去9大城市旅游,想知道每个城市走一遍,总路程最短的出行顺序是什么? OK,题目我们已经明确…

由浅到深认识Java语言(38):I/O流

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

【前端学习——js篇】5.事件循环

详细:https://github.com/febobo/web-interview 5.事件循环 js是一种单线程语言,同一时间内只能做一件事情,为了避免单线程阻塞的方法就是事件循环。 在javascript当中,所有的任务都可以分为: 同步任务:按…

Java Swing游戏开发学习19

内容来自RyiSnow视频讲解 这一节讲的是**Entity ArrayList(Render Order Revised)**实体数组列表(渲染顺序修改)。 前言 由于NPC和player的实体碰撞区域比他们本身的大小要小,所以会造成一个bug,当前的绘制顺序是,NP…

进程的基础知识

1).进程:一个正在运行中的程序; 2).PCB:进程控制块,进程描述符(PID:进程唯一的标识符) 进程控制块是用一个结构体struct task_struct来实现; 3).进程的状态: 就绪,阻塞,运行; 时间片轮转调度; 时间片轮转调度是一种最古老,最简单,最公平且使用最广的…

一文即可帮助你认识进程和线程~

本文的重点:什么是:进程、进程调度、线程和他们之间的联系。主讲概念知识,不讲代码实现 目录 一、认识进程 1.什么是进程 2.进程的信息 3.进程调度(***) 4.进程调度的基本过程 二、线程 1.线程的引入 2.什么是线程 3.进程于线程的联…

鸿蒙开发之ArkUI组件常用组件图片和文本

ArkUI即方舟开发框架是HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。 开发文档地址 &…

【功能实现】新年贺卡(蓝桥)

题目分析: 想要实现一个随机抽取功能 功能拆解:题目给了数组,我们采用生成随机数的方式,随机数作为数组的索引值访问数组的值。 并返回获取到的值,将获取到的值插入到页面中。 document.addEventListener(DOMConten…

Diffusion添加噪声noise的方式有哪些?怎么向图像中添加噪声?

添加噪声的方式大致分为两种,一种是每张图像在任意timestep都加入一样的均匀噪声,另一种是按照timestep添加不同程度的噪声 一、在任意timestep都加入一样的noise batch_size 32x_start torch.rand(batch_size,3,256,256) noise torch.randn_like(x_…

【spring】@Autowired注解学习

Autowired介绍 Spring框架是Java领域中一个非常重要的企业级应用开发框架,它提供了全面的编程和配置模型,旨在帮助开发者更快速、更简单地创建应用程序。在Spring框架中,Autowired是一个非常重要的注解,它用于实现依赖注入&#…

保研线性代数机器学习基础复习1

1.什么是代数(algebra)? 为了形式化一个概念,构建出有关这个概念的符号以及操作符号的公式。 2.什么是线性代数(linear algebra)? 一项关于向量以及操作向量的公式的研究。 3.举一些向量的例子&#x…

我的编程之路:从非计算机专业到Java开发工程师的成长之路 | 学习路线 | Java | 零基础 | 学习资源 | 自学

小伙伴们好,我是「 行走的程序喵」,感谢您阅读本文,欢迎三连~ 😻 【Java基础】专栏,Java基础知识全面详解:👉点击直达 🐱 【Mybatis框架】专栏,入门到基于XML的配置、以…

C语言运算符和表达式——赋值运算符

目录 变量的定义 赋值运算符 赋值表达式 如何给变量赋值 变量的定义 声明变量的名字和类型 变量的类型决定了 *占用内存空间的大小 *数据的存储形式 *合法的表数范围 *可参与的运算种类 *变量名标识了内存中的一个存储单元 问题:未被初始化的变量的值是什么&a…

yolov8 pose keypoint解读

yolov8进行关键点检测的代码如下: from ultralytics import YOLO# Load a model model YOLO(yolov8n.pt) # pretrained YOLOv8n model# Run batched inference on a list of images results model([im1.jpg, im2.jpg]) # return a list of Results objects# Pr…