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 5 wersji utworzonych przez jednego użytkownika) | |||
Linia 45: | 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"|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_{ | |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> , | :<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_{ | 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 56: | 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 63: | 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 70: | 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 77: | 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 84: | 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 91: | 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 98: | 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 105: | 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 112: | 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 119: | 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 126: | 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 133: | 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 140: | 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 147: | 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 154: | 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 161: | 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 168: | 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 175: | 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 182: | 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 189: | 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 196: | 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 . |