TC Moduł 9

From Studia Informatyczne

Enlarge
Układy asynchroniczne

Enlarge
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 X_i\, układ znalazł się w stanie S_a\,. Pozostaje w nim tak długo, aż na wejściu pojawi się inna litera – X_j(j\in i)\, . Wówczas układ może przejść do stanu S_b\,. Przykładowe stany S_a\, i S_b\, 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ść.

Enlarge
Najprostszym asynchronicznym układem sekwencyjnym jest przerzutnik asynchroniczny typu SR\,. Na planszy podana jest tablica przejść przerzutnika SR\,. Z tablicy tej wyznaczamy tzw. funkcję charakterystyczną przerzutnika. Funkcja ta podaje zależność stanu następnego Q\, od stanu bieżącego i sygnałów na wejściach S\,, R\,. Wyrażenie boolowskie tej funkcji przekształcamy (wg prawa De Morgana) do postaci zawierającej funktory NAND\,. Odpowiedni schemat logiczny przerzutnika SR\, podany jest na rysunku.

Enlarge
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 00\,; układ jest w stanie stabilnym 1\, z wyjściem 0\, (pętla z wektorem wejściowym 00\,). W tym stanie (zgodnie z założeniem) może na wejściu pojawić się wektor 01\, – przechodzimy do stanu 2\, (wyjście 0\,) lub wektor 10\, – przechodzimy do stanu 3\, (wyjście 0\,). W stanie 2\, na wejściu może się pojawić wektor 11\, – przechodzimy do stanu 4\,, a na wyjściu jest stan 1\,, gdyż ta sytuacja oznacza, że na wejściu kolejno pojawiały się wektory 00, 01, 11\,. Jeśli w stanie 2\, pojawi się 00\, – wracamy do stanu 1\,. Należy teraz rozpatrzyć sytuację w stanie 3\, i 4\,. W stanie 3\, po przyjściu 00\, wracamy do stanu 1\,, a po przyjściu 11\, przechodzimy do stanu 5\, (z wyjściem 0\,). W stanie 4\, po przyjściu 10\, można przejść do już istniejącego stanu 3\,, zaś po przyjściu 01\, trzeba przejść do nowego stanu 6\, (nie można przejść do stanu 2\,, gdyż sekwencja wejściowa ...01,11,01,11,...\, powodowałaby by wygenerowanie na wyjściu sekwencji 0101...\, ). Do zamknięcia grafu pozostaje tylko uzupełnienie przejść ze stanów 5\, i 6\,. 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.

Enlarge
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: \{1,2\}, \{1,3\}, \{3,5\}, \{3,6\}, \{5,6\}. Stąd maksymalne klasy zgodne są następujące: \{1,2\}, \{1,3}, \{4\} \{3,5,6\}. Warunek pokrycia i zamknięcia spełniają zbiory: \{1,2\}, \{4\} \{3,5,6\}. Oznaczając stany wewnętrzne kolejno literami A\,, B\, i C\,, uzyskujemy tablicę przejść wyjść automatu minimalnego.

Enlarge
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 A\,, B\,, C\, tego automatu przyporządkujemy wektory kodowe odpowiednio 00, 01, 10\,. Otrzymujemy zakodowaną tablicę przejść-wyjść, uwzględniającą nie wykorzystany wektor stanu 11\,. Na planszy pokazano również graf stanów automatu minimalnego z odpowiednimi wektorami kodowymi dla poszczególnych stanów.


Enlarge
Zaprojektowany układ będzie działał poprawnie, jeżeli czasy działania elementów opóźniających \Delta\, są jednakowe, to znaczy \Delta_1=\Delta_2. W rzeczywistości funkcja opóźnienia \Delta\, jest realizowana w układzie kombinacyjnym przez opóźnienia (czas przenoszenia) bramek, realizujących ten układ. Dlatego sygnały Q1, Q2\, 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 B\, (wektor kodowy 01\,) do stanu C (10)\,) . Na planszy rozważono tę sytuację. Dla \Delta_1<\Delta_2 (\Delta_1, \Delta_2 – czasy opóźnienia sygnałów q_1, q_2\,) stan 01\, pod wpływem wejść 01\, zmieni się na stan niestabilny 11\,, po czym (zgodnie z tablicą przejść) układ przejdzie do stanu stabilnego 10\,, zgodnego z założeniem. Takie przejście nazywa się wyścigiem niekrytycznym. Jeżeli \Delta_1>\Delta_2, to dla wejść 01\, układ przejdzie do stanu 00\,, ale stan ten dla wejść 01\, jest stabilny; układ nie przejdzie do stanu 10\,. 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 01\, do stanu 10\, pod wpływem wejść 01\, – przejściem przez stan niestabilny 11\,.

Enlarge
Dla \Delta_1<\Delta_2 stan 01\, pod wpływem wejść 10\, zmieni się na stan niestabilny 11\,, po czym (zgodnie z tablicą przejść) układ przejdzie do stanu stabilnego 10\,, zgodnego z założeniem. Jeżeli \Delta_1>\Delta_2, to dla wejść 10\, układ przejdzie do stanu 00\,, po czym do stanu 10\,, też zgodnego z założeniem. W obu przypadkach – wyścig niekrytyczny.

Enlarge
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.

Enlarge
Uwzględniając przeprowadzone rozważania łatwo stwierdzić, że graf automatu należy uzupełnić o stan niestabilny zakodowany 11\,, co prowadzi do zmodyfikowanej tablicy przejść podanej na planszy.

Enlarge
Zmodyfikowaną tablicę rozpisujemy na poszczególne funkcje wzbudzeń Q1'\, oraz Q2'\,.

Enlarge
Wyznaczone na podstawie tych tablic funkcje Q_1^{'}\, i Q_2^{'}\, (również y\,), opisują realizację układu kombinacyjnego, nazywaną realizacją ze sprzężeniem zwrotnym:

\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}

gdzie składnik Q_1x_1\, wprowadzono w celu uniknięcia szkodliwego zjawiska, zwanego hazardem. Wprowadzenie tego składnika zapobiegnie pojawieniu się na wyjściu Q_1\, krótkiego impulsu o wartości logicznej 0\,, który może powstać przy zmianie sygnału x_2\, z 1\, na 0\,.


Enlarge
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.

Enlarge
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ą.

Enlarge
Mając świadomość, że w realizowanym automacie zlikwidowaliśmy przyczyny wszystkich szkodliwych zjawisk, możemy przystąpić do narysowania schematu logicznego tego automatu.

Enlarge
Z asynchronicznych przerzutników typu SR\, (\overline{S}\,\overline{R}) są budowane przerzutniki synchroniczne typu D\,, T\, i JK\,. 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 0\, na 1\,, 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.


Enlarge
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 D\, synchronizowanego narastającym (dodatnim) zboczem przebiegu zegarowego.

Enlarge
Najczęściej do realizacji takiego przerzutnika przyjmuje się układ o schemacie blokowym zbudowanym z automatu sterującego i asynchronicznego przerzutnika \overline{S}\, \overline{R}. Automat sterujący o wejściach D\, i clk\, (c)\, steruje asynchronicznym przerzutnikiem \overline{S}\, \overline{R}, którego praca jest opisana w tablicy podanej na planszy. Przerzutnik ten może zmienić stan wyjścia Q\, z 0\, na 1\,, jeśli na wyjściu Y_1\, automatu sterującego pojawi się 0\,, lub z 1\, na 0\,, jeśli 0\, pojawi się na wyjściu Y_2\, (jednoczesne pojawienie się sygnału 0\, na wyjściu Y_1\, i Y_2\, jest niedopuszczalne).

Enlarge
Graf stanów typu Moore’a automatu sterującego pokazano na niniejszej planszy. Stan 1\, jest stanem oczekiwania. Jeśli w tym stanie na wejściu D\, jest 1\, (wektor wejściowy 10\,), to zmiana sygnału zegarowego clk\, z 0\, na 1\, powoduje przejście automatu do stanu 2\, i pojawienie się na wyjściach Y_1\,, Y_2\, wektora 01\,, co spowoduje włączenie przerzutnika \overline{S}\, \overline{R} (jeśli uprzednio był wyłączony). Jeśli w stanie 1\, na wejściu D\, jest 0\, (wektor wejściowy 00\,), to zmiana sygnału zegarowego clk\, z 0\, na 1\, powoduje przejście automatu do stanu 3\, i pojawienie się na wyjściach Y_1\,, Y_2\, wektora 10\,, co spowoduje wyłączenie przerzutnika \overline{S}\, \overline{R} (jeśli uprzednio był włączony). Powrót do stanu 1\, ze stanów 2\, i 3\, następuje po zmianie sygnału clk\, z 1\, na 0\,.

Enlarge
Na podstawie narysowanego grafu automatu tworzymy tablicę przejść-wyjść automatu sterującego, którą następnie kodujemy w sposób pokazany na planszy.

Enlarge
Zakodowaną tablicę rozpisujemy na dwie tabelki dla poszczególnych funkcji Q_1^{'}\, i Q_2^{'}\,.

Z tabelek tych można wyznaczyć wyrażenia boolowskie dla Q_1^{'}\, i Q_2^{'}\,.


Enlarge
Ostatecznie

\begin{matrix} Y_1=Q_1, & Y_2=Q_2  \end{matrix}

\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}

Na tej podstawie i po zastosowaniu prawa De Morgana uzyskujemy schemat logiczny układu zaprojektowanego na elementach typu NAND\,.


Enlarge
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.

Enlarge
Tworzony jest pierwotny graf automatu, a na jego podstawie pierwotna tablica przejść wyjść.

Enlarge
Pierwotna tablica przejść wyjść poddawana jest procesowi minimalizacji liczby stanów. Efektem minimalizacji jest zredukowanie liczby stanów z 7\, do 4\,.

Enlarge
Kodowanie stanów wewnętrznych w celu zabezpieczenia układu przed szkodliwymi zjawiskami wyścigów krytycznych.

Enlarge
Prawidłowo zakodowana tablica przejść wyjść jest punktem wyjścia do obliczenia funkcji wzbudzeń oraz funkcji wyjściowej.

Enlarge
Obliczone funkcje mogą być bezpośrednio zrealizowane na bramkach logicznych.