首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

全局时钟资源的使用方法

全局时钟资源的使用方法

全局时钟资源的使用方法 全局时钟资源的使用方法(五种)

1:IBUFG + BUFG的使用方法:

  IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。

2. IBUFGDS + BUFG的使用方法:

  当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。

3. IBUFG + DCM + BUFG的使用方法:

  这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。

4.
Logic + BUFG的使用方法:

  BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。

5. Logic + DCM + BUFG的使用方法:

  DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。使用全局时钟资源的注意事项 全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。 另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。

全局时钟资源的例化方法

  全局时钟资源的例化方法大致可分为两种:
  一是在程序中直接例化全局时钟资源;

  二是通过综合阶段约束或者实现阶段约束实现对全局时钟资源的使用;

  第一种方法比较简单,用户只需按照前面讲述的5种全局时钟资源的基本使用方法编写代码或者绘制原理图即可。

  第二方法是通过综合阶段约束或实现阶段的约束完成对全局时钟资源的调用,这种方法根据综合
工具和布局布线工具的不同而异。



                                                 片内时钟设计


Xilinx可编程逻辑器件的全局时钟为时钟分配树的结构,如下图所示。


  图 可编程逻辑器件的时钟分配树结构
  FPGA内部的时钟分为多个区域(某些高端的FPGA)或分为4个象限(某些低端的FPGA),在这个区域或象限内有特定多的时钟能够驱动寄存器和RAM的时钟端。另外,在树干上有专用的时钟线将进入这些区域和象限的时钟连接起来。

  1.全局时钟树和全局时钟缓冲器
  全局时钟网络是一个很长且扇出也很大的网络,所以一定不是最短的路径。它会有相对较大的延时,其优点在于Skew很小。即通过全局时钟网络到FPGA内部的各种资源时,时钟沿同时到达。这样对于一个同步的系统,时序的计算和分析会很容易。
  FPGA的全局时钟路径需要专用时钟驱动器,如图1中的全局时钟缓冲器Global Clockbuffer(BUFG),时钟信号只有经过BUFG之后才可以驱动全局时钟网络。
  BUFG的例化请参考Xilinx的ISE设计工具内包含的《器件库指南》。这里需要指出的是IBUFG和BUFG不同,IBUFG是全局时钟的引脚的缓冲器,是和其他普通管脚的IBUF对应的;而BUFG是内部的全局时钟的缓冲器。
  2.数字时钟管理器(DCM)和模拟锁相环(PLL)
  DOM和PLL都可以用来做频率合成和相位调整,目前在Xilinx高端的Virtex-5中才有PLL,DOM是一直都存在于Xilinx高低端的FPGA中的。
  (1)DOM和PLL都有其工作的时钟频率的范围,应参考具体器件的手册决定是否可以采
  用DOM和PLL。
  (2)注意DOM的phase shift为所有的DOM的输出均增加一定的相位偏移。
  (3)DOM及PLL的级联,无论采用何种级联方式,注意复位电路的设计,原则就是要在DOM或PLL的输入时钟稳定之后给出该DOM或PLL的复位脉冲。
  3.片内时钟设计时需注意的几个方面
  (1)所有的时钟尽量都要使用全局的时钟树资源,如果全局时钟资源不够,需要用到长线资源或本地走线资源的话,多留意时序报告中的clock skew,注意保持时间(hold time)问题。
  (2)通常情况下尽量使用内部的DCM及PLL等来产生各种频率的时钟,避免使用内部逻辑生成的时钟,因为它们可能引起设计中的功能和时序问题。由组合逻辑产生的时钟会引入毛刺造成功能问题,而引入的延迟则会导致时序问题。如果用组合逻辑的输出作为时钟信号或异步复位信号,那么在设计中就会出现毛刺。在同步设计中,寄存器输入数据的毛刺是很正常的,对设计没有什么影响。然而时钟输入(或寄存器异步输入)上的毛刺或脉冲则会导致严重的后果,窄毛刺可能违反了寄存器的最小脉冲宽带要求。如果当毛刺到达时钟输入时寄存器的输入数据正在变化,则无法满足建立和保持时序要求。即使设计没有违反时序需求,寄存器输出也可能会出现变化,造成设计中其他部分的功能不正常。用于生成内部时钟的组合逻辑也会增加时钟线的延迟,在一些设计中时钟线上的逻辑延迟可能会造成时钟偏移大于两个寄存器之间的数据通道的长度,从而造成hold time违反的问题。
  如果一定需要由内部逻辑来生成时钟信号的话,必须采用寄存器输出。同时为了减小时钟域上的时钟偏移,应把生成的时钟指定到FPGA一个高扇出和低Skew的时钟分配树上,即为该输出信号分配全局时钟缓冲器(BUFG)或第2全局时钟资源来实现。
  (3)在逻辑设计时经常将主时钟分频,以产生所需的各种频率的时钟信号。对这种需求,建议一定要采用DOM或PLL,以保证时钟信号的稳定。如果采用逻辑来实现分频器,则一定要采用同步寄存器来实现。
  (4)在FPGA设计中选择时钟信号时,如果器件中存在BUFGMUX缓冲器,一定采用BUFGMUX来实现,这样可以避免产生时钟信号的毛刺;对于没有BUFGMUX的器件,需要采用同步和复位控制电路来实现,避免毛刺产生。
返回列表