时钟架构总览

7系的FPGA使用了专用的全局(Global)和区域(Regional)IO和时钟资源来管理设计中各种的时钟需求。Clock Management Tiles(CMT)提供了时钟合成(Clock frequency synthesis),倾斜矫正(deskew),过滤抖动(jitter filtering)功能。非时钟资源,例如本地布线,不建议使用在时钟设计中。

  • 全局时钟树(Global clock tree)可以驱动device中的所有同步原件(synchronous elements)
  • IO和区域时钟树(Regional clock tree)可以驱动最多三个垂直连接的时钟区域
  • 每一个CMT包括了一个MMCM(Mixed-mode clock manager)和一个PLL(Phase-Locked Loop)。两者存在于的CMT柱(CMT Column)中,而CMT柱则在IO柱(IO Column)旁边。

为了满足不同的时钟使用需求,每一个7系的device都把时钟分成了区域(Regions)

  • 根据不同的device大小,时钟区域从最少的4个到最大的24个
  • 一个时钟区域包括了所有的同步元件(例如: CLB, IO, Serial Transceivers,DSP, Block RAM, CMT),也包括了50个CLBs和一个IO bank,在时钟区域的中间还有一个水平的时钟Row(HROW,Horizontal clock ROW)
  • 每一个时钟区域在HROW的上下各有25个CLB

垂直时钟线和水平时钟线将时钟分成了很多区域。

每列时钟域包含50个CLB,10个36kb的block RAMs,20个DSP slices和12个BUFHS(水平时钟缓冲器)。

上图为一个时钟域基本的连接结构,

全局时钟缓冲器(BUFG)能够通过HROW(水平时钟行)驱动所有区域,

水平时钟缓冲(BUFH)驱动器通过HROW到该区域的每一个时钟点。

在HROW中,BUFG和BUFH共享路径。

BUFIO和BUFR都在IO bank里面,BUFIO只驱动IO资源,BUFR驱动IO资源和逻辑资源。

BUFMR支持多区域链接BUFIOs和BUFRs。

时钟输入与外部时钟相连,确定的资源能够连接到CMT的骨架上。

MRCC/SRCC是区域时钟的BUFIO,MRCC能驱动相同、上下相邻bank/时钟区域的IOSRCC只能驱动相同bank/时钟区域的IO
GCLK是全局时钟网络的BUFIO。
CCLK是配置时钟IO。

全局时钟资源是一种专用互连网络,它可以降低时钟歪斜、占空比失真和功耗,提高抖动容限。Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLB、IOB和BRAM的延时最小。

区域时钟资源是独立于全局时钟网络的。Xilinx的器件分成若干个时钟区域,以Virtex-6为例,Virtex-6的最小器件有6个区域,最大器件有18个区域。它与全局时钟不同,区域时钟信号X只能驱动限定的时钟区域。

HROW(时钟行):

全局时钟资源是一种专用互连网络,它可以降低时钟歪斜、占空比失真和功耗,提高抖动容限。Xilinx的全局时钟资源设计了专用时钟缓冲与驱动结构,从而使全局时钟到达CLB、IOB和BRAM的延时最小。

区域时钟资源是独立于全局时钟网络的。Xilinx的器件分成若干个时钟区域,以Virtex-6为例,Virtex-6的最小器件有6个区域,最大器件有18个区域。它与全局时钟不同,区域时钟信号X只能驱动限定的时钟区域。

BUFG(全局时钟网络时钟驱动器):

时钟信号要走全局时钟网络,必须通过这个BUFG来驱动,BUFG可以驱动所有的CLB,RAM,IOB。spartan6 有一共有16个BUFG全局时钟线。virtex-6则一共有32个BUFG全局时钟线。

BUFH(水平全局时钟树):

BUFH驱动区域中的水平全局时钟树,Xilinx的时钟是通过时钟树来分布的。

BUFR(区域时钟缓冲器):

要进入区域时钟网络,必须例化BUFR。一个BUFR最多可以驱动三个相邻的时钟区域中的区域时钟。顶部和底部区域中BUFR只能连接相邻的一个时钟区域,也就是说,顶部的BUFR连接它所在的下面一个相邻区域。底部的BUFR只能连接它所在的上边一个相邻区域。因此,底部和顶部BUFR的作用区域为两个时钟区域。

BUFIO:

UFIO是用来驱动I/O列内的专用时钟网络,这个专用的时钟网络独立于全局时钟资源,适合采集源同步数据。BUFIO只能由位于同一时钟区域的Clock-Capable I/O驱动。一个时钟区域有4个BUFIO,其中的2个可以驱动相邻区域的I/O时钟网络。BUFIO不能驱动逻辑资源(CLB、BRAM等),因为I/O时钟网络只存在于I/O列中。

时钟布线总览

每一个IO bank都含有clock-capable input pin来帮助外部时钟进入到7系的FPGA时钟资源里。在专属clock buffer的帮助下,clock-capable input带来时钟:

  • 全局时钟分布于device的上下两部分
  • IO时钟分布于与之相同的IO bank和垂直相邻的IO bank中
  • 区域时钟分布于与之相同的时钟区域中和垂直的相邻时钟区域

7系的device有32个全局时钟线,可以提供时钟和控制信号到所有的时序资源中。全局时钟buffer(BFUG)用来驱动全局时钟线且必须用于驱动全局时钟线。每一个时钟区域可以支持最多12个这样的全局时钟,12条全局时钟使用水平时钟线(HROW)来进入时钟区域

对于全局时钟buffer(BUFG)来说:

  • 对于跨越多个时钟区域的时钟,此buffer可以用于clock enable或disable
  • 作为一个glitch-free multiplexer
  • 在两个时钟源做出选择
  • 从一个废弃的时钟中退出
  • 经常被CMT驱动
  • 消除clock distribution delay
  • 根据另外的clock调整clock delay

水平的时钟buffer(BUFH)允许使用HROW访问全局时钟线。它也可以作为一个clock enable电路(BUFHCE)来独立的enable或者disable。每一个时钟区域使用12条水平时钟线来支持最多12个时钟。

每一个7系FPGA有区域和IO时钟树来驱动同时钟区域的所有的时序资源。每个device也有多时钟区域buffer(BUFMR)来允许IO和区域时钟能垂直跨越三个时钟区域。

  • IO时钟buffer(BUFIO)驱动IO时钟树,访问同一个IO bank中的所有时序IO资源
  • 区域时钟buffer(BUFR)驱动区域时钟树(regional clock tree)来驱动同一个时钟区域中的所有时钟资源且可以用于分频(divide)时钟频率
  • 在IOB中的serializer/deserializer的帮助下,BUFIO和BUFR时钟buffer允许源同步的系统(Source-synchronous system)跨越时钟域(clock domain)且不使用额外的逻辑资源
  • 相邻的区域和IO时钟树可以使用multi-clock region buffer(BUFMR)来驱动(使用相关的BUFR或者BUFIO时)
  • 最多4个唯一(unique)的IO时钟和4个唯一的区域时钟可以被一个时钟区域或者IO bank所支持

CMT到IO的连接使用了高性能时钟布线,每一条布线都是低抖动,最小duty-cycle扭曲的path(minimal duty-cycle distorted direct path)

BUFR经过分频后的时序图:

the span of a regional clock signal (BUFR) is limited to one clock region, one I/O clock signal drives a single bank
The BUFIO drives a dedicated clock net within the I/O bank, independent of the global clocking resources. Thus, BUFIOs are ideally suited for source-synchronous data capture (forwarded/receiver clock distribution).
BUFRs drive clock signals to a dedicated clock net within a clock region, independent from the global clock tree. Each BUFR can drive the four regional clock nets in the region it is located. Unlike BUFIOs, BUFRs can drive the I/O logic and logic resources (CLB, block RAM, etc.). Clock division in the BUFR is controlled in software through the BUFR_DIVIDE attribute.
BUFRs are ideal for source-synchronous applications requiring clock domain crossing or serial-to-parallel conversion. Unlike BUFIOs, BUFRs are capable of clocking logic resources in the FPGAs other than the IOBs. Figure 2-23 is a BUFR design example.

CMT总览

每个7系FPGA有最多24个CMT,每一个由一个MMCM和一个PLL组成。MMCM和PLL提供广范围的频率综合,外部或内部时钟的防抖过滤器(jitter filter)和提供抗扭曲时钟(deskew clock)。PLL包含了一部分MMCM的功能。7系的FPGA时钟输入允许多个资源来提供reference clock到MMCM和PLL

7系的FPGA MMCM有无限的phase-shift能力且可以用于动态phase-shifting模式。MMCM在feedback或者一个output path中也有分数计数器(Fractional counter)功能来提供更好的频率合成能力。

LogiCORE IP可以合理利用MMCM和PLL来创造时钟网(clock network).GUI的画面提供了各种时钟参数。IP可以选择合适的CMT资源和的配置CMT资源和布线资源。

 Clock Network Deskew

In many cases, designers do not want to incur the delay on a clock network in their I/O timing budget therefore they use a MMCM/PLL to compensate for the clock network delay. 7 series FPGAs support this feature. A clock output matching the reference clock CLKIN frequency (always CLKFBOUT) is connected to a BUFG in the same half of the device and fed back to the CLKFBIN feedback pin of the MMCM/PLL. The remaining outputs can still be used to divide the clock down for additionally synthesized frequencies.In this case, all output clocks have a defined phase relationship to the input reference clock. The CLKOUT0–CLKOUT3 of either the MMCM or PLL can be used to cascade to other MMCMs/PLLs. However, there is a phase offset on the output clocks between cascaded MMCMs/PLLs.

 Frequency Synthesis Only Using Integer Divide

将MMCM和PLL当滤波器使用,取出时钟抖动。

静态相移和动态相移:

1) 静态相移模式。

VCO能够以45°的间隔提供8个移相时钟,静态相移模式通过选择这8个VCO输出相移中的一个实现的。因此以时间为单位的相移分辨率定义为:PS=1/8FVCO或D/8MFIN。因为VCO具有明确的工作范围,所以可以把相移分辨率的范围界定为从1/8 FVCO_MIN到1/8 FVCO_MAX。VCO的频率越高,相移分辨率就越高。各输出计数器可分别编程,允许每个计数器在VCO的输出频率的基础上具有不同的相移。

(2) IFPS模式。

Virtex-6还提供一种IPFS模式相移,支持固定或动态模式。在该模式下,相移实现线性移位特性,和CLKOUT_DIVIDE值无关,只决定于VCO频率。MMCM以Fvco/56为步长进行相位调节。相移值可在配置过程中固定,也可动态改变。
CLKOUT计数器可分别设置成静态相移模式或者IPFS模式,固定相移模式下,动态相移接口不能被使用。

(3) 动态相移接口。

Virtex-6可以由PSEN、PSINCDEC、PSCLK和PSDONE控制动态相移。MMCM锁住后,CLKOUT_PHASE属性决定初始相位,通常情况下,可以不设置初始相移。MMCM根据PSEN、PSINCDEC、PSCLK和PSDONE信号的动作,改变输出相移。步长为VCO时钟周期的1/56。

7系列FPGA的时钟资源——UG472的更多相关文章

  1. Spartan6系列之Spartan6系列之芯片时钟资源深入详解

    1.   时钟资源概述 时钟设施提供了一系列的低电容.低抖动的互联线,这些互联线非常适合于传输高频信号.最大量减小时钟抖动.这些连线资源可以和DCM.PLL等实现连接. 每一种Spartan-6芯片提 ...

  2. xilinx FPGA全局时钟资源的使用

    1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...

  3. FPGA开发时钟资源评估需要考虑的问题

    在第一个独立开发的FPGA项目中,使用了Altera平台的三速以太网IP,工作在100M模式下,外部输入的PHY时钟频率为25MHz. 由于在前期没有注意这个外部输入的时钟,导致最后不得不在板子上飞线 ...

  4. 对FPGA的时钟资源理解(更新中)

    7系列FPGA中包含了多达24个CMT(时钟管理单元)(实际上V7常见只有20个),MMCM和PLL均为时钟综合器,对外部输入时钟.内部时钟进行处理,生成需要的低抖动时钟.PLL是MMCM的功能子集, ...

  5. Xilinx FPGA全局时钟和全局时钟资源的使用方法

    对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路 ...

  6. 三叔学FPGA系列之一:Cyclone V中的时钟资源

    之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...

  7. FPGA系列之一:Cyclone V中的时钟资源

    之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...

  8. Xilinx FPGA的专用时钟引脚及时钟资源相关

    主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...

  9. Xilinx原语学习之时钟资源相关原语

    一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...

随机推荐

  1. c# throw和throw ex

    c# throw和throw ex 我们在日常开发当中,经常会用到exception异常,并且我们会在exception中的catch块中throw exception,例如: static void ...

  2. Spring Boot2.0使用Spring Security

     一.Spring Secutity简介     Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性 ...

  3. Entity Framework Core系列之DbContext(删除)

    上一篇我们介绍了Entity Framework Core系列之DbContext(修改),这一篇我们介绍下删除数据 修改实体的方法取决于context是否正在跟踪需要删除的实体. 下面的示例中con ...

  4. jQuery 事件对象的属性

    jQuery 在遵循 W3C 规范的情况下,对事件对象的常用属性进行了封装,使得事件处理在各大浏览器下都可以正常运行而不需要进行浏览器类型判断. (1) event.type 该方法的作用是可以获取到 ...

  5. property与x.setter与x.deleter

    #测试property,x.setter,x.deleter class Test1: def __init__(self): self.__private = "alex" @p ...

  6. Luogu5283 十二省联考2019异或粽子(trie/可持久化trie+堆)

    做前缀异或和,用堆维护一个五元组(x,l,r,p,v),x为区间右端点的值,l~r为区间左端点的范围,p为x在l~r中最大异或和的位置,v为该最大异或和,每次从堆中取出v最大的元素,以p为界将其切成两 ...

  7. POJ3565 Ants (不相交线)

    那请告诉我 A - D  B - C  和  A - C  B - D 那个的和小 显然是A - C  B - D  (可以根据四边形 对角线大于对边之和) 然后 求的答案是不是就一定是不相交的 就是 ...

  8. sqlite 数据库 boolean类型的小小测试

    根据官方文档的介绍: SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored ...

  9. jmeter5.1测试websocket接口

    jmeter没有websocket协议的取样器,需要我们自己开发,但是网上已经有大神先开发好了,[相关jar包,点击左侧加群获取] 只需要放到jmeter的ext目录(D:\apache-jmeter ...

  10. busybox(四)完善

    目录 busybox(四)完善 proc挂载 手动挂载 proc解析 使用脚本自动挂载 使用mount-a挂载 udev/mdev 挂载 使用jffs2 文件系统格式 安装zlib 安装jffs2 生 ...