The shift unit takes an eight-bit number A and generates an 8-bit output that is the number A left-shifted, right-shifted, right-rotated, or left-rotated one position. The function that is outputted is based on the values of the control signals sr_en, rr_en, sl_en, and sr_en.
The input is stored into input latches which are controlled by clka and clkb as depicted in the Latch Clocking Document in the Timing section. The signals automatically propagate to a set of four transmission gates which are enabled by the control lines. The outputs of all the transmission gates are tied together and determine the output of the shift unit. When the output is enabled, the shift unit feeds onto the output bus. The whole process requires two clock cycles and is relatively simple.
The shift operations use a zero for the shift-in bits. There were several other options in design, from a complete barrel shifter to the single-position we used. We chose the smaller version out of concern for space. In the end, without the multiplier this was not an issue.