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

Determining clock frequency on FPGA Spartan-6

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

我使用了 Sp605 Hardware User Guide,在时钟源连接 table(第 27 页,如果您有兴趣!)中的引脚 K21 被描述为“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 的近似值脉冲 - 但这是为什么?

我想你的意思是你目前正在使用K21 OSC SYSCLK_P作为单端时钟输入并直接连接到CLK。 请附上您的 UCF 文件的片段,以供日后提问时参考。

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

你必须

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

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