在FPGA Spartan-6上确定时钟频率

时间:2015-11-02 21:49:43

标签: vhdl clock fpga spartan

我正在努力学习如何用VHDL编程FPGA,并想知道如何确定我的时钟输入的正确频率。

我使用了时钟源连接表中的Sp605 Hardware User Guide引脚K21(如果您感兴趣,请参阅第27页!)被描述为“200 MHz OSC SYSCLK_P”。

然后,我使用以下过程尝试从200 MHz时钟

创建1 Hz时钟
prescaler : process(CLK)
begin
    if rising_edge(CLK) then
        if (counter < 1000000) then --possibly change to number in binary
            counter <= counter + 1;
        else
            CLK_1Hz <= not CLK_1Hz;
            counter <= (others => '0');
        end if;
    end if;
end process; 

但是,如果我将计数器上限设置为100,000,000 - 它应该是,它的时钟远远低于1 Hz - 实际上使用1,000,000计数的当前值会近似于1 Hz脉冲 - 但为什么会这样?

1 个答案:

答案 0 :(得分:2)

我认为您的意思是说您当前正在使用K21 OSC SYSCLK_P作为单端时钟输入并将其直接连接到CLK。 请包含您的UCF文件的片段,以供将来的问题参考。

这不起作用,因为各个差分时钟线的峰峰值电压不能分别用非差分(0可靠地注册为逻辑1LVCMOS25 }?)I / O标准。

你必须

  • 在您的实体上包含_P和_N端口,
  • 在您的设计中实例化LVDS缓冲区,
  • 将_P和_N端口连接到缓冲区,以便从缓冲区的输出CLK获取O

不要忘记更改UCF文件中的I / O标准。