Podręcznik
5. Przykłady syntezy
5.1. Przykład 1
Metoda syntezy układu sekwencyjnego w strukturze z rys. 4.16 zostanie omówiona na przykładzie automatu z tab. 4.35, którą dla dalszych obliczeń zapisujemy po odpowiedniej permutacji wierszy, tak jak to pokazano w tabl. 4.36 a i b.
Tablica 4.36
W automacie tym niezbędna liczba wejść adresowych pamięci jest 5. Aby zrealizować ten automat z wykorzystaniem pamięci o 4 wejściach adresowych należy zaprojektować odpowiedni układ modyfikacji adresu. W tym celu dzieli się tablicę przejść-wyjść (stany następne ponumerowano liczbami naturalnymi – tablica 4.36b) na 8 części w taki sposób, aby każda z nich zawierała co najwyżej dwa różne stany następne. Oczywiście podział tablicy przejść na podtablice jest określony przez kodowanie stanów wewnętrznych i liter wejściowych automatu. Dla automatu z tab. 4.36a są to podziały na zbiorze stanów automatu oraz θ na zbiorze liter wejściowych, ale w tym przypadku θ jest podziałem zerowym.
Dla U = {x1, x2, q1}, V = {q2, q3} podziały te wyznaczają zgodne z nimi podziały na zbiorze ponumerowanych komórek pamięci (wg tab. 4.36b).
Zgodnie z metodą dekompozycji szeregowej należy teraz wyznaczyć odpowiedni podział PG, który dla zapewnienia warunku: P(U) × PG £ PC musi oddzielać elementy 1 od 6; 3,7 od 4 itp. – jak to wynika z podziału ilorazowego P(U)|PC. Łatwo sprawdzić, że jest to niemożliwe, gdyż odpowiedni podział PG miałby w swoim pierwszym bloku B1 dwa pierwsze bloki P(V), a w drugim – B2 – dwa ostatnie bloki P(V), czyli
Tym samym po oddzieleniu 1 od 6 nie można spełnić warunku na oddzielenie elementów 3,7 od 4. Dlatego powiększamy zbiór B dodając do niego argument x1. Zmienna x1 oddziela elementy 1,2 od 3 (tab. 4.36b), tym samym element 3 będzie można przenieść do drugiego bloku podziału PG.
Zatem:
V ’ = {<i>x</i><sub>1</sub>, <i>q</i><sub>2</sub>, <i>q</i><sub>3</sub>}
W tej sytuacji
Tablica prawdy funkcji g reprezentującej UMA jest podana w tablicy 4.37, a tablica określająca zawartość pamięci – w tablicy 4.38.
Tablica 4.37
Z tablicy 4.37 wyznaczamy . Schemat realizacji automatu pokazano na rysunku 4.17.
Rys. 4.17. Schemat logiczny realizacji automatu z przykładu 4.5
Tablica 4.38
Ten sam automat można również zrealizować w strukturze pokazanej na rys. 4.18. W strukturze tej wejściami bezpośrednimi są tylko zmienne wewnętrzne zbioru U = {<i>q</i><sub>1</sub>, <i>q</i><sub>2</sub>}, czyli V = {<i>x</i><sub>1</sub>, <i>x</i><sub>2</sub>, <i>q</i><sub>3</sub>}. Taką realizację uzyskamy przy podziale tablicy przejść (tab. 4.35) automatu na 4 części, z których każda zawierać będzie nie więcej niż 4 stany następne. Jedną z możliwości takiego podziału pokazano w tablicy 4.39a.
Tablica 4.39
Rys. 4.18. Schemat logiczny innej realizacji automatu z przykładu 4.5
Z kolei w tablicy 4.39b dokonano numeracji zajętych kratek tablicy przejść (są to jednocześnie abstrakcyjne adresy komórek pamięci ROM) oraz wprowadzono kodowanie: wstępne dla zmiennych q1, q2 i wtórne dla zmiennej q3. Na tej podstawie wyznaczamy podziały P(U), P(U)|PC oraz P(V):
Bloki P(V) są elementami kratek należących do wierszy S1, S3 albo S2, S4, S5 i kolumn x1x2 kodowanych 00, 01, 11, 10. Na przykład blok z elementami 1,6 należy do wierszy S1, S3 i kolumny x1x2 = 00, natomiast blok 10,13 należy do wierszy S2, S4, S5 i tej samej kolumny x1x2 = 00. Z bloków podziału P(V) konstruujemy podział PG:
Korzystamy przy tym z warunków „rozdziału” zapisanych w podziale ilorazowym P(U)|PC. Sposób tej konstrukcji jest pokazany w tablicy 4.40.
Tablica 4.40
Oczywiście, w celu obliczenia tablicy prawdy (co pomijamy) dla funkcji g1, g2 modyfikujących adres należy zakodować bloki podziału PG. Wystarczy przyjąć dla pierwszego bloku kod 00, a dla następnych kolejno 01, 10, 11. Wtedy poszczególne wiersze tej tablicy będą wyznaczane przez bloki podziałów P(U) i PG. Na przykład blok determinuje wektor x1, x2, q = 000, któremu odpowiadają wyjścia g1g2 = 00. Dalej analogicznie. Natomiast do obliczenia tablicy adresowania pamięci ROM trzeba obliczyć iloczyn P(U) × PG:
Bloki tego iloczynu determinują rzeczywiste adresy i zawartość komórek pamięci ROM. Na przykład, abstrakcyjnemu adresowi, reprezentowanemu przez blok odpowiada adres rzeczywisty q1q2g1g2 = 0000. W komórce ROM o tym adresie musi być zapisany kod stanu S1, czyli q1q2q3 = 000. Podobnie, dla trzeciego bloku mamy adres q1q2g1g2 = 0001 oraz zawartość jako kod stanu S4, czyli 111.