Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. module Controle(input wire [5:0] Opcode,
  2. input wire [5:0] func,
  3. input wire [0:0] clk,
  4. output reg [0:0] PCWrite,
  5. output reg [0:0] PCWriteCond,
  6. output reg [1:0] PCWriteCondMux,
  7. output reg [2:0] MuxBranch,
  8. output reg [2:0] MuxMemoriaEnd,
  9. output reg [0:0] IRWrite,
  10. output reg [0:0] RegWrite,
  11. output reg [1:0] RegDst,
  12. output reg [2:0] MuxULA1,
  13. output reg [2:0] ALUControl,
  14. output reg [0:0] ALUOutControl,
  15. output reg [0:0] DivControl,
  16. output reg [2:0] MuxULA2,
  17. output reg [1:0] MuxMemoriaDado,
  18. output reg [0:0] AControl,
  19. output reg [0:0] BControl,
  20. output reg [0:0] EPCCont,
  21. output reg [0:0] MultControl,
  22. output reg [2:0] RDControl,
  23. output reg [0:0] MuxRD,
  24. output reg [0:0] MuxSaidaLO,
  25. output reg [0:0] MuxSaidaHI,
  26. output reg [1:0] ContShifts,
  27. output reg [3:0] MuxWriteData,
  28. output reg [0:0] MuxHILO,
  29. output reg [0:0] LuiControl,
  30. output reg [0:0] MuxMDR,
  31. output reg [2:0] ControleBits,
  32. output reg [0:0] CHi,
  33. output reg [0:0] CLo,
  34. output reg [0:0] MemRead,
  35. output reg [0:0] MDRControl);
  36.  
  37. reg [31:0] state;
  38.  
  39. parameter TipoR = 32'd07;
  40. parameter Add = 32'd32;
  41. parameter Sub = 32'd34;
  42. parameter Addi = 32'd8;
  43. parameter Addi1 = 32'd9;
  44. parameter Addi2 = 32'd10;
  45. parameter Addi3 = 32'd11;
  46. parameter Add1 = 32'd09;
  47.  
  48. always @(posedge clk)begin
  49.  
  50. case(state)
  51. //RESET
  52. 32'd0:
  53. begin
  54. state <= 32'd1;
  55. end
  56.  
  57. 32'd1:
  58. begin
  59. RegDst <= 2'b11;
  60. RegWrite <= 1'd1;
  61. MuxWriteData <= 4'b1000;
  62. state <= 32'd2;
  63. end
  64.  
  65. 32'd2:
  66. begin
  67. RegWrite <= 1'd0;
  68. state <= 32'd3;
  69. end
  70. //PC+4
  71. 32'd3:
  72. begin
  73. MuxULA1 <= 3'b000;
  74. MuxULA2 <= 3'b001;
  75. MuxMemoriaEnd <= 3'b000;
  76. ALUControl <= 3'b001;
  77. MemRead <= 1'b0;
  78. state <= 32'd4;
  79. end
  80.  
  81. 32'd4:
  82. begin
  83. MuxBranch <= 2'b00;
  84. PCWrite <= 1'b1;
  85. state <= 32'd5;
  86. end
  87.  
  88. 32'd5:
  89. begin
  90. PCWrite <= 1'b0;
  91. state <= 32'd6;
  92. end
  93.  
  94. 32'd6:
  95. begin
  96. IRWrite <= 1'b1;
  97. state <= 32'd7;
  98. end
  99. 32'd7:
  100. begin
  101. case(Opcode)
  102. TipoR:
  103. begin
  104. case(func)
  105. //ADD
  106. Add:
  107. begin
  108. RegWrite <= 1'b0;
  109. state <= Add1;
  110. end
  111. //SUB
  112. endcase
  113. end
  114. //ADDI
  115. Addi:
  116. begin
  117. state <= Addi;
  118. end
  119. endcase
  120. end
  121. Addi:
  122. begin
  123. AControl <= 1'b1;
  124. MuxULA1 <= 3'b100;
  125. MuxULA2 <= 3'b010;
  126. ALUControl <= 3'b001;
  127. ALUOutControl <= 1'b1;
  128. state <= 32'd7;
  129. end
  130. Addi2:
  131. begin
  132. MuxWriteData <= 3'b000;
  133. RegWrite <= 1'b1;
  134. ALUOutControl <= 1'b0;
  135. RegDst <= 2'b01;
  136. AControl <= 1'b0;
  137. BControl <= 1'b0;
  138. state <= Addi3;
  139. end
  140. Addi3:
  141. begin
  142. RegWrite <= 1'b0;
  143. state <= 32'd3;
  144. end
  145. endcase
  146. end
  147. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement