0

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

我使用了Sp605 硬件用户指南,在时钟源连接表中的引脚 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 脉冲的近似值 - 但为什么是这个?

4

1 回答 1

2

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

这是行不通的,因为各个差分时钟线的峰峰值电压不能可靠地注册为逻辑01分别使用非差分 ( LVCMOS25?) I/O 标准。

你必须

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

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

于 2015-11-02T22:59:19.427 回答