菜鸟要飞的个人空间 https://blog.eetop.cn/1149070 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

ISE中Xilinx全局时钟系统的设计

已有 2722 次阅读| 2015-10-9 10:46 |个人分类:FPGA

    在使用QuartusII设计AlteraFPGA时,对于时钟的考虑一般很少。我们想得到一个固定频率的时钟,无非就是将晶振从某个时钟管脚输入:若晶振频率即为期望频率,则可以直接使用;若与期望频率不符,则调动IP核生成PLL,配置PLL的输出为期望频率即可。可是若将FPGA换为Xilinx系列,在ISE环境中设计时,时钟的使用就没那么简单了,尤其是在设计复杂工程时,全局时钟系统的设计显得尤为重要。

一、时钟网络与全局缓冲

XilinxFPGA中,时钟网络分为两类:全局时钟网络和I/O区域时钟网络。以全铜工艺实现的全局时钟网络,加上专用时钟缓冲与驱动结构,从而可使全局时钟到达芯片内部所有的逻辑可配置单元,且I/O单元以及块RAM的时延和抖动最小,可满足高速同步电路对时钟触发沿的苛刻需求。

FPGA设计中,FPGA全局时钟路径需要专用的时钟缓冲和驱动,具有最小偏移和最大扇出能力,因此最好的时钟方案是由专用的全局时钟输入引脚驱动的单个主时钟,去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟,因为对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。

ISE设计全局时钟时,IBUFGBUFGBUFGMUX等概念经常会被提及,这些资源可以统称为时钟资源,它们分为四类:全局时钟输入端口、全局时钟复用器、I/O时钟缓冲、水平时钟布线缓冲。下面挑选其中几个常见的资源种类,简单介绍下:

IBUFG:即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG,否则在布局布线时会报错。IBUFG支持AGPCTTGTLGTLPHSTLLVCMOSLVDCILVDSLVPECLLVTTLPCIPCIXSSTL等多种格式的I/O标准。

IBUFGDS:是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDSLDTLVDSEXTLVDSLVPECLULVDS等多种格式的IO标准。

BUFG:是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOBCLB、选择性块RAM的时钟延迟和抖动最小。

BUFGCE:是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。

BUFGMUX:是全局时钟选择缓冲,它有I0I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0I1两个输入时钟甚至可以为异步关系。

BUFGP:相当于IBUG加上BUFG

以上为常用的时钟资源,对于一般的全局时钟系统设计,有这些资源就足够了。

二、常用全局时钟系统

   要组建一个全局时钟系统,首先要从全局时钟管脚输入一个时钟。有了这个时钟,就可以组建各种类型的全局时钟系统了。一般来说,常用的全局时钟系统有两种:IBUFG+BUFG系统、IBUFG+DCMPLL+BUFG

1、  IBUFG+BUFG系统

IBUFG+BUFG方案如下图所示,这也是最基本的全局时钟系统。将时钟管脚输入的时钟作为IBUFG的输入,然后将IBUFG的输出再作为BUFG的输入,则BUFG的输出即为得到的全局时钟。IBUFG+BUFG的方案相当于BUFGP

ISE中Xilinx全局时钟系统的设计

 

2、  IBUFG+DCMPLL+BUFG

平时用得最多的还是IBUFG+DCMPLL+BUFG方案,如下图所示。将时钟管脚输入的时钟作为IBUFG的输入,然后将IBUFG的输出作为DCMPLL)的输入,将经DCMPLL)频率变换后的输出再作为BUFG的输入这种方案使用方法最为灵活,对全局时钟的控制更加有效。通过DCMPLL)模块不仅能对时钟进行同步、移相、分频、倍频等变换,而且可以使全局时钟的输出达到无抖动延迟(“0skew)。

ISE中Xilinx全局时钟系统的设计

三、全局时钟系统使用的问题与注意事项

1、  全局时钟的时钟源必须从全局时钟管脚输入,并且要先经过IBUFG

2、如果全局时钟涉及到逻辑运算,可以将BUFG换成BUFGCE(与)、BUFGMUX(二选一)等,事实上,BUFGBUFGCE等资源均是由BUFGMUX生成。

  3、从BUFG输出的时钟,是不能直接连接普通I/O管脚输出的,会报错,若要将全局时钟输出,有两种方法:一是直接将BUFG的输入连接普通I/O管脚输出,或者将BUFG的输出经由ODDR2后再连接I/O管脚输出。需要注意的是,将CLOCK_DEDICATED_ROUTE属性设为FALSE虽然会将ERROR降为WARNING,但是这样时钟系统将不再是全局时钟系统,不建议这样做。

  4DCMPLL)资源中有时钟反馈输入和时钟反馈输出管脚,一般的处理方法是将时钟反馈输出管脚经由BUFG后输入到时钟反馈输入管脚。

四、全局时钟系统使用举例

下面将举出实例,来看一下如何组建一个全局时钟系统。

FPGA从全局时钟管脚引入频率为26M的晶振源,FPGA内部需要22MHz22MHz反向、171.6MHz36MHz,其中22MHz22MHz反向、171.6MHzFPGA内部使用,22MHz36MHz经由普通I/O管脚输出,而且22MHz反向还要与信号t_rn作逻辑与运算,试给出该需求的全局时钟系统解决方案。

ISE中组建时钟系统有两种方法:一是用IP核生成器配置生成相应IP,再用线连接起来, 二是在文件中直接用语言配置生成各类资源(DCMPLLIBUFGBUFG等),再用线连接。第一种方法较为简单但灵活性差,而第二种方法稍微复杂但灵活性较强,可以随时修改,使用哪种方法取决于个人喜好。

这里用第二种方法来生成上文需求的全局时钟系统,下图为最终效果图。

ISE中Xilinx全局时钟系统的设计

1clk26为从全局时钟管脚输入的时钟源,从管脚输入后先经过一个IBUFG

    2、因为22MHz171.6MHz36MHz不能由一个PLL产生,故将IBUFG的输出时钟信号输入到两个PLL

    3PLL0有三个输出:CLKOUT0CLKOUT1CLKOUT2,分别为22MHz171.6MHz22MHz反向。clk22_out22MHz时钟的I/O输出信号,故不经BUFG直接输出;clk2222MHz经过BUFG后的信号,为全局时钟信号;clk171p6171.6MHz经过BUFG后的信号,为全局时钟信号;clk22_inv22MHz反向经过BUFGCE(与t_rn作逻辑与运算)后的信号,为全局时钟信号。

    4PLL1有一个输出:CLKOUT0,为36MHzclk36_out36MHzI/O输出信号,故不经BUFG直接输出。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 6

    粉丝
  • 1

    好友
  • 4

    获赞
  • 1

    评论
  • 4533

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-7 01:52 , Processed in 0.032676 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部