記事一覧

野球ゲームをつくる ~ 4.バッティングルーレットの表示

2013年07月06日(土)11時26分

ルーレットを回し、出目によって、アウトやヒットを決めます。

出目:内容
0:アウト
1:1塁打
2:2塁打
3:3塁打
H:ホームラン
F:フォアボール

また、チェンジも表示する必要があるので、
-:チェンジ
とします。

負論理なので、LEDの出力を反転しています。*1

batting_decorder.vhd

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 などが存在するからです。