« poprzedni punkt |
W praktyce często występuje konieczność konwersji kodów - informacja wejściowa dostępna w jednym kodzie musi być przedstawiona w innym kodzie. Zadanie takie realizują układy określane jako konwertery kodów. W grupie konwerterów kodów wyróżnia się układy dekoderów i enkoderów. W dekoderach wyjściowe słowo kodowe ma więcej bitów niż wejściowe słowo kodowe. W enkoderach wyjściowe słowo kodowe ma mniej bitów niż słowo wejściowe.
Zadania projektowania konwerterów kodów rozwiązuje się podobnie jak i inne zadania projektowania układów logicznych. Na podstawie opisu zadania, w tym przypadku na podstawie informacji o kodach wejściowym i wyjściowym, tworzy się tablice prawdy. Z kolei, dla każdej funkcji wyjściowej określonej w tej tablicy (poszczególne kolumny w części tablicy opisującej wyjścia) określa się postać kanoniczną. Następnie przeprowadza się minimalizację otrzymanych funkcji i rysuje się schemat układu. Proces projektowania zilustrujemy niżej na kilku przykładach.
Przykład - konwerter kodu BCD na kod Graya
Zaprojektować konwerter kodu BCD na kod Graya.
W projektowanym konwerterze na cztery wejścia mają być podawane słowa w kodzie BCD (X3, X2, X1, X0) a na czterech wyjściach (Y3, Y2, Y1, Y0) mają pojawiać się słowa w kodzie Graya. Na rysunku V.7 pokazano tablicę prawdy dla omawianego układu.
Rys. V.7. Tablica prawdy dla konwertera kodu BCD na kod Graya
Dla czterech funkcji wyjściowych układu możemy teraz narysować cztery mapy Karnaugha (rysunek V.8) i znaleźć minimalne postacie funkcji wyjściowych.
Rys. V.8. Mapy Karnaugha dla funkcji wyjściowych konwertera kodu BCD na kod Graya
Ostatecznie funkcje wyjść układu konwertera są następujące
Zauważmy, że jeżeli funkcję zapiszemy w postaci
, równoważnej w tym przypadku postaci
(por. mapę Karnaugha funkcji Y2 z rysunku V.8), to do realizacji konwertera można wykorzystać wyłącznie bramki sumy modulo 2. Narysowanie końcowego układu zostawiamy czytelnikowi (por. przykładowy problem nr 1 na końcu wykładu).
Przykład - konwerter kodu 3 na 8
Zaprojektować układ konwertera kodu 3 na 8 (dekodera 3 ® 8).
W konwerterach tego typu (ogólnie n ® 2n) kodem wejściowym jest n-bitowy kod dwójkowy (NKB), a kodem wyjściowym kod 1 z 2n. W rozwiązywanym przykładzie kodem wejściowym jest trzybitowy kod dwójkowy, a kodem wyjściowym kod 1 z 8. Układ ma więc trzy wejścia (I2, I1, I0) i osiem wyjść (Y0 - Y7). Na rysunku V.9 pokazano tablicę prawdy układu.
Rys. V.9. Tablica prawdy dekodera 3 na 8
Każda z ośmiu funkcji wyjściowych ma postać iloczynu trzywejściowego (,
itd.). Stąd, realizacja układu składa się z ośmiu trzywejściowych bramek AND i trzech negacji sygnałów wejściowych. Narysowanie całego układu pozostawiamy czytelnikowi.
Zaprojektować układ kodera (enkodera) priorytetowego o ośmiu wejściach.
Działanie układu priorytetowego jest następujące. Na wejściach układu może pojawić się dowolna kombinacja zer i jedynek. Poszczególnym wejściom (I0 - I7) przypisane są priorytety, od najmniejszego dla wejścia I0, do największego dla wejścia I7. Zadaniem układu jest określenie numeru wejścia o najwyższym priorytecie spośród tych, na których pojawiły się jedynki logiczne, i przekazanie tego numeru na trzy wyjścia układu (O0 - O2, wyjście O0 jest najmniej znaczące). Pomocnicze wyjście G ma sygnalizować, że w danym momencie nie ma jedynki logicznej na żadnym z wejść układu. Funkcje realizowane przez układ można opisać za pomocą tablicy prawdy pokazanej na rysunku V.10.
Wejścia |
Wyjścia |
0 0 0 0 0 0 0 0 |
0 0 0 1 |
0 0 0 0 0 0 0 1 |
0 0 0 0 |
0 0 0 0 0 0 1 x |
0 0 1 0 |
0 0 0 0 0 1 x x |
0 1 0 0 |
0 0 0 0 1 x x x |
0 1 1 0 |
0 0 0 1 x x x x |
1 0 0 0 |
0 0 1 x x x x x |
1 0 1 0 |
0 1 x x x x x x |
1 1 0 0 |
1 x x x x x x x |
1 1 1 0 |
Rys. V.10. Tablica prawdy układu kodera priorytetowego ośmiowejściowego
Mając gotową tablicę prawdy możemy znaleźć funkcje określające poszczególne wyjścia układu
Zachęcamy czytelnika do narysowania schematu układu i sprawdzenia jego działania na kilku przykładowych kombinacjach sygnałów wejściowych.
Przykład - generator kodu parzystości
Zaprojektować układ generatora kodu parzystości dla słów trzybitowych.
W zastosowaniach, w których istnieje obawa, że nastąpi przekłamanie w słowie bitowym, na przykład w czasie transmisji, stosuje się kody, które pozwalają stwierdzić czy wystąpiło przekłamanie czy nie. Jednym z najprostszych kodów tego typu jest kod parzystości. Istota kodu parzystości polega na tym, że do pierwotnego słowa dodaje się jeden bit równy 0, gdy w słowie jest parzysta liczba jedynek, albo bit 1, gdy w słowie jest nieparzysta liczba jedynek. Działanie generatora kodu parzystości można opisać tablicą prawdy jak na rysunku V.11.
Słowo |
Bit parzystości |
000 |
0 |
001 |
1 |
010 |
1 |
011 |
0 |
100 |
1 |
101 |
0 |
110 |
0 |
111 |
1 |
Rys. V.11. Tablica prawdy generatora kodu parzystości
Funkcja realizowana przez układ ma postać
Bit wyjściowy z generatora kodu parzystości dopisuje się do pierwotnego słowa. Warto zauważyć, że układ generatora parzystości można zbudować korzystając z bramek XOR, na przykład tak jak na rysunku V.12.
Rys. V.12. Realizacja układu generatora kodu parzystości dla trzybitowych słów wejściowych
« poprzedni punkt |