Files
WMU-ECE-3570-Lab/lab2CA.srcs/sources_1/new/WMUdule.v
2019-04-06 17:51:44 -04:00

59 lines
1.4 KiB
Verilog

`timescale 1ns / 1ps
module WMUdule(
input wire [61:0] PipIn,
output wire [8:0] RFIn,FUAddr,
output wire [1:0] instr,
output wire fetchBranch, RegEn
);
wire [8:0] PCout,AddiOut,AluOut,dataMemOut,bankOP,loadMux,linkData,bankData;
wire addiS,loadS,link,bankS;
assign RegEn = PipIn[61];
assign PCout = PipIn[60:52];
assign bankOP = PipIn[51:43];
assign FUAddr = PipIn[42:34];
assign AluOut = PipIn[33:25];
assign dataMemOut = PipIn[24:16];
assign AddiOut = PipIn[15:7];
assign instr = PipIn[6:5];
assign bankS = PipIn[4];
assign loadS = PipIn[3];
assign link = PipIn[2];
assign addiS = PipIn[1];
assign fetchBranch = PipIn[0];
mux_2_1 mux3(
.A(AluOut),
.B(AddiOut),
.out(loadMux),
.switch(addiS)
);
mux_2_1 mux4(
.A(linkData),
.B(dataMemOut), // This is DATA MEM
.out(bankData),
.switch(loadS)
);
///--------------------------Bank stuff
mux_2_1 mux5(
.A(bankData),
.B(bankOP),
.out(RFIn),
.switch(bankS)
);
///--------------------------Link Stuff
mux_2_1 mux6(
.A(loadMux),
.B(PCout),
.out(linkData),
.switch(link)
);
endmodule