Kaskadierung von Carry-Look-Ahead-Schaltungen

Werbung
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
Herunterladen