7系列FPGA的时钟资源——UG472
时钟架构总览
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/时钟区域的IO,SRCC只能驱动相同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的更多相关文章
- Spartan6系列之Spartan6系列之芯片时钟资源深入详解
1. 时钟资源概述 时钟设施提供了一系列的低电容.低抖动的互联线,这些互联线非常适合于传输高频信号.最大量减小时钟抖动.这些连线资源可以和DCM.PLL等实现连接. 每一种Spartan-6芯片提 ...
- xilinx FPGA全局时钟资源的使用
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...
- FPGA开发时钟资源评估需要考虑的问题
在第一个独立开发的FPGA项目中,使用了Altera平台的三速以太网IP,工作在100M模式下,外部输入的PHY时钟频率为25MHz. 由于在前期没有注意这个外部输入的时钟,导致最后不得不在板子上飞线 ...
- 对FPGA的时钟资源理解(更新中)
7系列FPGA中包含了多达24个CMT(时钟管理单元)(实际上V7常见只有20个),MMCM和PLL均为时钟综合器,对外部输入时钟.内部时钟进行处理,生成需要的低抖动时钟.PLL是MMCM的功能子集, ...
- Xilinx FPGA全局时钟和全局时钟资源的使用方法
对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路 ...
- 三叔学FPGA系列之一:Cyclone V中的时钟资源
之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...
- FPGA系列之一:Cyclone V中的时钟资源
之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...
- Xilinx FPGA的专用时钟引脚及时钟资源相关
主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...
- Xilinx原语学习之时钟资源相关原语
一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...
随机推荐
- Java面试准备之IO
Java IO Java IO 分类 Java BIO: 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线 ...
- js 对日期处理
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- 在SQL Server中如何进行UPDATE TOP .....ORDER BY?
前言 今天在导入数据到系统后需要根据时间排序对刚导入的TOP N条进行数据更新,之前没遇到过UPDATE TOP...ORDER BY,以此作为备忘录. SQL SERVER之UPDATE TOP.. ...
- 跳出语句break 和continue
关键字break 常见的两种用法 在switch语句当中,一旦执行,整个switch语句立刻结束 在循环语句当中,一旦执行,整个循环语句立刻结束.跳出循环 代码举例: public class Dem ...
- Docker Toolbox替换默认docker machine的存储位置
使用Docker Toolbox是因为它不用打开windows的hyper-v组件,这样可以和VMware workstation一起使用. 关于如何迁移可参考:https://www.cnblogs ...
- Java的selenium代码随笔(1)
package ShareClass; import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;impor ...
- 【win7】安装开发环境
1. 通用版主分支合并到v3,并删除data下无用文件或添加data有用文件 2. xampp php7与php5切换 是否可以行? 换phpstudy 默认支持php 32位,而我们要下载支持64的 ...
- vue独立构建和运行构建
有两种构建方式,独立构建和运行构建.它们的区别在于前者包含模板编译器而后者不包含. 模板编译器:模板编译器的职责是将模板字符串编译为纯 JavaScript 的渲染函数.如果你想要在组件中使用 tem ...
- vue 自定义指令的使用案例
参考资料: 1. vue 自定义指令: 2. vue 自定义指令实现 v-loading: v-loading,是 element-ui 组件库中的一个用于数据加载过程中的过渡动画指令,项目中也很少需 ...
- BZOJ4241历史研究——回滚莫队
题目描述 IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. 日记中记录了连 ...