ルーレットで使用する10進カウンタをつくります。
roullet.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ROULLET is
port(
DIV_CLK : in std_logic;
RESET : in std_logic;
STOP_IN : in std_logic; -- ルーレットのストップ信号(入力)
STOP_OUT : out std_logic; -- ルーレットが止まっているかどうか
HIT : out std_logic_vector(3 downto 0) -- ルーレットで出た数字
);
end ROULLET;
architecture RTL of ROULLET is
signal HIT_TMP : std_logic_vector(3 downto 0);
begin
process(DIV_CLK, RESET)
begin
if (RESET = '0') then
HIT_TMP <= (others => '0');
elsif (DIV_CLK'event and DIV_CLK = '0') then
if (STOP_IN = '0') then -- STOP_IN(=ENABLE)
if (HIT_TMP = "1001") then
HIT_TMP <= (others => '0');
else
HIT_TMP <= HIT_TMP + 1;
end if;
end if;
end if;
end process;
HIT <= HIT_TMP;
STOP_OUT <= STOP_IN;
end RTL;
動作の概要
DIV_CLKの周期で0-9までカウントアップ
STOP_INに1が入った時のカウント数字をHITとして出力
STOP_OUTはルーレットが止まっているかどうかの状態出力です。リーチ、ビンゴの判定に使用します。