原创 SPARTAN-6之内存控制器(5)_时钟管理模块介绍

2012-4-13 09:36 3614 15 15 分类: MCU/ 嵌入式
最近评估使用了下XILINX最新的Spartan-6 FPGA器件,感觉跟前一代使用比较多的Spartan-3E FPGA器件相比性能有了很大的提高, 如Spartan-6的时钟管理模块就引入了以前在高端器件Virtex-5才有的模拟锁相环(PLL).本文从用户角度介绍了Spartan-6 FPGA时钟管理模块的特性,并就它的使用做了一个总结, 可供使用Spartan-6时钟管理模块时参考。
闲话少说,书归正传,我们知道同步时序电路设计中最关键的是时钟设计,随着电路规模与速度的提高,对时钟的周期、占空比、延时和抖动等方面的要求也越来越高。为了顺应这需求,Spartan-6系统器件在原有的DCM模块基础引入了模拟PLL模块构成了功能强大、控制灵活的时钟管理模块(CMT)。每个CMT模块包含两个DCM模块和一个PLL模块。Spartan-6系统器件有多至六个 CMT模块。


一、器件组成与特性
 
1.DCM模块主要有以下功能模块组成:
a.DLL模块, 主要由延时线和控制逻辑组成。
b.数字频率合成器,为系统产生丰富的频率合成信号输出到CLKFX和CLKFX180。可以提供2~32的倍乘与1~32的分频系数。
c.数字移相器, 可提供粗调的0,90,180,270度移相和具有动态调节能力的相位细调。
d.数字频谱合成器,产生扩频时钟减少电磁干扰(EMI)。
Spartan-6 DCM模块提供给用户的设计原语有DCM_SP和DCM_CLKGEN,DCM_SP在Spartan-3E FPGA器件中也有,而DCM_CLKGEN是Spartan-6新增的,可以用产生动态的频率合成信号和扩频时钟。

 
2. PLL模块,有一400MHz~1000 MHz压控振荡器(VCO),可提供8种移相(0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°)和6个可独立编程倍乘与分频系数的输出信号。提供给用户的设计原语有PLL_BASE和PLL_ADV,PLL_BASE是单独使用PLL模块最常调用的原语,允许使用PLL的最常用特性,PLL_ADV包括PLL_BASE所有的特性之外,还提供时钟切换及与DCM的连接。可用于以下工作模式:
a. 时钟网络去歪斜
b. 频率合成
c. 抖动滤波
d. 零延时的缓冲
f. PLL与PLL、DCM的级联

 
二、使用指南
 
1.注意时钟的输入与输出范围,所有应用不能超过范围.。如Spartan-6 器件DCM的DLL模块的时钟输入范围如下(以下摘自Spartan-6 DATA SHEET):
速度等级为-1L的为器件5MHz~175MHz。
速度等级为2的为器件5MHz~250MHz。
速度等级为3和4的为器件5MHz~280MHz。

DCM的DLL模块的时钟输出范围如下:
CLKOUT_FREQ_CLK0与CLKOUT_FREQ_CLK180为5MHz~250MHz(等级2)或5MHz~280MHz(等级3或4);
CLKOUT_FREQ_CLK90与CLKOUT_FREQ_CLK270为5MHz~200MHz;
CLKOUT_FREQ_2X与CLKOUT_FREQ_2X180为0.3125MHz~166MHz(等级2)或0.3125MHz~186MHz(等级3或4);

DCM的DFS模块的时钟输入范围如下:
速度等级为2的为器件0.5MHz~333MHz。
速度等级为3和4的为器件0.5MHz~375MHz。

DCM的DFS模块的时钟输出范围如下:
CLKOUT_FREQ_FX与CLKOUT_FREQ_FX180为5MHz~333MHz(等级2)或5MHz~375MHz(等级3或4);
PLL模块的最小的输入时钟频率为19 MHz,最大输入时钟频率为375MHz(从全局时钟输入,速度等级2),400MHz(从全局时钟输入,速度等级3),450MHz(从I/O时钟输入,速度等级2),525MHz(从I/O时钟输入,速度等级3)。
PLL模块的最小的输出时钟频率为3.125MHz,最大输入时钟频率为从BUFGMUX输出为375MHz(速度等级2)或400MHz(速度等级3或4),从BUFPLL输出为950MHz(速度等级2)或1050MHz(速度等级3)或1080MHz(速度等级4)。
无论什么时候都不能使VCO超出范围,Spartan-6 器件VCO的频率范围为400MHz~1000MHz(等级2),400MHz~1050MHz(等级3),400MHz~1080MHz(等级4),

 
2.PLL或DCM的选择使用问题。
PLL和DCM有类似的功能,又有各自的特性, 在应用中什么时候选择使用PLL模块较好, 什么时候选择使用DCM模块较好呢? 一般认为PLL模块有六组输出时钟, 在多时钟的应用中使用PLL比较合适,另外PLL对抖动滤波效果比较好,如要实现抖动滤波也推荐使用PLL模块。Spartan-6 PLL模块还提供时钟切换功能,在需要动态切换时钟源的应用中尤为合适。DCM在相位调整上功能比较全,既有粗调的0,90,180,270度移相,又有动态调节的相位细调能力,在实现时钟相位调整的时候推荐使用DCM模块。其它情况如频率合成、调整时钟占空比,消除时钟延时使用PLL模块或DCM模块都可以。

 
3.DCM除对输入时钟的频率有要求外,对输入时钟的抖动也有要求,如果超出限制的话会导致DCM失锁,失锁后需要用户将DCM复位。抖动主要分两类:
a. Cycle-to-cycle jitter
b. Period jitter
Cycle-to-cycle jitter一般为±150ps(FCLKFX > 150 MHz)或±3000ps(FCLKFX < 150 MHz),
Period jitter一般为±1ns. 具体参见Spartan-6 DATA SHEET。
如果输入时钟的抖动过大,建议先经过PLL模块进行抖动滤波。

 
4.PLL与DCM的级联选择
a. PLL输出驱动DCM模块,优点是在输入DCM模块前可减少输入时钟的抖动,同时又可以使用户能构访问所有DCM模块的输出信号,一个PLL可以驱动多个DCM模块,并不要求PLL与DCM都是在同一CMT模块内。
b. DCM模块输出驱动PLL模块,这种情况可以减少输入时钟和DCM时钟输出的总体抖动。如果DCM输出直接连到PLL输入,要求PLL与DCM都是在同一CMT模块内,这种情况可减少的本地噪声与专用布线资源。如果PLL与DCM不在同一CMT模块内,DCM输出必须经过BUFG缓冲后连到PLL。由于PLL输入信号的限制, 最多只有两个DCM输出信号可以连到一个PLL模块.
c. PLL与PLL的级联, 级联PLL可以产生更大范围的时钟, 两个PLL的级联也要通过BUFG缓冲, 此时器件通路的抖动最小。
以上抛砖引玉,主要参考文献为XILINX的:

 
1.ug382 Spartan-6 FPGA Clocking Resources User Guide.
2.Ds162 Spartan-6 FPGA Data Sheet: DC and Switching Characteristics.
3.xapp1065 Spread-Spectrum Clock Generation in Spartan-6 FPGAs
如有不当之处或要补充的地方,还望博友不吝赐教以共同提高使用Spartan-6时钟管理模块的水平^_^。此文为“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品。(转帖)


 

更多文章请访问:

我的博客:http://bbs.ednchina.com/BLOG_liangziusb_440752.HTM

我的淘宝店铺:http://shop64171919.taobao.com

我的实体店铺:北京新中发电子市场2557号

良子.2012年

QQ:2687652834    392425239

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /2 下一条