Files
2019-04-12 00:01:27 -04:00

66 lines
1.6 KiB
Verilog

`timescale 1ns / 1ps
module FDModule(
input wire reset, clk, FUIdx, En,
input wire [8:0] RFIn, AddrIn,
input wire[1:0] RFIdx,
//output wire [1:0] op0_idx, op1_idx,
output wire [52:0] result,
output wire done//, compare0, compare1
);
wire [8:0] instr, op1, op0, PCout;
wire [3:0] aluOp;
wire [2:0] FU;
wire [1:0] bankS;
wire addiS, RegEn, loadS, halt, link, js, dataMemEn ;
assign result = {compare0,compare1,instr,op0,op1,PCout,addiS,RegEn,loadS,link,js,dataMemEn,aluOp,FU,bankS}; // concat all signals into one
//assign op0_idx = instr[4:3];46-45
//assign op1_idx = instr[2:1];44-43
instructionMemory iM(
.address(PCout),
.readData(instr)
);
FetchUnit FetchU(
.clk(clk),
.reset(reset),
.op_idx(FUIdx),
.AddrIn(AddrIn),
.AddrOut(PCout)
);
RegFile RF(
.clk(clk),
.reset(reset),
.write_index(RFIdx),
.op0_idx(instr[4:3]),
.op1_idx(instr[2:1]),
.write_data(RFIn),
.op0(op0),
.op1(op1),
.En(En)
);
ControlUnit CU(
.instIn(instr[8:5]),
.functBit(instr[0]),
.aluOut(aluOp),
.FU(FU),
.addi(addiS),
.mem(loadS),
.dataMemEn(dataMemEn),
.RegEn(RegEn),
.halt(done),
.link(link),
.bank(bankS),
.js(js),
.compare0(compare0),
.compare1(compare1)
);
endmodule