FPGA的时钟资源

目录

简介

Clock Region详解

MRCC和SRCC的区别

 BUFGs

时钟资源总结


简介

7系列FPGA的时钟结构图:


Clock Region:时钟区域,下图中有6个时钟区域,用不同的颜色加以区分出来

Clock Backbone:从名字也能看出来,这个一个纵向贯穿整个FPGA的时钟资源,把FPGA的clock region分成了两个部分,所有的全局时钟都要从这经过。可以看到BUFG都在Clock Backbone上。Clocking Center就是Backbone中间的分割线。

Horizontal Center:水平分割线,将FPGA的BUFG分割成上下相等的两部分,像下图中,上下各有16个BUFG。需要注意的是,BUFG不属于任何的clock region,并且BUFG可以到底FPGA的任一个时钟角落。

HROW:Horizontal Clock Row, 将每一个clock region分成上下两部分,全局时钟进入每个clock region时,需要要经过HROW,有点类似于Clock Backbone在FPGA中的作用。

CMT Backbone:Clock Backbone是整个FPGA的Backbone,是很珍贵的资源,而如果是上下相邻的clock region,可以通过CMT Backbone互连。

CMT Column:每个Cloumn包含一个MMCM和一个PLL。

GT Column:高速收发器的column。

有同学可能有疑惑,为什么要分Clock Region,用一个Clock Region不是更简单么?

答:为了适用更多的时钟,假如没有Clock Region,那就全部是Global Clock,如果有16个时钟网络,那最多就支持16个时钟。而分成了Clock Region后,如果该区域的时钟资源恰好可以布局到对应的region,则只使用该region的时钟网络资源。也就是说,如果有16个时钟网络资源,那么极限情况下,两个region就可以使用32个时钟。

Clock Region详解

7系列FPGA的Clock Region的结构图:


首先我们来明确几个Buffer的含义(我们后面会有一篇文章专门来讲这几个buffer)

BUFG:Global Clock Buffer

BUFH:Horizontal Clock Buffer,可驱动左右相邻的两个Region

BUFR:Regional Clock Buffer,从名字就可以看出来,只能驱动当前Region

BUFIO:I/O Buffer,位于IO BANK中,只能用于驱动IO

BUFMR:Multi-Clock Region Buffer,它可以驱动本BANK和上下相邻BANK的BUFIO和BUFR,起到了扩展连接的作用

CC:Clock Capable

下图是Clock Region更详细的内部结构图:


可以看到:

每个IO BANK的4个cc管脚可以驱动CMT中的PLL/MMCM,也可以驱动BUFH;

HROW中有12个routing track,BUFG和BUFH共享12个track;

GT Quad有10个专门的track用于驱动CMT和Clock Backbone中的BUFFER;

BUFR有4个track驱动逻辑资源、CMT和BUFG;

CMT在一定条件下可以通过CMT Backbone驱动上下相邻的CMT;

一个Region中的时钟资源可以驱动本Region或者水平临近Region的时钟BUFFER;

CMT、CC管脚和GT时钟可以通过BUFH来驱动左右相邻Region

下图是BUFR/BUFMR/BUFIO的详细结构图:


可以看出:

         每个IO BANK都含有4个BUFIO和BUFR;

        Clock Buffer都可以被CC管脚或者MMCM来驱动;

        图中可以看到CC又分了MRCC和SRCC,从MMCM输出到BUFR和BUFIO之间有一条专门的高性能差分路径;并且,不是所有的7系列FPGA的时钟结构都像上面的图中所画,比如包含不同数量的GT可能会导致时钟结构位置不太一样,但这并不妨碍上面这些图对7系列FPGA时钟结构的说明。

MRCC和SRCC的区别

        只有7系列的FPGA中才有MRCC和SRCC的说法,到了UltraScale系列,都是叫GC。

根据前面的解释,MRCC就是Multi Region的CC,从该管脚输入的时钟可以access到不同的Clock Region,而SRCC就是Single Region的CC,从该管脚输入的时钟只能access当前Clock Region。

       所以有同学就会觉得,如果想使用全局时钟,就必须将时钟接到MRCC,而不能是SRCC。但这种理解是错误的,下面我们会详细解释。

手册中对MRCC驱动多个Clock Region的说明如下:

        MRCCs can access multiple clock regions and the global clock tree. MRCCs function the  same as SRCCs and can additionally drive multi-clock region buffers (BUFMR) to access  up to three clock region.

        MRCC通过BUFMR来access最多三个clock region,从下面的图也可以看出,已经用红色的线将MRCC的路径都标出来,可以看到,MRCC通过了BUFMR到达了CMT Backbone,然后就可以access其他的Clock Region了。


       从上面这个图可以看出,MRCC可以直接驱动BUFR和BUFIO,也可以先经过BUFMR后再驱动BUFIO和BUFR。

       SRCC的路径在下面的图中用红色的线标识出来,可看到,它的路径只在当前的Clock Region里面。


       An MRCC pin pair can drive a specific  BUFMR, which in turn can drive BUFIOs and BUFRs in the same and adjacent regions  facilitating multi-region/BANK interfaces. Similarly, a GT quad can also drive the BUFMRs

        下面这个表格解释的就更加清晰了,MRCC和SRCC都是由外部的时钟驱动,而且MRCC和SRCC的区别就在于MRCC可以驱动BUFMR,SRCC不行。其他基本都一样,它们都可以驱动四个BUFIO、四个BUFR、一个CMT、上下相邻的CMT、16个BUFG和BUFH。


       其中有一点很关键,就是它们都可以驱动BUFG和BUFH,这就意味着,从MRCC和SRCC进来的时钟都可以access全局时钟树,也就都可以当做全局时钟。

Clock-capable inputs are organized as 2 MRCC and 2 SRCC pairs in each I/O BANK. SRCCs  access a single clock region and the global clock tree, as well as other CMTs above and  below in the same column. SRCCs can drive:

• Regional clocks lines (BUFR, BUFH, BUFIO) within the same clock region

• CMTs in the same clock region and adjacent clock regions.

• Global clocks lines (BUFG) in the same top/bottom half of the device.

         MRCCs can access multiple clock regions and the global clock tree. MRCCs function the same as SRCCs and can additionally drive multi-clock region buffers (BUFMR) to access up to three clock regions.

        所以,SRCC进来的时钟,虽然不能直接驱动其他Clock Region,但接到BUFG上之后,仍然可以通过BUFG来驱动其他的Clock Region。

MRCCs that are located in the same clock region and on the same left/right side of the device drive:

        同一个Clock Region里的MRCC可以驱动下面那些模块,那为什么区分the same left/right side呢?因为FPGA里面有个纵向的Clock Backbone,以这个为间隔分成了左右两部分,所有的全局时钟都在这个Clock Backbone里面。

这个表里面还提到一句:

MRCCs within the same half top/bottom drive:

 BUFGs

       这里为什么又要求是上下了呢?这个问题的答案还是在第一篇文章,FPGA里面有个Horizontal Center,将FPGA的BUFG分割成上下相等的两部分,上下各有16个BUFG。

时钟资源总结

        Virtex-5带GC的引脚为全局时钟,CC为局部时钟,Kinkex-7的全局时钟为MRCC,SRCC为局部时钟,并且MRCC和SRCC的区别是BUFIO部分,MRCC可以采样包括自己和相邻BANK在内的3个BANK的,SRCC用BUFIO的时候只能采样自己的BANK,但是这两个都可以接到BUFG来使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】万字长文图解+代码实现AVL树

目录 一、概念 二、图解 1.图解插入 2.图解右单旋 3.图解左单旋 4.图解右左双旋 5.图解左右双旋 6.验证是否是AVL树 三、代码实现 一、概念 AVL树是一种高度平衡的二叉搜索树,得名于其发明者的名字(G. M. Adelson-Velskii和E. M. Landis&#xff0…

ELK-介绍及Elasticsearch集群搭建

ELK是三个开源软件的缩写,分别为Elasticsearch、Logstash、kibana它们都是开源软件。后来新增了一个FileBeat,它是一个轻量及的日志收集处理工具,因为Logstash由java程序开发,比较消耗内存资源,后来将Logstash使用go语…

微信小程序如何实现下拉刷新

1.首先在你需要实现下拉刷新页面的json文件中写入"enablePullDownRefresh": true。 2.在js文件的onPullDownRefresh() 事件中实现下拉刷新。 实现代码 onPullDownRefresh() {console.log(开始下拉刷新)wx.showNavigationBarLoading()//在标题栏中显示加载图标this.d…

一个将图片转3D的开源项目TripoSR

TripoSR AI是StabilityAI联合发布的图生3D模型,TripoSR是一个快速的3D物体重建模型。TripoSR能够在不到一秒钟的时间内从单张图片生成高质量的3D模型。TripoSR模型的特点是能够快速处理输入,在 NVIDIA A100 GPU 上不到 0.5 秒的时间内生成高质量的 3D 模…

用于无人机路径规划的增强型粒子群优化

摘要: 近年来,元启发式算法被广泛用于解决多目标优化问题(MOOPs)。粒子群优化(PSO)由于其在解决MOOPs方面的有效性,在这些算法中得到了普及。然而,PSO的性能高度依赖于其探索和利用能…

解锁安卓开发利器:深度探析ADB【安卓开发】

引言 在安卓开发与维护过程中,我们经常会遇到一些限制,比如无法直接访问某些系统功能,或者在某些定制系统中 受到限制 。为了解决这些问题,我们需要一种有效的工具来管理和调试安卓设备,而这时候ADB(Andro…

离线数仓(五)【数据仓库建模】

前言 今天开始正式数据仓库的内容了, 前面我们把生产数据 , 数据上传到 HDFS , Kafka 的通道都已经搭建完毕了, 数据也就正式进入数据仓库了, 解下来的数仓建模是重中之重 , 是将来吃饭的家伙 ! 以及 Hive SQL 必须熟练到像喝水一样 ! 第1章 数据仓库概述 1.1 数据仓库概念 数…

【打工日常】使用docker部署个人实时在线文档协助编辑器

一、Etherpad介绍 Etherpad是一个高度可定制的开源在线编辑器,提供真正实时的协作编辑。放在自己的服务器里面,可以更大程度的保护自己工作的隐私,并且Etherpad允许您实时协作编辑文档,就像在浏览器中运行的实时多人编辑器一样这样…

Linux网络基础2之http

这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 目录 一、认识URL 1.认识URL 2.urlencode和urldecode 二、HTTP协议格式 1.快速构建http请求和相应的报文格式 三、http demo 1.GET和POST 2.HTTP的状态码 3.http的特征 4.HTTP常见Head…

ARTS Week 20

Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上,可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens,其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…

VARMA(Vector Auto Regressive Moving Average) in Time Series Modelling

what is VARMA? ARIMA是针对单一变量进行建模的方法,当我们需要进行多变量时序建模时,需要使用VAR and VMA and VARMA模型。 VAR:Vector Auto-Regressive,a generalization of the auto-regressive model for multivariate time series where the time series is station…

高吞吐SFTP连接池设计方案

背景 在现代的数据驱动环境中,安全文件传输协议(SFTP)扮演着至关重要的角色,它提供了一种安全、可靠的文件传输方式。我们目前项目是一个大型数据集成平台,跟上下游有很多文件对接是通过SFTP协议,当需要处…

如何修复advapi32.dll丢失无法启动程序的问题

如果你在运行Windows程序时遇到了“advapi32.dll丢失无法启动程序”的错误消息,那么这意味着你的计算机缺少这个DLL文件。在本文中,我们将提供一些解决方案,帮助你解决这个问题并恢复计算机的正常运行。 一.advapi32.dll丢失电脑的提示 关于…

C语言编译成库文件的要求

keil编译成库文件 在Keil中,将C语言源文件编译成库文件通常需要进行以下步骤: 创建一个新的Keil项目,并将所需的C语言源文件添加到该项目中。 在项目设置中配置编译选项,确保生成的目标文件符合库文件的标准格式。 编译项目&…

React Three Fiber快速入门

https://threejs-journey.com/lessons/what-are-react-and-react-three-fiber#学习笔记 1.基础知识 resize 填充模版 构建第一个场景 we didn’t have to create a scenewe didn’t have to create the webglrenderthe scene is being rendered on each framethe default…

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中,对于C/C中字符串的一些区别也做出了回答,并对于C的(string库)进行了讲解,最后我们给出字符串的不同表达形式。 开发环境: VS2022 一.字符串常量跟字…

leetcode 热题 100_相交链表

题解一: 哈希表:两链表出现的第一个相同的值就是相交节点,因此我们先用哈希记录链表A所有出现过的值,再遍历链表B查找哈希表,找出第一个相同的值即为结果。 import java.util.HashSet;public class Solution {public …

如何使用Hexo搭建个人博客

文章目录 如何使用Hexo搭建个人博客环境搭建连接 Github创建 Github Pages 仓库本地安装 Hexo 博客程序安装 HexoHexo 初始化和本地预览 部署 Hexo 到 GitHub Pages开始使用发布文章网站设置更换主题常用命令 插件安装解决成功上传github但是web不更新不想上传文章处理方式链接…

【解读】OWASP 大语言模型(LLM)安全测评基准V1.0

大语言模型(LLM,Large Language Model)是指参数量巨大、能够处理海量数据的模型, 此类模型通常具有大规模的参数,使得它们能够处理更复杂的问题,并学习更广泛的知识。自2022 年以来,LLM技术在得到了广泛的应…

ReactNative项目构建分析与思考之react-native-gradle-plugin

前一段时间由于业务需要,接触了下React Native相关的知识,以一个Android开发者的视角,对React Native 项目组织和构建流程有了一些粗浅的认识,同时也对RN混合开发项目如何搭建又了一点小小的思考。 RN环境搭建 RN文档提供了两种…