Control unit: main
Main control signals
ALUOp: 2 bits based on op code used as input by ALU control
RegDst: selects from instruction bits 20-16 or 15-11 ($rt or $rd)
for destination register to write data
RegWrite: enables writing of destination register
ALUSrc: selects second input of ALU
0: Read data 2 from register file
1: sign-extended immediate from instruction
PCSrc: selects input to update PC
0: PC + 4 from adder
1: PC + offset from branch target calculation (other adder)
MemRead: data is read from data memory
MemWrite: data is written to data memory
MemtoReg: selects data to send to register file to write
0: ALU result
1: data read from memory
Can set all of these based only on opcode, except PCSrc
Should be set based on beq instruction AND ALU ouput is 0
Control unit generates Branch signal, which is ANDed with ALU Zero output