使用DCM从100 mhz时钟生成78 mhz的时钟

时间:2014-04-05 18:19:47

标签: vhdl clock fpga xilinx

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

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

最好的问候

3 个答案:

答案 0 :(得分:3)

您可以使用直接数字频率合成器(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)开始,看看它是否令人满意。

答案 1 :(得分:1)

如果将乘数设置为7而分频器设置为9,则可以达到77.77 MHz。这对你有用吗?

答案 2 :(得分:1)

您定位的是什么设备?在Spartan-6上,DCM_CLKGEN允许乘数为39,分频器为50,可以获得78MHz的频率。