Cyclone II板VHDL时钟分频器

时间:2014-10-18 14:55:18

标签: vhdl fpga

我正忙着尝试将乒乓球型游戏编写到我的FPGA板(Altera Cyclone II型号)中,并且有两个时钟,50MHz和27MHz。游戏需要时钟才能工作。我想使用50MHz时钟,但需要将其降低到1Hz("球"每次振荡时只应移动一个LED)。我是VHDL和FPGA的新用户,已经在线完成了一些研究,但没有一个真正帮助我减慢VHDL中时钟的速度。

我的想法是使用两个回路,一个用于低电平,一个用于高电平,使用25000000个时钟周期用于高电平,25000000个时钟周期用于低电平,这将在使用50MHz时钟时产生1Hz时钟。虽然我知道它的非代码逻辑,但我不知道如何在VHDL中实现它。

我检查了之前的类似问题:Clock divider simulation但发布问题的人不包含评论,我无法真正关注该代码中的内容。任何帮助都非常感谢!

以下是我的代码,但我不确定它是否可行。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity pingpong is
port(
    clk : in std_logic;
    gameclk : out std_logic
);
end pingpong;

architecture behave of pingpong is  
begin
    process(clk)
    variable a : integer := 0;
    signal b : std_logic := '0';
    begin
    if rising_edge(clk) then
        a := a+1;
        if a = 25000000 and b = '0' then
            b := '1'; a := 0;
        elsif a = 25000000 and b = '1' then
            b := '0'; a := 0;
        end if;
    end if;
    gameclk <= b;

    end process;
end behave;

0 个答案:

没有答案