# Lecture 9 Basic Dividers 1 Required Reading Behrooz Parhami Computer Arithmetic Algorithms and Hardware Design Chapter 13 B

Document Sample

```					Lecture 9

Basic Dividers

1

Behrooz Parhami,
Computer Arithmetic: Algorithms and Hardware Design

Chapter 13, Basic Division Schemes
13.1, Shift/Subtract Division Algorithms
13.3, Restoring Hardware Dividers
13.4, Non-Restoring and Signed Division

Note errata at:
http://www.ece.ucsb.edu/~parhami/text_comp_arit_1ed.htm#errors

J-P. Deschamps, G. Bioul, G. Sutter,
Synthesis of Arithmetic Circuits: FPGA, ASIC and
Embedded Systems

Chapter 6, Arithmetic Operations: Division
6.1, Natural Numbers
6.2.1, General Algorithm
6.2.2, Restoring Division Algorithm
6.2.3, Base-2 Non-Restoring Division Algorithm
Notation
and
Basic Equations
Notation

z Dividend               z2k-1z2k-2 . . . z2 z1 z0

d Divisor                dk-1dk-2 . . . d1 d0

q Quotient               qk-1qk-2 . . . q1 q0

s   Remainder            sk-1sk-2 . . . s1 s0
(s = z - dq)

5
Basic Equations of Division

z=dq +s

|s|<|d|

sign(s) = sign(z)

z>0                       z<0
0s<|d|                  -|d|<s0
6
Unsigned Integer Division Overflow
• Must check overflow because obviously the quotient q
can also be 2k bits.
• For example, if the divisor d is 1, then the quotient q is the
dividend z, which is 2k bits

Condition for no overflow (i.e. q fits in k bits):
z = q d + s < (2k-1) d + d = d 2k

z = zH 2 k + z L < d 2 k

zH < d
7
Sequential Integer Division
Basic Equations

s(0) = z

s(j) = 2 s(j-1) - qk-j (2k d)

s(k) = 2k s

8
Sequential Integer Division
Justification

s(1) = 2 z - qk-1 (2k d)
s(2) = 2(2 z - qk-1 (2k d)) - qk-2 (2k d)
s(3) = 2(2(2 z - qk-1 (2k d)) - qk-2 (2k d)) - qk-3 (2k d)

......

s(k) = 2(. . . 2(2(2 z - qk-1 (2k d)) - qk-2 (2k d)) - qk-3 (2k d) . . .
- q0 (2k d) =
= 2k z - (2k d) (qk-1 2k-1 + qk-2 2k-2 + qk-3 2k-3 + … + q020) =
= 2k z - (2k d) q = 2k (z - d q) = 2k s
9
Fig. 13.2 Examples of sequential division with integer
and fractional operands.

10
Fractional Division
Unsigned Fractional Division

zfrac Dividend          .z-1z-2 . . . z-(2k-1)z-2k

dfrac Divisor           .d-1d-2 . . . d-(k-1) d-k

qfrac Quotient          .q-1q-2 . . . q-(k-1) q-k

sfrac Remainder   .000…0s-(k+1) . . . s-(2k-1) s-2k
k bits

12
Integer vs. Fractional Division
For Integers:
z=qd+s               2-2k

z 2-2k = (q 2-k) (d 2-k) + s (2-2k)
For Fractions:

zfrac = qfrac dfrac + sfrac
where
zfrac = z 2-2k           qfrac = q 2-k
dfrac = d 2-k            sfrac = s 2-2k   13
Unsigned Fractional Division Overflow
Condition for no overflow:

zfrac < dfrac

14
Sequential Fractional Division
Basic Equations

s(0) = zfrac

s(j) = 2 s(j-1) - q-j dfrac

2k · sfrac = s(k)

sfrac = 2-k · s(k)

15
Sequential Fractional Division
Justification

s(1) = 2 zfrac - q-1 dfrac
s(2) = 2(2 zfrac - q-1 dfrac) - q-2 dfrac
s(3) = 2(2(2 zfrac - q-1 dfrac) - q-2 dfrac) - q-3 dfrac

......

s(k) = 2(. . . 2(2(2 zfrac - q-1 dfrac) - q-2 dfrac) - q-3 dfrac . . .
- q-k dfrac =
= 2k zfrac - dfrac (q-1 2k-1 + q-2 2k-2 + q-3 2k-3 + … + q-k20) =
= 2k zfrac - dfrac 2k (q-1 2-1 + q-2 2-2 + q-3 2-3 + … + q-k2-k) =
= 2k zfrac - (2k dfrac) qfrac = 2k (zfrac - dfrac qfrac) = 2k sfrac
16
Restoring Unsigned Integer
Division
Restoring Unsigned Integer Division

s(0) = z

for j = 1 to k

if 2 s(j-1) - 2k d > 0
qk-j = 1
s(j) = 2 s(j-1) - 2k d
else
qk-j = 0
s(j) = 2 s(j-1)

18
Fig. 13.6 Example of restoring unsigned division.

19
Fig. 13.5 Shift/subtract sequential restoring divider   .

20
Non-Restoring Unsigned
Integer Division
Non-Restoring Unsigned Integer Division
s(1) = 2 z - 2k d
for j = 2 to k
if s(j-1)  0
qk-(j-1) = 1
s(j) = 2 s(j-1) - 2k d
else
qk-(j-1) = 0
s(j) = 2 s(j-1) + 2k d
end for
if s(k)  0
q0 = 1
else
q0 = 0
Correction step
Non-Restoring Unsigned Integer Division
Correction step

s = 2-k · s(k)

z=qd+s

z, q, d ≥ 0          s<0

z = (q-1) d + (s+d)
z = q’ d + s’

23
Fig. 13.7 Example of nonrestoring unsigned division.

24
Fig. 13.8 Partial remainder variations for restoring and
nonrestoring division.

25
Signed Integer Division
Non-Restoring Unsigned Integer Division
Justification

s(j-1) ≥ 0
2 s(j-1) - 2k d < 0
2 (2 s(j-1) ) - 2k d   ≥0

Restoring division                        Non-Restoring division

s(j) = 2 s(j-1)                       s(j) = 2 s(j-1) - 2k d

s(j+1) = 2 s(j) - 2k d =              s(j+1) = 2 s(j) + 2k d =
= 4 s(j-1) - 2k d                     = 2 (2 s(j-1) - 2k d) + 2k d =
= 4 s(j-1) - 2k d
27
Signed Integer Division
z   d

|z|   |d|        sign(z)   sign(d)

Unsigned
division
sign(s) = sign(z)
|q|    |s|                    + sign(z) = sign(d)
sign(q) =
- sign(z)  sign(d)

28
q       s
Examples of Signed Integer Division

Examples of division with signed operands

z=5      d=3              q=1      s=2
z=5      d = –3           q = –1   s=2
z = –5   d=3              q = –1   s = –2
z = –5   d = –3           q=1      s = –2

Magnitudes of q and s are unaffected by input signs
Signs of q and s are derivable from signs of z and d

29
Non-Restoring
Signed Integer Division
Non-Restoring Signed Integer Division

s(0) = z
for j = 1 to k
if sign(s(j-1)) == sign(d)
qk-j = 1
s(j) = 2 s(j-1) - 2k d = 2 s(j-1) - qk-j (2k d)
else
qk-j = -1
s(j) = 2 s(j-1) + 2k d = 2 s(j-1) - qk-j (2k d)
q = BSD_2’s_comp_conversion(q)
Correction_step

31
Non-Restoring Signed Integer Division
Correction step

s = 2-k · s(k)

z=qd+s

sign(s) = sign(z)

z = (q-1) d + (s+d)                    z = (q+1) d + (s-d)
z = q’ d + s’                          z = q” d + s”

32
Fig. 13.9 Example of nonrestoring signed division.
========================
z            0010 0001
2 4d       1 1001
–2  4d     0 0111
========================
s(0)       0 0010 0001
2s (0)     0 0100 001                 sign(s(0))  sign(d),
+2  4d     1 1001                     so set q3 = -1 and add
––––––––––––––––––––––––
s(1)       1 1101 001
2s (1)     1 1010 01                  sign(s(1)) = sign(d),
+(–24d)    0 0111                     so set q2 = 1 and subtract
––––––––––––––––––––––––
s(2)       0 0001 01
2s (2)     0 0010 1                   sign(s(2))  sign(d),
+2  4d     1 1001                     so set q1 = -1 and add
––––––––––––––––––––––––
s(3)       1 1011 1
2s (3)     1 0111                     sign(s(3)) = sign(d),
+(–2   4d) 0 0111                     so set q0 = 1 and subtract
––––––––––––––––––––––––
s(4)       1 1110                     sign(s(4))  sign(z),
+(–2   4d) 0 0111                     so perform corrective subtraction
––––––––––––––––––––––––
s(4)       0 0101                p=     0 1 0 1        Shift, compl MSB
s                     0101            1 1 0 1 1       Add 1 to correct
q                   - 1 1 -1 1
========================                1 1 0 0       Check: 33/(-7) = -4   33
BSD  2’s Complement Conversion

q = (qk-1 qk-2 . . . q1 q0)BSD =

= (pk-1 pk-2 . . . p1 p0 1)2’s complement

where                   Example:
qBSD              1 -1 1 1
qi    pi
-1    0                   p              1 011
1    1
q2’scomp          00111 =0111

no overflow if pk-2 = pk-1        (qk-1  qk-2)   34
Fig. 13.10 Shift-subtract sequential nonrestoring divider.

NOTE:
control determined by both
divisor sign and sign of new
partial remainder (via an
XOR operation). Divisor
sign is 0 for unsigned
division.

2. note that cout is the
complement of the sign of
the new partial remainder,
i.e. if new partial remainder
= 0, then cout = 1; if new
partial remainder = 1, then
cout=0

35

```
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
 views: 16 posted: 3/6/2012 language: pages: 35