Advertisement
Guest User

Untitled

a guest
May 26th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. library IEEE;
  2. use IEEE.STD_LOGIC_1164.ALL;
  3. use IEEE.STD_LOGIC_ARITH.ALL;
  4. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  5.  
  6. entity IBDECODER is
  7. Port ( I : in STD_LOGIC_VECTOR(31 downto 0);
  8. ALU_OP : out STD_LOGIC_VECTOR(5 downto 0);
  9. select_shamt : out STD_LOGIC;
  10. select_imm : out STD_LOGIC;
  11. select_b : out STD_LOGIC;
  12. extend_sign : out STD_LOGIC;
  13. extend_msb : out STD_LOGIC);
  14. end IBDECODER;
  15.  
  16. architecture Behavioral of IBDECODER is
  17.  
  18. signal t_select : STD_LOGIC;
  19. signal sign : STD_LOGIC;
  20.  
  21. begin
  22. ALU_Op <= I(5 downto 0) when I(31 downto 26) = "000000" else I(31 downto 26);
  23. extend_msb <= I(15);
  24.  
  25. sign <=
  26. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"20" else -- add
  27. '1' when I(31 downto 26) = X"8" else -- addi
  28. '1' when I(31 downto 26) = X"9" else -- addiu
  29. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"21" else -- addu
  30. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"24" else -- and
  31.  
  32. '0' when I(31 downto 26) = X"C" else -- andi
  33. '0' when I(31 downto 26) = X"4" else -- beq
  34. '0' when I(31 downto 26) = X"5" else -- bne
  35. '0' when I(31 downto 26) = X"2" else -- j
  36. '0' when I(31 downto 26) = X"3" else -- jal
  37.  
  38. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"8" else -- jr
  39. '1' when I(31 downto 26) = X"24" else -- lbu
  40. '1' when I(31 downto 26) = X"25" else -- lhu
  41. '1' when I(31 downto 26) = X"30" else -- ll
  42. '0' when I(31 downto 26) = X"F" else -- lui
  43.  
  44. '1' when I(31 downto 26) = X"23" else -- lw
  45. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"27" else -- nor
  46. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"25" else -- or
  47. '0' when I(31 downto 26) = X"D" else -- ori
  48. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"2A" else -- slt
  49.  
  50. '1' when I(31 downto 26) = X"A" else -- slti
  51. '1' when I(31 downto 26) = X"B" else -- sltiu
  52. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"2B" else -- sltu
  53. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"00" else -- sll
  54. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"02" else -- srl
  55.  
  56. '1' when I(31 downto 26) = X"28" else -- sb
  57. '1' when I(31 downto 26) = X"38" else -- sc
  58. '1' when I(31 downto 26) = X"29" else -- sh
  59. '1' when I(31 downto 26) = X"2B" else -- sw
  60. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"22" else -- sub
  61.  
  62. '0' when I(31 downto 26) = X"0" and I(5 downto 0) = X"23"; -- subu
  63.  
  64. -- ############################
  65. t_select <= '0' when I(31 downto 26) = X"0" else '1';
  66. select_imm <= t_select;
  67. select_b <= t_select;
  68. select_shamt <= '1' when I(31 downto 26) = X"0" and (I(5 downto 0) = X"0" or I(5 downto 0) = X"2");
  69.  
  70. -- ############################
  71.  
  72. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement