可编程逻辑
导读:
通过上一篇文章“时钟管理技术”,我们了解Xilinx 7系列FPGA主要有全局时钟、区域时钟、时钟管理块(CMT)。 通过以上时钟资源的结合,Xilinx 7系列FPGA可实现高性能和可靠的时钟分配,以满足各种设计需求,并提供时钟驱动逻辑资源的灵活性和可扩展性。那今天我们一起解剖Xilinx 7系列FPGA的时钟结构,看看它到底如何实现如此丰富的时钟资源并能够做到完美平衡。
先打一针预防针,基于FPGA的时钟结构相关知识本身比较复杂,读者必须认真跟着节奏阅读,我将以更形象和更通俗易懂的描述/示图带大家了解FPGA整个时钟树框架、涉及的名称概念、区域时钟、时钟管理块(CMT)等概念。
先抛出一个问题:FPGA如果不设计合适的时钟结构会有什么后果?
如上图所示:CC表示引入外部时钟的引脚,其他几个黑点分布在不同bank的逻辑电路,且为同一时钟域的逻辑电路,要求时钟同步。通过上一篇文章大家可知,因为布线长度不同,很容易出现时钟skew(偏斜),没法同步。
通过对比上面两个示意图,大家可能知道答案了。左侧是没有专用的时钟结构,分散在不同bank的逻辑仅靠FPGA内部IO布线资源不可能做到时钟同步。而右侧的紫色、绿色、黄色“柱”都是FPGA的专用时钟布线通道,均匀排列并横跨到每一个bank。CC引脚可直接连到这些专用时钟通道上。理想状态下,FPGA内的任何地方都可以做到时钟同步。
有了这个“引子”,再理解下文的时钟架构解剖就简单多了。
Xilinx-7系列时钟架构
高层次时钟架构视图(xilinx 7系列原文档)
Horizontal Center:“水平中心”这里指的是一个水平分界线的概念,没有特定的时钟电路。它将FPGA平均划分为上下两个区域的分界线。horizontal center 的主要作用是有利于帮助设计人员布局和约束时钟资源,方便设计人员在特定区域内管理和规划时钟资源在FPGA布局中的约束和分隔。限定某些时钟资源的范围,使其仅在特定的区域内使用。
Clock Backbone:时钟骨干(从分界线角度也可将它看作是垂直中心线,不过时钟骨干有特定的时钟资源电路)。它将FPGA分为对称的左右两个区域,从名字上可知,这是FPGA的时钟主干通道,所有的全局时钟布线均要从时钟骨干经过。
Clock Region:时钟区域,FPGA内部被分成了很多个时钟区域。每个时钟区域的高度为50个CLB,并跨越芯片一半“面积”(可以先简单理解为,一个时钟区域对应有一个IO bank),读者可跳过此处,参见下文“clock region”先对时钟区域的概念、包含哪些资源做大致了解。
HROW:时钟区域的水平时钟行(Horizontal ROW)。位于时钟区域水的水平中心线,从水平方向贯穿每个时钟区域的中心区域,将时钟区域分成上下完全一致的两部分。HROW上方和下方的时钟资源通过HROW进行连接和路由。HROW主要用于在时钟区域内传递和分配时钟信号,使时钟能够到达区域中的各个时钟点和时序资源。
I/O Column:I/O"列",FPGA通常将一组I/O (输入/输出引脚)资源称为一个I/O BANK,每个BANK大小一样。布局上,这些I/O BANK 对称位于Clock Backbone(垂直中心线)的两侧,所以从物理布局上看,一边的I/O Banks确实有”列“的意思(参见下文时钟架构简图)。这种布局设计可以提供更好的布线和连接选项,以满足不同的设计需求。
CMT Column:CMT“列”,同理,对应每一个BANK都有一个CMT(时钟管理块)。物理布局上,7系列FPGA也是有左右两”列“CMT Columns 。每个CMT 包含一个混合模式时钟管理器(Mixed-Mode Clock Manager,MMCM)和一个锁相环(Phase-Locked Loop,PLL),它们提供了时钟频率合成、去抖动和滤波等功能。CMT Backbone把各个CMT 连接在一起。
CMT Backbone:时钟管理器(CMT)骨干,CMT之间的互连通道。它跨越了整个FPGA的高度,它提供了上下相邻的时钟区域的时钟传递路径和连接。CMT Backbone在整个FPGA中起到关键的作用,确保时钟信号的准确传递和同步。
GT Column:GT“列”,同理,FPGA通常将一组GT(一个或多个高速串行通道)资源称为一个GT BANK。物理布局上,7系列FPGA也是有左右两“列“GT Banks 。GT是用于支持高速数据传输的特殊功能模块,通常用于实现高速串行接口协议,如PCI Express、Ethernet、USB等。GT Column通常与I/O Column和CMT Column相邻。
时钟结构、资源解剖
注:
假设xilinx 7系列某一款FPGA共8个I/O bank,我用上图详细解剖其时钟结构:如图可见,共划分8个Clock Region(时钟区域),Clock Backbone(时钟骨干)将8个时钟区域分成左边4个和右边4个两个对称部分。然后HROW从水平方向贯穿每个时钟区域的中心,并与时钟骨干相连。每个时钟区域都含有一个CMT(时钟管理块),然后每个时钟区域的CMT则通过CMT Backbone(CMT 骨干)相连,且CMT骨干还与HROW相连。因此任何一个时钟区域内的时钟都可通过CMT骨干、HROW、时钟骨干到达另一个时钟区域。
看上去有点像人背上的骨骼,通过脊柱均匀对称的分布到各个时钟区域。
注:
下图则是将一个时钟区域内的主要资源全部示意出来:包括CLB,块RAM,DSP,GT,IO Bank,CMT等时钟资源。结合本合集的第一篇文章,是否发现,FPGA其实就这么回事。
总结来说,FPGA实际上就是被分成很多个大小一样时钟区域,每个时钟区域既可单独工作又可通过全局时钟Clock BackBone统一工作,同时水平相邻的时钟区域又可通过HROW来统一工作,上下相邻的时钟区域又可通过CMT Backbone统一工作。
时钟区域(clock region)
Vivado 7系列某FPGA implementation 的device视图
注:
阅读到这里,大家应该对“时钟区域”的概念有了一定的了解,为了大家对时钟区域有更真实形象的理解,我截取了Xilinx 开发工具vivado 下某设备的布局布线视图。
Xilinx FPGA中的X0Y0等类似的命名表示一个时钟区域(Clock Region)。Xilinx FPGA使用X、Y和数字索引来命名时钟区域块。X和Y表示FPGA芯片的行和列,而数字索引表示时钟区域块在FPGA芯片内的位置。例如,X0Y1表示FPGA芯片的第一行第二列的时钟区域块。
通过对FPGA芯片进行时钟区域块的划分,设计工程师可以更好地组织和管理逻辑资源和时钟资源,以优化时序性能、减少时钟相关问题,并实现设计的高性能和稳定性要求
注释:
一个时钟区域内的可用时钟资源和连接特性
全局时钟缓冲器(BUFG)可以通过HROW驱动到每个时钟区域。水平时钟缓冲器(BUFH)通过HROW驱动到区域中的每个时钟点。BUFG和BUFH在HROW上共享路由通道。I/O缓冲器(BUFIO)和区域时钟缓冲器(BUFR)位于I/O Bank内。BUFIO仅驱动I/O时钟资源,而BUFR驱动I/O资源和逻辑资源。BUFMR使BUFIO和BUFR实现多区域级联。时钟引脚(CC)将外部时钟引入FPGA内部时钟资源。
总结
本文主要让读者了解和掌握FPGA的时钟结构特点、虽然是以Xilinx 7系列FPGA为例,但大同小异,基本原理相同。有关7系列FPGA内部更详细的时钟结构和时钟资源怎么使用,请参考ug472_7Series_Clocking.pdf。下一篇时钟篇3将重点介绍CMT和时钟资源的使用范例,敬请期待!
全部0条评论
快来发表一下你的评论吧 !