30
INF1400 Kombinatorisk Logikk

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

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

”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

”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

”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

”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

”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

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

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

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