TC Moduł 2: 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 3 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width=" | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd1.png]] | ||
|valign="top"| | |valign="top"|Układy logiczne – pojęcia podstawowe. | ||
|} | |} | ||
Linia 7: | Linia 7: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd2. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd2.png]] | ||
|valign="top"| | |valign="top"|Podstawą teoretyczną techniki cyfrowej są układy logiczne. Funkcjonalnie układy logiczne klasyfikujemy na układy kombinacyjne i układy sekwencyjne. Wykład rozpoczynamy od układów kombinacyjnych. Układ kombinacyjny jest podstawowym układem logicznym umożliwiającym realizację funkcji boolowskich. Układ kombinacyjny konstruujemy z elementów logicznych po to, aby realizować funkcje lub ich zespoły opisujące bardziej skomplikowane układy cyfrowe. Dlatego rozważania o układach kombinacyjnych rozpoczynamy od pojęcia funkcji boolowskiej. | ||
|} | |} | ||
Linia 14: | Linia 14: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd3. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd3.png]] | ||
|valign="top"| | |valign="top"|Pojęcie funkcji boolowskiej jest pojęciem podstawowym umożliwiającym modelowanie zjawisk fizycznych reprezentowanych jako odwzorowanie ciągów (wektorów) binarnych należących do zbioru '''X''' w ciągi binarne (wektory) ze zbioru '''Y''', gdzie zbiory '''X''', '''(Y)''' są podzbiorami ''n''-krotnego, (m-krotnego) iloczynu kartezjańskiego zbioru '''B''' = {0, 1}. | ||
Formalnie funkcją boolowską zmiennych binarnych <math>x_1,\ldots,x_n</math> nazywamy odwzorowanie <math>f: X \rightarrow Y</math>, gdzie <math>X \subseteq B^n, Y \subseteq B^m</math>. | |||
Jeżeli <math>X = B^n</math>, to funkcję taką nazywamy zupełną; w przeciwnym przypadku jest to funkcja niezupełna, zwana również funkcją nie w pełni określoną. | |||
Najczęściej stosowane reprezentacje funkcji boolowskich to tablica prawdy oraz formuła (wyrażenie) boolowskie. | |||
|} | |} | ||
Linia 22: | Linia 28: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd4. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd4.png]] | ||
|valign="top"| | |valign="top"|Funkcja <math>f</math> może być przedstawiona w postaci tablicy prawdy. Jest to tablica o <math>n+1</math> kolumnach i <math>2^n</math> wierszach. W kolejnych wierszach są zapisywane wszystkie wartości ciągu <math>x_1,\ldots,x_n</math>, czyli wszystkie wektory <math>x</math>. W ostatniej kolumnie podana jest wartość y przyporządkowywana danemu wektorowi lub „–”, jeżeli funkcja dla tego wektora nie jest określona. Kolejne wektory są numerowane, przy czym wartość <math>i</math> podana z lewej strony w dodatkowej kolumnie jest dziesiętnym odpowiednikiem wektora <math>x</math> traktowanego jako liczba w zapisie dwójkowym. | ||
<math> | |||
|} | |} | ||
Linia 30: | Linia 36: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width=" | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd5.png]] | ||
|valign="top"| | |valign="top"|Oto przykłady uproszczonego zapisu funkcji boolowskich. Podane zapisy specyfikują funkcje boolowskie, których wektory wejściowe określone są liczbami dziesiętnymi. | ||
|} | |} | ||
Linia 37: | Linia 43: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width=" | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd6.png]] | ||
|valign="top"| | |valign="top"|Funkcje boolowskie reprezentowane odwzorowaniem <math>f</math>, jakkolwiek możliwe do bezpośredniej realizacji technicznej, nie są najlepszą formą do zastosowań. Znacznie wygodniejsze są reprezentacje funkcji w postaci formuł boolowskich. Ich zaleta wynika przede wszystkim z łatwej realizacji elementów logicznych zwanych bramkami logicznymi, które to elementy stanowią naturalną realizację formuł (wyrażeń) boolowskich, gdzie występują w postaci operatorów. | ||
Formuła boolowska to wyrażenie, w którym zmienne boolowskie połączone są operatorami: <math>+ (OR), \cdot (AND), \bar x (NOT)</math>. Operatory te zdefiniowane są w tabelce podanej na planszy dla działań dwuargumentowych AND i OR i jednoargumentowego NOT, ale ich uogólnienie na operatory wieloargumentowe jest oczywiste. | |||
|} | |} | ||
Linia 44: | Linia 52: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd7. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd7.png]] | ||
|valign="top"| | |valign="top"|Dla funkcji opisanej tablicą prawdy podaną w tabelce na planszy podajemy sposób tworzenia formuły boolowskiej. | ||
|} | |} | ||
Linia 51: | Linia 59: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd8. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd8.png]] | ||
|valign="top"| | |valign="top"|A na tej planszy pokazana jest realizacja tej funkcji na bramkach AND, OR, NOT. | ||
W układzie kombinacyjnym z rysunku na planszy funkcja <math>f</math>, realizowana na jego wyjściu <math>f</math>, reprezentuje odwzorowanie z tabelki prawdy, co łatwo sprawdzić wprowadzając na wejścia układu odpowiednie wektory binarne i obliczając wartość uzyskaną na wyjściu <math>y</math>. Na przykład dla <math>x_1 = x_2 = 0, x_3 = 1</math> na wyjściu bramki AND1 pojawi się sygnał o wartości 1, i w rezultacie wyjście <math>y</math> przyjmie wartość 1. Natomiast dla <math>x_1 = x_2 = x_3 = 0</math> na wyjściach wszystkich bramek AND będzie 0, a więc jednocześnie <math>y</math> przyjmie wartość 0, co jest zgodne z tablicą prawdy. | |||
|} | |} | ||
Linia 58: | Linia 68: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width=" | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd9.png]] | ||
|valign="top"| | |valign="top"|W dwuelementowej algebrze Boole'a wprowadza się też inne działania (operatory). Do najważniejszych z nich należą: zanegowany iloczyn (NAND), zanegowana suma (NOR), suma wyłączająca (tzw. suma modulo 2 lub różnica symetryczna, oznaczana EXOR). Operatorom tym odpowiadają stosowne symbole bramek. | ||
|} | |} | ||
Linia 65: | Linia 75: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika:TC_M2_Slajd10. | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd10.png]] | ||
|valign="top"| | |valign="top"|Nie kwestionowaną zaletą formuł boolowskich jest możliwość ich upraszczania, a co zatem idzie możliwość uzyskiwania realizacji oszczędniejszych z punktu widzenia liczby bramek. Zasady formalne upraszczania formuł boolowskich związane są z prawami i własnościami algebry Boole’a. | ||
Własności stałych: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>a + 0 = a</math><br><br><math>a + 1 = 1</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot 0 = 0</math><br><br><math>a \cdot 1 = a</math> | ||
|} | |} | ||
Własności negacji: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top"|<math>a+\bar a =1</math> | |||
|valign="top"| | |valign="top"|<math>a \cdot \bar a = 0</math> | ||
|} | |} | ||
Podwójna negacja: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top"|<math>\overline{\overline{a}}=a</math> | |||
|valign="top"| | |||
|} | |} | ||
Idempotentność: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>a + a = a</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot a = a</math> | ||
|} | |} | ||
Przemienność: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>a + b = b + a</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot b = b \cdot a</math> | ||
|} | |} | ||
Łączność: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>a + (b + c) = (a + b) + c</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot (b \cdot c) = (a \cdot b) \cdot c</math> | ||
|} | |} | ||
Rozdzielność: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>(a + b) \cdot (a + c) = a + b \cdot c</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot (b + c) = a \cdot b + a \cdot c</math> | ||
|} | |} | ||
Pochłanianie: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>a + a \cdot b = a</math> | ||
|valign="top"| | |valign="top"|<math>a \cdot (a + b) = a</math> | ||
|} | |} | ||
Prawa De Morgana: | |||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
| | |valign="top"|<math>\overline{a+b}=\overline{a} \cdot \overline{b}</math> | ||
|valign="top"| | |valign="top"|<math>\overline{a \cdot b}=\overline{a}+\overline{b}</math> | ||
|} | |||
|} | |} | ||
Linia 140: | Linia 145: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd11.png]] | ||
|valign="top"| | |valign="top"|W algebrze Boole’a, operacje "<math>+</math>" (dysjunkcja) i "<math>\cdot</math>" (koniunkcja) nazywa się również przez analogię do arytmetyki odpowiednio dodawaniem i mnożeniem. Operacje dodawania i mnożenia są przemienne oraz rozdzielne względem siebie. Elementy binarne 0 oraz 1 spełniają rolę elementu neutralnego odpowiednio względem operacji dodawania i mnożenia. Dla każdego elementu <math>a</math> istnieje element <math>\overline{a}</math>, nazywany negacją, spełniający odpowiednie własności. | ||
Starszeństwo działań w algebrze Boole'a jest takie same jak w zwykłej arytmetyce (np. wyrażenie <math>a + bc</math> interpretujemy jako <math>a + (bc)</math>, a nie jako <math>(a + b)c</math>, a nawiasy są opuszczane tam, gdzie nie prowadzi to do nieporozumień; opuszczamy także znak mnożenia "<math>\cdot</math>", a zamiast symbolu "<math>+</math>", często używamy symbolu <math>\lor</math>. | |||
|} | |} | ||
Linia 147: | Linia 155: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd12.png]] | ||
|valign="top"| | |valign="top"|Stosując prawa algebry Boole’a, poprzednio podane wyrażenie na <math>f</math> można uprościć w sposób pokazany na planszy. Ostatecznie wyrażenie to można zrealizować w układzie kombinacyjnym, którego struktura – znacznie prostsza od poprzedniej realizacji – jest pokazana na rysunku. Zasygnalizowany tu proces upraszczania wyrażeń boolowskich ma ogromne znaczenie praktyczne i opracowano dla jego potrzeb wiele zaawan¬sowanych metod syntezy, które z technicznego punktu widzenia nazywa się metodami ''minimalizacji funkcji boolowskich''. Wiele z nich doczekało się realizacji w postaci zaawansowanych narzędzi komputerowych i stanowi podstawę nowoczesnej syntezy logicznej. | ||
|} | |} | ||
Linia 154: | Linia 162: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width=" | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd13.png]] | ||
|valign="top" | | |valign="top"|Na planszy pokazujemy cały proces syntezy funkcji boolowskiej tzn. przejście od tablicy prawdy, której odpowiada skomplikowane wyrażenie boolowskie. Wyrażenie to można zrealizować bezpośrednio, ale taka realizacja nie jest korzystna z technicznego punktu widzenia. Znacznie lepsza jest realizacja funkcji zminimalizowanej. | ||
|} | |} | ||
Linia 161: | Linia 169: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd14.png]] | ||
|valign="top"| | |valign="top"|Sens fizyczny minimalizacji i jej ogromne znaczenie praktyczne wynika z faktu, że oba układy: pierwotny i zminimalizowany działają identycznie. | ||
|} | |} | ||
Linia 168: | Linia 176: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|[[Grafika: | |valign="top" width="500px"|[[Grafika:TC_M2_Slajd15.png]] | ||
|valign="top"| | |valign="top"|Z tych powodów zastosowania omówionego procesu syntezy są w dzisiejszej technice ogromne i dotyczą tak ważnych zagadnień jak np. projektowanie skrzynek permutacyjnych układów kryptograficznych oraz projektowanie układów arytmetyki rozproszonej powszechnie stosowanych w cyfrowym przetwarzaniu sygnałów i obrazów. | ||
|} | |} |
Aktualna wersja na dzień 21:57, 15 wrz 2023
![]() |
Układy logiczne – pojęcia podstawowe. |
![]() |
Oto przykłady uproszczonego zapisu funkcji boolowskich. Podane zapisy specyfikują funkcje boolowskie, których wektory wejściowe określone są liczbami dziesiętnymi. |
![]() |
Dla funkcji opisanej tablicą prawdy podaną w tabelce na planszy podajemy sposób tworzenia formuły boolowskiej. |
![]() |
W algebrze Boole’a, operacje "" (dysjunkcja) i "" (koniunkcja) nazywa się również przez analogię do arytmetyki odpowiednio dodawaniem i mnożeniem. Operacje dodawania i mnożenia są przemienne oraz rozdzielne względem siebie. Elementy binarne 0 oraz 1 spełniają rolę elementu neutralnego odpowiednio względem operacji dodawania i mnożenia. Dla każdego elementu istnieje element , nazywany negacją, spełniający odpowiednie własności.
Starszeństwo działań w algebrze Boole'a jest takie same jak w zwykłej arytmetyce (np. wyrażenie interpretujemy jako , a nie jako , a nawiasy są opuszczane tam, gdzie nie prowadzi to do nieporozumień; opuszczamy także znak mnożenia "", a zamiast symbolu "", często używamy symbolu . |
![]() |
Stosując prawa algebry Boole’a, poprzednio podane wyrażenie na można uprościć w sposób pokazany na planszy. Ostatecznie wyrażenie to można zrealizować w układzie kombinacyjnym, którego struktura – znacznie prostsza od poprzedniej realizacji – jest pokazana na rysunku. Zasygnalizowany tu proces upraszczania wyrażeń boolowskich ma ogromne znaczenie praktyczne i opracowano dla jego potrzeb wiele zaawan¬sowanych metod syntezy, które z technicznego punktu widzenia nazywa się metodami minimalizacji funkcji boolowskich. Wiele z nich doczekało się realizacji w postaci zaawansowanych narzędzi komputerowych i stanowi podstawę nowoczesnej syntezy logicznej. |
![]() |
Na planszy pokazujemy cały proces syntezy funkcji boolowskiej tzn. przejście od tablicy prawdy, której odpowiada skomplikowane wyrażenie boolowskie. Wyrażenie to można zrealizować bezpośrednio, ale taka realizacja nie jest korzystna z technicznego punktu widzenia. Znacznie lepsza jest realizacja funkcji zminimalizowanej. |
![]() |
Sens fizyczny minimalizacji i jej ogromne znaczenie praktyczne wynika z faktu, że oba układy: pierwotny i zminimalizowany działają identycznie. |
![]() |
Z tych powodów zastosowania omówionego procesu syntezy są w dzisiejszej technice ogromne i dotyczą tak ważnych zagadnień jak np. projektowanie skrzynek permutacyjnych układów kryptograficznych oraz projektowanie układów arytmetyki rozproszonej powszechnie stosowanych w cyfrowym przetwarzaniu sygnałów i obrazów. |