Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.03 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Company:
  3. -- Engineer:
  4. --
  5. -- Create Date: 04/17/2018 03:53:03 AM
  6. -- Design Name:
  7. -- Module Name: ControlUnit - Behavioral
  8. -- Project Name:
  9. -- Target Devices:
  10. -- Tool Versions:
  11. -- Description:
  12. --
  13. -- Dependencies:
  14. --
  15. -- Revision:
  16. -- Revision 0.01 - File Created
  17. -- Additional Comments:
  18. --
  19. ----------------------------------------------------------------------------------
  20.  
  21.  
  22. library IEEE;
  23. use IEEE.STD_LOGIC_1164.ALL;
  24. use ieee.std_logic_arith.all;
  25. use ieee.std_logic_unsigned.all;
  26.  
  27. -- Uncomment the following library declaration if using
  28. -- arithmetic functions with Signed or Unsigned values
  29. --use IEEE.NUMERIC_STD.ALL;
  30.  
  31. -- Uncomment the following library declaration if instantiating
  32. -- any Xilinx leaf cells in this code.
  33. --library UNISIM;
  34. --use UNISIM.VComponents.all;
  35.  
  36. entity ControlUnit is
  37. Port ( instruction : in std_logic_vector(2 downto 0); --opcode
  38. regWrite : out STD_LOGIC;
  39. ALUsrc : out STD_LOGIC;
  40. branch : out STD_LOGIC;
  41. jump : out STD_LOGIC;
  42. ALUop : out STD_LOGIC_VECTOR (2 downto 0);
  43. memWrite : out STD_LOGIC;
  44. memToReg : out STD_LOGIC;
  45. extOp : out STD_LOGIC;
  46. regDst : out STD_LOGIC);
  47. end ControlUnit;
  48.  
  49. architecture Behavioral of ControlUnit is
  50.  
  51. begin
  52.  
  53. process(instruction(2 downto 0))
  54. begin
  55. --initializare
  56. regWrite <= '0';
  57. ALUsrc <= '0';
  58. branch <= '0';
  59. jump <= '0';
  60. ALUop <= "000";
  61. memWrite <= '0';
  62. memToReg <= '0';
  63. extOp <= '0';
  64. regDst <= '0';
  65.  
  66. case instruction(2 downto 0) is
  67. --r type instruction
  68. when "000" => regWrite <= '1'; ------
  69. ALUsrc <= '0';
  70. branch <= '0';
  71. jump <= '0';
  72. ALUop <= "000";
  73. memWrite <= '0';
  74. memToReg <= '0';
  75. extOp <= '0';
  76. regDst <= '1'; ---------
  77.  
  78. --ADDI
  79. when "001" => regWrite <= '1'; -------
  80. ALUsrc <= '1'; --------
  81. branch <= '0';
  82. jump <= '0';
  83. ALUop <= "001";
  84. memWrite <= '0';
  85. memToReg <= '0';
  86. extOp <= '1'; --------
  87. regDst <= '0';
  88.  
  89. --LOAD WORD
  90. when "010" => regWrite <= '1'; ---------
  91. ALUsrc <= '1'; ---------
  92. branch <= '0';
  93. jump <= '0';
  94. ALUop <= "001";
  95. memWrite <= '0';
  96. memToReg <= '1'; ----------
  97. extOp <= '1'; ----------
  98. regDst <= '0';
  99.  
  100. --STORE WORD
  101. when "011" => regWrite <= '0';
  102. ALUsrc <= '1'; ------------
  103. branch <= '0';
  104. jump <= '0';
  105. ALUop <= "001";
  106. memWrite <= '1'; ------------
  107. memToReg <= '0';
  108. extOp <= '1'; ------------
  109. regDst <= '0';
  110.  
  111. --BEQ
  112. when "100" => regWrite <= '0';
  113. ALUsrc <= '0';
  114. branch <= '1'; ---------
  115. jump <= '0';
  116. ALUop <= "010";
  117. memWrite <= '0';
  118. memToReg <= '0';
  119. extOp <= '1'; ----------
  120. regDst <= '0';
  121.  
  122. --ANDI
  123. when "101" => regWrite <= '1'; ---------
  124. ALUsrc <= '1'; --------
  125. branch <= '0';
  126. jump <= '0';
  127. ALUop <= "011";
  128. memWrite <= '0';
  129. memToReg <= '0';
  130. extOp <= '0';
  131. regDst <= '0';
  132.  
  133. --ORI
  134. when "110" => regWrite <= '1'; ---------
  135. ALUsrc <= '1'; --------
  136. branch <= '0';
  137. jump <= '0';
  138. ALUop <= "100";
  139. memWrite <= '0';
  140. memToReg <= '0';
  141. extOp <= '0';
  142. regDst <= '0';
  143.  
  144. --JUMP
  145. when "111" => regWrite <= '0';
  146. ALUsrc <= '0';
  147. branch <= '0';
  148. jump <= '1'; ---------
  149. ALUop <= "000";
  150. memWrite <= '0';
  151. memToReg <= '0';
  152. extOp <= '0';
  153. regDst <= '0';
  154. end case;
  155. end process;
  156. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement