Memory Register File Imm Extend ALU A1 A2 A3 WD RD1 RD2 A WD RD 0 1 0 1 0 1 Instr Instr[19:15] Instr[24:20] Instr[11:7] Instr[31:7] ImmExt PC_Next PC ALUResult ALUOut Data ReadData Result WriteData PCWrite AdrSrc MemWrite IRWrite RegWrite ImmSrc ALUSrc ALUCtl ResultSrc