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

赛灵思FPGA全局时钟网络结构详解-2

赛灵思FPGA全局时钟网络结构详解-2

3) 数字移相器  DCM 具有移动时钟信号相位的能力,因此能够调整I/O信号的建立和保持时间,能支持对其输出时钟进行0度、90度、180度、270度的相移粗调和相移细调。其中,相移细调对相位的控制可以达到1%输入时钟周期的精度(或者50 ps),并且具有补偿电压和温度漂移的动态相位调节能力。对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端即可。利用原时钟和移相时钟与计数器相配合也可以产生相应的倍频。
  4) 数字频谱合成器
  Xilinx 公司第一个提出利用创新的扩频时钟技术来减少电磁干扰(EMI)噪声辐射的可编程解决方案。最先在FPGA中实现电磁兼容的EMIControl技术,是利用数字扩频技术(DSS)通过扩展输出时钟频率的频谱来降低电磁干扰,减少用户在电磁屏蔽上的投资。数字扩频(DSS)技术通过展宽输出时钟的频谱,来减少EMI和达到FCC要求。这一特点使设计者可极大地降低系统成本,使电路板重新设计的可能性降到最小,并不再需要昂贵的屏蔽,从而缩短了设计周期。
  2.DCM模块IP Core的使用
  例:在ISE中调用DCM模块,完成50MHz时钟信号到75MHz时钟信号的转换。
  1)在源文件进程中,双击“Create New Source”;然后在源文件窗口,选择“IP (CoreGen & Architecture Wizard)”,输入文件名“my_dcm”;再点击“Next”,在选择类型窗口中,“FPGA Features and Design –

  《2》 点击“Next”,“Finish”进入Xilinx 时钟向导的建立窗口,如图8所示。ISE默认选中CLK0和 LOCKED这两个信号,用户根据自己需求添加输出时钟。在“Input Clock Frequency”输入栏中敲入输入时钟的频率或周期,单位分别是MHz和ns,其余配置保留默认值。为了演示,这里添加了CLKFX 信号,并设定输入时钟为单端信号,频率为50MHz,其余选项保持默认值。

  《3》 点击“Next”,进入时钟缓存窗口,如图9所示。默认配置为DCM输出添加全局时钟缓存以保证良好的时钟特性。如果设计全局时钟资源,用户亦可选择“Customize buffers”自行编辑输出缓存。一般选择默认配置即可。
 《4》 点击“Next”,进入时钟频率配置窗口,如图10所示。键入输出频率的数值,或者将手动计算的分频比输入。最后点击 “Next”,“Finish”即可完成DCM模块IP Core的全部配置。本例直接键入输出频率为75MHz即可。

  《5》 经过上述步骤,即可在源文件进程中看到“my_dcm.xaw”文件。剩余的工作就是在设计中调用该DCM IP Core,其例化代码如下:
  module dcm_top(
  CLKIN_IN,
  RST_IN,
  CLKFX_OUT,
  CLKIN_IBUFG_OUT,
  CLK0_OUT,
  LOCKED_OUT);
  input CLKIN_IN;
  input RST_IN;
  output CLKFX_OUT;
  output CLKIN_IBUFG_OUT;
  output CLK0_OUT;
  output LOCKED_OUT;
  mydcm dcm1(
  .CLKIN_IN(CLKIN_IN),
  .RST_IN(RST_IN),
  .CLKFX_OUT(CLKFX_OUT),
  .CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT),
  .CLK0_OUT(CLK0_OUT),
  .LOCKED_OUT(LOCKED_OUT)
  );
  endmodule
  《6/》 上述代码经过综合Synplify Pro综合后,得到的RTL级结构图如图11所示。

  上述代码经过ModelSim仿真后,其局部仿真结果如图12所示。从中可以看出,当LOCKED_OUT信号变高时,DCM模块稳定工作,输出时钟频率 CLKFX_OUT为输入时钟CLK_IN频率的1.5倍,完成了预定功能。需要注意的是,复位信号RST_IN是高有效。

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