pp.197-198
16ビット×8本のレジスタのうち1本を選んで出力する。これもテキストのままである。
-- reg_dc.vhd library IEEE; use IEEE.std_logic_1164.all; entity reg_dc is port( CLK_DC : in std_logic; N_REG_IN : in std_logic_vector(2 downto 0); -- セレクト信号(0b000~0b111) REG_0, REG_1, REG_2, REG_3, REG_4, REG_5, REG_6, REG_7 : in std_logic_vector(15 downto 0); N_REG_OUT : out std_logic_vector(2 downto 0); REG_OUT : out std_logic_vector(15 downto 0) ); end reg_dc; architecture RTL of reg_dc is begin process(CLK_DC) begin if(CLK_DC'event and CLK_DC = '1') then -- 16ビット × 8本のうち1本を選んで出力する。 case N_REG_IN is when "000" => REG_OUT <= REG_0; when "001" => REG_OUT <= REG_1; when "010" => REG_OUT <= REG_2; when "011" => REG_OUT <= REG_3; when "100" => REG_OUT <= REG_4; when "101" => REG_OUT <= REG_5; when "110" => REG_OUT <= REG_6; when "111" => REG_OUT <= REG_7; when others => null; end case; N_REG_OUT <= N_REG_IN; -- セレクト信号は次のステージでも使うのでそのまま出力する。 end if; end process; end RTL;
全部試すのは大変なので、セレクト信号を0b011にしたときにREG_3が出力されるのを確かめるにとどめる。他のREG_nは假想端子につないでおく。