Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

8.

Układy cyfrowe

Opracowali: Mirosław Doleżych i Grzegorz Stępień 1 ETR 8.1


Spis rozdziałów
8.1. Wiadomości wstępne (M. Doleżych).
8.2. Proste układy kombinacyjne (bramki) (M. Doleżych).
8.3. Dekodery (G. Stępień).
8.4. Multipleksery (G. Stępień).
8.5. Układy arytmetyczne (G. Stępień).
8.6. Przerzutniki (G. Stępień).
8.7. Liczniki (G. Stępień).
8.8. Przerzutniki monostabilne (G. Stępień).
8.9. Przetworniki CA i AC (M. Doleżych).
8.10. Pamięci (G. Stępień).
8.11. Układy programowalne (M. Doleżych).
8.12. Mikroprocesory (G. Stępień).

2 ETR 8.1
8.1. Wiadomości wstępne
•Sygnał cyfrowy (logiczny) - dwuwartościowy

Logika pozytywna: L=0=fałsz (false), H=1=prawda (true)


Logika negatywna: L=1=true, H=0=false
W wykładzie stosować będziemy logikę pozytywną.
Opracował Mirosław Doleżych 3 ETR 8.1
Pojedynczy sygnał cyfrowy: 2 kombinacje (2 rozpoznawalne
wartości sygnału); 2 sygnały cyfrowe: 4 kombinacje; 3
n
sygnały: 8 kombinacji. Ogólnie: n sygnałów cyfrowych: 2
kombinacji.
n=8 => 256 kombinacji, n=10 => 1024 kombinacji
n=16 => 65536 kombinacji, n=32 => 4294967296 kombinacji
Układ cyfrowy: układ przetwarzający informację podaną w
postaci cyfrowej.

Symbol ogólny układu cyfrowego o n wejściach i m wyjściach


4 ETR 8.1
Słowo: uporządkowany (ponumerowany) zestaw sygnałów
cyfrowych.
Bit: pojedynczy sygnał cyfrowy w słowie.
Wartość bitu: 0 – niski poziom (L), 1 – wysoki poziom (H) .
Numerowanie bitów w słowie n bitowym: bn-1,bn-2, … b1,b0
bn-1: najbardziej znaczący bit (MSB – most significant bit)
b0: najmniej znaczący bit (LSB – least significant bit)
Słowo zapisuje się od lewej do prawej od MSB do LSB
Bajt: słowo ośmiobitowe.
Stosowane są również oznaczenia: Kb – kilobity, KB – kilobajty, Mb – megabity,
MB – megabajty, Gb – gigabity, GB – gigabajty, gdzie:
K  210  1024 M  220  1048576 G  230  1073741824
np. 64KB  216  65536 bajtów
5 ETR 8.1
•Liczby, kody
Liczby dodatnie i 0 kodowane są najczęściej w słowie
korespondującym z zapisem pozycyjnym, dwójkowym
(binarnym) liczb.
Liczbę zapisaną w słowie o długości n określa wzór:
n 1
Ld   bi  2i
i 0

gdzie cyfra b jest równa 0 lub 1, a wagi cyfr ze wzrostem


i rosną dwukrotnie.
np. liczba binarna 01100111 jest równa
0*128+1*64+1*32+0*16+0*8+1*4+1*2+1*1=103;
00000000b=0d, 11111111b=255d
6 ETR 8.1
Dodawanie liczb binarnych: algorytm jak dla liczb
dziesiętnych (w „słupkach”).
Przykład:

1111 1 przeniesienia
01011101 93d
+ 00111101 61d
——————
10011010 154d

Ponieważ słowo ma ograniczoną długość, to dodanie do


liczby binarnej, której wszystkie cyfry są równe 1 liczby 1
daje w wyniku liczbę 0 (z pominięciem przeniesienia
z pozycji o największej wadze).
Np. 11111111b + 00000001b = 00000000b
7 ETR 8.1
Zapis słów w postaci binarnej zajmuje dużo miejsca i jest
mało czytelny. Często korzysta się z zapisu
szesnastkowego (heksadecymalnego w skrócie hex lub h).
Liczbę w zapisie szesnastkowym określa wzór:
n 1
Ld   ai  16i
i 0

gdzie cyfra a jest równa 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E lub F,


a wagi cyfr ze wzrostem i rosną szesnastokrotnie.
Cyfry A..F odpowiadają kolejnym liczbom:
A = 10d, B = 11d, C = 12d, D = 13d, E = 14d, F = 15d.
W zapisie tym 4 znaki binarne zastępowane są przez
1 znak heksadecymalny.

8 ETR 8.1
Przykłady zapisu szesnastkowego (zwyczajowo wpisuje
się z przodu 0 jeżeli kod zaczyna się od znaków A..F):
1010b = 0Ah = 10d
11111111b = 0FFh = 255d
0111010110111101b = 75BDh = 30141d
11001111000011100111010110111101b = 0CF0E75BDh =
3473831357d
Algorytm dodawania liczb zapisanych szesnastkowo
(w „słupkach”) jest identyczny jak algorytm dodawania liczb
zapisanych dziesiętnie lub binarnie.
W kodzie binarnym i w kodzie heksadecymalnym można
też oczywiście zapisywać dowolne ciągi sygnałów
cyfrowych, które nie mają nic wspólnego z liczbami.

9 ETR 8.1
Dodanie liczby 1 do liczby binarnej o ograniczonej
długości, której wszystkie cyfry są równe 1 daje w wyniku
liczbę 0. Odjęcie od liczby binarnej 0 liczby 1 daje w
wyniku liczbę binarną , której wszystkie cyfry są równe 1.
Sugeruje to że taka liczba może być traktowana jak -1. Dla
słów o długości 8 daje to następujące przypisania:
00000000b = 0d
11111111b = -1d
11111110b = -2d itd.
Kod uzupełnieniowy do 2 (definicja):
Dla liczby binarnej L o długości n
U 2 (L)  2n  L gdy L  0
U 2 (0)  0
10 ETR 8.1
Na przykład dla n = 7, 2  128 :
7

L = 1 => U2 (L) = 128 – 1 = 127d = 1111111b


L = 2 => U2 (L) = 128 – 2 = 126d = 1111110b
L = 31 => U2 (L) = 128 – 31 = 97d = 0110001b
Algorytm zamiany liczby binarnej na jej uzupełnienie do 2:
Mniej znaczące 0 pozostawić bez zmian, najmniej znaczącą 1
pozostawić bez zmian, pozostałe bity zanegować (zamienić na
przeciwne).
Np. L = 28d =0011100b => U2 (L) = 1100100b
Liczby ze znakiem w zapisie uzupełnień do 2 (definicja):
MSB jest bitem znaku: 0 - liczba dodatnia, 1 - liczba ujemna.
Liczby dodatnie i 0 zapisuje się w naturalnym kodzie binarnym.
Liczby ujemne zapisuje się jako znak (1) + uzupełnienie
modułu liczby do 2.
11 ETR 8.1
Przykłady dla liczb zapisywanych w 1 bajcie o postaci
b7 b6 b5 b4 b3 b2 b1 b0 (b7: bit znaku, długość liczby: n = 7):
+5d = 00000101b
-5d = 11111011b => b6…b0: U2 (5)
Kolejne liczby ujemne:
-1d = 11111111b -2d = 11111110b -3d = 11111101b
-4d = 11111100b
Największa liczba dodatnia: +127d = 01111111b
Najmniejsza liczba ujemna: -128d = 10000000b
Algorytm zamiany liczby dodatniej na ujemną lub odwrotnie:
Zanegować wszystkie bity włącznie z bitem znaku i dodać 1.
Przykłady: -1d = 11111111b => 00000000b+1 = 00000001b
5d = 00000101b => 11111010b+1 = 11111011b
12 ETR 8.1
Ułamki – reprezentacja stałoprzecinkowa.
Umowny podział słowa na część całkowitą i część
ułamkową. Wagi części całkowitej w kierunku MSB:
1,2,4,8…, wagi części ułamkowej w kierunku LSB:
1/2,1/4,1/8…
Np. dla 1 bajtu i podziału b7..b3: część całkowita, b2,b1,b0
część ułamkowa:
01111101b  15 d 5
8
Przesunięcie liczby w lewo jest równoważne pomnożeniu
jej przez 2, przesunięcie liczby w prawo jest równoważne
podzieleniu jej przez 2.
Najstarszy bit może być oczywiście bitem znaku.
Znaczenie reprezentacji stałoprzecinkowej jest raczej
historyczne.
13 ETR 8.1
Ułamki – reprezentacja zmiennoprzecinkowa.
Liczba przedstawiana jest w notacji naukowej: L  M  pW
gdzie M – mantysa, W – wykładnik.
Podstawa potęgi p w urządzeniach cyfrowych jest równa 2.
Liczba w urządzeniu cyfrowym kodowana jest jako zestaw
bitów MW. Zarówno mantysa jak i wykładnik są liczbami ze
znakiem w zapisie uzupełnień do 2.
Najstarszy bit mantysy oznacza znak. Kolejne bity mantysy
(w kierunku od MSB do LSB) mają wagi ½; ¼; .. (2-1; 2-2;..)
itd.. Liczba jest znormalizowana gdy mantysa jest ułamkiem
z zakresu [1/2,1).
Wykładnik jest liczbą całkowitą ze znakiem.
Zero zapisywane jest jako M = 0 i W = Wmin.

14 ETR 8.1
Liczba bitów M decyduje o rozdzielczości liczb, liczba bitów
wykładnika decyduje o zakresie liczb. Np. dla wykładnika o
długości 1 bajtu zakres liczb jest:
od 2128  2,9 1038 do 2127  1,7 1038

15 ETR 8.1
Kod BCD (Binary Coded Decimal).
Liczby przedstawiane są w pozycyjnym zapisie
dziesiętnym, a każda cyfra dziesiętna kodowana jest
dwójkowo. Do zapisu cyfr od 0 do 9 potrzeba 4 bitów, zatem
liczba bitów kodu jest wielokrotnością 4. W zakresie
każdych 4 bitów używane są kombinacje od 0000 do 1001.
Kombinacje 1010 do 1111 są zabronione.
Przykład:
1 5 6 8
1568d = 0001 0101 0110 1000BCD
Kod ten stosowany jest w urządzeniach komunikacji z
człowiekiem (np. układy współpracujące z wyświetlaczami).
Liczba bitów kodu BCD potrzebna do zapisania danej liczby
jest zwykle większa od liczby bitów kodu binarnego.
16 ETR 8.1
Kod Gray’a (kod refleksyjny).
Kod ten charakteryzuje się tym, że liczba bitów równych 1 (i
oczywiście równych 0) w kolejnej liczbie zmienia się o 1.
Algorytm zamiany liczby binarnej na kod Gray’a. Od prawej
strony zapisu binarnego (od LSB): jeżeli z lewej strony
danego bitu jest 0 – zapisać dany bit bez zmian, jeżeli z
lewej strony jest 1 – zanegować.
0000b 0000g 0110b 0101g 1100b 1010g
0001b 0001g 0111b 0100g 1101b 1011g
0010b 0011g 1000b 1100g 1110b 1001g
0011b 0010g 1001b 1101g 1111b 1000g
0100b 0110g 1010b 1111g 0000b 0000g
0101b 0111g 1011b 1110g
Stosowany w urządzeniach, w których zmiany na kilku
bitach mogą powodować duże błędy (np. linijka optyczna).
17 ETR 8.1
Kod ASCII (American Standard Code for Information
Interchange).
Kod pierwotnie (lata sześćdziesiąte XX wieku) służył do przesyłania
znaków tekstowych i poleceń kontrolno sterujących w urządzeniach
dalekopisowych. Obecnie jest powszechnie stosowany do kodowania
tekstu w komputerach i urządzeniach mikroprocesorowych.
HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI

1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

2 spacja ! ” # $ % & ‘ ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

18 ETR 8.1
Kod jest 8 – bitowy. Bity b7,b6,b5,b4 zapisano w HEX w pierwszej
kolumnie tabeli; bity b3,b2,b1,b0 zapisano w HEX w pierwszym wierszu
tabeli.
Przykładowo
kod znaku A: 41 hex = 01000001 bin = 65 dec
kod znaku n: 6E hex = 01101110 bin = 110 dec
Pierwsze 32 pozycje zawierają kody kontrolno – sterujące. Bardziej
znane to np. BS – Back Space (cofnięcie o 1 znak), TAB – tabulacja,
LF- Line Feed (następny wiersz), CR – Carriage Return (początek
wiersza, ESC – Escape (rezygnacja).
HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F

0 NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI

1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

2 sp ! ” # $ % & ‘ ( ) * + , - . /

3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

4 @ A B C D E F G H I J K L M N O

5 P Q R S T U V W X Y Z [ \ ] ^ _

6 ` a b c d e f g h i j k l m n o

7 p q r s t u v w x y z { | } ~

19 ETR 8.1
•Funkcje logiczne
Zależność dwuwartościowej zmiennej od dwuwartościowych
zmiennych niezależnych nazywamy funkcją logiczną.
Prawa rządzące wyrażeniami logicznymi (cyfrowymi) opisuje
algebra Boole’a powstała na bazie rachunku zdań
określającego zależności logiczne zdań. Wartości logicznej
„prawda” przypisuje się symbol „1”, a wartości logicznej
„fałsz” przypisuje się symbol „0”. Funkcje logiczne nazywane
są również funkcjami zero – jedynkowymi i używane są do
opisu układów cyfrowych.
Jeżeli w układzie cyfrowym wielkości (sygnały) wyjściowe
zależą wyłącznie od aktualnych wartości (kombinacji)
wielkości (sygnałów) wejściowych, to układ taki nazywamy
układem kombinacyjnym.
20 ETR 8.1
Jeżeli w układzie cyfrowym wielkości wyjściowe zależą nie
tylko od aktualnych wartości wielkości wejściowych, ale i od
poprzednich wartości (sekwencji) wielkości wejściowych, to
układ taki nazywamy układem sekwencyjnym. Układ taki
musi zawierać elementy pamiętające.
Są dwie funkcje jednej zmiennej.
Funkcja tożsamości: y  x
Funkcja negacji: y  x czytaj: nie x
Funkcje logiczne przedstawia się za pomocą tablic ich
wartości nazywanych tablicami prawdy (truth table). Dla
funkcji jednej zmiennej tablice są następujące:
tożsamość: x y negacja: x y
0 0 0 1
1 1 1 0
21 ETR 8.1
Układy realizujące proste funkcje logiczne nazywane są
bramkami. Bramka negacji w skrócie nazywana jest bramką
NIE (w literaturze angielskiej NOT).
Układy cyfrowe przedstawiane są w postaci schematów
zawierających specjalne symbole odpowiadające funkcjom
logicznym. Poniżej zamieszczono symbole funkcji
tożsamości i funkcji negacji. Pierwszy z tych symboli,
identyczny z symbolem wzmacniacza, stosowany jest na
oznaczenie buforów, często stosowanych w układach
cyfrowych dla separacji od układów obciążających.

bufor: negacja (NOT):

22 ETR 8.1
Negacja jest w schematach przedstawiana w postaci kółka.
Kółko negacji zawsze występuje w powiązaniu z innym
symbolem. W tym przypadku z symbolem wzmacniacza.

Ponieważ z punktu widzenia przekształcenia sygnału nie


jest istotne czy negowanie następuje przed wzmocnieniem
czy po, negacja może też być rysowana w postaci
równoważnej:

23 ETR 8.1
Suma logiczna (alternatywa)
Sumą dwóch zmiennych nazywamy funkcję równą 1 wtedy
gdy jedna LUB druga zmienna jest równa 1.
y  x1  x0 lub y  x1  x0
Bramka sumy nazywana jest bramką LUB (OR).
Definicja sumy logicznej rozciąga się na dowolną liczbę
zmiennych niezależnych.
Tablica sumy dwóch zmiennych i symbol graficzny:
x1 x0 y
0 0 0
0 1 1
1 0 1
1 1 1
24 ETR 8.1
Iloczyn logiczny (koniunkcja)
Iloczynem dwóch zmiennych nazywamy funkcję równą 1
wtedy gdy jedna I druga zmienna jest równa 1.
y  x1  x0 lub y  x1  x0
Bramka iloczynu nazywana jest bramką I (AND).
Definicja iloczynu logicznego rozciąga się na dowolną
liczbę zmiennych niezależnych.
Tablica iloczynu dwóch zmiennych i symbol graficzny:
x1 x0 y
0 0 0
0 1 0
1 0 0
1 1 1
25 ETR 8.1
Definicja sumy logicznej może być zmieniona jak niżej:
Sumą dwóch zmiennych nazywamy funkcję równą 0 wtedy
gdy jedna I druga zmienna jest równa 0.
Definicja iloczynu logicznego może być zmieniona jak niżej:
Iloczynem dwóch zmiennych nazywamy funkcję równą 0
wtedy gdy jedna LUB druga zmienna jest równa 0.
Wynika stąd, że suma może być traktowana jak iloczyn, a
iloczyn jak suma (dualizm).
A zatem symbole równoważne bramek sumy i iloczynu to:
bramka OR:

bramka AND:

26 ETR 8.1
Różnica symetryczna
Różnicą symetryczną dwóch zmiennych nazywamy funkcję
równą 1 wtedy gdy jedna zmienna ma wartość przeciwną
do drugiej zmiennej:
y  x1  x0
Bramka różnicy symetrycznej nazywana jest bramką
WYŁĄCZNIE-LUB (EXCLUSIVE-OR, EXOR, XOR).
Tablica różnicy symetrycznej i symbol graficzny:
x1 x0 y
0 0 0
0 1 1
1 0 1
1 1 0
27 ETR 8.1
Spośród wielu możliwych kombinacji funkcji sumy, iloczynu i
negacji wymieńmy dwie szeroko stosowane: negacja sumy
NIE-LUB (NOR) zwana funkcją Pierce’a i negacja iloczynu
NIE-I (NAND) zwana funkcją Sheffera.
NOR: y  x1  x0 NAND: y  x1  x2

28 ETR 8.1
Tablica funkcji NOR i symbole graficzne:
x1 x0 y
0 0 1
0 1 0
1 0 0
1 1 0

Tablica funkcji NAND i symbole graficzne:


x1 x0 y
0 0 1
0 1 1
1 0 1
1 1 0
29 ETR 8.1
Prawa de Morgana:
a  b  a b
a b  a  b
Każdą funkcję kombinacyjną można przedstawić jako sumę
iloczynów jak i jako iloczyn sum (postaci kanoniczne).
Postać iloczynu można przekształcić w postać sumy i
odwrotnie np.
x1  x0  x1  x0  ( x1  x0 )  ( x1  x0 )
Minimalny zbiór rodzajów bramek, z których można
zrealizować dowolną funkcję logiczną tworzy system
funkcjonalnie pełny. System funkcjonalnie pełny tworzą
bramki OR, AND i NOT. System funkcjonalnie pełny tworzy
zbiór złożony wyłącznie z bramek NOR, jak również zbiór
złożony wyłącznie z bramek NAND.
30 ETR 8.1
Algorytm wyznaczania funkcji logicznej w postaci sumy iloczynów z
tabeli funkcji:
Każdy wiersz tabeli, w którym funkcja jest równa 1 dostarcza jednego
iloczynu. Jeżeli w takim wierszu zmienna x ma wartość 0, to
zapisujemy ją w danym iloczynie z negacją, jeżeli ma wartość 1, to
zapisujemy ją bez negacji, jeżeli zmienna x nie ma znaczenia to nie
występuje w danym iloczynie.
Przykład:
x2 x1 x0 y
0 0 0 0
0 0 1 1 x2  x1  x0 
0 1 - 1 x2  x1
1 - - 0

y  x2  x1  x0  x2  x1

31 ETR 8.1
Algorytm wyznaczania funkcji logicznej w postaci iloczynu sum z tabeli
funkcji:
Każdy wiersz tabeli, w którym funkcja jest równa 0 dostarcza jednej
sumy. Jeżeli w takim wierszu zmienna x ma wartość 0, to zapisujemy ją
w danej sumie bez negacji, jeżeli ma wartość 1, to zapisujemy ją z
negacją, jeżeli zmienna x nie ma znaczenia to nie występuje w danej
sumie.
Przykład:
x2 x1 x0 y
0 0 0 0 ( x2  x1  x0 ) 
0 0 1 1
0 1 - 1
1 - - 0 x2

y  ( x2  x1  x0 )  x2

32 ETR 8.1
Używanie symboli równoważnych:
• Podkreślenie znaczenia wartości logicznej. Na przykład, jeżeli jakieś
urządzenie jest aktywowane wysokim poziomem napięcia (włączenie
silnika) to rysujemy schemat tak, aby wyjście aktywujące to urządzenie
było narysowane bez negacji. Odwrotnie dla urządzenia aktywowanego
niskim poziomem napięcia.
• Schemat staramy się rysować tak, aby linia łącząca wyjście z
wejściem z obydwóch stron miała znacznik (kółko) negacji lub nie miała
znacznika.
Taki sposób rysowania schematów zwiększa ich czytelność.

Patrząc na tak narysowany schemat łatwo można powiedzieć:


y jest równe 1 gdy x1 jest równe 1 i x0 jest równe 0 lub gdy x0 jest
równe 0 i x1 jest równe 0.
33 ETR 8.1

You might also like