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 4 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd1.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd1.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Układy asynchroniczne | ||
|} | |} | ||
<hr width="100%"> | <hr width="100%"> | ||
Linia 8: | Linia 7: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|width="500px" valign="top"|[[Grafika:TC_M9_Slajd2.png|thumb|500px]] | |width="500px" valign="top"|[[Grafika:TC_M9_Slajd2.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Struktura sekwencyjnego układu asynchronicznego jest podobna do struktury układu synchronicznego (por. moduł 7 plansza 5). Istotną różnicą jest brak wejścia zegarowego clk. Z tego powodu pamięć układu mogą stanowić przerzutniki (automaty elementarne) nie synchronizowane lub elementy opóźniające. Powstaje zatem pytanie: co – wobec braku sygnału zegarowego – wyznacza kolejne takty pracy układu, powodując zmiany jego stanów wewnętrznych? Czynnikiem powodującym te zmiany może być tylko zmiana stanów wejść. Taka sytuacja jest pokazana na rysunku fragmentu grafu. Pod wpływem litery wejściowej <math>X_i\,</math> układ znalazł się w stanie <math>S_a\,</math>. Pozostaje w nim tak długo, aż na wejściu pojawi się inna litera – <math>X_j(j\in i)\,</math> . Wówczas układ może przejść do stanu <math>S_b\,</math>. Przykładowe stany <math>S_a\,</math> i <math>S_b\,</math> nazywa się stanami stabilnymi. Należy przyjąć, że w układzie asynchronicznym wszystkie stany są stanami stabilnymi, a zmiana stanu może nastąpić tylko w wyniku zmiany stanu wejść. | ||
|} | |} | ||
Linia 15: | 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 22: | 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 29: | 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 36: | 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 43: | 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 50: | 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 57: | 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 64: | 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 71: | 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 78: | 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 85: | 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 92: | 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 99: | 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 106: | 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 113: | 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 120: | 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 127: | 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 134: | 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 141: | 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 148: | 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 155: | 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 162: | 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 169: | 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 176: | 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 183: | 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 190: | 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. |