ECE2030 Introduction to Computer Engineering Lecture 13 Building Blocks for Combinational Logic 4 Shifters Multipliers Prof Hsien Hsin Sean Lee School of Electrical and Computer Engineering Georgia Tech Basic Shifting Shift directions Left multiply by 2 Right divide by 2 Take floor value if the result is not an integer Floor value of X or X is the greatest integer number less than or equal to X E g 5 2 2 3 2 2 Shift types Logical or unsigned Arithmetic or signed 2 Logical Shift Shift Left MSB Shifted out LSB Shifted in with a 0 Examples 11001011 1 10010110 11001011 3 01011000 Shift right MSB Shifted in with a 0 LSB Shifted out Examples Some ISA use triple for logical right shift 11001011 1 01100101 11001011 3 00011001 3 Arithmetic Shift Shift left MSB Shifted out however be aware of overflow underflow LSB Shifted in with a 0 Examples 1100 1 1000 1100 3 0000 Incorrect Underflow Shift right MSB Retain sign bit LSB Shifted out Examples 1100 1 1110 Retain sign bit 1100 3 1111 4 8 1 Floor value of 0 5 4 Examples of Arithmetic Shift 1111 1011 Arithmetic shift right by 1 1111 1101 1111 1011 Arithmetic shift left by 1 1111 0110 1011 1111 65 Arithmetic shift left by 1 i e x2 0111 1110 126 130 Underflow Overflow Underflow 0100 0010 66 Arithmetic shift left by 1 i e x2 1000 0100 124 132 Overflow 5 4 bit Logical Shifter A3 S NS S1 L R S0 D3 A2 D2 A1 D1 A0 S1 S0 D3 D2 D1 D0 0 X A3 A2 A1 A0 1 0 0 A3 A2 A1 1 1 A2 A1 A0 0 D0 D3 S1A 3 S1S0 A 2 D 2 S1A 2 S1 S0 A 3 S1S0 A1 D1 S1A1 S1 S0 A 2 S1S0 A 0 D 0 S1A 0 S1 S0 A1 6 4 bit Logical Shifter using 4 to 1 Mux A3 A2 00 01 10 11 s1 s0 4 to 1 Mux D3 S1 S0 D3 D2 D1 D0 0 X A3 A2 A1 A0 Right Shift 1 0 0 A3 A2 A1 Left Shift 1 1 A2 A1 A0 0 A1 00 01 10 11 s1 s0 4 to 1 Mux D2 A0 00 01 10 11 s1 s0 4 to 1 Mux D1 00 01 10 11 s1 s0 4 to 1 Mux D0 S1 S0 7 4 bit Arithmetic Shifter w 4 to 1 Mux A3 A2 00 01 10 11 s1 s0 4 to 1 Mux D3 S1 S0 D3 D2 D1 D0 0 X A3 A2 A1 A0 Right Shift 1 0 A3 A3 A2 A1 Left Shift 1 1 A2 A1 A0 0 A1 00 01 10 11 s1 s0 4 to 1 Mux D2 A0 00 01 10 11 s1 s0 4 to 1 Mux D1 00 01 10 11 s1 s0 4 to 1 Mux D0 S1 S0 8 4 bit Arithmetic Shifter w 4 to 1 Mux Overflow Underflow A3 A2 00 01 10 11 s1 s0 4 to 1 Mux D3 S1 S0 D3 D2 D1 D0 0 X A3 A2 A1 A0 Right Shift 1 0 A3 A3 A2 A1 Left Shift 1 1 A2 A1 A0 0 A1 00 01 10 11 s1 s0 4 to 1 Mux D2 A0 00 01 10 11 s1 s0 4 to 1 Mux D1 00 01 10 11 s1 s0 4 to 1 Mux D0 S1 S0 9 4 bit Arithmetic Shifter w 4 to 1 Mux Overflow Underflow Detection A3 Overflow Underflow A2 00 01 10 11 s1 s0 4 to 1 Mux D3 S1 S0 D3 D2 D1 D0 0 X A3 A2 A1 A0 Right Shift 1 0 A3 A3 A2 A1 Left Shift 1 1 A2 A1 A0 0 A1 00 01 10 11 s1 s0 4 to 1 Mux D2 A0 00 01 10 11 s1 s0 4 to 1 Mux D1 00 01 10 11 s1 s0 4 to 1 Mux D0 S1 S0 10 Rotator A3 A2 00 01 10 11 s1 s0 4 to 1 Mux D3 S1 S0 D3 D2 D1 D0 0 0 A3 A2 A1 A0 0 1 A0 A3 A2 A1 1 0 A1 A0 A3 A2 1 1 A2 A1 A0 A3 A1 00 01 10 11 s1 s0 4 to 1 Mux D2 A0 00 01 10 11 s1 s0 4 to 1 Mux D1 00 01 10 11 s1 s0 4 to 1 Mux D0 S1 S0 11 Barrel Shifter Right Shift Left Shift S2 S1 S0 D3 D2 D1 D0 0 0 0 A3 A2 A1 A0 0 0 1 A3 A3 A2 A1 0 1 0 A3 A3 A3 A2 0 1 1 A3 A3 A3 A3 1 0 0 A3 A2 A1 A0 1 0 1 A2 A1 A0 0 1 1 0 A1 A0 0 0 1 1 1 A0 0 0 0 Shift multiple bits at a time 12 Barrel Shifter Design w Mux D3 A3 00 01 10 11 s1 s0 4 to 1 Mux 0 1 S1 2 to 1 Mux S0 S2 D3 S2 S1 S0 D 3 D 2 D 1 D 0 0 0 0 A3 A2 A1 A0 0 0 1 A3 A3 A2 A1 0 1 0 A3 A3 A3 A2 0 1 1 A3 A3 A3 A3 1 0 0 A3 A2 A1 A0 1 0 1 A2 A1 A0 0 1 1 0 A1 A0 0 0 1 1 1 A0 0 0 0 s0 s1 4 to 1 Mux 00 01 10 11 A3 A2 A1 A0 Replicate and change wiring of the two 4 to 1 Muxes for D2 D1 and D0 13 Barrel Shifter Design Alternative 16 bit S3 S2 S1 S0 specifies the shift amount in binary Input Number 16 S3 23 Shifter 16 S2 22 Shifter 16 S1 21 Shifter 16 S0 Left Right 20 Shifter 16 Output Number 14 Barrel Shifter Design w nMOSFET A3 D3 S 1 A2 D2 S 2 A1 D1 S 3 A0 D0 S 0 No Shift S 1 S 2 S 3 15 Barrel Shifter Design w nMOSFET A3 A3 D3 S 1 A2 A2 D2 S 2 A1 D1 S 3 A0 D0 S 0 No Shift S 1 S 2 S 3 16 Barrel Shifter Design w nMOSFET A3 D3 A3 D2 A3 D1 A2 D0 A1 S 1 A2 S 2 A1 S 3 A0 S 0 No Shift S 1 S 2 S 3 17 Unsigned Binary Multiply 101 5 X 111 7 101 101 101 100011 35 18 Unsigned Integer Multiplier 2 bit b1 a1 b1 a0 b0 a1 b0 a0 2 bit by 2 bit x a1 a0 b1 b0 a1 b0 a1 b1 a1 b1 carry out a0 b1 a1 b0 a0 b1 c H A a0 b0 s c H A s s p2 p1 a0 b0 carry p3 p0 19 Unsigned Integer Multiplier 3 bit 3 bit by 3 bit a2 a1 a0 x a2 b2 b2 b1 b0 a 2 b0 a 1 b0 a0 b0 a 2 b1 a1 b1 a0 …
View Full Document