UKŁADY KOMUTACYJNE, KODY KONWERSJI LICZB
WSTĘP
W systemach liczących; w systemach transmisji, przetwarzania danych i w wielu innych urządzeniach cyfrowych istnieje problem kodowania i dekodowania informacji polegający na znajdowaniu przejścia z jednego sposobu zapisu informacji do innego, w danej chwili najodpowiedniejszego. Celem ćwiczenia jest poznanie zasad budowy układów służących do tych zadań. Reguły uporządkowujące poszczególne kombinacje zmiennych nazywamy kodem. Parametrami określającymi kod są długość M oraz pojemność P. Długość M jest liczbą bitów informacji labo liczbą zmiennych, pojemność P jest liczbą kombinacji wartości zmiennych występujących w kodzie. W zależności od parametru P można wyróżnić:
kody zupełne,
kody niezupełne.
Kod zupełny zawiera wszystkie możliwe kombinacje wartości zmiennych, natomiast kod niezupełny nie wykorzystuje wszystkich kombinacji. Inny podział wyróżnia:
kody systematyczne,
kody niesystematyczne.
Kody systematyczne tworzy się na podstawie reguły formalnej, w której każda kombinacja wartości zmiennych jest zdefiniowana w sposób jednoznaczny. Kody niesystematyczne wymagają podania tabeli określającej kolejność poszczególnych kombinacji występujących w dowolny porządku. Do kodów systematycznych zaliczamy między innymi wszystkie kody wagowe, do kodów niesystematycznych zaliczymy kod Wattsa, dalekopisowy i inne [2,5,7]. Spośród wielu sposobów kodowania wartości zmiennych w układach cyfrowych najczęściej stosuje się dwójkowy system kodowy i jego szczególny przypadek: system dwójkowo-dziesiętny. Do układów komutacyjnych systemów cyfrowych zaliczamy:
konwertery kodów (w tym kodery i dekoder),
demultipleksery,
multipleksery.
Konwerterem nazywamy układ służący do przekształcania jednego kodu w inny. Szczególnym przypadkiem konwertera jest dekoder przekształcający dowolny kod w kod "1 z N" oraz koder (zwany również enkoderem) zmieniający kod "1 z N" na żądany kod. Szczególny rodzaje dekoderów są demultipleksery oraz multipleksery zwane popularnie wybierakami bezstykowymi.
PROGRAM ĆWICZENIA:
Zaprojektować dekoder trzybitowego kodu dwójkowego na kod "1 z 8", na którego wyjściach aktywny jest niski poziom logiczny. Zmontować układ i zilustrować jego pracę przebiegami czasowymi wartości zmiennych od y0 do y7.
Zaprojektować dekoder kodu dwójkowego na kod "1 z 10" nie odrzucający stanów f przy niski poziomie aktywnym wartości zmiennych wyjściowych. Narysować przebiegi czasowe wartości zmiennych.
Zbudować układ z Rys. 3-4, sprawdzić i opisać jego działanie.
Zbudować wielobitowy multiplekser umożliwiający przekazanie szesnastu bitów informacji porcjami czterobitowymi. Sprawdzić i opisać działanie układu.
Zbudować i sprawdzić działanie zadanego przez prowadzącego ćwiczenie konwertera C/C.
Rys. 2-1 Układ sterowania multiplekserem: Z - zadajnik adresów, X - wejście multipleksera, Y - wyjście multipleksera
Na Rys. 2-1 przedstawiono schemat blokowy układu zawierającego koder i multiplekser. Wektor Z reprezentuje nadajniki, wektor X zmienne wejściowe multipleksera. Naciśnięcie pierwszego przycisku zadającego ma połączyć pierwsze wejście multipleksera z wyjściem yi. Załączanie kolejnych zadajników ma łączyć odpowiednie wejścia multipleksera z jego wyjściem. Zbudować taki układ, zilustrować jego działania przebiegami czasowymi: Z, X, Y.
ZAWARTOŚĆ ĆWICZENIA
Kody dwójkowe i dwójkowo-dziesiętne
M bitów informacji, odpowiadających wartościom M zmiennych, tworzy tzw. słowo dwójkowe. Jedno słowo złożone z M bitów może reprezentować 2M różnych elementów informacji. Zakodowanie informacji pozwala na zmniejszenie liczby torów transmisji potrzebnych do przesłania tej informacji. Dekodowanie oznacza powrót do systemu pierwotnego. W urządzeniach cyfrowych dokonuje się licznych operacji na słowie dwójkowym. Wynik tej operacji musi być przetworzony do postaci czytelnej dla odbiorcy (dekodowanie stanu liczników, rejestrów itp.). Tworzenie różnych kodów ma na celu uproszczenie takich operacji jak:
dodawanie,
odejmowanie,
mnożenie,
dzielenie dwójkowe,
detekcja i korekcja błędów transmisji i innych.
W związku z powszechnie stosowanym dziesiętnym systemem liczenia najczęściej spotyka się kody dwójkowo-dziesiętne. Większość działań w urządzeniach cyfrowych sprowadza się do operacji arytmetycznych. W kodzie dwójkowo-dziesiętnym cyfry od 0 do 9 przedstawione są zwykle za pomocą czterobitowych liczb binarnych, przy czym każdemu bitowi może być przyporządkowana pewna waga. Wybrane kody dwójkowe liczb dziesiętnych zestawiono w Tab. 3-1. Oprócz omówionych kodów dwójkowo-dziesiętnych istnieją kody dwójkowe zawierające często różną od czterech liczbę bitów informacji i tworzące różną od dziesięciu liczbę słów informacji.
Kod |
BCD |
Aikena |
Exces 3 |
Pseudo- |
"1 z 10" |
Cyfra |
8 4 2 1 |
2 4 2 1 |
8 4 2 1 |
pierścieniowy |
|
0 |
0 0 0 0 |
0 0 0 0 |
0 0 1 1 |
0 0 0 0 0 |
0 0 0 0 0 0 0 0 0 1 |
1 |
0 0 0 1 |
0 0 0 1 |
0 1 0 0 |
0 0 0 0 1 |
0 0 0 0 0 0 0 0 1 0 |
2 |
0 0 1 0 |
0 0 1 0 |
0 1 0 1 |
0 0 0 1 1 |
0 0 0 0 0 0 0 1 0 0 |
3 |
0 0 1 1 |
0 0 1 1 |
0 1 1 0 |
0 0 1 1 1 |
0 0 0 0 0 0 1 0 0 0 |
4 |
0 1 0 0 |
0 1 0 0 |
0 1 1 1 |
0 1 1 1 1 |
0 0 0 0 0 1 0 0 0 0 |
5 |
0 1 0 1 |
1 0 1 1 |
1 0 0 0 |
1 1 1 1 1 |
0 0 0 0 1 0 0 0 0 0 |
6 |
0 1 1 0 |
1 1 0 0 |
1 0 0 1 |
1 1 1 1 0 |
0 0 0 1 0 0 0 0 0 0 |
7 |
0 1 1 1 |
1 1 0 1 |
1 0 1 0 |
1 1 1 0 0 |
0 0 1 0 0 0 0 0 0 0 |
8 |
1 0 0 0 |
1 1 1 0 |
1 0 1 1 |
1 1 0 0 0 |
0 1 0 0 0 0 0 0 0 0 |
9 |
1 0 0 1 |
1 1 1 1 |
1 1 0 0 |
1 0 0 0 0 |
1 0 0 0 0 0 0 0 0 0 |
Tab. 3-1 Wybrane kody dwójkowe liczb dziesiętnych
Dekodery
Jak już wspomniano, dekoder przekształca określony kod wejściowy o długości M na kod wyjściowy "1 z N". Dekoder ma więc N wyjść, przy czym każdemu ze słów wejściowych jest przyporządkowany sygnał aktywny (1 lub 0) pojawiający się tylko na jednym z N wyjść, pozostałe zmienne wyjściowe mają wartość przeciwną. Przykład prostego dekoder słów trzybitowych na informację w kodzie "1 z 8" przedstawiono na Rys. 3-1.
Rys. 3-1 Schemat logiczny dekodera trzybitowego
Do kolejnych kombinacji zmiennych wejściowych od 000 do 111 otrzymujemy wartość 1 na kolejnych wyjściach od y0 do y7. Na wyjściu y0 dostajemy wartość 1 dla kombinacji wejść równej ~x2~x1 ~x0, przy czym na pozostałych wyjściach jest wartość 0. W większości układów TTL, z którymi współpracują dekodery, poziomem aktywnym zmiennej wejściowej jest zero logiczne, dlatego w scalonych dekoderach TTL przyjęto zasadę zera aktywnego i zamiast bramek AND na wyjściach Yi są bramki NAND; wyjścia dekodera są zanegowane - ~y0, ~y1, ~y2, ..., w związku z tym w tablicy 4.1 zamiast przedstawionych wartości dla kodu "1 z 10" powinny być ich dopełnienia; w miejscach zer pojawić się powinny jedynki, a w miejscach jedynek - zera. Syntezy kodera "1 z N" na dowolny kod binarny oraz dekodera dowolnego kodu binarnego na kod "1 z N" można dokonać za pomocą siatki Karnaugha.
Rys. 3-2 Siatka Karnaugha dla dekodera dwójkowo-dziesiętnego na kod "1 z 10"
Na Rys. 3-2 przedstawiono siatkę Karnaugha dla dekodera kodu dwójkowo-dziesiętnego na kod "1 z 10". Cyfry od 0 do 9 umieszczone w siatce oznaczają sygnał aktywny na wyjściu o tym numerze. Kombinacje wartości zmiennych, które w pracy sprawnego układu nie występują, są zwane "stanami fałszywymi" dekodera. W siatce Karnaugha oznaczono je wartością obojętną "-". Zależnie od potrzeb w miejsce cyfr można wpisać wartość 0 lub 1, co w rezultacie definiuje zmienne ~yi lub yi dekodera. Gdy zmienna wyjściowa ma przyjmować poziom aktywny (niski lub wysoki) tylko dla zdefiniowanych kombinacji wartości zmiennych wejściowych, mówimy, że dekoder ma odrzucać "stany fałszywe". Korzystając z przykładu przedstawionego na Rys. 3-2 i zakładając, że poziom wysoki jest stanem aktywnym wyjść yi, można zapisać funkcje logiczne dla dekodera odrzucającego stany fałszywe:
Dekoder taki generuje wartość 1 na jednym z wyjść od y0 do y9 dla kolejnych kombinacji wartości zmiennych wejściowych (pozostałe zmienne yi przyjmują wartość 0). Kombinacje wartości zmiennych wejściowych, dla których yi nie jest w siatce określona, będą dla tego rozwiązania generowały wartość 0 na wszystkich wyjściach dekodera. Założony wysoki poziom aktywny na wyjściu pojawia się tylko dla zadanych kombinacji wartości zmiennych wejściowych. Jeśli dopuścimy rozwiązanie, w którym stany obojętne można włączyć do wyrażenia yi (tak jak to zaznaczono na Rys. 3-3), to otrzymamy dekoder BCD na kod "1 z 10" nie odrzucający stanów fi:
W licznych elementach scalonych TTL jest produkowany dekoder BCD na kod "1 z 10" (442), w którym sygnałem aktywnym jest niski poziom napięcia wyjściowego. Dekoder 442 odrzuca kombinacje f wartości zmiennych wejściowych. Umiejętne wykorzystanie elementów 442 stwarza liczne możliwości zastosowań. Element 442 może pracować jako dekoder trzybitowy kodu dwójkowego na kod "1 z 8". Realizację takiego dekodera przedstawia rys. 7.3. Wejściom A B C D są przyporządkowane następujące wagi dziesiętne: 1, 2, 4, 8. Zmienna yi jest zanegowana; niski poziom wartości tej zmiennej jest aktywny. Z dwóch elementów 442 można wykonać dekoder dwójkowy na "1 z 16" (Rys. 3-4).
Rys. 3-3 Sposób wykorzystania elementu 7442 jako dekodera binarnego trzybitowego
W układach komputerowych oprócz kodów dwójkowo-dziesiętnych bardzo często stosuje się kod szesnastkowy zwany również heksadecymalnym. W tym kodzie pierwsze dziesięć (0-9) kombinacji wartości zmiennych kodu jest identyczne z czterobitowym kodem 8421. Kolejnych sześć kombinacji numerycznych od 10 do 15 oznacza się początkowymi literami alfabetu odpowiednio od A do F, tzn. A=10, B=11, ..., F=15. Na przykład zapis słowa ośmiobitowego 1000 1111 można przedstawić jako 8F. Zapis ten obok innych bywa na przykład wykorzystywany do kodowania słów mikroprocesorów. Szczegółowa dyskusja tych kodów nie jest tu konieczna ze względu na szczególny charakter ich zastosowań.
Rys. 3-4 Dekoder binarny czterobitowy z dwóch elementów 442
Demultipleksery
Do grupy dekoderów należy również demultiplekser. Demultiplekser to układ komutacyjny o jednym wejściu i N wyjściach ( od y0 do yN-1). Wejście jest połączone z jednym wyjściem zależnie od zadanej kombinacji wartości zmiennych adresowych (A, B, ..., M). Zasadę działania demultipleksera zilustrowano na Rys. 3-5.
Rys. 3-5 Zasada działania demultipleksera
Podstawowym demultiplekserem scalonym jest element 4154 o czterech wejściach adresowych i szesnastu wyjściach. Schemat elementu 4154 oraz jego tabelę zależności przedstawiono na Rys. 3-6 i Tab. 3-2. Demultiplekser 4154 ma podwójne wejście ~x1, ~x2. Wyjścia są zanegowane, a więc na nie wybranych wyjściach jest sygnał 1, na wyjściu wybranym zaś powtarzana jest funkcja x1x2, tzn. na wyjściu wybranym -yi jest sygnał 0, podczas gdy ~x1=0 i ~x2=0. Jeśli na jednym z dowolnych wejść pojawi się sygnał 1, o na wszystkich wyjściach otrzymujemy sygnał 1.
Rys. 3-6 Symbol Dekodera (demultipleksera) 4154
X1 |
X2 |
D |
C |
B |
A |
Y0 |
Y1 |
Y2 |
Y3 |
Y4 |
Y5 |
Y6 |
Y7 |
Y8 |
Y9 |
Y10 |
Y11 |
Y12 |
Y13 |
Y14 |
Y15 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
x |
x |
x |
x |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
x |
x |
x |
x |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
x |
x |
x |
x |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Tab. 3-2 Tabela zależności Dekodera (demultiplekser) 4154
Dekodery sterujące
Przetwarzanie stanów wewnętrznych liczników, rejestrów i innych układów do postaci wygodnej w odczycie wymaga użycia dekoderów o zwiększonej mocy wyjściowej. W serii elementów scalonych TTL produkuje się takie elementy, zwane dekoderami sterującymi (decoder/driver). Dekodery sterujące mogą sterować nie tylko bramkami logicznymi, lecz także takimi urządzeniami jak: wyświetlacze cyfrowe, przekaźniki, tranzystory. Typowymi przedstawicielami tych układów są:
441 - dekoder BCD na kod "1 z 10", sterujący lampą cyfrową NIXIE,
4141, 445, 4145, 446 - dekodery spełniające funkcje identyczne z 441, lecz różniące się nieco parametrami,
447, 448, 449 - dekodery (sterujące) stanów BCD na stany siedmiosegmentowego wskaźnika cyfrowego.
Multipleksery
Multiplekser, zwany również selektorem, jest układem o N wejściach i jednym wyjściu Y. Z wyjściem multipleksera można zewrzeć jedno z dowolnie wybranych wejść. Wyboru połączenia dokonuje się za pomocą wejść adresowych multipleksera. Zasadę działania multipleksera ilustruje Rys. 3-7.
Rys. 3-7 Zasada działania działania multipleksera
W Tab. 3-3 przedstawiono tablicę zależności dla wyjścia y, a na Rys. 3-8 schemat ideowy ośmiowejściowego multipleksera 4151.
0 |
0 |
0 |
X0 |
0 |
0 |
1 |
X1 |
0 |
1 |
0 |
X2 |
0 |
1 |
1 |
X3 |
1 |
0 |
0 |
X4 |
1 |
0 |
1 |
X5 |
1 |
1 |
0 |
X6 |
1 |
1 |
1 |
X7 |
Tab. 3-3 Tablica zależności ośmiobitowego multipleksera
Rys. 3-8 Ośmiobitowy multiplekser: b) schemat ideowy multipleksera 4151
Dodatkowo wejście taktujące -s (strobe) służy do synchronizacji multipleksera; zero na wejściu s pojawia się po ustaleniu wartości zmiennych adresowych. Multiplekser ten jest komutatorem informacji jednobitowej. W praktyce bardzo często istnieje potrzeba komutowania słów wielobitowych. Komutator słowa N-bitowego można wykonać przez równoległe połączenie N komutatorów jednobitowych. Są również produkowane multipleksery do komutowania sygnałów więcej niż jednobitowych. Przykładem może być multiplekser 4153, którego schemat przedstawiono na Rys. 3-9, służący do przełączania czterech sygnałów dwubitowych.
Rys. 3-9 Schemat multipleksera dwubitowego 4153
Kodery
Kodery zamieniają kod "1 z N" na binarny kod wyjściowy. Sygnał aktywny, pojawiający się na jednym z N wejść, zostaje zakodowany w słowo binarne M-bitowe (M wyjść kodera). Korzystając z Tab. 3-3, można określić wyrażenia logiczne opisujące na przykład zmianę kodu "1 z 10" na kod BCD-8421. Jeśli zmiennym wyjściowym przyporządkujemy wagi: A=1, B=2, C=4, D=8, otrzymujemy następujące wyrażenia logiczne:
A= X1+X3+X5+X7+X9,
B= X2+X3+X6+X7,
C= X4+X5+X6+X7,
D= X8+X9.
Analogicznie da się określić pozostałe kodery proste.
Konwertery
Czasem istnieje potrzeba przejścia z jednego rodzaju zapisu informacji na inny, aktualnie bardziej wygodny. Przekształcenie takie odbywa się w układzie zwanym konwerterem (cyfra/cyfra). Schemat blokowy konwertera pokazano na Rys. 3-10.
Rys. 3-10 Schemat blokowy konwertera c/c
Układ o N-wejściach zamienia informację cyfrową na inną postać informacji cyfrowej o M-wyjściach. Korzystając z tablicy 4.1. można dokonać syntezy dowolnego konwertera kodu. W tym celu sporządzamy M siatek Karnaugha o N zmiennych, z których znajdujemy wyrażenia logiczne opisujące konwerter.
Przykład 7.1
Syntezę konwertera kodu BCD 8421 na kod Aikena (2421) przeprowadza się na podstawie danych z Rys. 3-11, z których otrzymujemy następujące zależności:
B0=A0,_ _
B1=A1A2 + A3 + A0A1A2,_
B2=A3 + A2(A0 + A1),
B3=A3 + A2(A0 + A1).
Rys. 3-11 Siatka Karnaugha dla konwertera z kodu BCD-8421 na kod Aikena (2421)
LITERATURA
[1] W. Binkowski, H. Krzyż, J. Piecha: Elektronika analogowa i cyfrowa w zadaniach. Katowice Wydawnictwo Uniwersytetu śląskiego 1981.
[2] J. Kalisz: Cyfrowe układy scalone w technice systemowej. Warszawa MON 1977.
[3] J. Millman, C. Halkias: Układy scalone analogowe i cyfrowe. Warszawa WNT 1976.
[4] P. Misiurewicz, M. Grzybek: Półprzewodnikowe układy logiczne TTL. Warszawa WNT 1979.
[5] J. Siwiński: Układy przełączające w automatyce. Warszawa WNT 1980.
[6] W. Traczyk: Układy cyfrowe automatyki. Warszawa WNT 1974.
[7] F. Wagner: Projektowanie urządzeń cyfrowych. Warszawa WNT 1978.
Instrukcja do ćwiczenia 3 11