确定 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 文件的片段,以供日后提问时参考。
这是行不通的,因为各个差分时钟线的峰峰值电压不会可靠地分别注册为逻辑 0
或 1
非差分(LVCMOS25
?) I/O 标准。
你必须
- 在您的实体上同时包含 _P 和 _N 端口,
- 在您的设计中实例化一个 LVDS 缓冲器,并且
- 将 _P 和 _N 端口连接到缓冲区,以便从缓冲区的输出中获得
CLK
O
不要忘记更改 UCF 文件中的 I/O 标准。
我正在努力学习如何使用 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 文件的片段,以供日后提问时参考。
这是行不通的,因为各个差分时钟线的峰峰值电压不会可靠地分别注册为逻辑 0
或 1
非差分(LVCMOS25
?) I/O 标准。
你必须
- 在您的实体上同时包含 _P 和 _N 端口,
- 在您的设计中实例化一个 LVDS 缓冲器,并且
- 将 _P 和 _N 端口连接到缓冲区,以便从缓冲区的输出中获得
CLK
O
不要忘记更改 UCF 文件中的 I/O 标准。