Menu Close

Xilinx FPGA芯片底层单元的使用(一)

Xilinx系列FPGA具有丰富的底层单元,大都是专用硬件模块,不占用Slice资源,属于FPGA芯片中关键的硬件资源,在工程中具有重大意义。Xilinx的底层单元包括全局时钟网络、DLL模块、DCM模块、内嵌的块存储单元、硬核乘法器、高速收发器以及嵌入式处理器等,都经过ASIC设计验证,可工作在芯片允许的最高频率。需要注意的是,不同系列芯片底层单元的属性是不同的,一般来说,Virtex系列的底层单元性能高于Spartan系列的性能。

Xilinx全局时钟网络的使用

在Xilinx系列FPGA产品中,全局时钟网络是一种全局布线资源,它可以保证时钟信号到达各个目标逻辑单元的时延基本相同。

针对不同类型的器件,xilinx公司提供的全局时钟网络在数量、性能等方面略有区别。在FPGA设计中,FPGA全局时钟路径需要专用的时钟缓冲和驱动,具有最小偏移和最大扇出能力,因此最好的时钟方案是由专用的全局时钟输入引脚驱动的单个主时钟,去总控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟,因为对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。

在软件代码中,可通过调用原语IBUFGP来使用全局时钟。IBUFGP的基本用法是:

IBUFGP U1(.I(CLK_in),.0(clk_out));

全局时钟网络对FPGA设计性能的影响很大

%title插图%num

图1  CMT时钟管理模块的使用

CMT的组成和功能

Virtex-5后续Xilinx器件中增加了PLL模块,也就是说时钟管理模块(CMT)包括DCM和PLL两种底层单元,可提供非常灵活的高性能时钟控制。每个CMT包含两个DCM的内部结构。Spartan-6 CMT位于芯片中央、垂直的全局时钟网络旁,每个CMT包含一个PLL和两个DCM。每个Spartan-6 FPGA都具备多达6个CMT,每个CMT由两个DCM和一个PLL构成,既可单独使用,也可以级联的方式使用。

DCM模块的工作原理

数字时钟管理模块(Digital clock manger,DCM)是基于Xilinx的其他系列器件所采用的数字延迟锁相环(Delay Locked loop,DLL)模块。在时钟的管理与控制方面,DCM与DLL相比,功能更强大,使用更灵活。DCM的功能包括消除时钟的延时、频率的合成、时钟相位的调整等系统方面的需求。DCM的主要优点在于:

  1. 实现零时钟偏移(Skew),消除时钟分配延迟,并实现时钟闭环控制;
  2. 时钟可以映射到PCB上,用于同步外部芯片,这样就减少了对外部芯片的要求,将芯片内外的时钟控制一体化,以利于系统设计。对于DCM模块来说,其关键参数为输入时钟频率范围、输出时钟频率范围、输入输出时钟允许抖动范围等。

DCM共有四部分组成,其中最底层仍采用成熟的DLL模块;其次分别为数字频率合成器(Digital frequency synthesizer,DFS)、数字移相器(Digital phase shifter,DPS)和数字频谱范围是不同的,例如传统的Virtex-4SX系列芯片,低输入模式的范围为1~210MHz,高输入模式的范围为50~350MHz;而Spartan 3E系列低、高两种模式的范围都只能是0.2~333MHz.下,下面对DCM的4个部分分别进行介绍。

%title插图%num

图2

数字频率发生器(DFS)可以为系统产生丰富的频率合成时钟信号,输出信号为CLKFB和CLKFX180,可提供输入时钟频率分数倍或整数倍的时钟输出频率方案,输出频率范围为1.5~320MHZ(不同芯片的输出频率范围是不同的)。这些频率基于用户自定义的两个整数比值,一个是乘因子(CLKFX_ MULTIPLY),另外一个是除因子(CLKFX_ DIVIDE),输入频率和输出频率之间的关系为

%title插图%num

比如取CLKFX_MULTIPLY = 3,CLKFX_DIVIDE = 1,PCB上源时钟为100 MHz,通过DCM 3倍频后,就能驱动时钟频率在300 MHz的FPGA,从而减少了板上的时钟路径,简化板子的设计,提供更好的信号完整性。

数字移位器

DCM具有移动时钟信号相位的能力,因此能够调整I/O信号的建立和保持时间,能支持其输出时钟进行0度、90度、180度、270度的相位粗调和相位细调。其中,相位细调对相位的控制可以达到1%输入时钟周期的精度(或者50ps),并且具有补偿电压和温度漂移的动态相位调节能力。对DCM输出时钟的相位调整需要通过属性控制PHASE_SHIFT来设置。PS设置范围为 -255到+255,比如输入时钟为200 MHz,需要将输出时钟调整+ 0.9 ns的话,PS =(0.9ns/ 5ns)?56 = 46。如果PHASE_ SHIFT值是一个负数,则表示时钟输出应该相对于CLKIN向后进行相位移动;如果PHASE_SHIFT是一个正值,则表示时钟输出应该相对于 CLKIN向前进行相位移动。

移相用法的原理图与倍频用法的原理图很类似,只用把CLK2X输出端的输出缓存移到CLK90、CLK180或者CLK270端即可。利用原时钟和移相时钟与计数器相配合也可以产生相应的倍频。

在实际中,如果在一片FPGA内使用两个DCM,那么时钟从一个CLK输入,再引到两个DCM的clk_in。这里,在DCM模块操作时,需要注意两点:首先,用CoreGen生成DCM模块的时候,clk_in源是内部的,不能直接连接到引脚,需要添加缓冲器;其次,手动例化一个IBUFG,而是完全按照单个DCM的使用流程,就会造成CLK_IN信号有多个驱动。此时,ISE不能做到两个DCM模块输出信号的相位对齐,只能做到一个DCM的输出是相位对齐的。而时钟引脚到两个DCM模块的路径和DCM输出的路径都有不同的延时,因此如果用户对相位还有要求,就需要手动调整DCM模块在芯片中的位置

PLL模块的工作原理

PLL能够用作各种频率的频率综合器,并且在于DCM结合使用时,还可作为输入时钟的抖动滤波器,PLL核心是一个频率范围介于400~1080Mhz的压控振荡器(VCO),因而输出频率的范围宽。三种可编程分频器(D、M和O)集合都能够使VCO适应各种应用需求。

预分频器D(经配置可编程)可降低输入频率,并反馈一组传统PLL相位比较器的输入。反馈分频器M(经配置可编程)可发挥乘法器的作用,因为其可在馈送相位比较器的其他输入之前对VCO输出频率进行分频。D和M必须选择适当,才能保持VCO处于可控制的频率范围内。VCO拥有8组等距输出(0°、45°、90°、135°、180°、225°、270°和315°)。每一组都可以选来驱动6个输出分频器中的一个,即O0~O5(每个都可以通过配置进行编程,每个都可除以从1~128的任一整数)。

参考资料《Xilinx FPGA开发实用教程》

Posted in FPGA, FPGA硬件资源, 文章

发表评论

相关链接