Kaskadierung von Carry-Look-Ahead-Schaltungen

3.5 Carry-Look-Ahead 145 Kaskadierung von Carry-Look-Ahead-Schaltungen Mit einer Kaskadierung kann der mit großer Wortbreite einhergehenden großen A...
Author: Luisa Fuchs
0 downloads 0 Views 2MB Size
3.5 Carry-Look-Ahead

145

Kaskadierung von Carry-Look-Ahead-Schaltungen Mit einer Kaskadierung kann der mit großer Wortbreite einhergehenden großen Anzahl an Gattern entgegengewirkt werden. Dazu werden Carry-Look-Ahead-Schaltungen hoher Wortbreite aus mehreren Carry-Look-Ahead-Schaltungen niedrigerer Wortbreite zusammengesetzt. Nachfolgende Abbildung zeigt eine Erweiterung der bekannten 4 Bit Carry-Look-Ahead-Schaltung zur Ausgabe von Generate- und Propagate-Signalen. x

y

3

2 3

0

1

3

2

1

0

0

2

1

1

0

1

0

1

0

0

:÷ |

1

G

inv

g3

p3

g2

x3

y3

p2

c2

g1

x2

VA c3

P

y2

p1

g0

c1

x1

VA s3

c2

3

y1

p0

c0

x0

VA s2

c1

VA s1

2

y0 c-1

c0

s0

1

0

s

C

Zur Zusammenfassung mehrerer Carry-Look-Ahead-Schaltungen werden die Generate/Propagate-Signale mit einer sog. Carry-Look-Ahead-Einheit verbunden.

4

4

4

4

4

4

4

4

CLA

CLA

CLA

CLA

4

4

4

4

1

x y inv.

.

s G3P3

C3

G2P2

C2

G1P1

C1

G0P0

C0

Carry-Look-Ahead-Einheit GG0 PP0

CC0

146

3 Arithmetische Schaltungen

Die Carry-Look-Ahead-Einheit berechnet aus den Eingangssignalen CC0 , P0 , P1 , P2 , P3 , G0 , G1 , G2 und G3 die Überträge C0 , C1 , C2 und C3 und leitet diese an die jeweiligen Carry-Look-Ahead-Schaltungen weiter. Da Generate-/Propagate-Signale auf zwei unterschiedlichen Hierarchie-Ebenen berechnet werden, spricht man von einer zweistufigen Carry-Look-Ahead-Schaltung. Über die Ein-/Ausgänge CC0 , PP0 und GG0 können mehrere 16 Bit Carry-Look-Ahead-Schaltungen zu einer Carry-Look-Ahead-Schaltung mit noch größerer Wortbreite, z.B. 64 Bit, zusammengesetzt werden. a)

Wie muss die zweistufigen Carry-Look-Ahead-Schaltung zur Subtraktion beschaltet werden?

in

+

auf

Cco

setzen

1

b) Hängen die Signale G und P von Carry-In-Signal C ab? Warum?

Nein von

c)

Mp Mpu nach

am am

C

P

und

G

,

sein

da

,

sollen sonst

unabhängig "

wieder

durch

Bestimmen Sie die Anzahl der Gatterlaufzeiten ⌧ für die einstufige 4 Bit CarryLook-Ahead-Schaltung bei einer Subtraktion für den Fall Fan-In = 4.

ttläz

3kt tcllnltipkxf 37 Inverter

.

g

o

y

.

y

.

°

rippe

C

:

Inverter

über

nach

P

nach

G

nach

S

nach

Mux

2T

:

:

/

:

3T

3T

+3T

=

=

5g

6T

s

:3

7T

lu

"

3.5 Carry-Look-Ahead

147

d) Bestimmen Sie die Anzahl der Gatterlaufzeiten ⌧ falls Fan-In = 2.



-



-

Em mu

am am

.

yoss yes

.

Ja

o

.



criss



G

-

TEE

QF

F

Ezct

9T

:

P

: -

6T

:

8T

:

:

5T

( 1 mehr

bei

4-

fach UND

148

3 Arithmetische Schaltungen

Im Folgenden wird die Carry-Look-Ahead-Einheit betrachtet.

4

4

4

4

4

4

4

4

CLA

CLA

CLA

CLA

4

4

4

4

x y inv.

1

s G3P3

C3

G2P2

C2

G1P1

C1

G0P0

C0

Carry-Look-Ahead-Einheit GG0 PP0

e)

CC0

Bestimmen Sie die Signale C0 , C1 , C2 und C3 in Abhängigkeit der Signale CC0 , P0 , P1 , P2 , P3 , G0 , G1 , G2 und G3 .

Co

.

.

.

cn

=

Cz

°

C Co

F

=



Go

V

( Po

^

C Co

)

Gn

V

( Ps

^

Go

v

Gn

)

)

Gzv ( Pz

=

( f)

pz

n

^

Po

Pen

v

n

(

Pn

( Pz C Co )

^

n

Po

1

Pen Go

Bestimmen Sie die Signale GG0 und PP0 in Abhängigkeit der Signale P0 , P1 , P2 , P3 , G0 , G1 , G2 und G3 .

Ppo GG

P

=

o

=

,

Gs

( B

Pz

n v

~

n

Pn

( Bn

Gz

Pz

n

R

Po

n

)

v

1

(B Go

n

)

Pz

n

CCD

Gr

)

V

)

V

3.5 Carry-Look-Ahead

149

g) Bestimmen Sie für Fan-In = 4 die Anzahl der Gatterlaufzeiten ⌧ der Carry-LookAhead-Einheit von den Eingängen zu den Ausgängen C3 , GG0 und PP0 .



Ptt

,

GGO h)

Ko

d.h.

,

,

dh

.

P

/ GIP

Ppoi1 :



d.h.MG

2÷ →

GGO

:

2T

f

:

Skizzieren Sie für Fan-In = 2 eine Gatterschaltung zur Bestimmung von PP0 . Bestimmen Sie die maximale Anzahl an Gatterlaufzeiten ⌧ .

-

CE

,

-

i)







-

Fn

:

3

Skizzieren Sie für Fan-In = 2 eine Gatterschaltung zur Bestimmung von GG0 . Zeichnen Sie den kritischen Pfad ein und bestimmen Sie die maximale Anzahl an Gatterlaufzeiten ⌧ .

IÄTEE -1=1 : Eu ICEI ⇐ iii

a.

150

T

j)

3 Arithmetische Schaltungen

Skizzieren Sie für Fan-In = 2 eine Gatterschaltung zur Bestimmung von C3 . Zeichnen Sie den kritischen Pfad ein und bestimmen Sie die maximale Anzahl an Gatterlaufzeiten ⌧ .

Nehmen Sie die für Fan-In = 4 bestimmten Gatterlaufzeiten an, vgl. c), f), g). k)

Bestimmen Sie die maximale Gatterlaufzeit der zweistufigen 16 Bit Carry-LookAhead-Schaltung zur korrekten Bestimmung von s.

Ts

=

l)

( Txtynps

MAX

=

1

THING TG

(7,6+2+3)

max

=

,

P

t

AS

)

TGP pcst

11T

Bestimmen Sie die maximale Gatterlaufzeit der zweistufigen 16 Bit Carry-LookAhead-Schaltung zur korrekten Bestimmung von PP0 .

Tppo

Tx

=

,

ftp.xppo

p



y

~

um

flg

C =

5T

+

T

=

6T

-

3.5 Carry-Look-Ahead

151

m) Bestimmen Sie die maximale Gatterlaufzeit der zweistufigen 16 Bit Carry-LookAhead-Schaltung zur korrekten Bestimmung von GG0 .

TGGO

Tx

,

p



y

Tag

1



G)

t

PAGETT

TG



fl 9)

(

max

=

,

6T

=

:

t

zu

=

Nachfolgende Abbildung zeigt eine dreistufige Carry-Look-Ahead-Schaltung zur Verarbeitung von 64 Bit breiten Zahlen. x 64

CLA-Einheit d GG3

PP3

CC3

y 64

add/sub

CLA-Einheit c GG2

PP2

CC2

CLA-Einheit b GG1

PP1

CC1

CLA-Einheit a GG0

PP0

CC0

CLA-Einheit e CC4 ÜberlaufErkennung

64 s

n)

Bestimmen Sie die max. Gatterlaufzeit zur Berechnung von CC3 für Fan-In = 4.

152

3 Arithmetische Schaltungen

o) Bestimmen Sie die maximale Gatterlaufzeit zur korrekten Bestimmung von s für Fan-In = 4.

p) Bestimmen Sie die maximale Gatterlaufzeit zur korrekten Bestimmung des CarryOuts CC4 für Fan-In = 4.

3.7 Kombinatorischer Multiplizierer

153

3.6 Addition und Subtraktion von Gleitkommazahlen Zur Addition von Gleitkommazahlen wird auf Festkomma-Addierer und -Subtrahierer zurückgegriffen. Zwei positive Gleitkommazahlen können wie folgt addiert werden: • Als Exponent des Ergebnisses wird der größere Exponent verwendet • Bilden der Differenz der beiden Exponenten • Mantisse der Zahl mit dem kleineren Exponenten zusammen mit der führenden ‘‘1,’’ um die zuvor berechnete Differenz nach rechts schieben • Beide Mantissen addieren • Falls Ergebnis nicht in Form ‘‘1,...’’ ist, Mantisse um 1 Stelle nach rechts schieben und 1 zum Ergebnis-Exponenten addieren (= Re-Normalisieren) Um Gleitkommazahlen zu subtrahieren, kann wie oben vorgegangen werden, wenn der Subtrahend negiert wird. Das gleiche gilt für die Addition von Zahlen unterschiedlichen Vorzeichens.

3.7 Kombinatorischer Multiplizierer Bei der Multiplikation gilt allgemein: Multiplikator · Multiplikand = Produkt Mit Multiplikator x und Multiplikand y berechnet sich bei vorzeichenlosen Zahlen das Produkt z zu: x3 + + + =

z7

x2

x 3 · y3 z6

0000 ÷÷ x1

x0

x2 · y 3 x3 · y 2 z5

x1 · y3 x2 · y2 x3 · y1 z4

· y3 x 0 · y3 x 1 · y2 x 2 · y1 x 3 · y0 z3

y2 x0 · y 2 x1 · y 1 x2 · y 0

y1 x0 · y1 x1 · y0

y0 x 0 · y0

z2

z1

z0

Die Multiplikation zweier n Ziffern breiter Zahlen ergibt ein 2n breites Produkt. Das Produkt berechnet sich als Summe von n Teilprodukten. Die Multiplikation der Einzel-Terme xi · yj entspricht einer logischen UND-Verknüpfung. Die Addition der Teilprodukte xi · yj kann mit Halb- und Volladdierern durchgeführt werden.

154

a)

3 Arithmetische Schaltungen

Tragen Sie in nachfolgende Abbildung Verbindungen zur Realisierung der vorzeichenlosen Multiplikation ein. x3

Eigene Lösung:

x3

+ + + = x2

z7

x1

x2

x1

x0

x 3 · y3 z6

x2 · y 3 x3 · y 2 z5

x1 · y3 x2 · y2 x3 · y1 z4

x0

|

×

y3

·

?

.

· y3 x 0 · y3 x 1 · y2 x 2 · y1 x 3 · y0 z3

y2

y2 x0 · y 2 x1 · y 1 x2 · y 0

y1 x0 · y1 x1 · y0

y0 x0 O · y0

I V

z2

z1

y1

z0

y0

.

t.gl?Ty? °

9

IY

µ ;) ×

g)

?

,

a

q

b

)



y

. , )

s

p

.

a

HA

cout

?

b

b

cin

a

VA

cout



.

b

cout

g)

cin

cout

cin

a

b

cin

a

VA

cout

s

'

a

VA

s

a

VA

b

cin

s

VA

a

cout

b

HA

s

cout

s

cin

a

b

cout

s

...

a

b

cin

a

VA cout

VA

s

z7

b

cout

z6

b

VA

cout

s

z5

s

z4

HA cout

z3

s

z2

z1

b

HA

Do

.dz/.: a

cin

z0

s

3.7 Kombinatorischer Multiplizierer

155

Zur Mitschrift: x3 + + + = x3

x2

z7

x1

x0

a

x2

x1

x0

x 3 · y3 z6

x2 · y 3 x3 · y 2 z5

x1 · y3 x2 · y2 x3 · y1 z4

y3

·

b

a

HA cout

a

b

cin

a

VA cout

a

b

cin

a

VA cout

s

cout

cin

a

cout

z6

b

s

cout

cin

a

cout

z5

b

y2 x0 · y 2 x1 · y 1 x2 · y 0

y1 x0 · y1 x1 · y0

y0 x 0 · y0

z2

z1

z0

y1

a

b

y0

cin

a

VA cout

s

cin

a

b

cout

HA

cout

s

cin

a

b

cout

s

HA cout

z3

s

z2

z1

b

HA

s

s

s

z4

cin

VA

VA s

y2

VA

VA

VA s

z7

b

b

b

· y3 x 0 · y3 x 1 · y2 x 2 · y1 x 3 · y0 z3

z0

s

156

3 Arithmetische Schaltungen

b) Tragen Sie in die Multiplizierer-Schaltung den längsten Pfad ein. Wie lange (in Gatterlaufzeiten ⌧ ) dauert die Ausführung?

Der Hardwareaufwand der gezeigten Schaltung ist sehr hoch: Mit steigender Wortbreite n steigt der notwendige Hardwareaufwand mit ca. n2 .

3.8 Sequentieller Multiplizierer

157

3.8 Sequentieller Multiplizierer Mit einer sequentiellen Schaltung kann der Hardwareaufwand reduziert werden. Die nächste Abbildung skizziert eine sequentielle Schaltung, die zur Multiplikation vorzeichenloser Zahlen der Wortbreite n = 4 verwendet werden kann. MR

y3 y2 y1 y0

Add PR

0 0

0

0



dmhipühaud gbit

PR0 0 x3 x2 x1 x0

g

Nv

.

0

des

Produkt reg

Multiplikator

Das Multiplikand-Register MR ist n = 4 Bit breit, das Produkt-Register PR ist 2n + 1 = 9 Bit breit. PR0 ist das niederwertigste Bit des im Produktregister gespeicherten Werts. Der sequentielle Ablauf ist wie folgt: • Zunächst wird der Multiplikand im Multiplikand-Register MR und der Multiplikator in den unteren n Bits des Produkt-Registers abgelegt. Die restlichen Bits des Produktregisters werden mit 0 initialisiert. • Anschließend wird iterativ n = 4 mal folgendes ausgeführt: • Wenn PR0 = 1, dann • wird der in MR stehende Wert zu den Bits PR7 ... PR4 des Produktsregisters addiert; ein ggf. auftretender Überlauf wird in PR8 abgelegt; anschließend • wird das gesamte Produktregister um eine Stelle nach rechts geschoben; dabei wird von links mit Nullen aufgefüllt. • Wenn PR0 = 0, dann • wird keine Addition durchgeführt, sondern lediglich das gesamte Produktregister um eine Stelle nach rechts geschoben; dabei wird wieder von links mit Nullen aufgefüllt. • Nach n = 4 Iterationen (=Runden) steht im Produktregister das Ergebnis.

.

158

a)

3 Arithmetische Schaltungen

Tragen Sie in folgende Abbildung für n = 4 die Registerinhalte ein, die sich für die Multiplikation 13 · 5 = 65 ergeben. 0

1

1

0

Add

0 Nach Addition: Nach Schieben:

0

000

00101

11

01

11

¥4574130

Nach Addition: Nach Schieben:

00001

Nach Addition:

0011

ttttt.INT 0

Nach Schieben:

.im öööxeiöö

Nach Addition:

01000

Nach Schieben:

1

0

Initialisierung Erste Runde



,

Erste Runde Zweite Runde

0111

Zweite Runde

0111

Dritte Runde

0011

.io#uoFovn öü

Dritte Runde Vierte Runde Vierte Runde