EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M...

72
© Mark Redekopp, All rights reserved EE 357 Unit 2a Multiplication Techniques

Transcript of EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M...

Page 1: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

EE 357 Unit 2a

Multiplication Techniques

Page 2: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Learning Objectives

• Perform by hand the different methods for

unsigned and signed multiplication

• Understand the various digital

implementations of a multiplier along with

their tradeoffs

– Sequential add and shift method

– Basic combinational array multiplier

– Booth and/or Bit-Pair multiplier

Page 3: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

MULTIPLICATION

TECHNIQUES

Add and Shift Method (Sequential)

Booth’s Coding and Bit-Pair Recoding

Page 4: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Unsigned Multiplication Review

• Same rules as decimal multiplication

• Multiply each bit of Q by M shifting as you go

• An m-bit * n-bit mult. produces an m+n bit result

(i.e. n-bit * n-bit produces 2*n bit result)

• Notice each partial product is a shifted copy of M or 0

(zero)

1010* 1011

1010

1010_

0000__

+ 1010___

01101110

M (Multiplicand)Q (Multiplier)

PP(Partial

Products)

P (Product)

Page 5: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Multiplication Techniques

• A multiplier unit can be

– Purely Combinational: Each partial product is

produced in parallel and fed into an array of

adders to generate the product

– Sequential and Combinational: Produce and

add 1 partial product at a time (per cycle)

Page 6: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

• Partial Product (PPi) Generation

– Multiply Q[i] * M

• if Q[i]=0 => PPi = 0

• if Q[i]=1 => PPi = M

– AND gates can be used to generate each partial

product

M[3] M[2] M[1] M[0]M[3] M[2] M[1] M[0]

Q[ i]=0

if…

Q[ i]=1

if…

0000 1111

0000 M[3] M[2] M[1] M[0]

Page 7: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

• Partial Products must be added together

• Combinational multipliers suffer from long

propagation delay through the adders

– propagation delay is proportional to the

number of partial products (i.e. number of bits

of input) and the width of each adder

Page 8: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Adder Propagation Delay

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA 0

1111+ 0001

000

Page 9: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA 0

1111+ 0001

000

1 1 1 1 1000

Adder Propagation Delay

Page 10: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA

1 1 1 1 1000

0

0

1

111

000

1111+ 0001

Adder Propagation Delay

Page 11: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA

1 1 1 1 1000

0

0

1

011

1

1111+ 0001

11

00

Adder Propagation Delay

Page 12: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA

1 1 1 1 1000

0

0

1

01

1

1111+ 0001

0

10

Adder Propagation Delay

Page 13: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA

1 1 1 1 1000

0

0

1

0

1

1111+ 0001

0

1

0

1

Adder Propagation Delay

Page 14: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Critical Path

• Critical Path = Longest possible delay path

X Y

S

CiCo

X Y

S

CiCo FAFA

X Y

S

CiCo

X Y

S

CiCo FAFA

Critical Path

Assume tsum = 5 ns,

tcarry= 4 ns

4 ns8 ns12 ns

17 ns

16 ns

13 ns 9 ns 5 ns

Page 15: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 16: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 17: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 18: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 19: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 20: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 21: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 22: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 23: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier

Page 24: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Critical Paths

Critical Path 1

Critical Path 2

Page 25: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Combinational Multiplier Analysis

• Large Area due to (n-1) m-bit adders

– n-1 because the first adder adds the first two

partial products and then each adder

afterwards adds one more partial product

• Propagation delay is in two dimensions

– proportional to m+n

Page 26: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Sequential Multiplier

• Use 1 adder to add a single partial product

per clock cycle keeping a running sum

Page 27: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Add and Shift Method

• Sequential algorithm

• n-bit * n-bit multiply

• Adds 1 partial product per clock

• Shift running sum 1-bit right each clock

• Three n-bit Registers, 1 Adder

• At start:– M = Multiplicand

– Q = Multiplier

– A = Answer => initialized to 0

• After completion– A and Q concatenate to form 2n-bit answer

Page 28: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

1010 = M* 1011 = Q

Add and Shift Hardware

0 0 0 1 0 1 1

Page 29: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Add and Shift Algorithm

• C=0, A=0

• Repeat the following n-times

– If Q[0] = 0, A = A+0

Else if Q[0] = 1, A= A+M

– Shift right 1-bit (0→C→A→Q)

Page 30: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

* 1011

Page 31: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

0 0 0 1 0 1 1

M = 1010

01101110 = Ans

Page 32: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

1010* 1011

+ 1010

ADD

Multiplicand1010

0

0 0 0 1 0 1 1

10101010

M = 1010

01101110 = Ans

Page 33: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

1010* 1011

Before Shift

Right

0

0 1 0 1 0 1 0 1 1

+ 1010

1010

M = 1010

01101110 = Ans

Page 34: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

1010* 1011

0

0 0 1 0 1 0 1 0 1

After Shift

Right

1st bit of

Product

+ 1010

1010

M = 1010

01101110 = Ans

Page 35: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

1010* 1011

1010

+ 1010-

011110

ADD

Multiplicand1111

0

1 0 1 0 1 0 1

Shift0101 01010

Add1111 01010

1111 1010

M = 1010

01101110 = Ans

Page 36: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

1010* 1011

Before Shift

Right

0

0 1 1 1 1 0 1 0 1

1010

+ 1010-

011110

1010

M = 1010

01101110 = Ans

Page 37: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

1010* 1011

0

0 0 1 1 1 1 0 1 0

After Shift

Right

2nd bit of

Product

1010

+ 1010-

011110

1010

M = 1010

01101110 = Ans

Page 38: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

1010* 1011

+ 0000--

0011110

ADD

Zero0111

0

1 1 1 1 0 1 0

Shift0101 01010

Add1111 01010

No Add0111 10100

Shift0111 10100

0111

+ 1010

+ 1010-

011110

1010

M = 1010

01101110 = Ans

Page 39: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

1010* 1011

Before Shift

Right

0

0 0 1 1 1 1 0 1 0

No Add0111 10100

Shift0011 11010

+ 0000--

0011110

+ 1010

+ 1010-

011110

1010

M = 1010

01101110 = Ans

Page 40: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

No Add0111 10100

Shift0011 11010

1010* 1011

0

0 0 0 1 1 1 1 0 1

After Shift

Right

3rd bit of

Product

+ 0000--

0011110

+ 1010

+ 1010-

011110

1010

M = 1010

01101110 = Ans

Page 41: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

0 0

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

M = 1010

1010* 1011

+ 1010---01101110

ADD

Multiplicand1101

0

0 1 1 1 1 0 1

Shift0101 01010

Add1111 01010

No Add0111 10100

Shift0111 10100

Shift0011 11010

Add1101 11010

1101

+ 0000--

0011110

+ 1010

+ 1010-

011110

101001101110 = Ans

Page 42: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

1010* 1011

Before Shift

Right

0

0 1 1 0 1 1 1 0 1

No Add0111 10100

Shift0011 11010

Add1101 11010

Shift0110 11100

M = 1010

+ 1010---01101110

+ 0000--

0011110

+ 1010

+ 1010-

011110

101001101110 = Ans

Page 43: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

No Add0111 10100

Shift0011 11010

1010* 1011

0

0 0 1 1 0 1 1 1 0

After Shift

Right

Final Product

Add1101 11010

Shift0110 11100

M = 1010

+ 1010---01101110

+ 0000--

0011110

+ 1010

+ 1010-

011110

101001101110 = Ans

Page 44: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1010

C A Q

0

M

Cout

Cin

0

C A Q

1010 = M* 1011 = Q

Add and Shift Multiplication

00000 1011

Add1010 10110

Shift0101 01010

Add1111 01010

Shift0111 10100

No Add0111 10100

Shift0011 11010

1010* 1011

0

0 0 1 1 0 1 1 1 0

Final Product

Add1101 11010

Shift0110 11100

0110 1110 11010=

Finished

M = 1010

+ 1010---01101110

+ 0000--

0011110

+ 1010

+ 1010-

011110

101001101110 = Ans

Page 45: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

1101 * 0101 Example

C=

0

M=1101

A=0000 Q=0101 Description

0 1101 0101 A=A+M

0 0110 1010 Shift Right C,A,Q

0 0110 1010 A=A+0

0 0011 0101 Shift Right C,A,Q

1 0000 0101 A=A+M

0 1000 0010 Shift Right C,A,Q

0 1000 0010 A=A+0

0 0100 0001 Shift Right C,A,Q

0 0

1010

C A Q

0

M

Cout

Cin

0

0 0 0 1 0 1 1

Page 46: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Sequential Multiplier Analysis

• Pros:

– Smaller Area due to the use of only 1 adder

• Cons:

– Slow to execute (2 cycles per bit of the

multiplier)

Page 47: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Multipliers

• Most multipliers are combinational

– Faster than sequential method

• To increase speed

– Make faster adders

– Reduce # of additions (i.e. # of partial

products)…See Bit Pair Recoding later in this

lecture

Page 48: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Signed Multiplication Techniques

• When adding signed (2’s comp.) numbers, some new issues arise

• Must sign extend partial products (out to 2n bits)

1001* 0110

0000

1001_

1001__

+ 0000___

00110110

= -7

= +6

= +54

Without Sign Extension…

Wrong Answer!

1001* 0110

00000000

1111001_

111001__

+ 00000___

11010110

= -7

= +6

= -42

With Sign Extension…

Correct Answer!

Page 49: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Signed Multiplication Techniques

• Also, must worry about negative multiplier– MSB of multiplier has negative weight

– If MSB=1, multiply by -1 (i.e. take 2’s comp. of multiplicand)

1100* 1010

00000000

1111100_

000000__

+ 11100___

11011000

= -4

= -6

= -40

With Sign Extension but w/o

consideration of MSB…

Wrong Answer!

With Sign Extension and w/

consideration of MSB…

Correct Answer!

1100* 1010

00000000

1111100_

000000__

+ 00100___

00011000

= -4

= -6

= +24

Place Value: -8

Multiply by -1

Page 50: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

• Used for signed multiplication

– Works regardless of sign of either operand

• Forms the basis for an optimization known

as bit-pair recoding

• Requires recoding of multiplier

– 0’s and 1’s → 0’s, 1’s, -1’s

– Must still sign extend partial products

Page 51: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth Recoding

• Recode the multiplier using the truth table below

• Start at MSB of the multiplier and work towards

the LSB

– Bit i = current bit

– Bit i-1 = bit to the right of current bit

Bit i Bit i-1 Booth’s Value

0 0 0

1 1 0

0 1 +1

1 0 -1

Notice Booth’s Value is equal to the change

from bit i to bit (i-1)…or really [bit i-1] – [bit i]

Page 52: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Page 53: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

-1

Page 54: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

-1 0

Page 55: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

-1 0+1

Page 56: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

-1 0+1 0

Page 57: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

0

-1 0+1 0-1

Page 58: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm

0 1 0 1 0

* 1 0 0 1 1

Original Problem:

(+10)

(-13)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

* -1 0+1 0-10 1 0 1 0

1 1 1 1 1 1 0 1 1 00 0 0 0 0 0 0 0 00 0 0 0 1 0 1 00 0 0 0 0 0 01 1 0 1 1 0+

1 1 0 1 1 1 1 1 1 0 (-130)

Page 59: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Example

1 0 1 1 1

* 0 0 1 1 0

Original Problem:

(-9)

(+6)

Bit i Bit i-1 Booth’s

Value

0 0 0

1 1 0

0 1 +1

1 0 -1

* 0+1 0-1 01 0 1 1 1

0 0 0 0 0 0 0 0 0 00 0 0 0 0 1 0 0 10 0 0 0 0 0 0 01 1 1 0 1 1 10 0 0 0 0 0+

1 1 1 1 0 0 1 0 1 0 (-54)

Page 60: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm Summary

• Recode multiplier (Q) and perform

multiplication

• Works for positive or negative operands

Page 61: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Booth’s Algorithm Summary

• Recode multiplier (Q) and perform

multiplication

• Works for positive or negative operands

How fast is multiplication?How fast is multiplication?

Still required to add (nStill required to add (n--1) partial products1) partial products

Page 62: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit-Pair Recoding

• Works on top of Booth’s algorithm

• Cuts # of partial products in half

• Method

– Group every 2 Booth encoded multiplier bits

– Convert to: -2,-1,0,+1,+2

– Perform multiplication

Page 63: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding

Original Problem:

0 1 0 1 0

* 1 0 1 1 1

(+10)

(-9)

Page 64: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding

Original Problem:

0 1 0 1 0

* 1 0 1 1 1

(+10)

(-9)0

* -1+1 0 0-10 1 0 1 0

Booth’s Algorithm

Page 65: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding

Original Problem:

0 1 0 1 0 (+10)

(-9)0

0 1 0 1 0

Booth’s Algorithm

Group in pairs of two

starting from LSB

* 1 0 1 1 1

* -1+1 0 0-10

Page 66: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding

Original Problem:

0 1 0 1 0

* 1 0 1 1 1

(+10)

(-9)0

0 1 0 1 0

Booth’s Algorithm

Place values121212

Find pair equivalent

using binary place

values (e.g. 0*2 + (-

1)*1 = -1)

-1 +2 -1

* -1+1 0 0-10

Page 67: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding

Bit-Pair Recoded Problem:

0 1 0 1 0

*-1 +2 -1

(+10)

(-9)

1 1 1 1 1 1 0 1 1 00 0 0 1 0 1 0 0 - -

+ 1 1 0 1 1 0 - - - -

1 1 1 0 1 0 0 1 1 0

111

This zero is added for

multiplication by 2

(-90)

Page 68: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding Example

Bit-Pair Recoded Problem:

1 1 1 1 0

* 1 1 0 1 0

(-2)

(-6)

* 0-1+1-1 0

0

Booth’s Algorithm

Page 69: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding Example

Original Problem:

(-2)

(-6)0

Booth’s Algorithm

Place values121212

Find pair equivalent

using place values

(e.g. -1*2 + 0*1 = -1)

0 -1 -2

1 1 1 1 0

* 1 1 0 1 0

* 0-1+1-1 01 1 1 1 0

Page 70: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding Example

Bit-Pair Recoded Problem:

1 1 1 1 0

* 0 -1 -2

(-2)

(-6)

0 0 0 0 0 0 0 1 0 00 0 0 0 0 0 1 0 - -

+ 0 0 0 0 0 0 - - - -

0 0 0 0 0 0 1 1 0 0

This zero is added for

multiplication by 2

(+12)

Page 71: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding Example

Original Problem:

(-6)

(+9)0

Booth’s Algorithm

Place values121212

+1 -2 +1

1 1 0 1 0

* 0 1 0 0 1

*+1-1 0+1-11 1 0 1 0

Page 72: EE 357 Unit 2aee.usc.edu/~redekopp/ee357/slides/EE357Unit2a_Mult.pdf• Multiply each bit of Q by M shifting as you go • An m-bit * n-bit mult. produces an m+n bit result (i.e. n-bit

© Mark Redekopp, All rights reserved

Bit Pair Recoding Example

Bit-Pair Recoded Problem:

1 1 0 1 0

*+1 -2 +1

(-6)

(+9)

1 1 1 1 1 1 1 0 1 00 0 0 0 1 1 0 0 - -

+ 1 1 1 0 1 0 - - - -

1 1 1 1 0 0 1 0 1 0

This zero is added for

multiplication by 2

(-54)

11