TC Moduł 9: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 14: | Linia 14: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd3.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd3.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Najprostszym asynchronicznym układem sekwencyjnym jest przerzutnik asynchroniczny typu <math>SR\,</math>. Na planszy podana jest tablica przejść przerzutnika <math>SR\,</math>. Z tablicy tej wyznaczamy tzw. funkcję charakterystyczną przerzutnika. Funkcja ta podaje zależność stanu następnego <math>Q\,</math> od stanu bieżącego i sygnałów na wejściach <math>S\,</math>, <math>R\,</math>. Wyrażenie boolowskie tej funkcji przekształcamy (wg prawa De Morgana) do postaci zawierającej funktory <math>NAND\,</math>. Odpowiedni schemat logiczny przerzutnika <math>SR\,</math> podany jest na rysunku. | ||
|} | |} | ||
Linia 21: | Linia 21: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd4.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd4.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zaprojektujemy układ asynchroniczny, którego działanie jest opisane na planszy. Najpierw wykażemy, że automat działa zgodnie z grafem pokazanym na rysunku. Załóżmy, że na wejściu jest wektor <math>00\,</math>; układ jest w stanie stabilnym <math>1\,</math> z wyjściem <math>0\,</math> (pętla z wektorem wejściowym <math>00\,</math>). W tym stanie (zgodnie z założeniem) może na wejściu pojawić się wektor <math>01\,</math> – przechodzimy do stanu <math>2\,</math> (wyjście <math>0\,</math>) lub wektor <math>10\,</math> – przechodzimy do stanu <math>3\,</math> (wyjście <math>0\,</math>). W stanie <math>2\,</math> na wejściu może się pojawić wektor <math>11\,</math> – przechodzimy do stanu <math>4\,</math>, a na wyjściu jest stan <math>1\,</math>, gdyż ta sytuacja oznacza, że na wejściu kolejno pojawiały się wektory <math>00, 01, 11\,</math>. Jeśli w stanie <math>2\,</math> pojawi się <math>00\,</math> – wracamy do stanu <math>1\,</math>. Należy teraz rozpatrzyć sytuację w stanie <math>3\,</math> i <math>4\,</math>. W stanie <math>3\,</math> po przyjściu <math>00\,</math> wracamy do stanu <math>1\,</math>, a po przyjściu <math>11\,</math> przechodzimy do stanu <math>5\,</math> (z wyjściem <math>0\,</math>). W stanie <math>4\,</math> po przyjściu <math>10\,</math> można przejść do już istniejącego stanu <math>3\,</math>, zaś po przyjściu <math>01\,</math> trzeba przejść do nowego stanu <math>6\,</math> (nie można przejść do stanu <math>2\,</math>, gdyż sekwencja wejściowa <math>...01,11,01,11,...\,</math> powodowałaby by wygenerowanie na wyjściu sekwencji <math>0101...\,</math> ). Do zamknięcia grafu pozostaje tylko uzupełnienie przejść ze stanów <math>5\,</math> i <math>6\,</math>. Bezpośrednio z uzyskanego grafu tworzymy tablicę przejść-wyjść tego automatu. Kółka w tej tablicy oznaczają stany stabilne. Należy zwrócić uwagę, że w powyższym grafie wszystkie stany są stanami stabilnymi. | ||
|} | |} | ||
Linia 28: | Linia 28: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd5.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd5.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Następnym etapem syntezy układów asynchronicznych jest minimalizacja liczby stanów automatu, która przebiega tak samo, jak w przypadku układów synchronicznych. Łatwo sprawdzić, że na podstawie uzyskanej tablicy przejść wyjść można wyznaczyć zbiór par zgodnych: <math>\{1,2\}</math>, <math>\{1,3\}</math>, <math>\{3,5\}</math>, <math>\{3,6\}</math>, <math>\{5,6\}</math>. Stąd maksymalne klasy zgodne są następujące: <math>\{1,2\}, \{1,3}, \{4\} \{3,5,6\}</math>. Warunek pokrycia i zamknięcia spełniają zbiory: <math>\{1,2\}, \{4\} \{3,5,6\}</math>. Oznaczając stany wewnętrzne kolejno literami <math>A\,</math>, <math>B\,</math> i <math>C\,</math>, uzyskujemy tablicę przejść wyjść automatu minimalnego. | ||
|} | |} | ||
Linia 35: | Linia 35: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd6.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd6.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W realizacji automatu asynchronicznego, podobnie jak w realizacji automatu synchronicznego, występują dwa etapy: kodowanie stanów i synteza strukturalna, czyli wyznaczenie funkcji wzbudzeń przerzutników. Oba te procesy w odniesieniu do układów asynchronicznych mają swoją specyfikę spowodowaną brakiem zewnętrznej synchronizacji. | ||
Aby przeanalizować zjawiska zachodzące w układzie asynchronicznym przeprowadzimy syntezę automatu minimalnego. Stanom <math>A\,</math>, <math>B\,</math>, <math>C\,</math> tego automatu przyporządkujemy wektory kodowe odpowiednio <math>00, 01, 10\,</math>. Otrzymujemy zakodowaną tablicę przejść-wyjść, uwzględniającą nie wykorzystany wektor stanu <math>11\,</math>. Na planszy pokazano również graf stanów automatu minimalnego z odpowiednimi wektorami kodowymi dla poszczególnych stanów. | |||
|} | |} | ||
Linia 42: | Linia 43: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd7.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd7.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zaprojektowany układ będzie działał poprawnie, jeżeli czasy działania elementów opóźniających <math>\Delta\,</math> są jednakowe, to znaczy <math>\Delta_1=\Delta_2</math>. W rzeczywistości funkcja opóźnienia <math>\Delta\,</math> jest realizowana w układzie kombinacyjnym przez opóźnienia (czas przenoszenia) bramek, realizujących ten układ. Dlatego sygnały <math>Q1, Q2\,</math> na wyjściach tego układu nie zmieniają swych wartości jednocześnie. Taka sytuacja może mieć wpływ na poprawność działania układu zwłaszcza w takim przypadku, w którym wektory kodowe sąsiednich stanów różnią się na więcej niż jednej pozycji. Właśnie tak jest w grafie automatu minimalnego przy przejściu ze stanu <math>B\,</math> (wektor kodowy <math>01\,</math>) do stanu <math>C (10)\,</math>) . Na planszy rozważono tę sytuację. Dla <math>\Delta_1<\Delta_2</math> (<math>\Delta_1, \Delta_2</math> – czasy opóźnienia sygnałów <math>q_1, q_2\,</math>) stan <math>01\,</math> pod wpływem wejść <math>01\,</math> zmieni się na stan niestabilny <math>11\,</math>, po czym (zgodnie z tablicą przejść) układ przejdzie do stanu stabilnego <math>10\,</math>, zgodnego z założeniem. Takie przejście nazywa się wyścigiem niekrytycznym. Jeżeli <math>\Delta_1>\Delta_2</math>, to dla wejść <math>01\,</math> układ przejdzie do stanu <math>00\,</math>, ale stan ten dla wejść <math>01\,</math> jest stabilny; układ nie przejdzie do stanu <math>10\,</math>. Takie przejście nazywa się wyścigiem krytycznym; powoduje ono nieprawidłową pracę układu. Aby zapobiec tej sytuacji, można odpowiednio skorygować graf stanów, zastępując bezpośrednie przejście ze stanu <math>01\,</math> do stanu <math>10\,</math> pod wpływem wejść <math>01\,</math> – przejściem przez stan niestabilny <math>11\,</math>. | ||
|} | |} | ||
Linia 49: | Linia 50: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd8.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd8.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Dla <math>\Delta_1<\Delta_2</math> stan <math>01\,</math> pod wpływem wejść <math>10\,</math> zmieni się na stan niestabilny <math>11\,</math>, po czym (zgodnie z tablicą przejść) układ przejdzie do stanu stabilnego <math>10\,</math>, zgodnego z założeniem. Jeżeli <math>\Delta_1>\Delta_2</math>, to dla wejść <math>10\,</math> układ przejdzie do stanu <math>00\,</math>, po czym do stanu <math>10\,</math>, też zgodnego z założeniem. W obu przypadkach – wyścig niekrytyczny. | ||
|} | |} | ||
Linia 56: | Linia 57: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd9.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd9.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Aby uniknąć analizy poprawności działania realizacji układu asynchronicznego po jego zaprojektowaniu, można automat (minimalny) odpowiednio zakodować w taki sposób, aby wektory kodowe sąsiednich stanów różniły się tylko na jednej pozycji. | ||
|} | |} | ||
Linia 63: | Linia 64: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd10.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd10.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Uwzględniając przeprowadzone rozważania łatwo stwierdzić, że graf automatu należy uzupełnić o stan niestabilny zakodowany <math>11\,</math>, co prowadzi do zmodyfikowanej tablicy przejść podanej na planszy. | ||
|} | |} | ||
Linia 70: | Linia 71: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd11.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd11.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zmodyfikowaną tablicę rozpisujemy na poszczególne funkcje wzbudzeń <math>Q1'\,</math> oraz <math>Q2'\,</math>. | ||
|} | |} | ||
Linia 77: | Linia 78: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd12.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd12.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Wyznaczone na podstawie tych tablic funkcje <math>Q_1^{'}\,</math> i <math>Q_2^{'}\,</math> (również <math>y\,</math>), opisują realizację układu kombinacyjnego, nazywaną realizacją ze sprzężeniem zwrotnym: | ||
<math>\begin{matrix} y=Q_2 & Q_1^{'}=Q_1x_1+Q_1x_2+Q_2\overline{x}_1+x_1\overline{x}_2 & Q_2^{'}=\overline{Q}_1x_1x_2+\overline{Q}_1Q_2x_2 \end{matrix}</math> | |||
gdzie składnik <math>Q_1x_1\,</math> wprowadzono w celu uniknięcia szkodliwego zjawiska, zwanego hazardem. Wprowadzenie tego składnika zapobiegnie pojawieniu się na wyjściu <math>Q_1\,</math> krótkiego impulsu o wartości logicznej <math>0\,</math>, który może powstać przy zmianie sygnału <math>x_2\,</math> z <math>1\,</math> na <math>0\,</math>. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 84: | Linia 88: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd13.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd13.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Plansza wyjaśnia powstawanie zjawiska hazardu. W układach asynchronicznych funkcje wzbudzeń muszą być realizowane w taki sposób, aby nie występował hazard statyczny. | ||
|} | |} | ||
Linia 91: | Linia 95: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd14.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd14.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|W celu likwidacji hazardu wyrażenia boolowskie funkcji wzbudzeń należy uzupełnić o składnik (nadmiarowy), odpowiadający pętli na tablicy Karnaugha, w taki sposób, aby każde dwie sąsiednie jedynki były objęte wspólną pętlą. | ||
|} | |} | ||
Linia 98: | Linia 102: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd15.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd15.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Mając świadomość, że w realizowanym automacie zlikwidowaliśmy przyczyny wszystkich szkodliwych zjawisk, możemy przystąpić do narysowania schematu logicznego tego automatu. | ||
|} | |} | ||
Linia 105: | Linia 109: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd16.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd16.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Z asynchronicznych przerzutników typu <math>SR\,</math> (<math>\overline{S}\,\overline{R}</math>) są budowane przerzutniki synchroniczne typu <math>D\,</math>, <math>T\,</math> i <math>JK\,</math>. Istnieją różne mechanizmy synchronizacji przerzutników: od najprostszej – szerokością impulsu (tzw. ''latch''), przez synchronizację dwustopniową (''master-slave''), aż po synchronizację zboczem przebiegu zegarowego. Synchronizacja zboczem polega na tym, że stan wejść przerzutnika oddziałuje na jego stan wewnętrzny (i tym samym na stan wyjść) tylko w momencie wystąpienia zmiany, np. z <math>0\,</math> na <math>1\,</math>, w przebiegu zegarowym. | ||
Przerzutniki tego typu mają prostą budowę, ale mogą służyć tylko do przechowywania (zatrzaskiwania) informacji. Nie mogą służyć do budowy układów sekwencyjnych. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 112: | Linia 117: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd17.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd17.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Prawidłowa synchronizacja powinna działać tak, aby w czasie trwania okresu przebiegu zegarowego sygnał wejściowy przerzutnika był odczytywany jeden raz, a stan przerzutnika zmieniał się także jeden raz – niezależnie od zmiany sygnałów wejściowych. Mechanizm ten zostanie dokładnie omówiony na przykładzie, którego celem będzie zaprojektowanie asynchronicznego układu realizującego funkcje przerzutnika typu <math>D\,</math> synchronizowanego narastającym (dodatnim) zboczem przebiegu zegarowego. | ||
|} | |} | ||
Linia 119: | Linia 124: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd18.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd18.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Najczęściej do realizacji takiego przerzutnika przyjmuje się układ o schemacie blokowym zbudowanym z automatu sterującego i asynchronicznego przerzutnika <math>\overline{S}\, \overline{R}</math>. Automat sterujący o wejściach <math>D\,</math> i <math>clk\, (c)\,</math> steruje asynchronicznym przerzutnikiem <math>\overline{S}\, \overline{R}</math>, którego praca jest opisana w tablicy podanej na planszy. Przerzutnik ten może zmienić stan wyjścia <math>Q\,</math> z <math>0\,</math> na <math>1\,</math>, jeśli na wyjściu <math>Y_1\,</math> automatu sterującego pojawi się <math>0\,</math>, lub z <math>1\,</math> na <math>0\,</math>, jeśli <math>0\,</math> pojawi się na wyjściu <math>Y_2\,</math> (jednoczesne pojawienie się sygnału <math>0\,</math> na wyjściu <math>Y_1\,</math> i <math>Y_2\,</math> jest niedopuszczalne). | ||
|} | |} | ||
Linia 126: | Linia 131: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd19.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd19.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Graf stanów typu Moore’a automatu sterującego pokazano na niniejszej planszy. Stan <math>1\,</math> jest stanem oczekiwania. Jeśli w tym stanie na wejściu <math>D\,</math> jest <math>1\,</math> (wektor wejściowy <math>10\,</math>), to zmiana sygnału zegarowego <math>clk\,</math> z <math>0\,</math> na <math>1\,</math> powoduje przejście automatu do stanu <math>2\,</math> i pojawienie się na wyjściach <math>Y_1\,</math>, <math>Y_2\,</math> wektora <math>01\,</math>, co spowoduje włączenie przerzutnika <math>\overline{S}\, \overline{R}</math> (jeśli uprzednio był wyłączony). Jeśli w stanie <math>1\,</math> na wejściu <math>D\,</math> jest <math>0\,</math> (wektor wejściowy <math>00\,</math>), to zmiana sygnału zegarowego <math>clk\,</math> z <math>0\,</math> na <math>1\,</math> powoduje przejście automatu do stanu <math>3\,</math> i pojawienie się na wyjściach <math>Y_1\,</math>, <math>Y_2\,</math> wektora <math>10\,</math>, co spowoduje wyłączenie przerzutnika <math>\overline{S}\, \overline{R}</math> (jeśli uprzednio był włączony). Powrót do stanu <math>1\,</math> ze stanów <math>2\,</math> i <math>3\,</math> następuje po zmianie sygnału <math>clk\,</math> z <math>1\,</math> na <math>0\,</math>. | ||
|} | |} | ||
Linia 133: | Linia 138: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd20.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd20.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Na podstawie narysowanego grafu automatu tworzymy tablicę przejść-wyjść automatu sterującego, którą następnie kodujemy w sposób pokazany na planszy. | ||
|} | |} | ||
Linia 140: | Linia 145: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd21.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd21.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Zakodowaną tablicę rozpisujemy na dwie tabelki dla poszczególnych funkcji <math>Q_1^{'}\,</math> i <math>Q_2^{'}\,</math>. | ||
Z tabelek tych można wyznaczyć wyrażenia boolowskie dla <math>Q_1^{'}\,</math> i <math>Q_2^{'}\,</math>. | |||
|} | |} | ||
Linia 147: | Linia 154: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd22.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd22.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Ostatecznie | ||
<math>\begin{matrix} Y_1=Q_1, & Y_2=Q_2 \end{matrix}</math> | |||
<math>\begin{matrix} Q_1^{'}=\overline{c}+q_1\overline{D}+\overline{q}_2, & Q_2^{'}=\overline{c}+q_2 D+\overline{q}_1 \end{matrix}</math> | |||
Na tej podstawie i po zastosowaniu prawa De Morgana uzyskujemy schemat logiczny układu zaprojektowanego na elementach typu <math>NAND\,</math>. | |||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 154: | Linia 166: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd23.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd23.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Cały proces syntezy sekwencyjnego układu asynchronicznego prezentujemy raz jeszcze na innym przykładzie, ale tym razem z oszczędnymi komentarzami. Zadanie to słuchacz wykładu może potraktować jako zadanie treningowe. Plansze 24 do 28 prezentują kluczowe etapy syntezy. | ||
|} | |} | ||
Linia 161: | Linia 173: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd24.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd24.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Tworzony jest pierwotny graf automatu, a na jego podstawie pierwotna tablica przejść wyjść. | ||
|} | |} | ||
Linia 168: | Linia 180: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd25.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd25.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Pierwotna tablica przejść wyjść poddawana jest procesowi minimalizacji liczby stanów. Efektem minimalizacji jest zredukowanie liczby stanów z <math>7\,</math> do <math>4\,</math>. | ||
|} | |} | ||
Linia 175: | Linia 187: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd26.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd26.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Kodowanie stanów wewnętrznych w celu zabezpieczenia układu przed szkodliwymi zjawiskami wyścigów krytycznych. | ||
|} | |} | ||
Linia 182: | Linia 194: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd27.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd27.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Prawidłowo zakodowana tablica przejść wyjść jest punktem wyjścia do obliczenia funkcji wzbudzeń oraz funkcji wyjściowej. | ||
|} | |} | ||
Linia 189: | Linia 201: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd28.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd28.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Obliczone funkcje mogą być bezpośrednio zrealizowane na bramkach logicznych. | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> |
Aktualna wersja na dzień 07:58, 8 wrz 2006
![]() |
Układy asynchroniczne |
![]() |
Uwzględniając przeprowadzone rozważania łatwo stwierdzić, że graf automatu należy uzupełnić o stan niestabilny zakodowany , co prowadzi do zmodyfikowanej tablicy przejść podanej na planszy. |
![]() |
Zmodyfikowaną tablicę rozpisujemy na poszczególne funkcje wzbudzeń oraz . |
![]() |
Plansza wyjaśnia powstawanie zjawiska hazardu. W układach asynchronicznych funkcje wzbudzeń muszą być realizowane w taki sposób, aby nie występował hazard statyczny. |
![]() |
Mając świadomość, że w realizowanym automacie zlikwidowaliśmy przyczyny wszystkich szkodliwych zjawisk, możemy przystąpić do narysowania schematu logicznego tego automatu. |
![]() |
Na podstawie narysowanego grafu automatu tworzymy tablicę przejść-wyjść automatu sterującego, którą następnie kodujemy w sposób pokazany na planszy. |
![]() |
Zakodowaną tablicę rozpisujemy na dwie tabelki dla poszczególnych funkcji i .
Z tabelek tych można wyznaczyć wyrażenia boolowskie dla i . |
![]() |
Ostatecznie
Na tej podstawie i po zastosowaniu prawa De Morgana uzyskujemy schemat logiczny układu zaprojektowanego na elementach typu . |
![]() |
Tworzony jest pierwotny graf automatu, a na jego podstawie pierwotna tablica przejść wyjść. |
![]() |
Pierwotna tablica przejść wyjść poddawana jest procesowi minimalizacji liczby stanów. Efektem minimalizacji jest zredukowanie liczby stanów z do . |
![]() |
Kodowanie stanów wewnętrznych w celu zabezpieczenia układu przed szkodliwymi zjawiskami wyścigów krytycznych. |
![]() |
Prawidłowo zakodowana tablica przejść wyjść jest punktem wyjścia do obliczenia funkcji wzbudzeń oraz funkcji wyjściowej. |
![]() |
Obliczone funkcje mogą być bezpośrednio zrealizowane na bramkach logicznych. |