Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Namn: instruktionsavkodare
  3. -- Filnamn: instruktionsavkodare.vhd
  4. -- Testbench: instruktionsavkodare_tb.vhd
  5. --
  6. -- Insignaler:
  7. -- OPCODE - operationskod från instruktionen
  8. -- Z - zero-flagga från beräkningsenhet
  9. --
  10. -- Utsignaler:
  11. -- StackOp - styr stacken i adressväljaren
  12. -- AddrSrc - styr varifrån nästa adress ska hämtas
  13. -- ALUOp - bestämmer operatinen för ALU i beräkningsenhet
  14. -- ALUSrc - väljer om ett register eller insignalen från IO-blocket ska
  15. -- vara operand till ALU
  16. -- RegEna - laddsignal till registerblocket
  17. -- OutEna - laddsignal till utsignalsregistret i IO-blocket
  18. ----------------------------------------------------------------------------------
  19.  
  20. library ieee;
  21. use ieee.std_logic_1164.all;
  22. use ieee.numeric_std.all;
  23.  
  24. library work;
  25. use work.all;
  26. use work.cpu_pkg.all;
  27.  
  28. entity instruktionsavkodare is
  29. port(
  30. OPCODE : in std_logic_vector(3 downto 0);
  31. Z : in std_logic;
  32. StackOp : out std_logic_vector(1 downto 0);
  33. AddrSrc : out std_logic_vector(1 downto 0);
  34. ALUOp : out std_logic_vector(2 downto 0);
  35. ALUSrc : out std_logic;
  36. RegEna : out std_logic;
  37. OutEna : out std_logic
  38. );
  39. end entity;
  40.  
  41. architecture behaviour of instruktionsavkodare is
  42.  
  43. begin
  44.  
  45. process(OPCODE, Z)
  46.  
  47. begin
  48. case OPCODE is
  49. when "0000" => --CALL
  50. CALL : entity instruktionsavkodare port map(
  51. OPCODE => "0000",
  52. Z => Z,
  53. StackOp => StackOp(0,1),
  54. AddrSrc => AddrSrc(1,0),
  55. ALUOp => B,
  56. ALUSrc => RegOut,
  57. RegEna => RegEna,
  58. OutEna => OutEna
  59. );
  60. when "0001" => --RET
  61.  
  62. when "0010" => --BZ
  63.  
  64. when "0011" => --B
  65.  
  66. when "0100" => --ADD
  67.  
  68. when "0101" => --SUB
  69.  
  70. when "0110" => --LD
  71.  
  72. when "0111" => --IN
  73.  
  74. when "1000" => --OUT
  75.  
  76. when "1001" => --AND
  77.  
  78. when "1010" => --DTO
  79.  
  80. when others => null;
  81.  
  82. end case;
  83. end process;
  84.  
  85. end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement