デコード部を作る

p.197

これもテキストのままである。15ビットから成るマシン語の上位4ビット(オペコード)と下位8ビット(オペデータ)とを抜き出して出力する。テキストにも書いてあるように、今作ろうとしているCPUには実は不要。

-- decode.vhd
library IEEE;
use IEEE.std_logic_1164.all;

entity decode is
    port(
        CLK_DC   : in  std_logic;
        PROM_OUT : in  std_logic_vector(14 downto 0);

        OP_CODE : out std_logic_vector(3 downto 0);
        OP_DATA : out std_logic_vector(7 downto 0)
    );
end decode;

architecture RTL of decode is
begin
    process(CLK_DC)
    begin
        if(CLK_DC'event and CLK_DC = '1') then -- クロックのrising edgeのたびに
            OP_CODE <= PROM_OUT(14 downto 11);  -- マシン語の上位4ビット(オペコード)と
            OP_DATA <= PROM_OUT(7 downto 0);    -- マシン語の下位8ビット(オペデータ)とを抜き出して出力する。
        end if;
    end process;
end RTL;

DIPスイッチから適当に15ビットのデータを与え、その上位4ビットと下位8ビットとがクロックのrising edgeのタイミングで出力されることを確かめる。
f:id:ti-nspire:20210115065047p:plain:h300 f:id:ti-nspire:20210115065153j:plain:h300
f:id:ti-nspire:20210115071906p:plain