Xilinx DCM 使用---- 输出频率问题

时间:2023-03-09 17:46:43
Xilinx DCM 使用---- 输出频率问题

  最近在使用Xilinx FPGA验证项目,使用DCM将50M晶振分频得到20M时钟。但是下载代码到板子上验证,发现板子完全不工作。

然后 测量时钟,发现根本就没有20M时钟。查找资料,以及跟以前项目对比,DCM的使用没有错误。

  项目中DCM的使用如下:

  DCM u_dcm_20m(

  .CLKIN  (clk50m),

  .CLKFX   (clk20m),

  .RST   (rst_n  ),

  .LOCKED  (locked )

  );

  defparam u_dcm_20m.CLKFX_DIVIDE = 5;

  defparam u_dcm_20m.CLKFX_MULTIPLY = 2;

  defparam u_dcm_20m.CLKIN_PERIOD = 20;

  defparam u_dcm_20m.CLK_FEEDBACK = "NONE";

  按照FPGA user guide上的讲述,完全没错,如下图红色框中所示:

Xilinx DCM 使用---- 输出频率问题

  但是测试结果就是不对。后来在 Virtex-4 FPGA Data Sheet: DC and Switching Characteristics这篇

文档里找到了答案。如来是DCM的CLKFX的输出范围是有限制的,同时对输入频率也有要求的,如下面红框所示:

Xilinx DCM 使用---- 输出频率问题

  在低频模式下,CLKFX只能输出32M~150Mhz的频率,而20MHz不再这个范围内,因此要使用CLKDV,20M在其

输出范围内。

  所以 做设计要看Spec,而且不能只看部分Spec。这个小问题,找了好久原因,今晚记录下来,与大家共勉。