目录
一、前言
使用vivado设计工程时,查看device结果时,时钟相关的site和连接是重要的一环,理解其功能有利于保证设计符合预期。
二、时钟site介绍
在之前的文章“FPGA之时钟规划浅析”中介绍了常用的时钟单元,本文将全面介绍时钟单元在时钟site,此处可以更加详细了解相互之间的连接,以及驱动关系,依旧以器件xc7z100ffg900-2为例,其他器件类似。
时钟site主要包括BUFGCTRL,BUFHCE,BUFR,BUFMRCE,BUFIO,PLLE2_ADV,
三、时钟site分布
首先理解一个IO bank的概念,即存在IO口的位置,同一个IO bank内的IO电气特性,如电压和IO标准等。外部芯片和FPGA通过IO进行信号的交互,一个region至多有一个IO bank部分region不存在IO bank。如下图左右两侧红色区域即为IO bank的区域,共有8个IO bank
BUFGCTRL位置如下图红色标记、位于芯片正中心位置
BUFHCE位置如下图红色标记,在水平方向的两个region的中间位置
BUFR位置如下所示,位置region的左右两侧,每个存在IO Bank的region都有BUFR
BUFMRCE位置如下图所示,因为BUFMRCE是驱动BUFR的,因此位置距离较近
BUFIO的位置如下图所示,和BUFR位置相近,每个存在IO Bank的region都有BUFIO
PLLE2_ADV的位置如下图所示,位于region的边界靠上角位置,每个存在IO Bank的region都有PLLE2_ADV
将一个区域内的时钟site放大如下图,一个region内4个BUFIO,4个BUFR,2个BUFMRCE
四、时钟site驱动逻辑
1、整个芯片分为上下半区,下图中粉红色范围内的为上半区,其余region属于下半区
1、IO clk为时钟输入端口,每个IO BANK内有8个IO clk
驱动关系:IO clk->BUFGCTRL/BUFH/BUFIO/BUFMRCE/PLLE2_ADV,
对于IO clk->BUFGCTRL,位于上半区IO clk只能驱动到上半区的BUFGCTRL(上方的16个BUFGCTRL),下半区的IO clk只能驱动到下半区的BUFGCTRL(下方的16个BUFGCTRL)。
对于IO clk->BUFH,IO clk可驱动同水平方向上两个region内的BUFH,不能驱动上下相邻方向内的BUFH以及跨半区region内的BUFH
2、PLLE2_ADV通常是起到分频,倍频的作用,产生更多内部需要的时钟信号,因此可到达以下时钟site
驱动关系:PLLE2_ADV->BUFGCTRL/BUFH/BUFR/BUFIO/BUFMRCE
同时,PLLE2_ADV支持相互间的并联或串联驱动,通过一些布线的资源来实现,如Pllroute
3、BUFGCTRL,BUFH,BUFR,BUFIO上的连线路径可理解为现实中的高速公路,省道,乡道,BUFGCTRL上信号传输最快,到达各处的时延最小,但因成本较高,资源有限。BUFH省道传输速度次之,但涉及范围更广;BUFR类似乡道,乡道速度最慢,但可以进村;BUFIO是家门口的泥巴小路,可到家门口。
驱动关系:
3.1 BUFGCTRL->BUFH->PLLE2_ADV
3.2 BUFH->BUFGCTRL(不建议如此使用)
3.3 BUFR/BUFH->BUFGCTRL
3.4 BUFR->PLLE2_ADV/BUFIO
3.5 BUFIO->ILOGIC
4、BUFMR主要是用于驱动本区域以及上下相邻两个区域的BUFR/BUFIO
驱动关系:BUFMR->BUFR/BUFIO/PLLE2_ADV
MUFMR的驱动源只有IO clk以及布线资源switchbox