硬件基础:FPGA时钟-Xilinx 7系列

硬件基础:FPGA时钟-Xilinx 7系列 (持续更新)

文章目录

  • 硬件基础:FPGA时钟-Xilinx 7系列 (持续更新)
    • 一、基本概念
      • 1. 时钟架构
      • 2. 时钟区域
      • 3. 时钟操作法则
      • 4. CMT简介
    • 末、参考文献

一、基本概念

1. 时钟架构

7系列的时钟结构核前面几个系列有很大的区别,其架构如图所示:

硬件基础:FPGA时钟-Xilinx 7系列_第1张图片

掌握此图,掌握一切
  1. Clock Region:FPGA内部分成了很多个时钟区域。

  2. Horizontal Center:FPGA被Horizontal Center分成上下两个部分,每个部分包含16个BUFG。

    BUFG:全局缓冲,使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。

  3. Clock Backbone:全局时钟线的主干道,将FPGA分成了左右两部分,所有的全局时钟布线均要从此经过。

  4. HROW:水平时钟线,从水平方向贯穿每个时钟区域的中心区域,将时钟区域分成上下完全一致的两部分。全局时钟线进入每个时钟区域的逻辑资源时,必须经过水平时钟线。

  5. I/O Column:外部信号/时钟输入管脚。

  6. CMT Backbone:对于相邻时钟区域的时钟布线,可以不使用珍贵的全局时钟网络,而使用每个时钟区域都包含的CMT Backbone通道。

  7. CMT Column:每个时钟区域都包含一个CMT,一个CMT由一个MMCM和一个PLL组成。

  8. GT Column:内含高速串行收发器。

2. 时钟区域

硬件基础:FPGA时钟-Xilinx 7系列_第2张图片

  1. BUFG:全局时钟缓冲器,从图上看到,其输出时钟通过Clock

  2. Backbone:可以到达任意一个时钟区域,而且BUFG通过HROW到达时钟区域内部的每个逻辑单元。

  3. BUFH:水平时钟缓冲器,它相当于一个功能受限的BUFG,其输出时钟只能通过HROW在左右相邻的时钟区域内工作。

  4. BUFIO:IO时钟缓冲器,其输出时钟只能作用在一个时钟区域的IO寄存器处,无法在FPGA内部逻辑使用。

  5. BUFR:区域时钟缓冲器,其输出只能作用在一个时钟区域,相当于BUFH的阉割版。

  6. BUFMR:多区域时钟缓冲器,其输出作用在本时钟区域,还可以通过CMT Backbone作用在上下相邻两个时钟区域。

  7. MMCMPLL:时钟管理模块,用来消除时钟的延迟、抖动以及产生各种不同频率的时钟。

  8. CC:外部时钟输入管脚,其管脚在内部可以连接到BUFG、BUFR、BUFIO、BUFH、MMCM、PLL等,看具体的应用具体连接。下图所示为更为细致的CC管脚连接图。一个时钟区域有4对CC管脚,其中2对SRCC,2对MRCC

    硬件基础:FPGA时钟-Xilinx 7系列_第3张图片

    SRCC:Single-Region Clock-capable 区域时钟使用时,只能连接本时钟区域的BUFR和BUFIO。

    MRCC:Mult-Region Clock-capable 除了本时钟域,还可以通过BUFMR作用在上下相邻的时钟区域。

3. 时钟操作法则

先上图,以图为本。

硬件基础:FPGA时钟-Xilinx 7系列_第4张图片

硬件基础:FPGA时钟-Xilinx 7系列_第5张图片

  1. MRCC:被外部差分/单端时钟驱动;可以驱动本时钟区域的4个BUFIO、4个BUFR、2个BUFMR、本时钟区域的CMT以及上下相邻时钟区域的CMT、16个BUFG、本时钟区域以及水平相邻时钟区域的BUFH。
  2. SRCC:和MRCC类似,但只作用在本时钟区域;其被外部差分/单端时钟驱动;可以驱动本时钟区域的4个BUFIO、4个BUFR、本时钟区域的CMT以及上下相邻时钟区域的CMT、16个BUFG、本时钟区域以及水平相邻时钟区域的BUFH。
  3. BUFIO:在相同的时钟区域内,其可以被MRCC、SRCC、MMCM的CLKOUT0~3、CLKFBOUT驱动,还可以被本时钟区域以及上下相邻区域的BUFMR驱动;其只能驱动本时钟区域内的ILOGIC、OLOGIC。
  4. BUFR:在相同时钟区域内,其可以被MRCC、SRCC、MMCM的CLKOUT0~3、CLKFBOUT驱动,还可以被本时钟区域以及上下相邻区域的BUFMR驱动;其能驱动本时钟区域内的CMT、本时钟区域内所有逻辑单元、以及16个BUFG(不推荐)。
  5. BUFMR:其只能被本时钟区域的MRCC以及某些GT时钟驱动;其能驱动本时钟区域以及上下相邻区域的BUFIO、BUFR。
  6. BUFG:其能被每个时钟区域内的SRCC、MRCC、CMT、GT、BUFR(不推荐)、其他BUFG;其可以驱动CMT、GT时钟、其他BUFG、FPGA内任何逻辑单元、BUFH。
  7. BUFH:其能被本时钟区域以及左右相邻时钟区域内的SRCC、MRCC、CMT、BUFG、GT时钟驱动;其能驱动本时钟区域的CMT、GT时钟、以及本时钟区域内的所有逻辑单元。
  8. GT时钟之RXUSERCLK、TXUSERCLK:其能被任何BUFG、以及本时钟区域内的BUFH驱动;其只能驱动专用的串行收发器模块。
  9. GT时钟之RXOUTCLK、TXOUTCLK:其被专用的串行收发器模块驱动;其能驱动BUFG、相同时钟区域内的CMT、BUFMR、BUFH以及相邻时钟区域内的BUFH。
  10. MGTREFCLK:其被外部MGT时钟源驱动;其能驱动BUFG、相同时钟区域内的CMT、BUFMR、BUFH以及相邻时钟区域内的BUFH。
  11. CMT(PLL&MMCM):其能被BUFG、SRCC(本时钟区域以及上下相邻时钟区域)、MRCC(本时钟区域以及上下相邻时钟区域)、GT(本时钟区域)、BUFR(本时钟区域或者上下相邻时钟区域加上BUFMR)、BUFMR、MMCM/PLL.CLKOUT0~3驱动;其能驱动BUFG、相同时钟区域内的BUFIO、BUFR、BUFH以及水平相邻的时钟区域的BUFH、MMCM/PLL。

CMT即MMCM和PLL很重要,基本上咱们在使用FPGA时,外部输入时钟都需要先用CMT进行校正、去抖、分频等,其输出时钟才能被咱们使用。所以下一篇咱们就单独说一下CMT这个时钟模块之中的重中之重!

4. CMT简介

上篇咱们仅仅简要的介绍了时钟的用法,并未详细的说明,主要是因为很多时钟用法是针对特定的应用需求,无法一一介绍。本篇咱们将重提上篇的CMT时钟模块,聊一聊它的用法。可以这么说,每个靠谱的FPGA应用里都应该用到CMT模块。

在7系列FPGA里,每一个时钟区域对应一个==CMT(clock management tile 时钟管理模块)==,CMT由1个MMCM(mixed-mode clock manager)和1个PLL(phase-locked loop)组成,如图1所示为其输入/输出连接图。

硬件基础:FPGA时钟-Xilinx 7系列_第6张图片

MMCM、PLL的功能可以总结为3点:

  • 频率综合:将外部输入的固定频率时钟调理成多路可调节频率的时钟。
  • 去抖动(谷歌时钟抖动的含义,这里不具体介绍)。
  • 去偏斜(谷歌时钟抖动的含义,这里不具体介绍)。

咱们这里强调下,7系列FPGA里的PLL只是MMCM的功能子集。这里咱们先介绍MMCM,如下图所示为其结构框图:

硬件基础:FPGA时钟-Xilinx 7系列_第7张图片

上图咱们一目了然,MMCM有2个时钟输入,使用时任选1路即可,输入时钟经过PFD(phase-frequency detector),CP(charge pump),LF(loop filter)后产生一定幅度的电压输入到VCO,VCO产生频率与输入电压幅度成比例的高频时钟,再被除以M倍并反馈到PFD。因此VCO的输出频率是一个稳定的、输入频率M倍的高频时钟,该时钟除以不同的倍数(用户可调)即可输出时钟clkout0clkout6。另外第0路输出和反馈输出是可以被分数除法,且第0路第3路提供反相180度的输出,VCO的输出还可以精确调整相位,这是7系列FPGA特有的。

咱们再看PLL的结构,如下图所示:硬件基础:FPGA时钟-Xilinx 7系列_第8张图片

其结构与MMCM大体一致,但没有反相输出、分数倍数的除法、精确的动态相位调整以及CLKOUT6。

这里强调一下:MMCM、PLL均可实现时钟整数倍的频率综合、去抖、去偏斜,但MMCM还可以实现分数倍的频率综合、反相时钟输出以及动态的时钟相位调整。当然,对于咱们一般的应用来说,用不到MMCM的这些高端功能,两者使用没啥区别。

接下来咱们给出xilinx官方推荐的几种MMCM/PLL的使用方法:

图4为最最常用的用法,目前被使用的最多,这种方式设计保留了输入与输出时钟之间的相位关系,时钟性能最高,系统最稳定,但需要使用2个BUFG,BUFG在FPGA里面属于稀缺资源,只有32个,对于某些特别复杂的系统可能就捉襟见肘了。硬件基础:FPGA时钟-Xilinx 7系列_第9张图片

图5是将BUFG换成了BUFH,其系统性能是优于BUFG的,但前一篇咱们提到过,BUFH的使用范围只有左右相邻的时钟区域,对于逻辑资源使用量超过2个时钟区域的应用肯定就不合适了。

硬件基础:FPGA时钟-Xilinx 7系列_第10张图片

图6为时钟的内部反馈应用,由于没有引入反馈BUFG的噪声,因此输出时钟的噪声性能更好,但失去了输入与输出时钟之间的相位关系,所有这种用法适用于高精度的频率综合,对相位关系不太关注的应用。

硬件基础:FPGA时钟-Xilinx 7系列_第11张图片

图7为零延迟的时钟应用,这种应用适用于单个外部时钟源供给需要保持相位关系的多个数字系统。

硬件基础:FPGA时钟-Xilinx 7系列_第12张图片

到此咱们的7系列FPGA的时钟篇就算是简简单单的介绍完了,咱们下一部分就介绍7系列FPGA的内部逻辑资源吧,所有数字系统的功能实现都得靠它啦~

末、参考文献

[https://zhuanlan.zhihu.com/p/117290284](

你可能感兴趣的:(fpga开发)