blob: 92d51b6cddd1285a5b6a35595465aef84d766203 [file] [log] [blame]
module riscv (input clk, reset,
output [31:0] pc,
output [31:0] pcnext,
input [31:0] instr,
output memwrite,
output [31:0] aluout, writedata,
input [31:0] readdata,
output memread,
output suspend);
wire memtoreg, pcsrc, branch, unsign,
jump, alusrc, alu2src, regwrite, sltunsigned;
wire [3:0] alucontrol;
wire [2:0] imm;
wire lt, gt, eq;
wire [1:0] shtype;
wire [31:0] signimm;
wire [31:0] ISR;
wire ISRsel;
wire storepc;
wire pcadd;
wire pcext;
// in progress
assign ISRsel = 1'b0;
assign ISR = 32'b0;
controller c (.op(instr[6:0]), .funct7(instr[31:25]),
.funct3(instr[14:12]),
.memtoreg(memtoreg),
.memwrite(memwrite),
.pcsrc(pcsrc),
.alusrc(alusrc),
.regwrite(regwrite),
.branch(branch),
.storepc(storepc),
.pcadd(pcadd),
.pcext(pcext),
.unsign(unsign),
.imm(imm),
.alucontrol(alucontrol),
.shtype(shtype),
.alu2src(alu2src),
.gt(gt), .lt(lt), .eq(eq),
.suspend(suspend),
.sltunsigned(sltunsigned),
.memread(memread));
datapath dp (.clk(clk), .reset(reset),
.memtoreg(memtoreg), .pcsrc(pcsrc),
.alusrc(alusrc), .regwrite(regwrite),
.alucontrol(alucontrol),
.storepc(storepc),
.pcadd(pcadd),
.pcext(pcext),
.unsign(unsign),
.imm(imm),
.alu2src(alu2src),
.shtype(shtype),
.pc(pc),
.pcnext(pcnext),
.instr(instr),
.aluout(aluout),
.writedata(writedata),
.readdata(readdata),
.gt(gt), .lt(lt), .eq(eq),
.sltunsigned(sltunsigned),
.ISR(ISR), .ISRsel(ISRsel),
.suspend(suspend));
endmodule // riscv