INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren...
Transcript of INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren...
![Page 1: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/1.jpg)
INF1400
Kombinatorisk Logikk
![Page 2: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/2.jpg)
Læringsutbytte • Kunnskapsmål:
– Kunnskap om hvordan addisjon og subtraksjon for binære tall gjøres – Kunnskap om fulladder og halvadder design – Kunnskap om å kunne diskutere fordeler og ulemper ved ulike
adderdesign/løsning
• Ferdighetsmål: – Kunne implementere adder på portnivå – Kunne analysere kretsdesign
• Generelle kompetansemål: – Kunne forklare viktigheten av mentepropagering – Kunne forklare og bruke negative binære tall
Omid Mirmotahari 1
![Page 3: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/3.jpg)
Oversikt
• Binær addisjon
• Negative binære tall - 2’er komplement
• Binær subtraksjon
• Generell analyseprosedyre
– Halvadder • Binær adder
– Fulladder – Flerbitsadder – Carry propagation / carry lookahead
Omid Mirmotahari 2
![Page 4: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/4.jpg)
Binær addisjon
1 0 1 0 1 1 1 0
0 0 +
=
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0 0
1 1
Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon
Eksempel
Adder 5 og 13:
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0 0 1
1 1
5 0 3 1
8
+
= 1
Omid Mirmotahari 3
![Page 5: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/5.jpg)
Negative binære tall Mest vanlig representasjon: 2’er komplement
Lar mest signifikante bit være 1 for negative tall
Dette må være ”avtalt” på forhånd
0 0 1 1
0 0 0 0 0 0 1 0 0 0 1
0 1 0 0 0 1 0 1 0 1 0 1
0
1 1 1 1 1 1 0 1 1 1 1 0
0 1 1 1
1 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0
7 6
3
1 2
4 5
0
-1 -2 -3 -4 -5 -6 -7 -8
Eksempel:
4 bit kan representere tallene –8 til +7
Omid Mirmotahari 4
![Page 6: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/6.jpg)
2’er komplement Setter minus foran et binært tall ved å invertere alle bittene og plusse på 1
+ 0 0 1 0 1 0 0 1 invertert 5:
1 0 1 1 = -5:
0 0 1 1
0 0 0 0 0 0 1 0 0 0 1
0 1 0 0 0 1 0 1 0 1 0 1
0
1 1 1 1 1 1 0 1 1 1 1 0
0 1 1 1
1 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0
7 6
3
1 2
4 5
0
-1 -2 -3 -4 -5 -6 -7 -8
Eksempel:
Finner -5:
Omid Mirmotahari 5
![Page 7: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/7.jpg)
Binær subtraksjon Fremgangsmåte for tall representert ved 2’er komplement:
Adder tallene på vanlig måte.
Eksempel: 1 0 0 1 1 1 0 1
0 =
1
0 1 0
1
6 2
4
-
=
+ +
(1)
Går ut
Betyr positivt tall Omid Mirmotahari 6
![Page 8: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/8.jpg)
Binær subtraksjon
Eksempel:
0 0 1 1 0 1 0 0
1 = 1 0 1
3 8
-5
-
=
+ +
Betyr negativt tall
Omid Mirmotahari 7
![Page 9: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/9.jpg)
Binær adder
En av de mest brukte digitale kretser
Vanlige anvendelser:
• Basis for addisjon / subtraksjon / multiplikasjon / divisjon og mange andre matematiske operasjoner
• All form for filtrering / signalbehandling
Mikroprosessor ALU / Xbox / mikserbord / digitalt kommunikasjonsutstyr / AD-DA omformere osv...
Omid Mirmotahari 8
![Page 10: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/10.jpg)
Binær adder Ønsker å designe en generell binær adder
Funksjonelt eksempel
Adder to tall A=5 og B=13:
1 0 1 0 1 1 1 0
0 0 +
=
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0 0
1 1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0 0 1
1 1
S
B A
A1
A0
B1
B0
S0
S1
0
C1
C2
Omid Mirmotahari 9
![Page 11: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/11.jpg)
Halvadder (ingen mente inn)
Adderer sammen de to minst signifikante bittene A0 og B0.
Sannhetstabell
A0 B0 C1 S0
0 0 1 0 0 1 1 1
0 1 1 0
0 0 0 1
S0 = A0´B0 + A0B0´= A0 ⊕⊕ B0
C1 = A0B0
Elementet har 2 innganger og 2 utganger
Omid Mirmotahari 10
![Page 12: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/12.jpg)
Halvadder implementasjon
C1 = A0B0 C1 = A0B0
S0 = A0 ⊕ B0 S0 = A0´B0 + A0B0´
C1
S0
B0
A0
C1
S0
B0
B0 ´
A0 ´
A0
B0
A0
Omid Mirmotahari 11
![Page 13: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/13.jpg)
Fulladder (mente inn) Adderer sammen bit An , Bn med evt. mente inn
Sn = An ⊕ Bn ⊕ Cn (oddefunksjon)
Cn+1 = An´BnCn + AnBn´Cn + AnBnCn´+ AnBnCn
Sannhetstabell
An Bn Cn+1 Sn
0 0 0 0 1 0 1 0
0 0 0 1
0 1 1 0
Cn
0 1 0 1
0 1 0 1 1 1 1 1
0 1 0 1
0 1 1 1
1 0 0 1
Elementet har 3 innganger og 2 utganger
Omid Mirmotahari 12
![Page 14: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/14.jpg)
Forenkling
Forenkler Cn+1 ved Karnaughdiagram
Cn+1 = An´BnCn + AnBn´Cn + AnBnCn´+ AnBnCn
An
BnCn
0
1
00 01 11 10
1 1 1
1
Cn+1 = AnBn + AnCn + BnCn
Omid Mirmotahari 13
![Page 15: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/15.jpg)
Implementasjon I
Rett fram implementasjon
Cn+1 = AnBn + AnCn + BnCn
Sn = An ⊕⊕ Bn ⊕⊕ Cn
Sn
An
Bn
Cn
An Bn
Cn
An
Cn Bn
Cn+1
Omid Mirmotahari 14
![Page 16: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/16.jpg)
Implementasjon II Forenklet implementasjon av Cn+1 basert på gjenbruk av porter fra Sn
Sn = (An ⊕⊕ Bn) ⊕⊕ Cn
An
BnCn
0
1
00 01 11 10
1 1 1
1
Leser ut Cn+1 fra karnaughdiagram på nytt
Cn+1 = AnBn + (AnBn´+ An´Bn ) Cn
Cn+1 = AnBn + (An ⊕⊕ Bn) Cn
Cn+1 = AnBn + AnBn´Cn + An´BnCn
Omid Mirmotahari 15
![Page 17: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/17.jpg)
Implementasjon II Vanlig implementasjon av en-bits fulladder
Sn = (An ⊕ Bn) ⊕ Cn
Cn+1 = AnBn + (An ⊕ Bn) Cn
Sn
Cn+1
Bn
An
Cn
An ⊕ Bn
AnBn
Omid Mirmotahari 16
![Page 18: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/18.jpg)
Binær adder
S
B A 1 0 1 0
1 1 1 0 0 0 +
=
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0
1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0 0
1 1
1 0 1 0 1 1 1 0
0 0
0
+
=
1
0 0 1
1 1 0
Sn
Cn+1
Bn
An
Cn
Fulladder (evt. mente inn)
An
Bn Sn
Cn+1 Cn B0
A0
C1
S0
Halvadder (ikke mente inn)
C1
S0
A0
B0
17
![Page 19: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/19.jpg)
Et adder system Systemelementer:
Halv adder
Full adder
Full adder
Full adder
A0 B0
Halvadder: Tar ikke mente inn
Fulladder: Tar mente inn
C1 C0=0
A1 B1
C2
A2 B2
C3
A3 B3
C4
S0 S1 S2 S3 Omid Mirmotahari 18
![Page 20: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/20.jpg)
Menteforplantning 4-bits binær adder
Halv adder
Full adder
Full adder
Full adder
C1 C2 C3
C4
Omid Mirmotahari 19
![Page 21: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/21.jpg)
Menteforplantning Portforsinkelse gir menteforplantning (rippeladder)
Adderer 0101 og 1011
Halv adder
Full adder
Full adder
Full adder
000 00 000
000 0 0
000
1 1 1 1 0 1 0 0
0
0
1
0 0
1 1 0
Eksempel
1 1 1 1 0 1 0 0
0
1
0
0 0
1 1 0
1 1 1 1 0 1 0 0
0
1
0
1 0
0 1 0
1 1 1 1 0 1 0 0
0
1
0
1 1
0 0 0
1 1 1 1 0 1 0 0
0
1
0
1 1
0 0 1 Omid Mirmotahari 20
![Page 22: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/22.jpg)
Subtraksjon ?
Omid Mirmotahari 21
![Page 23: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/23.jpg)
”Carry Lookahead” Ønsker å unngå menteforplantning – gir økt hastighet
Gi – generate: brukes i menteforplantningen
Pi – propagate: påvirker menteforplantningen
Omid Mirmotahari 22
![Page 24: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/24.jpg)
”Carry Lookahead”
Si = Pi ⊕⊕ Ci
Ci+1 = Gi + PiCi
Omid Mirmotahari 23
![Page 25: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/25.jpg)
”Carry Lookahead”
C1 = G0 + P0C0
For en 4-bits adder bestående av 4 fulladdertrinn har vi:
Si = Pi ⊕ Ci Ci+1 = Gi + PiCi
C2 = G1 + P1C1 = G1 +P1(G0 + P0C0) = G1 + P1G0 + P1P0C0
C3 = G2 + P2C2 = G2 + P2G1 + P2P1G0 + P2P1P0C0
Uttrykker C1, C2 og C3 rekursivt
Omid Mirmotahari 24
![Page 26: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/26.jpg)
”Carry Lookahead” generator
Rett fram implementasjon av C1, C2, C3
Omid Mirmotahari 25
![Page 27: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/27.jpg)
”Carry Lookahead” adder
4-bits Carry Lookahead adder med input carry C0
26
![Page 28: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/28.jpg)
Generell analyseprosedyre for digitale kretser
1) Sett funksjonsnavn på ledningene
2) Finn funksjonene
3) Kombiner funksjonsuttrykkene
Omid Mirmotahari 27
![Page 29: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/29.jpg)
Eksempel T2
T1
F´2
F2
F1
T3
T2=ABC
T1=A+B+C
F2=AB+AC+BC
T3= F´2 (A+B+C) F´2
F1=ABC+ (AB+AC+BC)´ (A+B+C)
F1
28
![Page 30: INF1400 Kombinatorisk Logikk · Binær addisjon 0 1 0 1 1 1 0 1 0 + 0 = 0 1 0 11 1 0 1 Prosedyren for binær addisjon er identisk med prosedyren for desimal addisjon Eksempel Adder](https://reader034.fdocuments.net/reader034/viewer/2022051917/6009d45bbfe59131221f347b/html5/thumbnails/30.jpg)
Oppsummering
• Binær addisjon
• Negative binære tall - 2’er komplement
• Binær subtraksjon
• Generell analyseprosedyre
– Halvadder • Binær adder
– Fulladder – Flerbitsadder – Carry propagation / carry lookahead
Omid Mirmotahari 29