ルーレットを回し、出目によって、アウトやヒットを決めます。
出目:内容
0:アウト
1:1塁打
2:2塁打
3:3塁打
H:ホームラン
F:フォアボール
また、チェンジも表示する必要があるので、
-:チェンジ
とします。
負論理なので、LEDの出力を反転しています。*1
entity BATTING_DECODER is
port(
RESET : in std_logic;
COUNTER : in std_logic_vector(2 downto 0);
LED : out std_logic_vector(7 downto 1)
);
end BATTING_DECODER;
architecture RTL of BATTING_DECODER is
signal LED_TMP : std_logic_vector(7 downto 1);
begin
process(RESET,COUNTER)
begin
if (RESET = '0') then
LED_TMP <= "0000000";
else
case COUNTER is
when "000" => LED_TMP <= "1111110"; -- 0
when "001" => LED_TMP <= "0110000"; -- 1
when "010" => LED_TMP <= "1101101"; -- 2
when "011" => LED_TMP <= "1111001"; -- 3
when "100" => LED_TMP <= "0110111"; -- H
when "101" => LED_TMP <= "1000111"; -- F
when "110" => LED_TMP <= "0000001"; -- '-'
when others => LED_TMP <= "1001111"; -- E
end case;
end if;
end process;
LED <= not LED_TMP;
end RTL;
この
when others => LED_TMP <= "1001111"; -- E
は、すべての条件を網羅*2していないときは、必須の記述です。
*1:2015.06.09修正しました。
*2:この場合におけるすべての条件とは、000-111ではありません。というのも、VHDLなどの電子回路では、0 1の他に L H Z などが存在するからです。