Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Forelesning 4
Binær adder m.m.
2
Hovedpunkter
• Binær addisjon • 2’er komplement • Binær subtraksjon • BCD- og GRAY-code • Binær adder
• Halv og full adder • Flerbitsadder • Carry propagation / carry lookahead
3
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
Binær addisjon
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
4
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
5
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:
6
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
7
Binær subtraksjon
Eksempel:
0 0 1 1 0 1 0 0
1 = 1 0 1
3 8
-5 -
= + +
Betyr negativt tall
8
BCD-kode
Binary coded decimal (BCD)
En kode som er en mellomting mellom binærkode og desimalkode
Lett å visualisere flere siffer på desimale display
BCD
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 0 0 0 1 0 0 1
0
0
0 0 0
0 0 0 0 0 0 1
3
0 1 2
4 5 6 7 8 9 0
1 1 1 2
0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0 0 0 1 0 0 1 0 0 0 0 1
0 0 1 1
0 0 0 1 0 0 0 1
2
2 2
3
1 2
0 0 1 0
0 0 1 0 0 0 0 1
0 0 1 1
0 0 0 1 0 0 0 1
5
5 5
3
1 2
0 1 0 1
0 1 0 1 0 1 1 0
Desimal
9
Gray-kode
Kun ett bit forandrer verdi når tallet inkrementeres/dekrementeres
Gray
0 0 1 0
0 0 0 0 0 0 1 0 0 1 1
0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1
0
0
0 0 0
0 0 0 0 0 0 1
3
0 1 2
4 5 6 7 8 9 0
1 1 1 2
1 1 1 1 1 1 0 1 1 0 1 0
Desimal
Spesielt gunstig ved overførsel av data mellom asynkrone system hvis man ikke har request/acknowledge
1 3 1 4 1 5
1 0 1 1 1 0 1 0 1 0 0 0
10
Generell analyseprosedyre for digitale kretser
1) Sett funksjonsnavn på ledningene 2) Finn funksjonene 3) Kombiner funksjonsuttrykkene
11
T2
T1
F´2
F2
F1
T3
Eksempel 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
12
En av de mest brukte digitale kretser
Binær adder
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...
13
Ønsker å designe en generell binær adder
Funksjonelt eksempel
Adder to tall A=5 og B=13:
Binær adder
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
14
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
15
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
16
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
17
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
18
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
19
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
20
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
21
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
22
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
23
Menteforplantning
4-bits binær adder
Halv adder
Full adder
Full adder
Full adder
C1 C2 C3
C4
24
Menteforplantning
Portforsinkelse gir menteforplantning (rippeladder)
Adderer 0101 og 1011
Halv adder
Full adder
Full adder
Full adder
0 0 0 0 0 0 0 0
0 0 0 0 0
0 0 0
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
25
”Carry Lookahead”
Ønsker å unngå menteforplantning – gir økt hastighet
Gi – generate: gir alltid mente ut hvis Ai=1 og Bi=1
Pi – propagate: påvirker menteforplantningen
26
”Carry Lookahead”
Si = Pi ⊕ Ci
Ci+1 = Gi + PiCi
27
”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
28
”Carry Lookahead” generator
Rett fram implementasjon av C1, C2, C3
29
”Carry Lookahead” adder
4-bits Carry Lookahead adder med input carry C0
30
Oppsummering
• Generell analyseprosedyre
– Halvadder • Binær adder
– Fulladder – Flerbits adder – Carry propagation / carry lookahead
Portforsinkelse Porters elektriske egenskaper
32
Hovedpunkter
– Portforsinkelse • Elektriske egenskaper
– Fanout
33
Portforsinkelse
Portforsinkelse skyldes parasittiske kapasitanser i systemet
Portforsinkelse (propagation delay) er et mål på hvor lang tid det tar før utgangen til en port reagerer på en logisk forandring på inngangen
Portforsinkelsen er gitt av driveregenskapene til porten samt hvor stor kapasitans det er på utgangen
Kapasitansen på en utgang er vanligvis dominert av kapasistansene til inngangene utgangen er koblet til
34
Portforsinkelse
A
B
tPHL
tPHL – portforsinkelse for utgang HØY til LAV
tPHL må generelt ikke være lik tPLH
tPLH
tPLH – portforsinkelse for utgang LAV til HØY
A B 1
35
Portforsinkelse
Elektrisk model for portutgang / portinngang. LAV til HØY transisjon (CMOS)
RC-ledd
CMOS portinnganger kan elektrisk sett modelleres ved en kondensator
1 1 C
R
36
Portforsinkelse
A B
Typisk inngangs-kapasitans for HC logikk er ca. 10pF
Kapasitanser i parallell adderes (større porforsinkelse)
10pF
10pF
10pF
10pF 10pF
CB = 50pF
37
Portforsinkelse
A
B
tPLH tPHL
A
B
tPLH tPHL
A B
A B
38
Kritisk vei
Sn
Cn
Bn
An
Cn-1
”Worst case” forsinkelse / kritisk vei i en krets bestemmes grovt sett av maks. antall porter (nivåer) ett signal må gjennomløpe
Nivå 1 Nivå 2 Nivå 3
39
Fanout
Fanout: Maksimum antall TTL innganger som kan kobles til en utgang
Skyldes at TTL kretser trekker strøm på inngangene
40
Datablad - CD74HC08
Portforsinkelse, inngangskapasitans, fanout osv. finner man i databladet for porten
Hullmontert
Overflate-montert