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

Vhdl 使用DCM从100 mhz时钟生成78 mhz的时钟,vhdl,clock,fpga,xilinx,Vhdl,Clock,Fpga,Xilinx,我有一个100兆赫的时钟。我想用DCM来创建一个78兆赫的时钟 我认为我应该使用两个DCM,第一个DCM的输出进入第二个DCM,但我不知道这是否有效 致以最诚挚的问候如果您将乘法器设置为7,将除法器设置为9,您将能够达到77.77 MHz。这对你有用吗?如果你将乘法器设置为7,将除法器设置为9,你将能够达到77.77 MHz。这对你有用吗?你的目标设备是什么?在Spartan-6上,DCM_-CLKGEN允许使用39倍的乘法器和50倍的除法器,从而获得78MHz的频率。您的目标设备是什么?在Sp

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

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


致以最诚挚的问候

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

如果你将乘法器设置为7,将除法器设置为9,你将能够达到77.77 MHz。这对你有用吗?

你的目标设备是什么?在Spartan-6上,DCM_-CLKGEN允许使用39倍的乘法器和50倍的除法器,从而获得78MHz的频率。

您的目标设备是什么?在Spartan-6上,DCM_-CLKGEN允许使用39倍的乘法器和50倍的分频器,从而获得78MHz的频率。

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

如果累加器时钟和生成的频率之间存在尽可能大的差异,这将非常有用。考虑使用一个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)开始,看看是否令人满意。

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

能否详细说明使用2个DCM的想法?它到底将如何工作?你试过什么了吗?我想用100 mhz作为第一个dcmm的输入,我用第一个dcm的输出作为第二个dcm的输入不是一个好主意,你必须小心抖动的累积。而且输出频率是可以实现的-如果你计划将频率增加到3900MHz,你会失望的…你能详细说明你使用2个DCM的想法吗?它到底将如何工作?你试过什么了吗?我想用100 mhz作为第一个dcmm的输入,我用第一个dcm的输出作为第二个dcm的输入不是一个好主意,你必须小心抖动的累积。而且输出频率是可以实现的-如果你计划乘以3900MHz,你会失望的…我想要78 mhz,77.77是不同的,那么祝你好运。Xilinx特别建议不要链接dcm,因为它会导致高抖动。我解决了这一问题,在第一个dcm中,我获得3900 mhz,然后我将其设置为50,3900/50=78i想要78 mhz,77.77是不同的,那么祝你好运。Xilinx特别建议不要链接dcm,因为它会导致高抖动。我解决了这一问题,在第一个dcm中,我获得3900 mhz,然后我将其设置为50,3900/50=78。您在FPGA结构中生成自己的时钟,并使用生成的时钟驱动其他FPGA资源。这通常是一个非常糟糕的主意,只有在没有其他选择的情况下才应该这样做。问题是工具在这种情况下很难使用。对此执行计时分析可能会给出无效的结果。而且你的抖动会非常高。不,它不会被用作内部资源的时钟,除非你用这种方式连接它。DDFS输出与从中生成的域保持同步,您可以将其用作数据路径中的时钟启用。是的,抖动会很高,这种技术更适合生成低频定时(例如波特率发生器),但问题并没有对抖动进行任何限制。您正在FPGA结构中生成自己的时钟,并使用生成的时钟驱动其他FPGA资源。这通常是一个非常糟糕的主意,只有在没有其他选择的情况下才应该这样做。问题是工具在这种情况下很难使用。对此执行计时分析可能会给出无效的结果。而且你的抖动会非常高。不,它不会被用作内部资源的时钟,除非你用这种方式连接它。DDFS输出与从中生成的域保持同步,您可以将其用作数据路径中的时钟启用。是的,抖动会很高,这种技术更适合产生低频定时(例如波特率发生器),但问题并没有对抖动进行任何限制。我使用斯巴达-3,我解决了它,在第一个dcm中,我获得3900 mhz,然后我将其设为50,3900/50=78 thx。你在真实的硅中运行过它吗,或者只是模拟?正如我以前说过的,似乎