TC Moduł 10: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
m Zastępowanie tekstu – „,...,” na „,\ldots,” |
||
(Nie pokazano 6 wersji utworzonych przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd1.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd1.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Układy cyfrowe cz. 1 | ||
|} | |} | ||
Linia 8: | Linia 8: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd2.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd2.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Omawiane do tej pory układy logiczne to inaczej mówiąc układy cyfrowe konstruowane z bramek i przerzutników. I w zasadzie można z nich zaprojektować i zbudować dowolny układ cyfrowy. Problem jednak leży w tym, że takie postępowanie byłoby bardzo skomplikowane. Dlatego z podstawowych układów logicznych buduje się najpierw tzw. bloki funkcjonalne, a dopiero z nich konstruuje się bardziej złożone układy cyfrowe jak np.: układy przetwarzania sygnałów, układy sterowania, specjalizowane procesory, układy kryptograficzne. | ||
|} | |} | ||
Linia 15: | Linia 15: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd3.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd3.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Wymienione układy znajdują zastosowanie w różnorodnych urządzeniach cyfrowych: telefonia cyfrowa, telewizja cyfrowa, urządzenia multimedialne itp. | ||
|} | |} | ||
Linia 22: | Linia 22: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd4.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd4.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Podstawową techniką w projektowaniu układów cyfrowych jest tzw. synteza strukturalna. Jest to metoda budowania „większego” układu z „mniejszych” podukładów, zwanych blokami funkcjonalnymi (''BF''). W technice układów katalogowych bloki funkcjonalne wykonujące typowe operacje przetwarzania sygnałów cyfrowych były produkowane w postaci modułów scalonych średniej i wielkiej skali integracji. Powszechnie stosowana seria układów scalonych TTL (tzw. seria 74) obejmowała takie układy jak: multipleksery, liczniki, rejestry itp. Układom tym nadawano specyficzne, katalogowe oznaczenia np. 74151 dla multipleksera, 74163 dla licznika itp. Obecnie większość tych układów wchodzi w skład elementów bibliotecznych systemów projektowania układów cyfrowych w postaci tzw. komponentów lub makrobloków. | ||
|} | |} | ||
Linia 29: | Linia 29: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd5.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd5.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Blok funkcjonalny to specjalizowany układ cyfrowy przystosowany do wykonania jednej lub kilku określonych operacji przetwarzania sygnałów binarnych. Operacje te w odniesieniu do monolitycznego lub wyodrębnionego bloku funkcjonalnego nazywane są mikrooperacjami. Blok funkcjonalny realizuje wybraną mikrooperację w wyniku zadania odpowiedniego wektora zmiennych wejściowych, zwanych zmiennymi sterującymi. Dla ustalonej mikrooperacji słowo wejściowe <math>X\,</math> zostanie przetworzone w słowo wyjściowe <math>Y\,</math> i ewentualnie informacja o stanie tego przetwarzania będzie przekazana na zewnątrz za pośrednictwem sygnałów na wyjściach predykatowych. Dodatkowo sekwencyjny blok funkcjonalny jest wyposażony w wejście synchronizujące (zegarowe) <math>clk\,</math>. | ||
|} | |} | ||
Linia 36: | Linia 36: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd6.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd6.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Najogólniejsza klasyfikacja bloków funkcjonalnych uwzględnia bloki kombinacyjne oraz sekwencyjne. Typowe bloki funkcjonalne kombinacyjne to multipleksery, demultipleksery, dekodery, sumatory, komparatory. Typowe bloki sekwencyjne to rejestry i liczniki. | ||
Warto podkreślić, że pojęcie bloku funkcjonalnego, jak też ich klasyfikacja uległo pewnej modyfikacji i powinno być rozumiane ogólniej niż to miało miejsce w technice układów katalogowych. Wobec możliwości zaprojektowania i umieszczenia w bibliotece komputerowego systemu projektowania dowolnego układu cyfrowego – bez potrzeby sztywnych ograniczeń jakie były oferowane w realizacjach katalogowych – w dzisiejszej technice BF może być specjalizowanym układem cyfrowym, którego mikrooperacje zarówno pod względem ilości jak też funkcjonalności definiuje sam użytkownik. | |||
|} | |} | ||
Linia 43: | Linia 45: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd7.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd7.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|'''Multiplekser''' to funkcjonalny blok kombinacyjny, w którym jest <math>N\,</math> wejść informacyjnych (<math>N=2^n\,</math>), <math>n\,</math> wejść adresowych <math>a_{n-1},\ldots,a_0\,</math>, wyjście <math>y\,</math> oraz wejście zezwolenia <math>e\,</math> (''enable''). Multiplekser (MUX) realizuje funkcję <math>y\,</math> opisaną wyrażeniem boolowskim: | ||
:<math>y=e\sum_{k=0}^{N-1} P_k(A)d_k</math> , | |||
gdzie <math>P_k(A)\,</math> oznacza pełny iloczyn zmiennych <math>a_{n-1},\ldots,a_0\,</math>, prostych lub zanegowanych, zgodnie z reprezentacją binarną liczby <math>k\,</math>. | |||
|} | |} | ||
Linia 50: | Linia 56: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd8.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd8.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zakładając, że <math>e = 1</math> dla <math>n = 1</math> (tak zwany MUX 2 : 1) mamy: | ||
:<math>y=\overline{a}d_0+ad_1</math> | |||
W podobny sposób można wyprowadzić wzory dla <math>n = 2</math> (MUX 4 : 1) oraz dla dla <math>n = 3</math> (MUX 8:1). W szczególności na rysunku podany jest schemat multipleksera o dwóch wejściach adresowych. Warto spostrzec, że wzory określające wyjście <math>y\,</math> podają jednocześnie w jaki sposób skonstruowany jest multiplekser z bramek logicznych. | |||
|} | |} | ||
Linia 57: | Linia 67: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd9.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd9.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Multiplekser pracuje jako przełącznik. Dla multipleksera o dwóch wejściach adresowych (jak na rysunku) oznacza to, że jeśli sygnały na jego wejściach adresowych są odpowiednio <math>00\,</math>, to na wyjściu <math>y\,</math> pojawi się sygnał taki jak na wejściu informacyjnym oznaczonym <math>0\,</math>, podobnie dla adresu <math>01\,</math>, będzie to sygnał taki jak na wejściu <math>1\,</math>, itd. | ||
|} | |} | ||
Linia 64: | Linia 74: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd10.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd10.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|'''Demultiplekser''' to układ kombinacyjny o jednym wejściu informacyjnym <math>d\,</math>, <math>n\,</math> wejściach adresowych <math>a_{n-1},\ldots,a_0\,</math>, <math>N\,</math> wyjściach <math>y_0,\ldots,y_{n-1}\,</math> (<math>N=2^n</math>) oraz wejściu zezwalającym <math>e\,</math>. Na wyjściu <math>y_k\,</math> jest realizowana funkcja: | ||
:<math>y_k=eP_k(A)d</math> , | |||
gdzie <math>P_k(A)\,</math> (jak poprzednio) jest pełnym iloczynem zmiennych <math>a_{n-1},\ldots,a_0\,</math>, prostych lub zanegowanych, zgodnie z reprezentacją binarną liczby <math>k\,</math>. | |||
|} | |} | ||
Linia 71: | Linia 85: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd11.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd11.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Demultiplekser też pracuje jako przełącznik, ale jego działanie jest przeciwne do działania multipleksera. W tym przypadku sygnał podany na wejście (informacyjne jest „rozprowadzany” na różne wyjścia. Dla DMUX z rysunku na planszy przy adresie równym <math>00\,</math>, sygnał <math>1\,</math> pojawi się na wyjściu oznaczonym <math>0\,</math>, (a na pozostałych wyjściach wartość logiczna sygnału będzie <math>0\,</math>), przy adresie równym <math>01\,</math>, <math>1\,</math> logiczna pojawi się na wyjściu ozn. <math>1\,</math>. itd. | ||
|} | |} | ||
Linia 78: | Linia 92: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd12.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd12.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Liczba wejść informacyjnych multipleksera (również demultipleksera) rośnie wykładniczo. Z tych powodów nie realizuje się bezpośrednio multiplekserów o dużej liczbie wejść adresowych (np. większej od czterech), a raczej „składa” się je z mniejszych multiplekserów. Przykład takiego kaskadowego połączenia jest pokazany na rysunku. | ||
|} | |} | ||
Linia 85: | Linia 99: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd13.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd13.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Szczególnym przypadkiem demultipleksera jest '''dekoder''', w którym przyjmuje się, że do wejścia <math>d\,</math> zawsze jest dołączony sygnał o wartości logicznej <math>1\,</math>. Dlatego wyjście to nie jest dostępne na zewnątrz układu i w rezultacie symbol graficzny dekodera jest nieco inny. | ||
|} | |} | ||
Linia 92: | Linia 106: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd14.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd14.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Najważniejsze zastosowanie multiplekserów i demultiplekserów jest związane z realizacjami bloków komutacyjnych, czyli elementów umożliwiających proste przełączanie sygnałów, najczęściej wielokrotnych (grupowych). Na rysunku pokazano multiplekser (nazywany multiplekserem grupowym), w którym dwa 4-bitowe sygnały <math>A\,</math> i <math>B\,</math> mogą być dołączane do szyny <math>Y\,</math> w zależności od stanu wejścia adresowego <math>a\,</math>. | ||
|} | |} | ||
Linia 99: | Linia 113: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd15.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd15.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W rezultacie działanie tych układów można uogólnić następująco. Multiplekser MUX przesyła na wyjście <math>Y\,</math> wektor <math>X_j\,</math>, wybrany za pomocą wektora adresowego (adresu) <math>A\,</math>. | ||
Demultiplekser DMUX przesyła wektor wejściowy <math>X\,</math> na wyjście o numerze <math>j\,</math> wskazanym przez wektor adresowy (adres) <math>A\,</math>. | |||
|} | |} | ||
Linia 106: | Linia 122: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd16.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd16.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Dla MUX z rysunku na planszy jego wyjście jest ciągiem <math>000\,</math>, gdyż adres <math>10\,</math> przełącza sygnały z wejść informacyjnych oznaczonych cyfrą <math>2\,</math>. Dla DMUX na wyjściu oznaczonym <math>3\,</math> pojawiają się sygnały z wejść informacyjnych, czyli <math>010\,</math>. | ||
|} | |} | ||
Linia 113: | Linia 129: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd17.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd17.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Multipleksery i demultipleksery/dekodery mogą być stosowane do realizacji funkcji boolowskich. Realizacje takie są szczególnie proste, gdy liczba wejść adresowych multipleksera/demultipleksera jest równa liczbie argumentów funkcji. W takich sytuacjach wystarczy wejścia informacyjne multipleksera reprezentowane wektorami zbioru <math>F\,</math> dołączyć do stałej <math>1\,</math>, a wejścia reprezentujące wektory zbioru <math>R\,</math> dołączyć do stałej <math>0\,</math>. | ||
Na rysunku pokazany jest sposób dołączenia sygnałów logicznych do wejść informacyjnych MUX realizującego funkcję <math>y = \sum(1,7,11,13,14,15)</math>. | |||
|} | |} | ||
Linia 120: | Linia 138: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd18.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd18.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Natomiast realizacja funkcji <math>f = (F, R)</math> na dekoderze wymaga dołączenia odpowiednich wyjść dekodera do wejść bramki <math>OR\,</math>, której wyjście bezpośrednio realizuje funkcję <math>f\,</math>. Na rysunku pokazany jest sposób dołączenia wyjść dekodera do wejść bramki <math>OR\,</math> w celu realizacji funkcji <math>y = \sum(1,7,11,13,14,15)</math>. | ||
Oczywiście w przypadkach, gdy liczba argumentów funkcji jest większa od liczby wejść adresowych multipleksera (demultipleksera) należy zastosować odpowiednią konstrukcję większego multipleksera, wykorzystując do tego celu multiplekser kaskadowy. Nie będzie to jednak realizacja najlepsza ze względu na wykładniczy wzrost liczby potrzebnych modułów multiplekserów. | |||
|} | |} | ||
Linia 127: | Linia 147: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd19.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd19.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Operację sumowania arytmetycznego <math>Y = A + B</math> realizuje sumator. Na wyjściu <math>Y\,</math> sumatora powstaje suma liczb binarnych <math>A\,</math> i <math>B\,</math>. Ze zrozumiałych względów suma ta, reprezentowana <math>n\,</math>-bitowym wektorem <math>Y\,</math> może być „przekłamana”, gdy zapis jej wartości wymagać będzie <math>n+1\,</math> bitów. Sytuacja taka jest sygnalizowana na wyjściu przeniesienia <math>c_n\,</math> sygnałem logicznym <math>1\,</math>, a wektor <math>(c_n, Y)\,</math> jest prawidłowym wynikiem. | ||
|} | |} | ||
Linia 134: | Linia 154: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd20.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd20.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W najprostszej realizacji sumator jest zbudowany z kaskadowo połączonych sumatorów jednobitowych, o wejściach <math>a_i, b_i, c_i\,</math>, wyjściach <math>y_i\,</math> oraz <math>c_{i+1}\,</math>. Dodatkowo na rysunku pokazano działanie sumatora 4 bitowego w przypadku, gdy na jego wejścia podano liczby <math>9\, (1001)\,</math> oraz <math>7\, (0111)\,</math>. Wtedy wynik należy odczytywać jako <math>10000\,</math> (czyli <math>16\,</math>), gdzie <math>1\,</math> logiczna jest wytworzona na wyjściu przeniesienia <math>c_4\,</math>. | ||
|} | |} | ||
Linia 141: | Linia 161: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd21.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd21.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Działanie pojedynczego ogniwa sumatora można opisać funkcjami boolowskimi <math>y_i, c_{i+1}\,</math> podanymi w tablicy. Po odpowiedniej minimalizacji (na tablicach Karnaugha) i stosownych przekształceniach uzyskuje się wyrażenia boolowskie bezpośrednio opisujące strukturę pojedynczego ogniwa sumatora (często zwanego sumatorem pełnym i oznaczanego ''FA – Full adder''. | ||
|} | |} | ||
Linia 148: | Linia 168: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd22.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd22.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Sumator może być wykorzystany do realizacji operacji odejmowania <math>Y = A - B</math>. W tym celu wystarczy wejścia <math>B\,</math> dołączyć do wejść sumatora za pośrednictwem inwertorów, ale najlepiej jest negować poszczególne bity wektora <math>B\,</math> za pośrednictwem dwuwejściowych bramek <math>EXOR\,</math>, w sposób pokazany na rysunku. Sposób takiej konstrukcji wynika z zasad działania na liczbach zapisanych w kodzie uzupełnień do dwóch. | ||
|} | |} | ||
Linia 155: | Linia 175: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd23.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd23.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Wartość dziesiętna <math>A_D\,</math> liczby przedstawionej za pomocą wektora zapisanego w NKB <math>A_{NKB}=\left \langle a_{n-1} ,\ldots, a_j ,\ldots, a_0\right \rangle</math> wynosi: | ||
:<math>A_D=L(A_{NKB})=\sum_{j=0}^{n-1} a_j2^j</math> | |||
Za pomocą wektora <math>A\,</math> o długości <math>n\,</math> można przedstawić dziesiętne liczby dodatnie z zakresu <math>0\le A_D\le 2^n - 1</math>. | |||
Kod NKB służy do zapisu całkowitych liczb dodatnich. Zapis zarówno liczb dodatnich, jak i ujemnych umożliwia często stosowany kod <math>U2\,</math> (kod uzupełnieniowy do dwóch): | |||
<math>A_D=L(A_{U2})=-a_{n-1}2^{n-1}+\sum_{j=0}^{n-2} a_j2^j</math> | |||
|} | |} | ||
Linia 162: | Linia 190: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd24.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd24.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W kodzie <math>U2\,</math> <math>A_{U2} =\left \langle a_{n–1} ,\ldots, a_j ,\ldots, a_0\right \rangle</math>, gdzie <math>a_j\in \{0,1\}</math>. Bit <math>a_{n-1}\,</math> można interpretować jako bit znaku. Jeśli <math>a_{n-1}=0</math>, to liczba jest dodatnia; jeśli <math>a_{n-1}=1</math> to liczba jest ujemna; pozostałe bity stanowią uzupełnienie (różnicę) wartości liczby do najwyższej potęgi liczby <math>2\,</math>. | ||
|} | |} | ||
Linia 169: | Linia 197: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd25.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd25.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Działanie układu z rys. na planszy można opisać: | ||
<math>A+(B\oplus c_0)+c_0</math> ,gdzie <math>c_0\in \{0,1\}</math> | |||
Dla <math>c_0=0</math> mamy <math>Y = A + B</math>, czyli sumowanie. Dla <math>c_0=1</math> mamy <math>Y = A+\overline{B}+1</math>; <math>\overline{B}+1</math> oznacza liczbę <math>-B\,</math> w kodzie <math>U2\,</math>, zatem <math>Y = A - B\,</math>. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 176: | Linia 207: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd26.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd26.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Rysunek na planszy przedstawia 4 bitowy sumator przystosowany do wykonywania operacji odejmowania. Przekroczenie zakresu wykonywanego działania jest sygnalizowane sygnałem nadmiaru OVR (''overflow''): <math>OVR = c_n\oplus c_{n–1}</math> | ||
|} | |} | ||
Linia 183: | Linia 214: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd27.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd27.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Komparator umożliwia porównanie dwóch liczb n-bitowych i określenie czy są sobie równe, a także która z liczb jest większa, a która mniejsza. Stan logiczny <math>1\,</math> na wyjściach <math>Y_r\,</math>, <math>Y_w\,</math> lub <math>Y_m\,</math>, określa odpowiednio sytuację gdy: <math>A=B</math>, <math>A>B</math>, <math>A<B</math>. | ||
|} | |} | ||
Linia 190: | Linia 221: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M10_Slajd28.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M10_Slajd28.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Przeanalizujmy przedstawiony na rysunku komparator 4-bitowy, gdzie: <math>A=a_3a_2a_1a_0</math> , <math>B=b_3b_2b_1b_0</math> , a ponadto: | ||
:<math>Y_r=1</math> tylko wtedy, gdy <math>A=B</math> , | |||
:<math>Y_m=1</math> tylko wtedy, gdy <math>A<B</math> , | |||
:<math>Y_w=1</math> tylko wtedy, gdy <math>A>B</math> , | |||
Oznaczając <math>i_k=\overline{a_k\oplus b_k}</math> poszczególne wyjścia komparatora można opisać zależnościami: | |||
:<math>Y_r=i_3i_2i_1i_0</math> | |||
:<math>Y_w=a_3\overline{b}_3+i_3a_2\overline{b}_2+i_3i_2a_1\overline{b}_1+i_3i_2i_1a_0\overline{b}_0</math> | |||
:<math>Y_m=\overline{Y_r+Y_w}</math> | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |
Aktualna wersja na dzień 21:58, 15 wrz 2023
![]() |
Układy cyfrowe cz. 1 |
![]() |
Wymienione układy znajdują zastosowanie w różnorodnych urządzeniach cyfrowych: telefonia cyfrowa, telewizja cyfrowa, urządzenia multimedialne itp. |
![]() |
Działanie układu z rys. na planszy można opisać:
,gdzie Dla mamy , czyli sumowanie. Dla mamy ; oznacza liczbę w kodzie , zatem . |