Guest User

Untitled

a guest
Apr 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. module FSMs(opcode, param1, param2, reset, clock, pc_increment, pc_memoryaddress, memory_read, memory_write, ir_load, register_in, register_out, mdr_load, alu_out, register_select, alu_select);
  2.  
  3. input [7:0] opcode;
  4. input [3:0] param1, param2;
  5. input reset, clock;
  6.  
  7. output pc_increment, pc_memoryaddress, memory_read, memory_write, ir_load, register_select, register_in, register_out, mdr_load, alu_select, alu_out;
  8. output [2:0] register_select, alu_select;
  9.  
  10. reg [2:0] clear, present_state, next_state;
  11.  
  12. assign start = 3'b100, s0 = 3'b001, s1 = 3'b010, s2 = 3'b011;
  13.  
  14. always @(posedge clock or posedge reset)
  15. begin
  16. if(reset)
  17. present_state <= start;
  18. else
  19. present_state <= next_state;
  20. end
  21.  
  22. always @(present_state or posedge clock)
  23. case (present_state)
  24. clear: next_state <= s0;
  25.  
  26. s0: next_state <= s1;
  27. s1: next_state <= s2;
  28. endcase
  29.  
  30. always @(posedge clock)
  31. case(present_state)
  32. clear:
  33. begin
  34. pc_increment = 0;
  35. pc_memoryaddress = 0;
  36. memory_read = 0;
  37. memory_write = 0;
  38. ir_load = 0;
  39. register_select = 0;
  40. register_in = 0;
  41. register_out = 0;
  42. mdr_load = 0;
  43. alu_out = 0;
  44. end
  45.  
  46. s0:
  47. begin
  48. pc_increment = 1;
  49. pc_memoryaddress = 1;
  50. memory_read = 1;
  51. memory_write = 0;
  52. ir_load = 1;
  53. register_select = 0;
  54. register_in = 0;
  55. register_out = 0;
  56. mdr_load = 0;
  57. alu_out = 0;
  58. end
  59.  
  60. s1:
  61. begin
  62. case(opcode)
  63. 8'b0001XXXX:
  64. begin
  65. pc_increment = 0;
  66. pc_memoryaddress = 1;
  67. memory_read = 1;
  68. memory_write = 0;
  69. ir_load = 1;
  70. register_select = 0;
  71. register_in = 0;
  72. register_out = 0;
  73. mdr_load = 0;
  74. alu_out = 0;
  75. end
  76.  
  77. 8'b00100000:
  78. begin
  79. pc_increment = 1;
  80. pc_memoryaddress = 1;
  81. memory_read = 1;
  82. memory_write = 0;
  83. ir_load = 1;
  84. register_select = 0;
  85. register_in = 0;
  86. register_out = 0;
  87. mdr_load = 0;
  88. alu_out = 0;
  89. end
  90. endcase
  91. end
  92.  
  93. s2:
  94. begin
  95. pc_increment = 1;
  96. pc_memoryaddress = 1;
  97. memory_read = 1;
  98. memory_write = 0;
  99. ir_load = 1;
  100. register_select = 0;
  101. register_in = 0;
  102. register_out = 0;
  103. mdr_load = 0;
  104. alu_out = 0;
  105. end
  106. endcase
  107. endmodule
Add Comment
Please, Sign In to add comment