Professional Documents
Culture Documents
21bec106 Ca Exp 8
21bec106 Ca Exp 8
Lab Exercise:
Que
Implementation of control section of the single-cycle data path for MicroMIPS.
always@(opcode) begin
case(opcode)
6'b001111 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
FnClass = 0;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b000000 :
case(fn)
6'b100000 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
Add_Sub = 0;
FnClass = 2;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100010 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
Add_Sub = 1;
FnClass = 2;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b101010 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
Add_Sub = 1;
FnClass = 1;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100100 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
LogicFn = 0;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100101 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
LogicFn = 1;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100110 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
LogicFn = 2;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100111 : begin
RegWrite = 1;
RegDst = 1;
RegInSrc = 1;
ALUSrc = 0;
LogicFn = 3;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b001000 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
PCSrc = 2;
end
6'b001100 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
PCSrc = 3;
end
endcase
6'b001000 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
Add_Sub = 0;
FnClass = 2;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b001010 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
Add_Sub = 1;
FnClass = 1;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b001100 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
LogicFn = 0;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b001101 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
LogicFn = 1;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b001110 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 1;
ALUSrc = 1;
LogicFn = 2;
FnClass = 3;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b100011 : begin
RegWrite = 1;
RegDst = 0;
RegInSrc = 0;
ALUSrc = 1;
Add_Sub = 0;
FnClass = 2;
DataRead = 1;
DataWrite= 0;
BrType = 0;
PCSrc = 0;
end
6'b101011 : begin
RegWrite = 0;
ALUSrc = 1;
Add_Sub = 0;
FnClass = 2;
DataRead = 0;
DataWrite= 1;
BrType = 0;
PCSrc = 0;
end
6'b000010 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
PCSrc = 1;
end
6'b000001 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
BrType = 3;
PCSrc = 0;
end
6'b000100 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
BrType = 1;
PCSrc = 0;
end
6'b000101 : begin
RegWrite = 0;
DataRead = 0;
DataWrite= 0;
BrType = 2;
PCSrc = 0;
end
6'b000011 : begin
RegWrite = 1;
RegDst = 2;
RegInSrc = 2;
DataRead = 0;
DataWrite= 0;
BrType = 0;
PCSrc = 1;
end
endcase
end
endmodule
Result: