PDF_4up - Chalmers tekniska högskola

LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Föreläsning #8
Uppdaterad 15 september, 2015
Aritmetik i digitala system
Digital- och datorteknik
Grindnät för addition:
Vi har sett att man bör kunna bygga en komponent (ett grindnät) för
addition av en enskild bit, och sedan seriekoppla (kaskadkoppla) n
stycken sådana komponenter för att erhålla en n-bitars adderare.
•  Ett grindnät för bitaddition som inte tar hänsyn till inkommande
minnessiffra kallas för en halvadderare (”half adder”).
•  Ett grindnät för bitaddition som tar hänsyn till inkommande
minnessiffra kallas för en heladderare (”full adder”).
Föreläsning #8
Biträdande professor Jan Jonsson
cn
Institutionen för data- och informationsteknik
Chalmers tekniska högskola
+
Aritmetik i digitala system
cn-1
ci+1
ci
c1
c0
cn-1
…
…
xi
…
x1
x0
yn-1
…
…
yi
…
y1
y0
sn-1
…
…
si
…
s1
s0
Aritmetik i digitala system
Grindnät för addition:
Grindnät för addition:
Härledning av grindnät för en halvadderare:
Härledning av grindnät för en heladderare:
Samma som halvadderare för ci = 0
xi
yi
si
ci+1
si = x i ⊕ yi
0
0
0
0
0
1
1
0
c i+1 = x i ∗ yi
1
0
1
0
1
1
0
1
xi
si
yi
c i+1
AND-funktion
XOR-funktion
ci
xi
yi
si
ci+1
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
XOR-funktion för ci = 0
1
1
si = c i ⊕ x i ⊕ yi
xi
yi
ci
Villkorlig inverterare
NXOR-funktion för ci = 1
si
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Föreläsning #8
Uppdaterad 15 september, 2015
Aritmetik i digitala system
Aritmetik i digitala system
Grindnät för addition:
Grindnät för addition:
Härledning av grindnät för en heladderare:
Härledning av grindnät för en heladderare:
Samma som halvadderare för ci = 0
Samma som halvadderare för ci = 0
c i+1 = x i ∗ yi + c i (x i + yi )
ci
xi
yi
si
ci+1
ci
xi
yi
si
ci+1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
1
0
0
1
0
1
0
0
1
0
1
0
0
1
1
0
1
0
1
1
0
1
1
0
0
1
0
1
0
0
1
0
1
0
1
0
1
1
0
1
0
1
1
1
0
0
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
Men: denna bit blir ’1’ även om
vi väljer XOR i stället för OR.
Och vi har ju faktiskt redan denna
XOR-funktion i halvadderaren.
c i+1 = x i ∗ yi + c i (x i ⊕ yi )
xi
ci
yi
c i+1
Principen och grindnät för addition av två n-bitars tal
cn cn-1
an-1
+ bn-1
sn sn-1
cn-2
an-2
bn-2
sn-2
...ci+1
........
........
........
ci...c1
ai...a1
bi...b1
si...s1
0
a0
b0
s0
minnessiffror
augendsiffror
addendsiffror
summasiffror
För att addera två n-bitars tal krävs det enligt uppställningen ovan n st grindnät som bildar
utsignalerna si och ci+1 av insignalerna ai, bi och ci, dvs n st heladderare med symbol och
funktionstabell nedan.
Aritmetik i digitala system
Grindnät för addition:
xai i
P
Härledning av grindnät för en heladderare:
ybi i
Q
cci i
ci
xi
yi
si
ci+1
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
si = c i ⊕ x i ⊕ yi
ssi
i
CO
C
cci+1
i+1
Heladderare
ai
bi
ci
ci+1
si
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
c i+1 = x i ∗ yi + c i (x i ⊕ yi )
si = ai'bi'ci + ai'bici' + aibi'ci' + aibici
(4.2 i KMP)
ci+1 = ai'bici + aibi'ci + aibici' + aibici
(4.3 i KMP)
si
si = (ai
bi)
ci
ci+1 = aibi + (ai
bi) ci
ai
bi
=1
&
ai
ai bi
bi
c
0
ai
1
minnessiffror
c cc c
...c c 0
(4.4 i KMP)
bi
Q
ccini
C
1
s i ai
P
(4.5 i KMP)
CO
Heladderare s
minnessiffror
c cc c
...c c 0
minnessiffror
c
c ...c 0
minnessiffror
augendsiffror
addendsiffror
summasiffror
2
s i ai
P
bi
Q
ci+1ci
C
2
bi
ci+1ci
CO
Heladderare s
0
3
ai
bi
ci
0
P
0
0
0
Q
1
1
C
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
CO1
0
1
ci+1
Heladderare s
1
0
s0i ai
0
1 bi
0
c1i+1ci
1
1
3
si ai
bi
ci
0
1
1
0
1
0
0
1
0
0
1
1
0
0
1
1
0
1
0
1
0
CO1
0
1
2
0
P
0
0
0
Q
1
1
C
1
1
ci+1
Heladderare s
0
s0i
0
1
0
c1i+1
1
1
c
si ai
bi
ci
ci+1
0
1
1
0
1
0
40
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
0
0
0
1
1
1
1
si ai
bi
ci
ci+1
si
0
1
1
0
1
0
0
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
0
0
0
0
1
1
1
1
3
Ur funktionstabellen fårUrman
funktionstabellen
fram si och ci+1 får
man
funktionstabellen
fram sform:
man
funktionstabellen
fram sform:
man
fram sform:
påUr
SP
normal
påUr
SP
normal
på SP
normal
i och ci+1 får
i och ci+1 får
i och ci+1 på SP normal form:
=1
&
cc c
...c c 0
c
n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1
i
1
Vi kan
kaskadkoppla
fyraaia...
heladderare
få
an-2nu
a1an-2
a0 ........
augendsiffror
a1an-2
a0 ........
augendsiffror
aoch
a1a
a0 en
augendsiffror
ai...a1 a0
...
...
........ aia
n-1
n-1
ia
n-1
n-2
........
+ bib
+ bib...
+ bikan
b...
bn-2 ........
b1bFlera
b0 ........
addendsiffror
b1badderare
b0 ........
addendsiffror
b1bsedan
b0 ........
addendsiffror
bi...b1 b0
...
n-1
n-2
n-1
n-2
n-1
n-2
4-bitars
adderare.
4-bitars
snsis
snsis
sn-2 ........snsis
s1sn-2
s0 ........
summasiffror
s1sn-2
s0 ........
summasiffror
s1sn-2
s0 ........
summasiffror
si...s1 s0
...
...
...
n-1
n-1
n-1
på samma sätt kopplas ihop för att bygga adderare
för 8, 16 eller 32 bitars binärtal.
c i+1
Motsvarande grindnät:
ci
cn cn-1
an-1
+ bn-1
sn sn-1
0
Förenkling ger:
yi
Konstruktion av 4-bitars adderare:
Principen och grindnät
Principen
för addition
och grindnät
av
Principen
tvåför
n-bitars
addition
och grindnät
tal av
Principen
tvåför
n-bitars
addition
och grindnät
tal av tvåför
n-bitars
addition
tal av två n-bitars tal
För att addera två n-bitars
För tal
attkrävs
addera
dettvå
enligt
n-bitars
uppställningen
För tal
att krävs
addera
detovan
två
enligt
n-bitars
n stuppställningen
För
grindnät
tal
att krävs
addera
som
dettvå
ovan
bildar
enligt
n-bitars
n st
uppställningen
grindnät
tal krävs
som
detovan
bildar
enligt
n st
uppställningen
grindnät som ovan
bildarn st grindnät som bildar
utsignalerna si och ci+1 av
utsignalerna
si och
utsignalerna
si och
utsignalerna
sioch
insignalerna
ai, bicoch
ci,insignalerna
dvs n st heladderare
ai, bicoch
cmed
, dvssymbol
n st heladderare
och
ai, bicoch
, dvssymbol
n st heladderare
och
ai, bi och cmed
n st heladderare
och
med symbol och
i+1 av
i+1 av
iinsignalerna
i+1 avcmed
iinsignalerna
i, dvssymbol
funktionstabell
y x nedan. funktionstabell
y x nedan. funktionstabell
y x nedan. funktionstabell
y x nedan.
Ur funktionstabellen får man fram si och ci+1 på SP normal form:
xi
Aritmetik i digitala system
si
1
ci+1
ci
si = ai'bi'ci + ai'bici' + aibis'ci i'=+aia'b
' + aiibKMP)
' +aia'bibi'c
' + aiibKMP)
' +aia'bibi'c
' + aiibKMP)
ibi'c
ici + ai'bici(4.2
is'ci i=
icii + ai'bici(4.2
is'ci i=
icii + ai'bici(4.2
i'ci' + aibici
(4.2 i KMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
ci+1 = ai'bici + aibi'ci + aib
ci+1
ci+1
ci+1
ici' +
ib
ici' +
ib
ici' +
ibici' + aibici
(4.3 i KMP)
Förenkling ger:
si = (ai
2
Förenkling ger:
bi)
ci
ci+1 = aibi + (ai
si = (ai
bi) ci
Förenkling ger:
bi)
ci (4.4 i KMP)
si = (ai
ci+1 = aibi + (ai
Förenkling ger:
bi)
ci (4.4 i KMP)
si = (ai
(4.5
bi) cii KMP)
ci+1 = aibi + (ai
bi)
ci (4.4 i KMP)
(4.5
bi) cii KMP)
ci+1 = aibi + (ai
(4.4 i KMP)
(4.5
bi) cii KMP)
(4.5 i KMP)
Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät:
ai
=1
ai ai bi
=1
=1
ai ai bi
=1
s=1
i
ai ai bi
=1
s=1
i
ai
bi
s=1
i
si
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Föreläsning #8
Uppdaterad 15 september, 2015
Aritmetik i digitala system
Aritmetik i digitala system
Konstruktion av 4-bitars adderare:
Konstruktion av 4-bitars subtraktionsenhet:
Principen och grindnät
Principen
för addition
och grindnät
av
Principen
tvåför
n-bitars
addition
och grindnät
tal av
Principen
tvåför
n-bitars
addition
och grindnät
tal av tvåför
n-bitars
addition
tal av två n-bitars tal
cn cn-1
an-1
+ bn-1
sn sn-1
c
cc c
...c c 0
c
minnessiffror
c cc c
...c c 0
minnessiffror
c cc c
...c c 0
minnessiffror
c
c ...c 0
minnessiffror
augendsiffror
addendsiffror
summasiffror
n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1 n i n-1 1 n-2 ... i+1
i
1
Vi kan
kaskadkoppla
fyraaia...
heladderare
få
an-2nu
a1an-2
a0 ........
augendsiffror
a1an-2
a0 ........
augendsiffror
aoch
a1a
a0 en
augendsiffror
ai...a1 a0
...
...
........ aia
n-1
n-1
ia
n-1
n-2
........
+ bib
+ bib...
+ bikan
b...
bn-2 ........
b1bFlera
b0 ........
addendsiffror
b1badderare
b0 ........
addendsiffror
b1bsedan
b0 ........
addendsiffror
bi...b1 b0
...
n-1
n-2
n-1
n-2
n-1
n-2
4-bitars
adderare.
4-bitars
snsis
snsis
sn-2 ........snsis
s1sn-2
s0 ........
summasiffror
s1sn-2
s0 ........
summasiffror
s1sn-2
s0 ........
summasiffror
si...s1 s0
...
...
...
n-1
n-1
n-1
på samma sätt kopplas ihop för att bygga adderare
för 8, 16 eller 32 bitars binärtal.
Det vore praktiskt om vår 4-bitar adderare också kunde
användas för subtraktion. Och vi har faktiskt redan sett
hur detta skulle kunna gå till:
1-komplement
För att addera två n-bitars
För tal
attkrävs
addera
dettvå
enligt
n-bitars
uppställningen
För tal
att krävs
addera
detovan
två
enligt
n-bitars
n stuppställningen
För
grindnät
tal
att krävs
addera
som
dettvå
ovan
bildar
enligt
n-bitars
n st
uppställningen
grindnät
tal krävs
som
detovan
bildar
enligt
n st
uppställningen
grindnät som ovan
bildarn st grindnät som bildar
utsignalerna si och ci+1 av
utsignalerna
si och
utsignalerna
si och
utsignalerna
sioch
insignalerna
ai, bicoch
ci,insignalerna
dvs n st heladderare
ai, bicoch
cmed
, dvssymbol
n st heladderare
och
ai, bicoch
, dvssymbol
n st heladderare
och
ai, bi och cmed
n st heladderare
och
med symbol och
i+1 av
i+1 av
iinsignalerna
i+1 avcmed
iinsignalerna
i, dvssymbol
funktionstabell
y x nedan. funktionstabell
y x nedan. funktionstabell
y x nedan. funktionstabell
y x nedan.
0
0
1
1
2
2
3
bi
ci ci+1 si ai
Vad bestämmer löptiden för aadderaren?
i
ai
s i ai
P
bi
Q
ccini
C
CO
Heladderare s
bi
Q
ci+1ci
C
0
s i ai
P
0
0
Q
1
1
C
1
1
bi
ci+1ci
CO
Heladderare s
0
0
0
1
1
0
0
1
1
P
0
0
1
0
1
0
CO1
0
1
Heladderare s
1
Y2-komplement = 2n − Y = 2n − 1+ 1− Y = (2n − 1− Y) + 1
”carry-in”
3
0
0
1
0
1
1 bi 0
0
1
c1i+1ci 0
1
0
1
1
s0i ai
2
0
P
0
0
0
Q
1
1
C
1
1
bi
ci
0
0
1
1
0
0
1
1
0
1
0
1
0
CO1
0
1
ci+1
Heladderare s
0
s0i
0
1
0
c1i+1
1
1
c
si ai
bi
ci
ci+1
0
1
1
0
1
0
40
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
0
0
0
1
1
1
1
si ai
bi
ci
ci+1
si
0
1
1
0
1
0
0
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
0
0
0
0
1
1
1
1
X − Y = X + (−Y) = X + Y2−komplement = X + Y1−komplement + 1
Vi kan alltså erhålla subtraktionen X − Y genom att addera X
till de inverterade bitarna i Y (1-komplementet) samt lägga till
1 till summan via adderarens ”carry-in”.
3
Ur funktionstabellen fårUrman
funktionstabellen
fram si och ci+1 får
man
funktionstabellen
fram sform:
man
funktionstabellen
fram sform:
man
fram sform:
påUr
SP
normal
påUr
SP
normal
på SP
normal
i och ci+1 får
i och ci+1 får
i och ci+1 på SP normal form:
si = ai'bi'ci + ai'bici' + aibis'ci i'=+aia'b
' + aiibKMP)
' +aia'bibi'c
' + aiibKMP)
' +aia'bibi'c
' + aiibKMP)
ibi'c
ici + ai'bici(4.2
is'ci i=
icii + ai'bici(4.2
is'ci i=
icii + ai'bici(4.2
i'ci' + aibici
(4.2 i KMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
= aaiib'bicici i + aibi(4.3
'ci + iaKMP)
ci+1 = ai'bici + aibi'ci + aib
ci+1
ci+1
ci+1
ici' +
ib
ici' +
ib
ici' +
ibici' + aibici
(4.3 i KMP)
Förenkling ger:
si = (ai
Förenkling ger:
bi)
ci
ci+1 = aibi + (ai
si = (ai
bi) ci
Förenkling ger:
bi)
ci (4.4 i KMP)
si = (ai
ci+1 = aibi + (ai
Förenkling ger:
bi)
ci (4.4 i KMP)
si = (ai
(4.5
bi) cii KMP)
ci+1 = aibi + (ai
bi)
ci (4.4 i KMP)
(4.5
bi) cii KMP)
ci+1 = aibi + (ai
(4.4 i KMP)
(4.5
bi) cii KMP)
(4.5 i KMP)
Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät: Motsvarande grindnät:
ai
=1
=1
=1
=1
Aritmetik
system
=1 i digitala
=1
=1
ai ai bi
ai ai bi
ai ai bi
si
bi
&
ai bi
bi
&&
ai bi
bi
ai
si
&&
ai bi
bi
&&
bi
s=1
i
ai bi
1 c
1 c
1 c
Konstruktion av 4-bitars addition/subtraktionsenhet:
i+1
ci
ci
ci
i+1
&
i+1
Aritmetik i digitala system
si
1
Tolkning av resultat
ci+1
ci
Vi kan nu konstruera en enhet för både addition
och subtraktion genom att ansluta bitarna
för Y via villkorliga inverterare.
Vi har alltså en enhet för både addition och
subtraktion som kan arbeta med såväl
tal utan tecken som tal med tecken.
De villkorliga inverterarna styrs
av signalen SUB som väljer om
kretsen skall utföra addition
(SUB = 0) eller subtraktion
(SUB = 1) med Y.
Fråga:
Hur vet enheten vilken typ
av tal som används?
Svar:
Det vet den inte! Den måste
därför alltid generera resultat
som kan användas för endera
typen av tal.
Signalen SUB sätter också
rätt värde på ”carry-in”: 0 vid
addition och 1 vid subtraktion.
Vi återkommer strax till den
villkorliga inverteringen vid C.
3
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Uppdaterad 15 september, 2015
Föreläsning #8
Aritmetik i digitala system
Aritmetik i digitala system
Tolkning av resultat
Flaggbitar:
Vi har en enhet som kan ge spill vid operationer
på tal både med och utan tecken.
Fråga:
Hur vet man om resultatet
har gett spill eller ej?
Flaggbitar används inte bara för att detektera spill utan också för att
indikera andra egenskaper hos ett resultat. Som vi skall se senare kan
programvaran i en dator konstrueras så att den vidtar olika åtgärder
beroende på vilka egenskaper ett resultat har.
De vanligast förekommande flaggbitarna i ett digitalt system är
Svar:
Enheten måste generera
information om spill för båda
typer av tal. Det är sedan
upp till användaren att tolka
resultaten på rätt sätt.
•  Z (zero): Z-flaggan indikerar om resultatet av en operation blev 0.
•  N (negative): N-flaggan indikerar om resultatet av en operation blev
negativt (oftast bara av intresse vid aritmetik på tal med tecken)
•  C (carry): C-flaggan indikerar om resultatet av en operation
mellan tal utan tecken resulterade i spill.
•  V (overflow): V-flaggan indikerar om resultatet av en operation
mellan tal med tecken resulterade i spill.
Denna information om spill
finns i s k flaggbitar.
Aritmetik i digitala system
Aritmetik i digitala system
Z-flaggan:
N-flaggan:
Baserat på resultatet från en aritmetisk
operation skall Z-flaggan sättas till 1
när alla bitar sn-1, sn-2, …, s1, s0 i
resultatet är lika med 0.
Baserat på resultatet från en aritmetisk
operation skall N-flaggan sättas till 1
när resultatet är mindre än 0.
Då vi använder 2-komplementaritmetik
vet vi att resultatet är mindre
än 0 när teckenbiten sn-1 = 1.
Z = sn−1 ∗ sn−2 ∗…∗ s1 ∗ s0
N = sn−1
4
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Uppdaterad 15 september, 2015
Föreläsning #8
Aritmetik i digitala system
Aritmetik i digitala system
C-flaggan:
C-flaggan:
Vi såg tidigare att ”carry-out” cn = 1
indikerar spill från en n-bitars
addition av tal utan tecken.
Vi såg tidigare att ”carry-out” cn = 1
indikerar spill från en n-bitars
addition av tal utan tecken.
Vi såg också att ”carry-out” cn = 0
indikerar spill från en n-bitars
subtraktion av tal utan tecken
när man använder
2-komplementaritmetik.
Vi såg också att ”carry-out” cn = 0
indikerar spill från en n-bitars
subtraktion av tal utan tecken
när man använder
2-komplementaritmetik.
Vi kan alltså erhålla C-flaggan genom att
använda en villkorlig invertering av ”carry-out”
cn från additionen, styrd av signalen SUB.
C = c n ⊕ SUB
Aritmetik i digitala system
Aritmetik i digitala system
V-flaggan:
V-flaggan:
Vid addition av tal med olika tecken kan
spill aldrig uppträda, då beloppen inte
adderas. Resultatet kommer aldrig
närmare talområdets gränser än
vad något av de två talen gör.
Villkor för spill: x n−1 ∗ yn−1 ∗ sn−1
Vid addition av tal med olika tecken kan
Detta ger oss två möjligheter till spill:
spill aldrig uppträda, då beloppen inte
1.adderas.
AdditionResultatet
av två positiva
tal ger
ett
kommer
aldrig
negativt talområdets
resultat.
närmare
gränser än
vad något av de två talen gör.
Vid addition av tal med samma
tecken kan spill uppträda, då
beloppen adderas. Resultatet
kommer närmare talområdets
gränser än vad något av de
två talen gör och kan komma
att ”spilla över” till andra änden
av tallinjen.
Vid addition av tal med samma
tecken kan spill uppträda, då
beloppen adderas. Resultatet
kommer närmare talområdets
gränser än vad något av de
två talen gör och kan komma
att ”spilla över” till andra änden
av tallinjen.
5
0
1
0
0
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Föreläsning #8
Uppdaterad 15 september, 2015
Aritmetik i digitala system
V-flaggan:
Vid addition av tal med olika tecken kan
Detta ger oss två möjligheter till spill:
spill aldrig uppträda, då beloppen inte
1.adderas.
AdditionResultatet
av två positiva
tal ger
ett
kommer
aldrig
negativt
närmareresultat.
talområdets gränser än
2.vad
Addition
negativa
tal ger ett
något av
av två
de två
talen gör.
positivt resultat.
Vid addition av tal med samma
tecken kan spill uppträda, då
beloppen adderas. Resultatet
kommer närmare talområdets
gränser än vad något av de
1
två talen gör och kan komma
att ”spilla över” till andra änden
av tallinjen.
Aritmetik i digitala system
V-flaggan:
Villkor för spill: x n−1 ∗ yn−1 ∗ sn−1
Vid addition av tal med olika tecken kan
spill aldrig uppträda, då beloppen inte
Genom
attResultatet
kombinerakommer
de två fallen
adderas.
aldrigfår
vinärmare
ett slutligt
villkor för spill
vid addition.
talområdets
gränser
än
vad något av de två talen gör.
1
Vid addition av tal med samma
tecken kan spill uppträda, då
beloppen adderas. Resultatet
kommer närmare talområdets
gränser än vad något av de
två talen gör och kan komma
att ”spilla över” till andra änden
Vav=tallinjen.
x n−1 ∗ yn−1 ∗ sn−1 + x n−1 ∗ yn−1 ∗ sn−1
0
1
Aritmetik i digitala system
Aritmetik i digitala system
V-flaggan:
V-flaggan:
Vid subtraktion av tal med samma tecken
kan spill aldrig uppträda. För att inse detta
påminner vi oss om att subtraktion X – Y
utförs medelst additionen X + Y2-komplement.
Då måste de två talen som
adderas ha olika tecken,
vilket vi vet inte kan ge spill.
Vid subtraktion av tal med olika
tecken kan spill uppträda.
Med ett liknande resonemang
inser vi att de två talen som
adderas har samma tecken,
vilket vi vet kan orsaka spill.
Vid subtraktion av tal med samma tecken
kan spill aldrig uppträda. För att inse detta
Vipåminner
får alltsåvisamma
för spill vidX – Y
oss omvillkor
att subtraktion
subtraktion
somadditionen
vid addition.
utförs medelst
X + Y2-komplement.
Då måste de två talen som
adderas ha olika tecken,
vilket vi vet inte kan ge spill.
Vid subtraktion av tal med olika
tecken kan spill uppträda.
Med ett liknande resonemang
inser vi att de två talen som
adderas har samma tecken,
Vvilket
= x n−1vi∗vet
yn−1kan
∗ sn−1orsaka
+ x n−1 ∗spill.
yn−1 ∗ sn−1
6
LEU431 – Digital- och datorteknik, Chalmers, 2015/2016
Föreläsning #8
Uppdaterad 15 september, 2015
Aritmetik-/logikenhet (ALU)
Dataväg, ALU och minne
7.2 Ömsesidigt byte av registerinnehåll
gör operationen A↔R, så som den utförs i datavägen enligt Figur 7.2.
Aritmetik-/logikenhet (ALU)
Grundläggande datorteknik för högskolans ingenjörsutbildningar
FLISP:s ALU är ett kombinatoriskt nät som består av totalt 21 insignaler och 12 utsignaler. Det
finns två 8-bitars ingångar, D och E, och en 8-bitars utgång U. Det finns också fyra villkorsindikatorer
(flaggbitar) som utsignaler. Dessa är N (Negative), Z (Zero), V(Overflow) och C (Carry). Ändringar på
ingångarna D och E påverkar alltså innehållet i U och flaggbitarna momentant, se Figur 7.4.
Vår adderare kan nu, tillsammans
med en uppsättning logikgrindar,
användas för att bygga upp en
er piloperatorerna används också alla de vanliga operatorsymbolerna så som likhet
(=), olikhet och logikenhet (ALU).
aritmetiktionsoperatorer (<,>), aritmetikoperatorer (+, - , × , /) och logikoperatorer ( ’, &, |, ~) i RTNingar, se Tabell 7.1. Till skillnad från piloperatorn representerar dessa operatorer
asynkrona
Detta
nya kombinatoriska nät är
ner. Vi kommer att introducera ytterligare operatorer allt eftersom de behövs i den kommande
ningen.
nödvändigt för att kunna utföra
operation
beräkningar i datorn.
Konstant uttryckt i talbas 10
Konstanten N uttryckt i talbasen r.
Gränssnittet mot grindnätet utgörs
Kopiering (synkron överföring)
Addition
av ett antal operationssignaler (F),
Subtraktion
ett par dataingångar (D och E), en
Logiskt ”OCH” (AND)
Logiskt ”ELLER” (OR)
datautgång (U) samt fyra flaggbitar
Logiskt ”EXKLUSIVT ELLER” (XOR)
(d)
”Opr” skiftas vänster ett steg. Biten d skiftas in i den minst signifikanta positionen.
(Z, N, C och V).
Opr
”Opr” skiftas höger. Biten d skiftas in i den mest signifikanta positionen.
Bitvis komplementering av operanden ”Opr”
likhet
olikhet
större än
mindre än
större än eller likhet
mindre än eller likhet
(d7,d6,d5,d4,
d3,d2,d1,d0)
U
(u7,u6,u5,u4,
u3,u2,u1,u0)
E
(e7,e6,e5,e4,
e3,e2,e1,e0)
FIGUR 7.4
TABELL 7.1 GRUNDLÄGGANDE OPERATIONER I RTN (REGISTER TRANSFER NOTATION)
LU-funktioner
ar sett hur man med en enkla operationer kan kopiera data mellan olika register i datavägen.
eg är att kunna förändra data under dataöverföringen. Vi behöver exempelvis kunna utföra de
tmetikoperationerna addition och subtraktion med registerinnehåll, vi behöver också kunna
mplement och utföra logikoperationer på registerinnehållen bland annat.
F (f3,f2,f1,f0)
Cin
g5
g6
g7
BLOCKSCHEMATISK BILD AV FLISP’S ALU
AritmetikFLEXav(FLEX-ALU)
ALU:n kan utföra totalt 16 olika
operationer. logikenhet
Utsignalerma Uför
bestäms
operationen F(f3,f2,f1,f0) som
styr 8 st. 1 av 16-väljare. På liknande sätt används 4 st. 1 av 16-väljare för att bilda flaggbitarna från
E(8)
ALU:n. Vi använder i bland det förenklade skrivsättet: D(8)
F(0) för att beteckna f3, f2, f1,f0 = 0,0,0,0
F(1) för att beteckna f3, f2, f1,f0 = 0,0,0,1
...
Funktion (f3f2f1f0)
F(15) för att beteckna f3, f2, f1,f0 = 1,1,1,1
ALU
C
Selektorsignaler
5
6
7
Digital- och datorteknik LV1
Flaggor
U(8)
Figur 7.5 visar en förenklad bild av ALU’n.
ALU:ns logik- och aritmetikoperationer på indata D och E definieras av ingångarna Funktion
(F) och Cin enligt tabellen nedan. F = (f3, f2, f1, f0).
Aritmetik-/logikenhet (ALU)
I kolumnen Operation förklaras (där det behövs) hur operationen utförs. Tecknen "+" och " "
avser aritmetiska operationer. Med D1k menas att samtliga bitar i D inverteras.
ALU för laboration 1:
f3 f2 f1 f0
0 0 0 0
U = f(D,E,F,Cin)
Operation
Resultat
Bitvis nollställning
0
0 0 0 1
D
0 0 1 0
Carryflaggan (C) innehåller minnessiffran ut
(carry-out) från den mest signifikanta bitpositionen (längst till vänster) om en aritmetisk
operation utförs av ALU:n.
Vid subtraktion gäller för denna ALU att
C = 1 om lånesiffra (borrow) uppstår och
C = 0 om lånesiffra inte uppstår.
E
värde är 0 vid andra operationer
FIGUR 7.5 FÖRENKLAD BILD AV FLISP’SCarryflaggans
ALU
0 0 1 1
Bitvis invertering
D1k
än aritmetiska.
DATAVÄG MED ALU
115
Väljare
in för användning tillsammans med flertalet olika ALUEn sista insignal Cin (carry in) är kopplad
operationer. Vi återkommer senare till hur denna kan användas.
generellt vill vi kunna utföra någon förutbestämd operation på innehållet i något register och
återföra resultatet till ett godtyckligt (eventuellt samma) register. Vi inför därför en ny
ent i datavägen med sådana egenskaper (se Figur 7.3). Den nya komponenten kallas aritmetik- enhet, på engelska, Arithmetic/Logical Unit, eller helt enkelt ALU.
FIGUR 7.3
S4.16
Exempel: Väljare för ”bitslice”
(Arb kap 6)
Varje bit Ui på datautgången ansluts
med åtta operationer.
till en väljare (”multiplexer”)
som,
MUX
styrd av operationssignalerna F,
"0"
levererar
en bit av 0resultatet (en s k
SelektorINVi
s
0
0 den valda
”bitslice”)
operationen.
G
AND
(väljar-) från
s
i
1
Exempel
i7en ALU:
2
ORi
f
signalerpåsoperationer
Ui
2
XOR
•  addition och subtraktion
i
SUB
0
i
g0
•  bitvis XOR
ADDi
1
•  bitvis ORg1
"1"
g2
2
•  bitvis AND
3
g3
f
•  bitvis invertering
4
Insignaler g4
f2 f1 f0
•  bitkonstanter ”0” och ”1”
Utsignal
N
V
Z
C
kombinatorik
D
Väljare
ALU ”bitslice”:
Ett nytt kombinatoriskt nät:
datavägen inte tillåter samtidig överföring, dvs. vi kan bara överföra ett registerinnehåll åt gången, så
t göras i två steg och vi måste dessutom använda ett tredje register (T) för mellanlagring:
, R A, T
R
116
Den ALU ni möter i laboration 1
arbetar med 8-bitars maskintal,
och innehåller de operationer vi
visade för vår enkla ”bitslice”,
samt ytterligare ett par varianter
av addition.
0 1 0 0
Bitvis invertering
E1k
0 1 0 1
Bitvis OR
D OR E
0 1 1 0
Bitvis AND
D AND E
0 1 1 1
Bitvis XOR
D XOR E
1 0 0 0
D + 0 + Cin
D + Cin
1 0 0 1
D + FFH + Cin
1 0 1 0
D + E + Cin
1 0 1 1
D + D + Cin
1 1 0 0
D +E1k + Cin
D
1 + Cin
Overflowflaggan (V) visar om en aritmetisk
operation ger "overflow" enligt reglerna för 2komplementaritmetik.
V-flaggans värde är 0 vid andra operationer än
aritmetiska.
Väljare
MUX
s0
s1
0
s2
2
g0
g1
0
g2
g3
g4
2
3
4
g5
g6
g7
5
6
G
S4.16
1
(eng multiplexer)
s0
0
7
1
f
“1 av 8 väljare”
7
s2
s1
s0
f
0
0
0
g
0
0
1
g
0
1
0
g
0
1
1
g
1
0
0
g
1
0
1
g
1
1
0
g
1
1
1
g
1
0
1
s1
2
1
3
4
5
s2
6
7
D + E + Cin
2D + Cin
D
E
1 + Cin
1 1 0 1
Bitvis nollställning
0
1 1 1 0
Bitvis nollställning
0
1 1 1 1
Bitvis ettställning
FFH
Zeroflaggan (Z) visar om en ALU-operation ger
värdet noll som resultat på U-utgången.
Signflaggan (N) är identisk med den mest
signifikanta biten (teckenbiten) av utsignalen U
från ALU:n.
7
f = m0g0 + m1g1 + m2g2 + m3g3 + m4g4 + m5g5 + m6g6 + m7g7
m0 är motsvarande minterm (m0 = s’2 s’1 s’0)
Digital- och datorteknik LV1
NBC till 1 av 8