Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. //module decleration
  2. module datapath_top (mdata, sximm8, PC, C, writenum, write , readnum, clk, loada, loadb, loadc,
  3. shift, asel, bsel, vsel, vselhot, ALUop, loads, datapath_out); //inputs
  4.  
  5. //inputs and outputs
  6. input [1:0] vsel;
  7. input [3:0] vselhot;
  8. input [0:7] PC; //added for lab 6
  9. input [15:0] mdata, sximm8, C; // added for lab 6
  10. input [2:0] writenum, readnum;
  11. input clk, write, loada, loadb, asel, bsel, loadc, loads;
  12. input [1:0] shift, ALUop;
  13. output [15:0] datapath_out;
  14. //output [2:0] status;
  15.  
  16. //wires
  17. wire [15:0] data_in, data_out, loadA, shifter_out, B, Ain, Bin, ALUout;
  18. //wire status;
  19. reg [15:0] muxout; // added for lab 6
  20.  
  21. //module instantiations:
  22. regfile Memory(data_in, readnum, writenum, write, clk, data_out); //register file
  23. ALU Calculator(Ain, Bin, ALUop, ALUout, status); //ALU
  24. shifter Shift (B, shift, shifter_out); //shifter
  25. vDFFE FlopA (clk, loada, data_out, loadA ); // Enable load a
  26. vDFFE FlopB (clk, loadb, data_out, B); // Enable load b
  27. vDFFE FlopC (clk, loadc , ALUout, datapath_out); // Enable load c
  28.  
  29. // instantiation for decoder
  30. decoder #(2,4) U1(vsel, vselhot);
  31. always @(*) begin
  32. case (vsel)
  33. 4'b0001 : muxout = mdata;
  34. 4'b0010 : muxout = sximm8;
  35. 4'b0100 : muxout = {8'b0,PC};
  36. 4'b1000 : muxout = C;
  37. endcase
  38. end
  39.  
  40. //Muxes:
  41. // Mux for A
  42. assign Ain= asel ? 16'b0 : loadA; // multiplexer for Ain
  43. // Mux for B (modified for lab 6)
  44. assign Bin= bsel ? sximm8 : shifter_out; // multiplexer for Bin
  45. endmodule
  46.  
  47. //decoder module for mux
  48. module decoder(a,b) ;
  49. parameter n = 3 ;
  50. parameter m = 8 ;
  51.  
  52. input [n-1: 0] a ;
  53. output [m-1:0] b ;
  54.  
  55. wire [m-1:0] b = 1<<a ;
  56. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement