Académique Documents
Professionnel Documents
Culture Documents
WASEL: PCSEL:
tldr; Distinguishes between exceptions and tldr; Distinguishes between exceptions types
non-exceptions. OR between branch types.
WASEL controls what enters the WA port of PCSEL controls what goes into PC.
Reg. File.
Sequential Circuit
If 0: contents from RA2 of Reg. File passes
If 1: Output of ALU passes through. Basically all through. Applies for all non-constant ops.
ops that involve ALU computations except for If 1: Literal (SXT(ID[15:0])) passes through.
LD/LDR. Applies for all constant ops and LD & ST.
If 2: Contents READ from Memory passes If DC: contents don’t get passed into port B of
through. Basically only LD and LDR. ALU. Applies for all other non-op operations.
If DC: Contents don’t enter WD port of Reg.
File. Only ST.
ASEL:
tldr; Uniquely identifies LDR. Use this to distinguish LDR from LD.
ASEL controls what enters port A of the ALU.
If 0: contents from RA goes through. Applies for all ops where we need contents of RA in ALU for some
computations
If 1: LDR => contents (PC + 4) + 4*SXT(C) will go to ALU (computation is ‘A’ which basically means return the
same thing since we do not actually want to change anything with it. If we don’t want to change anything,
why place this selector before ALU and not before Memory? The reason is because if we put it before
Memory, then contents from LD and ST will have to pass through 2 muxes before it can get to Memory,
which slows down the entire process)
If DC: contents don’t get passed into ALU, applies for all ops where no computations are done by ALU