【问题标题】:Use DCM for generate clock of 78 mhz from 100 mhz clock使用 DCM 从 100 mhz 时钟生成 78 mhz 时钟
【发布时间】:2014-04-12 04:01:27
【问题描述】:

我有一个 100 兆赫的时钟。我想使用 DCM 创建一个 78 mhz 的时钟。

我认为我应该使用两个 DCM,其中第一个 DCM 的输出进入第二个 DCM,但我不知道这是否可行。

最好的问候

【问题讨论】:

  • 您能否详细说明您使用 2 个 DCM 的想法?它将如何运作?你有没有尝试过?
  • 我认为在第一个 dcmm 中使用 100 mhz 作为输入,第一个 dcm 的输出用于第二个 dcm 的输入
  • 级联 DCM 不是一个好主意,您必须小心抖动如何叠加。并且输出频率是可以实现的——如果你计划将频率提高到 3900MHz,你会失望的......

标签: vhdl clock fpga xilinx


【解决方案1】:

您可以使用直接数字频率合成器 (DDFS) 进行调查,而不是直接使用 DCM。它相当于一个累加器,按一个常数计数值递增。可以通过累加器的大小来控制精度。

如果累加器时钟和生成的频率之间存在尽可能大的差异,这将很有帮助。考虑使用 DCM 将 100MHz 扩展到最高速度,您可以运行必要宽度的计数器并且仍然满足目标设备的时序要求。会有一些抖动等于驱动累加器的任何时钟的一个周期,但平均频率可以非常接近 78 MHz。

accum_freq = 100 MHz * DCM_MULTIPLIER
accum_size = ceil(log2(accum_freq / (78 MHz * tolerance)))
increment = 78 MHz / accum_freq * 2**accum_size

accum = accum + increment

然后,您可以从累加器的 MSB 中获取合成的 78 MHz 时钟。

您可以手动计算这些常量以用作幻数,也可以在 VHDL 中本地进行算术以将大小和增量定义为机器计算的常量。通过减小公差,您将增加所需的蓄能器尺寸。从 0.01% (0.0001) 开始,看看是否令人满意。

【讨论】:

  • 您正在 FPGA 架构中生成自己的时钟,并使用生成的时钟来驱动其他 FPGA 资源。这通常是一个非常糟糕的主意,只有在没有其他选择的情况下才应该这样做。问题是工具很难应对这种情况。对此执行时序分析可能会产生无效的结果。您的抖动也会非常高。
  • 不,除非您以这种方式连接它,否则它不会被用作内部资源的时钟。 DDFS 输出与生成它的域保持同步,您可以将其用作数据路径中的时钟使能。是的,抖动会很高,这种技术更适合生成低频时序(例如波特发生器),但问题并没有对抖动设置任何限制。
【解决方案2】:

您的目标是什么设备?在 Spartan-6 上,DCM_CLKGEN 允许 39 的乘数和 50 的除数,从而获得 78MHz。

【讨论】:

  • 我使用 Spartan-3 并解决了它,在第一个 dcm 中我获得 3900 mhz,后来我为 50、3900/50 = 78 thx 分配所有
  • 您是在真正的硅片上运行它,还是只是模拟?正如我之前所说,您似乎不太可能真正从最高为几百 MHz 的部分中获得 3900MHz(就可实现的逻辑时钟而言)
【解决方案3】:

如果您将乘数设置为 7,将分频数设置为 9,您将能够达到 77.77 MHz。这对你有用吗?

【讨论】:

  • 我想要 78 mhz,77.77 不同
  • 是的,那么祝你好运。 Xilinx 特别建议不要链接 DCM,因为它会导致高抖动。
  • 我解决了它,在第一个 dcm 中我获得 3900 mhz 然后我分配为 50, 3900/50 =78
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2018-07-04
  • 2020-09-03
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多