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

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

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

相关文章

WIFI驱动移植实验:WIFI驱动加载测试

一. 简介 前面文章学习了向kernel内核源码中添加 trl8188驱动代码,配置内核以支持 WIFI设备,使能WIFI功能。文章地址如下: WIFI驱动移植实验:删除Linux内核自带的 RTL8192CU 驱动-CSDN博客 WIFI驱动移植实验:将 rtl…

LeetCode 135. 分发糖果

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的…

C语言中连字符“#”的使用,输出固件的编译时间和版本号

首先我们使用C语言宏定义和“#”来组合字符串 #define MAINVER 2#define SUBVER1 0#define SUBVER2 1#define STR(s) #s#define VERSION(a,b,c) "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__ 然后我们在全局变量中定义一…

服务器硬件

目录 服务器CPU服务器GPU服务器内存服务器硬盘服务器主板散热系统(服务器风扇)服务器电源(电影供应器)其他网络适配器扩展卡 服务器CPU 基于架构的分类:根据CPU的架构不同,可以分为x86架构(如I…

API接口鉴权签名设计

在设计API接口的鉴权签名时,通常会使用一种加密算法来生成签名,以确保请求的合法性和安全性。以下是通过鉴权签名的设计方案。 1、接口秘钥设置 Key:123 Secret:abc 2、接口Url 接口Url需要使用https的协议保证接口数据安全传输 3、请求参数 3.1、…

VsCode的json文件不允许注释的解决办法

右下角找到注释点进去 输入Files: Associations搜索出此项 改为项为*.json值为jsonc保存即可 然后会发现VsCode的json文件就允许注释了

哈工大 sse C语言 困难

Q1892.(10分数, 语言: C)Two Bags of Potatoes time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Valera had two bags of potatoes, the first of these bags contains x (x≥1) potatoes, and the second — y (y…

RAG进阶笔记:RAG进阶

1 查询/索引部分 1.1 层次索引 创建两个索引——一个由摘要组成,另一个由文档块组成分两步进行搜索:首先通过摘要过滤出相关文档,接着只在这个相关群体内进行搜索 1.2 假设性问题 让LLM为每个块生成一个假设性问题,并将这些问…

SQL104 返回产品名称和每一项产品的总订单数(left join..on.. ,group by)

select prod_name,count(order_num) as orders from Products P left join OrderItems OI on OI.prod_id P.prod_id group by prod_name order by prod_name;left join一个数据条多的表 count(order_num),group by 另一个字段

C/C++ 各种编译器平台判断,返回对应平台CPU缩写符

参考以下实现,MIPS、ARM、RISV64、X86、X86_64、M68K、S390X、MIPS64、PPC64、LONGARCH32、LONGARCH64等。 const char* GetPlatformCode() noexcept { #if defined(__x86_64__) || defined(_M_X64)return "X86_64"; #elif defined(i386) || defined(__i3…

openEuler 22.03 安装 .NET 8.0

openEuler 22.03 安装 .NET 8.0 openEuler 22.03 安装 .NET 8.0 openEuler 22.03 安装 .NET 8.0 查看内核信息 [jeffPC-20240314EIAA ~]$ cat /proc/version Linux version 5.15.146.1-microsoft-standard-WSL2 (root65c757a075e2) (gcc (GCC) 11.2.0, GNU ld (GNU Binutils)…

ArkTS 的基本语法

ArkTS 的基本语法 ArkTS 是鸿蒙生态的应用开发语言。它在保持 TypeScript(简称 TS)基本语法风格的基础上,对 TS 的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式 UI、状态管理等相应的能力&#xff…

全志R128 SDK HAL 模块开发指南——GPADC

GPADC 模块介绍 GPADC 是 12bit 采集精度的模数转换模块,支持 4 路通道,模拟输入范围 0-1.8v,最高采样率 1MHZ,并且支持数据比较,自校验功能,同时工作于可配置的四种工作模式: Single mode&a…

科学高效备考2024年汉字小达人:历年真题详细解析-古诗文专题10

距离2024年第11届汉字小达人比赛还有七个多月的时间,如何利用这段时间有条不紊地备考呢?我的建议是两手准备:①把小学1-5年级的语文课本上的知识点熟悉,重点是字、词、成语、古诗。阅读理解不需要。②把历年真题刷刷熟&#xff0c…

JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

目录 前言&#xff1a; 一维数组降序&#xff1a; 方法1.Comparator接口&#xff1a; 代码实现&#xff1a; 方法2.Collections.reverseOrder()&#xff1a; 代码实现&#xff1a; 二维数组排序&#xff1a; 代码如下&#xff1a; List<>排序&#xff1a; 代码…

Ansible-1

Ansible是一款自动化运维、批量管理服务器的工具&#xff0c;批量系统配置、程序部署、运行命令等功能。基于Python开发&#xff0c;基于ssh进行管理&#xff0c;不需要在被管理端安装任何软件。Ansible在管理远程主机的时候&#xff0c;只有是通过各种模块进行操作的。 需要关…

Linux 注入依赖环境

文章目录 配置依赖程序安装 JDK安装 Tomcat安装 mysql 配置依赖程序 下面配置依赖程序都以CentOS为例。 安装 JDK 可以直接使用 yum(CentOS) 直接进行安装。 先搜索&#xff0c;确定软件包的完整名称。 yum list | grep jdk再进行安装 进行安装的时候一定要先确保处在“管理…

【详细讲解React 快速入门教程】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

【C语言】strcmp 的使⽤和模拟实现

前言 这篇文章将要带我们去实现模拟一个strcmp函数 首先我们要知道strcmp函数的定义 strcmp()定义和用法 我们先看一下strcmp在cplusplus网站中的定义 链接: link int strcmp ( const char * str1, const char * str2 );比较两个字符串将 C 字符串 str1 与 C 字符串 str2 …

Java Stream API之reduce方法详解

Java 8引入的Stream API为Java开发者带来了函数式编程的风格&#xff0c;使得数据处理变得更加简洁和高效。在这众多的流操作中&#xff0c;reduce()方法是一个非常强大且灵活的工具&#xff0c;它可以将流中的元素组合起来&#xff0c;生成单一的汇总结果。本文旨在深入探讨re…