296
Sekwencja tak zmodyfikowanych mikroinstrukcji będzie obliczaia iloczyn logiczny odpowiednich zmiennych. Zmodyfikowana postać mikroinstrukcji (7.69 c) jest więc następująca:
A.: execute (q:- q • x^); (7.71)
Aby mikroinstrukcja (7.71) działała poprawnie, wszystkie pozostałe mikroinstrukcje muszą dodatkowo ustawiać wstępny stan przerzutnika q równy jeden (q := 1); dla uproszczenia nie będziemy tego wpisywać do wyrażeń mikroinstrukcji.
Będziemy zatem'stosować mikroinstrukcje typu (7.69 a), (7.69 b) i
(7.71). W każdym z tych typów będą występowały po dwie mikroinstrukcje różniące się wartością zmiennej, odpowiednio, y^, q, x^. Jeśli dodamy 1 do tego mikroinstrukcje obsługi podprogramów (co uwolni program od powtarzających się fragmentów) oraz mikroinstrukcje skoków 1 bezwarunkowych (dla uproszczenia programowania) to, po przypisaniu mikro instrukcjom skrótowych nazw oraz po przyjęciu kodu K = (K^
KQ) ułatwiającego ich dekodowanie, otrzymamy następującą listę:
Typ A^: execute (y^=e); e 6 (0,1),
“ZAŁącz obiekt N" lub "WYŁącz obiekt N”:
Typ A.: if q then go to N; ą e (0,11,
"Skocz przy Warunku Pozytywnym (Negatywnym) do N“:
Typ A.: execute (q : = q»xN); xN « (0,1>,
“BAdaj czy x^ jest Afirmacją (Negacją)”:
I
Typ A.: PUSH A.+j and go to N; (N=Aj),
“Wywołaj podPRogram z N":
7) WPR N; K = 1111.
Typ Aj: POP;
"WRóć z Podprogramu":
8) WRP N; K = 0100.
Typ Aj: go to N;
"Skocz Bez Warunku do N":
9) SBW N; K = 1110,
Typ Aj: go to Aj+2;
"PrzeSKocz":
10) PSK; K = 0000.
Uwzględniając wprowadzone metody adresowania i zakładając, że stos składa się z jednego rejestru, można zaproponować strukturę układu sterującego (moduł U. 1 z rys. 7.36) jak na rys. 7.37.
Pozostaje jeszcze zaprojektowanie układu dekodującego (moduł U.D. w strukturze z rys. 7.37)., który zawiera przerzutnik q oraz część kombinacyjną, generującą lokalne sterowania. Należą do nich sygnały
(Sj, sQ) adresujące multiplekser, sygnał sR umożliwiający wpis (przy
s
Sp = 1) do rejestru stosu Rs> sygnał y^ załączający (y^ = 1) lub
wyłączający (y^ = 0) obiekt N (wówczas kolejny sygnał sDEC musi być równy zeru) oraz sygnał s^^, umożliwiający (przy s^ję = 0) wybór i badanie warunku x„.
Znając działanie poszczególnych mikroinstrukcji oraz ich kody można zbudować zbiorczą tabelę Karnaugha opisującą układ dekodujący U.D (rys. 7.38 a). Na tej podstawie określamy tabele dla poszczególnych funkcji (rys. 7.38 b) oraz ich realizacje (wygodnie jest tu wykorzystać multipleksery o dwóch wejściach adresowych):