注册 登录
ET创芯网论坛(EETOP) 返回首页

yuedx的个人空间 http://blog.eetop.cn/?317611 [收藏] [复制] [分享] [RSS]

日志

掌控全局时钟网络资源

已有 798 次阅读2009-2-27 13:31

全局时钟驱动整个FPGA的单元模块,但是相对LCM9K,全局时钟资源很少,所以需要合理的分配。

哪些信号会消耗全局时钟网络呢?外部输入或者内部产生时钟,时钟使能,异步清零信号以及其他高扇出信号。我以前一直认为全局时钟资源交给QuartusII自动分配就可以得到最优结果,其实不然。

如何规划全局时钟是很重要的,以Cyclone3器件为例,FPGA的每一侧可以有五个全局时钟输入,如下图:

点击开大图

举一个极端的例子,我们需要PLL1的四个时钟输出PLL1_C0PLL1_C1PLL1_C2PLL1_C3做为全局时钟,而且还需要一个外部输入的时钟做为全局时钟网络,该五个时钟占用全局时钟资源可以分为下面几种情况:

C0

C1

C2

C3

外部时钟输入脚

GCLK0

GCLK1

GCLK2

GCLK3

CLK0/2

GCLK0

GCLK4

GCLK2

GCLK3

CLK1/2

GCLK0

GCLK4

GCLK2

GCLK1

CLK2/3

GCLK3

GCLK4

GCLK0

GCLK1

CLK0/1

GCLK3

GCLK4

GCLK2

GCLK1

CLK0/3

由上面表可以知道,外部时钟管脚可以根据需要连接CLK[0..3]任意一个专用时钟输入脚,具体选择由QuartusII软件自动分配完成。也就是说,在FPGA的一侧连入五个全局时钟时,我们可以根据布线要求任意把时钟连至CLK[0..3]之一,但是每侧最多只能连五个全局时钟,如果我们需要在外部连入两个时钟时,并假设连接在CLK0CLK1时,它们中的一个将无法占用全局时钟资源,改走普通布线资源,具体哪一个由QuartusII判断决定。由于普通布线资源会造成时钟到达各个寄存器不尽相同,也就是CLK SKEW会很大,时序收敛性能就大大减低,所以,我们需要将CLK0CLK1中的一个连至下一组时钟专用管脚CLK[4..7],全部时钟都在全局时钟网络上。

当我们的系统占用比较多的全局时钟资源时,将外部的时钟和FPGA内部产生的时钟资源综合考虑,充分考虑PLL的位置以及外部输入时钟的管脚位置,保证每个时钟都能分配到全局时钟资源,得到最好的时序性能。

每个全局时钟都有一个时钟控制模块(Clock Control Block),如下图:

点击开大图

该部分的绝大部分配置都是由QuartusII完成,我们能够设置是(2CLKSELECT[1..0],在MegaWizard…选择I/O--ALTCLKCTRL模块,就可以得到相应的模块,由上图可以知道,该模块的数据必须来自专用时钟管脚或者PLL输出,无法与LC驱动的全局时钟资源连接。当我们需要进行时钟切换时,最好用该功能模块,因为用LC产生的时钟选择模块很容易产生毛刺,另时序电路无法正常工作。

我们知道外部输入或者内部产生时钟,时钟使能,异步清零信号以及其他高扇出信号都会占用全局时钟资源,当系统涉及的上述信号数量过多时,FPGA无法满足,我们就需要有取舍的设置哪些时钟可以占用Global Clock,哪些可以不用。具体设置在Assigment Editor中完成,说明如下:

Auto Global Clock:用于设置时钟是否占用Global Clock

Auto Global Register Control Signals:用于设置寄存器控制信号(异步复位,寄存器使能等)是否占用Global Clock

也可在Setting--Fitter Setting--More Setting…将上述设置关闭,则QuartusII阻止信号分配在全局时钟资源上(不推荐)。

评论 (0 个评论)

facelist

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

关闭

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

小黑屋|手机版|Archiver|ET创芯网 ( 京ICP备:10050787号 京公网安备:110105001212 )

GMT+8, 2019-4-25 08:09 , Processed in 0.032449 second(s), 7 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部