記事一覧

ルーレットをつくる ~ クロックの分周

2013年06月16日(日)20時05分

ルーレット用の分周をつくります。

大雑把に1Hzをクロックするを利用しました。

クロックがあまり早いと、目押しが難しいので、(私は全然ダメ)、16Hz=62.5ms位にしておきます。リーチとビンゴ用に、2Hz 8Hzも用意しました。

divider.vhd

-- Divider for Roullet
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity  DIVIDER is
    port(
        CLK          : in  std_logic;
        DIV_CLK_2HZ  : out std_logic;
        DIV_CLK_8HZ  : out std_logic;
        DIV_CLK_16HZ : out std_logic
    );
end DIVIDER;

architecture RTL of DIVIDER is
    constant OSC_BIT   : integer := 25;    --Osc 33MHz: 25bit
    signal DIV_COUNTER : std_logic_vector(OSC_BIT-1 downto 0);

begin

    process(CLK)
    begin
        if (CLK'event and CLK = '0') then
            DIV_COUNTER <= DIV_COUNTER + 1;
        end if;
    end process;
    
    DIV_CLK_2HZ  <= not DIV_COUNTER(OSC_BIT-2);
    DIV_CLK_8HZ  <= not DIV_COUNTER(OSC_BIT-4);
    DIV_CLK_16HZ <= not DIV_COUNTER(OSC_BIT-5);
    
end RTL;