Föreläsning 1, Binära tal och logiska grindar
Föreläsning 1, Binära tal och logiska grindar
Föreläsning 1, Binära tal och logiska grindar
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Moment 2 - Digi<strong>tal</strong> elektronik<br />
<strong>Föreläsning</strong> 1<br />
<strong>Binära</strong> <strong>tal</strong> <strong>och</strong> <strong>logiska</strong> <strong>grindar</strong><br />
Jan Thim<br />
2009-03-05 Jan Thim<br />
F1: <strong>Binära</strong> <strong>tal</strong> <strong>och</strong> <strong>logiska</strong> <strong>grindar</strong><br />
• Innehåll:<br />
– Introduktion<br />
– Talsystem <strong>och</strong> koder<br />
– Räkna binärt<br />
– Logiska <strong>grindar</strong><br />
– Boolesk algebra<br />
2009-03-05 Jan Thim<br />
1<br />
2<br />
1
Analoga signaler<br />
Varför lär vi oss detta?<br />
2009-03-05 Jan Thim<br />
Analoga-digi<strong>tal</strong>a system<br />
Digi<strong>tal</strong>a signaler<br />
Digi<strong>tal</strong>t system<br />
2009-03-05 Jan Thim<br />
Analoga signaler<br />
A/D-omvandlare D/A-omvandlare<br />
3<br />
4<br />
2
Digi<strong>tal</strong>a signaler<br />
• Värden på digi<strong>tal</strong>a siffror är<br />
– 0<br />
– 1<br />
• En digi<strong>tal</strong> signals värde representeras av en spänning<br />
1<br />
0<br />
2009-03-05 Jan Thim<br />
Analog spänning<br />
Analogt jämfört med Digi<strong>tal</strong>t<br />
• Digi<strong>tal</strong>t<br />
– Diskontinuerligt<br />
• Värde (kvantisering)<br />
Variabeln kan endast anta ett begränsat an<strong>tal</strong> värden<br />
• Tid (tidsdiskret)<br />
Variabeln är enbart definierad vid vissa tidpunkter<br />
• Exempel på diskreta värden<br />
En omkopplares position (på/av), digi<strong>tal</strong> logik (0/1), värdet på en sedel<br />
(20/50/100/500 …)<br />
2009-03-05 Jan Thim<br />
5<br />
6<br />
3
Varför digi<strong>tal</strong>t?<br />
• Okänslig för störningar<br />
• Tillförlitlig<br />
• Inte dyrt<br />
• Programmerbart<br />
• Reproducerbart<br />
• Många digi<strong>tal</strong>a funktioner kan integreras i en integrerad<br />
krets<br />
2009-03-05 Jan Thim<br />
Digi<strong>tal</strong> teknik finns överallt<br />
• Elektronik baserad på digi<strong>tal</strong>teknik används i många<br />
olika tillämpningar<br />
– Bilmotorer<br />
– Mikrovågsugnar<br />
– Digi<strong>tal</strong>a ur<br />
– Mobiltelefoner<br />
– Videospel<br />
– Etc. etc.<br />
2009-03-05 Jan Thim<br />
7<br />
8<br />
4
<strong>Binära</strong> <strong>tal</strong>systemet<br />
• Binärt<br />
– Positionssystem<br />
– Två symboler används, B = { 0, 1 }<br />
– <strong>Binära</strong> <strong>tal</strong> gör det lätt att bygga elektronik baserade på<br />
elektroniska omkopplare<br />
– En algebra utvecklad av Boole gör det lätt att hantera <strong>logiska</strong><br />
uttryck baserade på binära <strong>tal</strong><br />
2009-03-05 Jan Thim<br />
Representera positiva hel<strong>tal</strong><br />
• För positiva hel<strong>tal</strong>:<br />
ex., Decimalt <strong>tal</strong><br />
= N<br />
∑ − q 1<br />
i = 0<br />
2009-03-05 Jan Thim<br />
i<br />
ib s<br />
2 1 0<br />
( 234 ) 10 = s 2 b + s1b<br />
+ s 0 b<br />
låt b = 10, S = { 0, 1, K , 8, 9}<br />
2<br />
1<br />
0<br />
( 234 ) 10 = 2•<br />
10 + 3•<br />
10 + 4•<br />
10<br />
( 234 ) 10 = 2•<br />
100 + 3•<br />
10 + 4•<br />
1<br />
( ) =<br />
200 + 30 + 4<br />
234 10<br />
9<br />
10<br />
5
Representera positiva hel<strong>tal</strong><br />
• exempel, Binärt <strong>tal</strong> (basen 2)<br />
3 2 1 0<br />
( 1011) 2=<br />
s 3b<br />
+ s2b<br />
+ s1b<br />
+ s0b<br />
låt b = 2, S = { 0, 1}<br />
3 2 1 0<br />
( 1011) 2=<br />
1•<br />
2 + 0 • 2 + 1•<br />
2 + 1•<br />
2<br />
( 1011) 2=<br />
1•<br />
( 1000)<br />
2+<br />
0 • ( 100)<br />
2+<br />
1•<br />
( 10)<br />
2+<br />
1•<br />
( 1)<br />
2<br />
( 1011) 2=<br />
( 1)<br />
10 • ( 8)<br />
10+<br />
( 0)<br />
10 • ( 4)<br />
10+<br />
( 1)<br />
10•<br />
( 2)<br />
10+<br />
( 1)<br />
10•<br />
( 1)<br />
10<br />
( 1011 ) = ( 8+<br />
2+<br />
1)<br />
= ( 11)<br />
10<br />
b<br />
2<br />
=<br />
F = s<br />
10<br />
− 1<br />
10<br />
2009-03-05 Jan Thim<br />
Exempel på decimal <strong>tal</strong><br />
b<br />
−1<br />
+ s<br />
− 2<br />
b<br />
− 2<br />
2009-03-05 Jan Thim<br />
+ s<br />
− 3<br />
b<br />
I det här exemplet så ser vi på ett<br />
decimalt <strong>tal</strong> som har tre siffror till<br />
höger om decimalpunkten<br />
− 3<br />
−1<br />
−2<br />
−3<br />
( 0.<br />
625 ) 10 = 6•10<br />
+ 2•10<br />
+ 5•10<br />
( 0. 625 ) 10 = 6•0<br />
. 1+<br />
2•0<br />
. 01+<br />
5•0<br />
. 001<br />
( 0. 625 ) 10 = 0.<br />
600 + 0.<br />
0200 + 0.<br />
005<br />
11<br />
12<br />
6
Exempel på <strong>Binära</strong> ”decimal<strong>tal</strong>”?<br />
b = 2<br />
−1<br />
−2<br />
−3<br />
( 0.<br />
101)<br />
= 1•2<br />
+ 0•2<br />
+ 1•2<br />
2<br />
1 1 1<br />
0 2= 1•<br />
+ 0•<br />
+ 1•<br />
2 4 8<br />
( . 101)<br />
( 0 . 101)<br />
= ( 0.<br />
100)<br />
2+<br />
( 0.<br />
000)<br />
2+<br />
( 0.<br />
001)<br />
2<br />
2<br />
2009-03-05 Jan Thim<br />
Procedur för bas-konvertering<br />
Exempel: Omvandla 57 10 till binärt <strong>tal</strong><br />
2009-03-05 Jan Thim<br />
kvot rest<br />
57 / 2 = 28 1<br />
28 / 2 = 14 0<br />
14 / 2 = 7 0<br />
7 / 2 = 3 1<br />
3 / 2 = 1 1<br />
1 / 2 = 0 1<br />
Svar: 57 10 = 111001 2<br />
Minst signifikanta biten<br />
(eng. Least Significant Bit)<br />
Mest signifikanta biten<br />
(eng. Most Significant Bit)<br />
13<br />
14<br />
7
Att tänka på vid omvandling<br />
• Syftet med binär representation är att erhålla <strong>tal</strong> i ett<br />
format som passar digi<strong>tal</strong> logik<br />
• Ju större noggrannhet ett binärt <strong>tal</strong> har desto fler bitar<br />
krävs mer digi<strong>tal</strong>a kretsar<br />
• Alla <strong>tal</strong> i en bas kan INTE representeras exakt i en<br />
annan bas (avrundningsfel)<br />
2009-03-05 Jan Thim<br />
<strong>Binära</strong>, Ok<strong>tal</strong>a <strong>och</strong> Hexadecimala <strong>tal</strong><br />
• Det är lätt att konvertera binära <strong>tal</strong> till andra, mer<br />
lättarbetade format genom att gruppera bitar<br />
tillsammans <strong>och</strong> sedan konvertera till lämplig bas<br />
– Ok<strong>tal</strong>a <strong>tal</strong> S={ 0, 1, ... , 7 }, basen = 8<br />
• 3-bitars grupper<br />
– Hexadecimal S={ 0, ... , 9, A, B, C, D, E, F }, basen = 16<br />
• 4-bitars grupper<br />
2009-03-05 Jan Thim<br />
15<br />
16<br />
8
Exempel: Binär till Ok<strong>tal</strong> omvandling<br />
N2<br />
= 1010110100.<br />
1<br />
gruppera i 3-<br />
bitars grupper från " decimal"-punkten<br />
N2<br />
= 1010110100<br />
. 1<br />
fyll ut med nollor för att få ett ok<strong>tal</strong>t <strong>tal</strong> (en full grupp)<br />
N2<br />
= 001010110100<br />
. 100<br />
Konvertera varje 3-<br />
bitars grupp<br />
N8<br />
= 1 2 6 4 . 4<br />
N = 1264.4<br />
8<br />
( ) 8<br />
2009-03-05 Jan Thim<br />
Exempel: Binär till hexadecimal<br />
N2=<br />
1010110100.<br />
1<br />
gruppera i 4 - bitars grupper från " decimal"-punkten<br />
N2=<br />
1010110100<br />
. 1<br />
fyll ut<br />
med nollor för att få en komplett grupp<br />
N2=<br />
001010110100<br />
. 1000<br />
Konvertera varje 4 - bitars grupp<br />
N16=<br />
2 B 4 . 8<br />
N = 2B4.8 = 2B4.8<br />
16<br />
( ) 16 ( ) H<br />
2009-03-05 Jan Thim<br />
17<br />
18<br />
9
Viktade koder<br />
• Godtycklig vikt kan tilldelas varje position<br />
– Binary Coded Decimal (BCD)<br />
• 8, 4, 2, 1<br />
• exempel, 1001 = 8 + _ + _ + 1 = 9<br />
2009-03-05 Jan Thim<br />
Icke-viktade koder<br />
• Positionen i <strong>tal</strong>et spelar ingen roll<br />
– För viktade koder har varje position en vikt som multipliceras<br />
med siffran på den positionen<br />
– Den vanligaste icke-viktade koden kallas för Gray kod<br />
2009-03-05 Jan Thim<br />
19<br />
20<br />
10
3-bitars Gray kod<br />
Ordning Kodord<br />
0 0 0 0<br />
1 0 0 1<br />
2 0 1 1<br />
3 0 1 0<br />
4 1 1 0<br />
5 1 1 1<br />
6 1 0 1<br />
7 1 0 0<br />
2009-03-05 Jan Thim<br />
Alfanumeriska koder<br />
• Alfanumeriska koder representerar både<br />
– Decimala siffersymboler<br />
• 0 - 9<br />
– Alfabetets tecken<br />
• A –Z, a –z<br />
– Övriga skrivbara tecken<br />
• T.ex: %, &, ?, *, @<br />
– Styrsymboler<br />
• Blanksteg, ny rad, etc.<br />
– Standardkoder: ASCII, EBCDIC, etc.<br />
2009-03-05 Jan Thim<br />
21<br />
22<br />
11
ASCII<br />
• ASCII kodning<br />
– American Standard Code for<br />
Information Interchange<br />
– ASCII-tabell<br />
• Ger hexadecimal kod<br />
• Rad: minst signifikanta positionen<br />
• Kolumn: mest signifikanta<br />
positionen<br />
• Exempel: ASCII(’C’) = 43 16<br />
2009-03-05 Jan Thim<br />
Negativa <strong>tal</strong><br />
• teckenbit<br />
– Biten längst till vänster (S) representerar <strong>tal</strong>ets tecken<br />
• 1 negativt<br />
• 0 positivt<br />
– Bitarna till höger om teckenbiten är storleken på <strong>tal</strong>et<br />
S ...<br />
q-bitar som representerar storleken av<br />
<strong>tal</strong>et<br />
2009-03-05 Jan Thim<br />
23<br />
24<br />
12
Två-komplement<br />
• Två-komplement representation<br />
– För ett n-bitars <strong>tal</strong><br />
• är vikten för MSB –2n-1 (istället för +2n-1 )<br />
• övriga bitars vikter är samma som för binär kodning<br />
– Procedur för att utföra två-komplement<br />
• invertera samtliga bitar i <strong>tal</strong>et<br />
• addera 1 till <strong>tal</strong>et<br />
– Exempel:<br />
– Bilda två-komplement till 8-bitars <strong>tal</strong>et 00010001 2 (=17 10 )<br />
– 00010001 2<br />
– 11101110<br />
– + 1<br />
– 11101111 2-k = -17 10<br />
2009-03-05 Jan Thim<br />
Addition <strong>och</strong> subtraktion<br />
• Exempel:<br />
3 + 2 = ?<br />
0011<br />
0010<br />
0101 = 510 -1 - 3 = ?<br />
1111<br />
1101<br />
1 1100 = -410 2009-03-05 Jan Thim<br />
7 - 1 = ?<br />
0111<br />
1111<br />
1 0110 = 6 10<br />
2 - 3 = ?<br />
0010<br />
1101<br />
1111 = -110 25<br />
26<br />
13
Multiplikation/Division med 2<br />
• Skifta det binära <strong>tal</strong>et ett steg vänster<br />
0 0 1 0 = +2<br />
0 1 0 0 0 = +4<br />
2009-03-05 Jan Thim<br />
1 1 1 0 = -2<br />
1 1 0 0 0 = -4<br />
Skifta det binära <strong>tal</strong>et ett steg höger<br />
= +4<br />
0 1 0 0 1 1 0 0 = -4<br />
0 0 1 0 = +2<br />
1 1 1 0 = -2<br />
Boolesk Algebra – Definitioner<br />
Konstanter<br />
0 (Falsk)<br />
1 (Sann)<br />
Operationer<br />
+ (ELLER)<br />
· (OCH)<br />
’ (ICKE)<br />
2009-03-05 Jan Thim<br />
Axiom<br />
0 + 0 = 0<br />
1 · 1 = 1<br />
1 + 1 = 1<br />
0 · 0 = 0<br />
0 + 1 = 1 + 0 = 1<br />
1 · 0 = 0 · 1 = 0<br />
0’ = 1<br />
1’ = 0<br />
27<br />
28<br />
14
Räknelagar för en variabel<br />
x + x = x<br />
x · x = x<br />
x + x’ = 1<br />
x · x’ = 0<br />
2009-03-05 V.L = H.LJan<br />
Thim<br />
x + 1 = 1<br />
x · 0 = 0<br />
x + 0 = x<br />
x · 1 = x<br />
(x’)’ = x<br />
Dessa räknelagar kan enkelt visas utifrån axiomen.<br />
Visa att x + x = x<br />
Låt x = 1: 1 + 1 = 1<br />
Låt x = 0: 0 + 0 = 0<br />
Räknelagar för flera variabler<br />
• Associativa lagar<br />
x + (y + z) = (x + y) + z<br />
x·(y·z) = (x·y)·z<br />
Kommutativa lagar<br />
x + y = y + x<br />
x·y = y·x<br />
Distributiva lagar<br />
x·(y + z) = x·y + x·z<br />
x + y·z = (x + y)·(x + z)<br />
2009-03-05 Jan Thim<br />
29<br />
30<br />
15
Räknelagar för flera variabler<br />
• absorptionslagar<br />
x + x·y = x<br />
x·(x + y) = x<br />
Concensuslagen<br />
x·y + x’·z = x·y + x’·z + y·z<br />
De Morgans lag<br />
(x + y)’ = x’ · y’<br />
(x·y)’ = x’ + y’<br />
2009-03-05 Jan Thim<br />
x + x·y = x ·(1 + y) = x ·1 = x<br />
x·(x + y) = x·x + x·y = x + x·y<br />
= x·(1 + y) = x ·1 = x<br />
x + y = x·y<br />
x·y = x + y<br />
Grundläggande <strong>logiska</strong> <strong>grindar</strong><br />
Augustus de Morgan<br />
Namn/operator Symbol Funktion Logisk operation<br />
OCH, eng. AND<br />
.<br />
ELLER, eng. OR<br />
+<br />
ICKE, eng. NOT<br />
’<br />
Z<br />
2009-03-05 Jan Thim<br />
X Y Z<br />
0 0 0<br />
0 1 0<br />
1 0 0<br />
1 1 1<br />
X Y Z<br />
0 0 0<br />
0 1 1<br />
1 0 1<br />
1 1 1<br />
X Z<br />
0 1<br />
1 0<br />
Z = X • Y<br />
Z = X + Y<br />
Z = X’<br />
31<br />
32<br />
16
Grundläggande <strong>logiska</strong> <strong>grindar</strong><br />
Namn/operator Symbol Funktion Logisk operation<br />
NAND<br />
NOR<br />
XOR<br />
⊕<br />
2009-03-05 Jan Thim<br />
X Y Z<br />
0 0 1<br />
0 1 1<br />
1 0 1<br />
1 1 0<br />
X Y Z<br />
0 0 1<br />
0 1 0<br />
1 0 0<br />
1 1 0<br />
X Y Z<br />
0 0 0<br />
0 1 1<br />
1 0 1<br />
1 1 0<br />
Z = X • Y<br />
Z = (X • Y)’<br />
Z = X + Y<br />
Z = (X + Y)’<br />
Z = X ⊕ Y<br />
Olika sätt att representera <strong>logiska</strong><br />
funktioner<br />
• Sanningstabell<br />
• Grindnät<br />
• Boolesk algebra<br />
• Normalform<br />
2009-03-05 Jan Thim<br />
33<br />
34<br />
17
Sanningstabell<br />
A<br />
B<br />
Z = A • B<br />
Ingångar<br />
A B<br />
0 0<br />
0 1<br />
1 0<br />
1 1<br />
2009-03-05 Jan Thim<br />
2009-03-05 Jan Thim<br />
Utgång<br />
Z<br />
0<br />
0<br />
0<br />
1<br />
Z<br />
Grindnät A•B•C A•B•C A•B•C A•B•C f (<br />
A,<br />
B,<br />
C)<br />
= ABC<br />
+ ABC<br />
+ ABC<br />
+<br />
ABC<br />
35<br />
36<br />
18
• Algebraisk manipulering<br />
– Visa att:<br />
Boolesk algebra<br />
x + yz = ( x + y)(<br />
x + z)<br />
( x + y)(<br />
x + z)<br />
= xx + yx + xz + yz<br />
= x + yx + xz + yz<br />
= x + xy + xz + yz<br />
= x + x(<br />
y + z)<br />
+ yz<br />
= x ( 1+<br />
y + z)<br />
+ yz<br />
= x + yz<br />
2009-03-05 Jan Thim<br />
SLUT på <strong>Föreläsning</strong> 1<br />
2009-03-05 Jan Thim<br />
37<br />
38<br />
19