Advertisement
Randune1

Ctrl

Jan 12th, 2023 (edited)
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 1.46 KB | Source Code | 0 0
  1. entity ctrl is
  2.     Port (  OP : in  STD_LOGIC_VECTOR (4 downto 0);
  3.                 ALUOP : out  STD_LOGIC_VECTOR (2 downto 0);
  4.                 MemWr : out  STD_LOGIC;
  5.                 Mem2Reg : out  STD_LOGIC;
  6.                 RegWr : out  STD_LOGIC;
  7.                 RegDest : out  STD_LOGIC;
  8.                 RegBase : out  STD_LOGIC;
  9.                 Branch : out  STD_LOGIC;
  10.                 N_En : out  STD_LOGIC;
  11.                 OV_En : out  STD_LOGIC;
  12.                 Z_En : out  STD_LOGIC;
  13.                 C_En : out  STD_LOGIC
  14.                 );
  15. end ctrl;
  16.  
  17. architecture Behavioral of ctrl is
  18.  
  19. begin
  20.     ALUOP   <=  "000"   when OP = "01000" else
  21.                 "001"   when OP = "01010" else
  22.                 "010"   when OP = "01100" else
  23.                 "011"   when OP = "01110" else
  24.                 "100"   when OP = "11011" else
  25.                 "101"   when OP = "11101" else
  26.                 "110"   when OP = "00011" else
  27.                 "111"   when OP = "10100";
  28.                
  29.     MemWr   <=  '1' when OP = "10001" else '0';
  30.    
  31.     Mem2Reg <= '1' when OP = "10000" else '0';
  32.    
  33.     RegWr <= '0' when   (OP = "00110" or
  34.                              OP = "10001") else
  35.                 '1';
  36.                              
  37.     Branch <= '1' when OP = "00110" else '0';
  38.    
  39.     RegBase <= '1';
  40.    
  41.     RegDest <= '0' when OP = "10000" else '1';
  42.    
  43.     N_En    <=  '1' when    (OP = "01000" or
  44.                              OP = "01010" or
  45.                              OP = "01100" or
  46.                              OP = "01110") else
  47.                 '0';
  48.                          
  49.     OV_En   <= '1' when (OP = "01000" or
  50.                              OP = "01010") else
  51.                 '0';
  52.                
  53.    Z_En <= '1' when (OP = "01000" or
  54.                              OP = "01010" or
  55.                              OP = "01100" or
  56.                              OP = "01110") else
  57.                 '0';
  58.                
  59.    C_En <= '1' when (OP = "01000" or
  60.                              OP = "01010") else
  61.                 '0';
  62.  
  63. end Behavioral;
  64.  
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement