TC Moduł 2: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Robert m (dyskusja | edycje)
Nie podano opisu zmian
Robert m (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd1.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd1.png]]
|valign="top"|
|valign="top"|Układy logiczne – pojęcia podstawowe.
|}
 
<hr width="100%">
 
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd2.jpg]]
|valign="top"|Zasygnalizowany w poprzednim wykładzie proces minimalizacji funkcji boolowskich ma ogromne znaczenie w technice cyfrowej. Znaczenie to zostało spotęgowane możliwościami realizacji układów logicznych w strukturach scalonych o złożoności milionów bramek logicznych.
|}
 
<hr width="100%">
 
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd3.jpg]]
|valign="top"|Wypracowano wiele metod minimalizacji funkcji boolowskich. Najbardziej znaną i uznawaną za najskuteczniejszą jest metoda ESPRESSO opracowana w latach 80. na Uniwersytecie Kalifornijskim w Berkeley. Ze względu na ograniczony zakres wykładu omówimy wyłącznie metodę tablic Karnaugha oraz metodę ekspansji (przykładową procedurę Espresso).
 
|}
|}


Linia 22: Linia 7:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd4.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd2.png]]
|valign="top"|W metodzie Karnaugha każda kratka odpowiedniej tablicy (zwanej tablicą Karnaugha) odpowiada wektorowi zmiennych binarnych. Można więc powiedzieć, że ciąg wartości tych zmiennych tworzy adres kratki. Kratki są ponumerowane w taki sposób, że numer <math>i\,</math> jest liczbą dziesiętną odpowiadającą kombinacji zmiennych (wektorowi zero-jedynkowemu) traktowanej jako liczba dwójkowa. W poszczególnych kratkach wpisane są wartości funkcji, tj. 0 lub 1 przyjmowanej przez funkcję dla tej kombinacji lub symbol „–”, jeżeli funkcja nie jest określona. W tablicy K. różniącym się tylko o negację pełnym iloczynom przyporządkowane są leżące obok siebie pola tablicy (sąsiednie kratki), które się łączy (skleja) odpowiednią pętelką. Korzysta się z faktu, że dla dowolnego A:
|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.
<math>A\bar{x}+Ax=A\,</math>
|}
|}


Linia 30: Linia 14:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd5.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd3.png]]
|valign="top"|Dla uzyskania efektu sąsiedztwa współrzędne pól opisuje się tzw. kodem Gray’a.
|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}.  
|}


<hr width="100%">
Formalnie funkcją boolowską zmiennych binarnych <math>x_1,...,x_n</math> nazywamy odwzorowanie <math>f: X \rightarrow Y</math>, gdzie <math>X \subseteq B^n, Y \subseteq B^m</math>.


{| border="0" cellpadding="4" width="100%"
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ą.  
|width="450px"|[[Grafika:TC_M2_Slajd6.jpg]]
|valign="top"|Na planszy pokazane są przykłady łączenia (sklejania) kratek tablicy Karnaugha.
|}


<hr width="100%">
Najczęściej stosowane reprezentacje funkcji boolowskich to tablica prawdy oraz formuła (wyrażenie) boolowskie.


{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd7.jpg]]
|valign="top"|Kolejny przykłady ilustruje wykorzystanie zasady łączenia kratek do graficznej minimalizacji funkcji boolowskiej.
|}
|}


Linia 51: Linia 28:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd8.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd4.png]]
|valign="top"|Wpisywanie funkcji do tablicy Karnaugha ułatwia numeracja kratek. Podajemy przykłady tablic Karnaugha z ponumerowanymi kratkami.
|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>2n</math> wierszach. W kolejnych wierszach są zapisywane wszystkie wartości ciągu <math>x_1,...,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.
|}
 
<hr width="100%">


{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd9.jpg]]
|valign="top"|Oraz stosujemy tę metodę do funkcji z poprzedniego przykładu.
|}
|}


Linia 65: Linia 36:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd10.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd5.png]]
|valign="top"|Niestety zakreślanie pętelek i kojarzenie z nimi odpowiednich iloczynów jest trudniejsze. Omawiamy ten proces na bardziej skomplikowanym przykładzie, w którym kolorami zaznaczamy odpowiednie pola tablicy Karnaugha. Pokrywanie się tych pól określa odpowiedni iloczyn zmiennych prostych lub zanagowanych.
|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 72: Linia 43:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd11.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd6.png]]
|valign="top"|Na tym przykładzie trenujemy cały proces minimalizacji funkcji metodą tablic Karnaugha
|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.
 
<hr width="100%">


{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd12.jpg]]
|valign="top"|Pojęciem podstawowym w procesie minimalizacji jest pojęcie implikantu. Implikant funkcji boolowskiej <math>f\,</math> jest to iloczyn literałów (czyli zmiennych prostych lub zanegowanych) o następującej własności: dla wszystkich kombinacji wartości zmiennych, dla których implikant jest równy jedności, również funkcja <math>f\,</math> jest równa jedności.
Prosty implikant jest to implikant, który zmniejszony o dowolny literał przestaje być implikantem.
|}
|}


Linia 87: Linia 52:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd13.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd7.png]]
|valign="top"|Pojęcie implikantu można zinterpretować na tablicy Karnaugha.
|valign="top"|Dla funkcji opisanej tablicą prawdy podaną w tabelce na planszy podajemy sposób tworzenia formuły boolowskiej.  
|}
|}


Linia 94: Linia 59:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd14.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd8.png]]
|valign="top"|Omówimy teraz zapis funkcji boolowskiej w kanonicznej formie sumacyjnej oraz kanonicznej formie iloczynowej.
|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.


<hr width="100%">
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd15.jpg]]
|valign="top"|Podajemy ogólny wzór na kanoniczną formę sumacyjną oraz sposób tworzenia tej formy dla przykładowej funkcji. KFS można utworzyć bezpośrednio z tablicy prawdy przez wybranie wierszy, dla których wartość funkcji wynosi 1, utworzenie dla każdego takiego wiersza iloczynu pełnego, oraz utworzenie sumy iloczynów pełnych.
|}
|}


Linia 108: Linia 68:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd16.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd9.png]]
|valign="top"|Podajemy ogólny wzór na kanoniczną formę iloczynową oraz sposób tworzenia tej formy dla przykładowej funkcji. W tym przypadku synteza funkcji sprowadza się do wybrania wierszy, dla których wartość funkcji wynosi 0, utworzenia dla każdego takiego wiersza sumy pełnej oraz utworzenia iloczynu sum pełnych.
|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 115: Linia 75:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd17.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd10.png]]
|valign="top"|Formy kanoniczne są stosowane do uzyskiwania różnych realizacji bramkowych funkcji boolowskich. Są to:
|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.
*realizacja AND-OR,
*realizacja NAND,
*realizacja OR-AND,
*realizacja NOR.
|}


<hr width="100%">
Własności stałych:


{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd18.jpg]]
|valign="top"|Kolejne plansze ilustrują sposób tworzenia takich realizacji.
|}
|}


Linia 133: Linia 85:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd19.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd11.png]]
|valign="top"|
|valign="top"|
|}
|}
Linia 140: Linia 92:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd20.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd12.png]]
|valign="top"|
|valign="top"|
|}
|}
Linia 147: Linia 99:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd21.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd13.png]]
|valign="top"|
|valign="top"|
|}
|}
Linia 154: Linia 106:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|width="450px"|[[Grafika:TC_M2_Slajd22.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd14.png]]
|valign="top" |Oto bardziej skomplikowany przykład realizacji iloczynowej.
|valign="top"|
|}
|}


Linia 161: Linia 113:


{| border="0" cellpadding="4" width="100%"
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd23.jpg]]
|valign="top" width="500px"|[[Grafika:TC_M2_Slajd15.png]]
|valign="top"|W dotychczasowych przykładach minimalizowane były pojedyncze funkcje boolowskie, dla których – w celu uzyskania rozwiązania z minimalnym kosztem – tworzone były wyłącznie implikanty proste. W ogólnym przypadku minimalizacji zespołów funkcji boolowskich tworzenie minimalnego rozwiązania wyłącznie na podstawie implikantów prostych nie zawsze prowadzi do najlepszego rezultatu końcowego. Poniższy przykład ilustruje w jaki sposób należy dobierać implikanty zespołu funkcji, aby uzyskać rozwiązanie z minimalnym kosztem.
|valign="top"|
|}
 
<hr width="100%">
 
{| border="0" cellpadding="4" width="100%"
|[[Grafika:TC_M2_Slajd24.jpg]]
|valign="top"|Jak widać realizacja powyższych wyrażeń łącznie, mimo pozornie większego skomplikowania dla poszczególnych funkcji, jest oszczędniejsza niż poprzednio; całość  wymaga bowiem zastosowania 5 bramek AND i trzech bramek OR.
|}
|}

Wersja z 13:02, 28 sie 2006

Układy logiczne – pojęcia podstawowe.

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.

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 x1,...,xn nazywamy odwzorowanie f:XY, gdzie XBn,YBm.

Jeżeli X=Bn, 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.


Funkcja f może być przedstawiona w postaci tablicy prawdy. Jest to tablica o n+1 kolumnach i 2n wierszach. W kolejnych wierszach są zapisywane wszystkie wartości ciągu x1,...,xn, czyli wszystkie wektory x. 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ść i podana z lewej strony w dodatkowej kolumnie jest dziesiętnym odpowiednikiem wektora x traktowanego jako liczba w zapisie dwójkowym.

Oto przykłady uproszczonego zapisu funkcji boolowskich. Podane zapisy specyfikują funkcje boolowskie, których wektory wejściowe określone są liczbami dziesiętnymi.

Funkcje boolowskie reprezentowane odwzorowaniem f, 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: +(OR),(AND),x¯(NOT). 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.


Dla funkcji opisanej tablicą prawdy podaną w tabelce na planszy podajemy sposób tworzenia formuły boolowskiej.

A na tej planszy pokazana jest realizacja tej funkcji na bramkach AND, OR, NOT.

W układzie kombinacyjnym z rysunku na planszy funkcja f, realizowana na jego wyjściu f, 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 y. Na przykład dla x1=x2=0,x3=1 na wyjściu bramki AND1 pojawi się sygnał o wartości 1, i w rezultacie wyjście y przyjmie wartość 1. Natomiast dla x1=x2=x3=0 na wyjściach wszystkich bramek AND będzie 0, a więc jednocześnie y przyjmie wartość 0, co jest zgodne z tablicą prawdy.


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.

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: