ece 428 programmable asic design

33
12-1 ECE 428 Programmable ASIC Design Haibo Wang ECE Department Southern Illinois University Carbondale, IL 62901 Arithmetic Circuit Implementation

Upload: others

Post on 24-May-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ECE 428 Programmable ASIC Design

12-1

ECE 428 Programmable ASIC Design

Haibo WangECE Department

Southern Illinois UniversityCarbondale, IL 62901

Arithmetic Circuit Implementation

Page 2: ECE 428 Programmable ASIC Design

12-2

Number Representation

Binary Number

Signed-magnitude number

Two’s complement number

0 1 2 3 4 5 6 7

000 001 010 011 100 101 110 111

-3 -2 -1 0 0 1 2 3

111 110 101 100 000 001 010 011

-4 -3 -2 -1 0 1 2 3

100 101 110 111 000 001 010 011

Page 3: ECE 428 Programmable ASIC Design

12-3

Addition Operation

Full adder

Sum = a b Cin

Cout = a•b + a•Cin + b•Cin

Adder

a b

sum

Cin Cout

ab

Cin

Cout

SumXOR

It works only for binary and 2’s complement numbers

Page 4: ECE 428 Programmable ASIC Design

12-4

Four-bit ripple-carry adder

a0 b0

S0

a1 b1

S1

a2 b2

S2

a3 b3

S3

Cin Cout Cin Cout Cin Cout Cin Cout

Carry propagation path

— The large propagation delay on carry propagation path make ripple-carry adder slow.

— Fast adder implementations include carry-bypass adder, carry-select adderand carry look-ahead adder.

Addition Operation

Page 5: ECE 428 Programmable ASIC Design

12-5

Dedicated Carry Logic in Xilinx XC4000 FPGAs

Page 6: ECE 428 Programmable ASIC Design

12-6

Detailed Carry Logic

Page 7: ECE 428 Programmable ASIC Design

12-7

A Typical Adder Implementation

Ai+1Bi+1

Ci+1

Si+1

Ci

Ci-1

AiBi

Si

0 1

0 1

Page 8: ECE 428 Programmable ASIC Design

12-8

Carry Propagation Path

Page 9: ECE 428 Programmable ASIC Design

12-9

Adder/Subtracter Implementation

A – B = A + (-B) = A + B + 1

Subtraction

Adder/Subtracter implementation

AdderCin Cout

A B 0: addition1: subtraction

0: addition1: subtraction

Page 10: ECE 428 Programmable ASIC Design

12-10

Conversion between 2’s complement and signed-magnitude numbers

Signed-magnitude2’s complement

2’s complementSigned-magnitude

Exception: 100…0

X[n-1:0]X[n]

Y[n:0]

A[n-1:0]

A[n]

B[n:1]

B[0]

0

Page 11: ECE 428 Programmable ASIC Design

12-11

Addition/Subtraction for signed-magnitude numbers

Method 1

Method 2

X

Z

SM 2’s

X SM 2’s

2’s SM

X[n-1:0]

Y[n-1:0]

X[n]Y[n]

op

Adder /subtractor

Cntl

2’s SMZ[n:0]

Page 12: ECE 428 Programmable ASIC Design

12-12

Binary Number Multiplication

1 0 1 1

1 0 1 0 1 0

0 0 0 0 0 0

1 0 1 0 1 0

1 0 1 0 1 0

1 0 1 0 1 0

×

1 1 1 0 0 1 1 1 0

+

Partial Products

AND operation

Page 13: ECE 428 Programmable ASIC Design

12-13

HA FA FA HA

FA FA FA HA

FA FA FA HA

X0X1X2X3 Y1

X0X 1X2X3 Y2

X0X1X2X3 Y3

Z1

Z2

Z3Z4Z5Z6

Z0

Z7Z2 Z1 Z0

Y0X3 X2 X1 X0

Array Multiplier

Page 14: ECE 428 Programmable ASIC Design

12-14

HA FA FA HA

HAFAFAFA

FAFA FA HA

Critical Path

Delay in Array Multiplier

Fast Multiplier Implementation

— Booth multiplier, carry-save multiplier, etc— Pipelined implementation

Page 15: ECE 428 Programmable ASIC Design

12-15

Pipelined Array Multiplier

M M M

y2 y1 y0 x2 x1 x0register

x2 x1y2 y1 y0

M M M

M M M

y2 y1 y0

0

00 0

0

0

x2

z0z1z2z3z4z5

z0z1

z0 M

y xa

z

CinCout

adder

y xa

z

CinCout

Page 16: ECE 428 Programmable ASIC Design

12-16

Signed-Magnitude Number Multiplication

Array Multiplier

X[n] Y[n] X[n-1:0] Y[n-1:0]

P[2n-1:0]P[2n]

Page 17: ECE 428 Programmable ASIC Design

12-17

Baugh-Wooley Multiplier

The value of 2’s complement number xn-1xn-2••••• x1x0 is:

∑−

=

−− •+•−=

2

0

11 22

n

i

ii

nn xxX

So, P=X*Y can be calculated by:

∑∑−

=

=

−−− •••+••=

2

0

2

0

2211 )2()2(2

n

j

jj

n

i

ii

nnn yxyxP

∑ ∑−

=

=−−

− ••+•••−2

0

2

011

1 )22(2n

j

n

i

iin

jjn

n xyyx

Page 18: ECE 428 Programmable ASIC Design

12-18

Circuit Implementation

Baugh-Wooley Multiplier

Array Multiplier

X[6:0] Y[6:0]

X[7]*Y[6:0] y[7]*X[6:0]

X[7]*Y[7]

A[14] A[13:0] B[6:0]

P1[7:0]

P2[13:0]

B[14:7]

P[14:0]

0

Page 19: ECE 428 Programmable ASIC Design

12-19

Booth Encoding

The value of 2’s complement number xn-1xn-2••••• x1x0 is:

00

33

22

11 2222 xxxxX n

nn

nn

n •+⋅⋅⋅⋅⋅⋅+•+•+•−= −−

−−

−−

Also: mmm 222 1 −= +

(1)

(2)

Substitute Eq. (2) into Eq. (1)

⋅⋅⋅⋅⋅⋅−•+−•+−•= −−−

−−−

−−− )(2)(2)(2 34

323

212

1nn

nnn

nnn

n xxxxxxX (3)

Let: )()(2 11 mmmmm xxxxB −+−•= −+

Eq. (3) can be written as:

(4)

⋅⋅⋅⋅⋅⋅•+•+•= −−

−−

−−

66

44

22 222 n

nn

nn

n BBBX(5)

Page 20: ECE 428 Programmable ASIC Design

12-20

Booth Encoding for data with even number of bits

Example: a 6-bit data x5x4x3x2 x1x0

The last term (in red color) is needed. Otherwise, the contribution of x0will be 2x0. And x-1=0

The expression in each {} bracket corresponds to a Bm in Booth encoding

Hence, the bits are grouped as follows for Booth encoding

{ } { } { }5 4 3 2 14 5 3 4 2

013 01 2 0 12 ( ) 2 ( ) 2 ( ) 2 ( ) 2 (( ) 2 )X x x x x x x x x x x xx −= • − + • − + • − + •• − + −• − +

x5 x4 x3 x2 x1 x0 0B4

B2

B0

Page 21: ECE 428 Programmable ASIC Design

12-21

Booth Encoding for data with odd number of bits

Example: a 5-bit data x4x3x2 x1x0

The last term (in red color) is needed. Otherwise, the contribution of x0will be 2x0. And x-1=0, x-2=0

The expression in each {} bracket corresponds to a Bm in Booth encoding

Hence, the bits are grouped as follows for Booth encoding

{ } { } { }4 3 2 13 4 2 3 1 2 0 1

0 11 0 2 12 ( ) 2 ( ) 2 ( ) 2 2 (( ) 2 ( )) x xX x x x x x x x x x x−− − −= • − + • − + • − + • • − + • −− +

x4 x3 x2 x1 x0 0 0B3

B1

B-1

Page 22: ECE 428 Programmable ASIC Design

12-22

Booth Encoding

P=X*Y can be calculated by:

⋅⋅⋅⋅⋅⋅••+••+••= −−

−−

−− YBYBYBP n

nn

nn

n6

64

42

2 222

Possible Bm values are:

xm+1 xm xm-1 Bm

0 0 0 00 0 1 10 1 0 10 1 1 21 0 0 -21 0 1 -11 1 0 -11 1 1 0

)()(2 11 mmmmm xxxxB −+−•= −+

Page 23: ECE 428 Programmable ASIC Design

12-23

0 Y

P

Left shift 2 bit

Left shift 2 bit

Left shift 2 bit

XX

X

XXX

0

X

X

XXX

Multiplier slice

Multiplier slice

Multiplier slice

Multiplier slice

7

5

6

5

4

3

3

2

1

1

0

Boothencoder

P

PY

X

X

X

Left shift 1 bit

Adder / Subtractor

0

sel

op

Multiplier slice with Booth encoding

i

i+1

i

i+1

i+2

8-bit Multiplier with Booth encoding

Multiplier Slice Multiplier Circuit

Page 24: ECE 428 Programmable ASIC Design

12-24

Wallace Tree Multiplier

CSA

Adder

a b c

s c CSA

a b cs c

CSA

a b c

s cCSA

a b c

s c

CSA

a b c

s c

CSA

a b c

s c

1

11

1

1 1

1 2 3 4 5

6 7

x[0]*y x[1]*y x[2]*y x[3]*y x[4]*y x[5]*y x[6]*y x[7]*y

CSA: Carry Save Adder

Left shift m bitm

Page 25: ECE 428 Programmable ASIC Design

12-25

Building Large Multiplier

Modern FPGAs contain embedded multipliers for high performance DSP applications.

18x16-bit signed multiplier

Embedded multipliers can be used to design different size multipliers

Page 26: ECE 428 Programmable ASIC Design

12-26

Building Large Multiplier 35x35-bit signed multiplier

Page 27: ECE 428 Programmable ASIC Design

12-27

Division

The results of addition, subtraction, and multiplication are integer numbers. However, division often leads to fraction number results.Assume we use fixed-point format to represent the fraction numbers.

bn bn-1 bn-2 ••• b0 b-1 b-2 ••• b-m

∑∑==

•+•=m

j

jj

n

i

ii bb

1122

0 0 1 1 1 0 0 0 0

Fixed point

Fixed point

23 22 21 20 2-1 2-2 2-3 2-4 2-5

3.5

Page 28: ECE 428 Programmable ASIC Design

12-28

Division by multiplication and shifting2 2

nnNQ N

D D= = × ÷

If 2n is large enough, 2n/D can be approximated by an integer number P. Then, N×2n/D can be approximated by N×P. In FPGA implementation, A LUT table can be used to store the P values for D Divided by 2n can be performed by an n-bit right-shifting operation.

Advantage: Fast Drawback: low precision.

Page 29: ECE 428 Programmable ASIC Design

12-29

Division by iterative subtraction0. 1 0 1 0 1 0 1

1 1 1 00 01 0 0

1 11 . . .

Similar to the “pencil and paper” method:If N>D, find the maximum number qsuch that N-q*D<D. q is the quotient of the current bit. If N<D, the quotient of the current bit is 0.

Since we are working on binary numbers (either 1 or 0), the pre-requirement of N<2D will lead to more regular operationsBlock diagram of a iterative divider (assume N>0, D>0)

Both R>=D and R-D functions can be implemented by a single subtraction circuit and q is the carry out of the circuit

Page 30: ECE 428 Programmable ASIC Design

12-30

Division by Goldschmidt method

Calculate N/D (assume N ≥1 and D<2)

1: Let L1 be an approximation of 1/D (L1 is provided by an LUT)

2: Q1=L1*N, e1=L1*D

3: L2=2-e1, Q2=Q1*L2, e2=e1*L2

4: continuously perform similar steps as Step 3Li=2-ei-1, Qi=Qi-1*Li, ei=ei-1*Li

Since L1 is an approximation of 1/D, we have:

11 ( is a small error term)LD

= + Δ Δ

Page 31: ECE 428 Programmable ASIC Design

12-31

Division by Goldschmidt method

1 1

1

2 1

22 1 2

2 22 1 2

1* *( )

1*( ) 1

2 1

( )(1 )

(1 )(1 ) 1

NQ N L N ND D

e D DD

L e DN NQ Q L N D NDD D

e e L D D D

= = + Δ = + Δ

= + Δ = + Δ

= − = − Δ

= = + Δ − Δ = − Δ

= = + Δ − Δ = − Δ

2 23 2

2 2 2 3 43 2 3

2 2 2 2 4 43 2 3

2 1

( )(1 )

(1 )(1 ) 1

L e DN NQ Q L ND D NDD D

e e L D D D

= − = + Δ

= = − Δ + Δ = − Δ

= = − Δ + Δ = − Δ

In Qi expression, the first term N/D is the accurate result, the second term is the error term. After several iteration, the error becomes significantly small

Page 32: ECE 428 Programmable ASIC Design

12-32

Division by Goldschmidt method

Since ei <2, 2-ei is the same as the 2’s complement of ei. Hence, 2-eiis also written as -ei.

Page 33: ECE 428 Programmable ASIC Design

12-33

Modulator Operation

Modular arithmetic circuits are also frequently implemented on FPGAs. One of their applications is cryptographyA simple modular operation is : A mod B

A simple implementation

Calculate A Mod B (assume A>0, B>0)1: While A>B2: { A=A-B}3: Output A

Examples:16 Mod 3 = 17 Mod 5 =2