Extending MIPS datapath to implement SLL and SRL

  • Thread starter Thread starter izelkay
  • Start date Start date
  • Tags Tags
    Mips
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 5K views
izelkay
Messages
115
Reaction score
3

Homework Statement


Here's the datapath:
nM8IuyM.png


So this seems like a pretty common question but I can't seem to find any answers on how to extend the datapath to implement SLL and SRL.

The Attempt at a Solution



This is how I would think to do it but I'm not entirely sure:

It would need another mux right next to Read data 1 next to the register file. This mux would take Read data 1 (rs) and Read data 2 (rt) as inputs. It would select Read data 1 if we're not doing a shift operation, and it would select rt if we ARE doing a shift operation (since sll and srl use rt, not rs). This would then be fed into the ALU.

Next, we would need to branch Instruction[10:6] (the shift amount) off of Instruction[15:0], and Instruction[10:6] would then be fed into the other port of the ALU. Is this correct thinking?
 
Physics news on Phys.org
It looks like I'd actually need to feed Instruction[10:6] and Instruction[15:0] into another Mux and have it select Instruction[10:6] when I want to shift, which will then be sent through the sign extender and into the ALU when ALUSrc is set to 1. Right? Anyone?