Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module REGS(bufferIn,IR,MAR,MDR,MAR_in,MDR_in,MDR_out,IR_in,reg0_in,reg1_in,reg2_in,reg3_in,reg0_out,reg1_out,reg2_out,reg3_out,out);
  2.  
  3. input wire [15:0] bufferIn;
  4. output reg [15:0] out;
  5. // Input buffer and output for buffer
  6.  
  7. // Declare
  8. reg [15:0] reg0 = 0;
  9. reg [15:0] reg1 = 0;
  10. reg [15:0] reg2 = 0;
  11. reg [15:0] reg3 = 0;
  12. registers
  13.  
  14. output reg [15:0] MAR = 0;
  15. output reg [15:0] MDR = 0;
  16. output reg [15:0] IR = 0;
  17. // Registers for MDR and MAR
  18.  
  19. input wire MAR_in,MDR_in,MDR_out,IR_in,reg0_in,reg1_in,reg2_in,reg3_in,reg0_out,reg1_out,reg2_out,reg3_out;
  20. // input control wires
  21.  
  22. /* IR */
  23. always @(posedge IR_in)
  24. IR = bufferIn;
  25. // buffer for setting input
  26.  
  27. /* MAR */
  28. always @(posedge MAR_in)
  29. MAR = bufferIn;
  30. // buffer for setting input
  31.  
  32. /* MDR */
  33. always @(posedge MDR_in)
  34. MDR = bufferIn;
  35. // buffer for setting input
  36.  
  37. always @(MDR_out)
  38. assign out = MDR_out?MDR:16'bz;
  39. // Tri-State buffer for sending output when output is enabled or else 16'bz
  40.  
  41. /* REGISTERS */
  42. //reg0
  43. always @(posedge reg0_in)
  44. reg0 = bufferIn;
  45.  
  46. always @(reg0_out)
  47. assign out = reg0_out?reg0:16'bz;
  48.  
  49. //reg1
  50. always @(posedge reg1_in)
  51. reg1 = bufferIn;
  52.  
  53. always @(reg1_out)
  54. assign out = reg1_out?reg1:16'bz;
  55.  
  56. //reg2
  57. always @(posedge reg2_in)
  58. reg2 = bufferIn;
  59.  
  60. always @(reg2_out)
  61. assign out = reg2_out?reg2:16'bz;
  62.  
  63. //reg3
  64. always @(posedge reg3_in)
  65. reg3 = bufferIn;
  66.  
  67. always @(reg3_out)
  68. assign out = reg3_out?reg3:16'bz;
  69.  
  70. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement