Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------------------------------------
- -- Namn: instruktionsavkodare
- -- Filnamn: instruktionsavkodare.vhd
- -- Testbench: instruktionsavkodare_tb.vhd
- --
- -- Insignaler:
- -- OPCODE - operationskod från instruktionen
- -- Z - zero-flagga från beräkningsenhet
- --
- -- Utsignaler:
- -- StackOp - styr stacken i adressväljaren
- -- AddrSrc - styr varifrån nästa adress ska hämtas
- -- ALUOp - bestämmer operatinen för ALU i beräkningsenhet
- -- ALUSrc - väljer om ett register eller insignalen från IO-blocket ska
- -- vara operand till ALU
- -- RegEna - laddsignal till registerblocket
- -- OutEna - laddsignal till utsignalsregistret i IO-blocket
- ----------------------------------------------------------------------------------
- library ieee;
- use ieee.std_logic_1164.all;
- use ieee.numeric_std.all;
- library work;
- use work.all;
- use work.cpu_pkg.all;
- entity instruktionsavkodare is
- port(
- OPCODE : in std_logic_vector(3 downto 0);
- Z : in std_logic;
- StackOp : out std_logic_vector(1 downto 0);
- AddrSrc : out std_logic_vector(1 downto 0);
- ALUOp : out std_logic_vector(2 downto 0);
- ALUSrc : out std_logic;
- RegEna : out std_logic;
- OutEna : out std_logic
- );
- end entity;
- architecture behaviour of instruktionsavkodare is
- begin
- process(OPCODE, Z)
- begin
- case OPCODE is
- when "0000" => --CALL
- CALL : entity instruktionsavkodare port map(
- OPCODE => "0000",
- Z => Z,
- StackOp => StackOp(0,1),
- AddrSrc => AddrSrc(1,0),
- ALUOp => B,
- ALUSrc => RegOut,
- RegEna => RegEna,
- OutEna => OutEna
- );
- when "0001" => --RET
- when "0010" => --BZ
- when "0011" => --B
- when "0100" => --ADD
- when "0101" => --SUB
- when "0110" => --LD
- when "0111" => --IN
- when "1000" => --OUT
- when "1001" => --AND
- when "1010" => --DTO
- when others => null;
- end case;
- end process;
- end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement