292
Dalszy tok postępowania jest już identyczny jak w poprzednich
przykładach. Proponujemy Czytelnikowi dokonanie segmentacji sieci
III
działań z rys. 7.33 dla Zespołów 3 i 3 mikroinstrukcji podstawowych a następnie napisanie odpowiednich mikroprogramów. Dla porównania zamieszczono tu rys. 7.34 i 7.35.
W dotychczasowych przykładach wykorzystywaliśmy wyłącznie zestawy mikroinstrukcji podstawowych. Obecnie przedstawimy projekt uniwersalnego sterownika mikroprogramowanego dysponującego bogatszą, bo dziesięcioelementową listą mikroinstrukcji zawierającą obok mikroinstrukcji podstawowych również pewne mikroinstrukcje pomocnicze, ułatwiające programowanie.
Przykład 7.6 [16]
Sterownik steruje maksimum n obiektami dwupołoźeniowymi (sygnały
wyjściowe y., j = 0, 1..... n-1) na podstawie maksimum n sygnałów
0
wejściowych tworzących wektor X. Wektor ten składa sie z dwu części: jedna to zewnętrzne sygnały wejściowe X , druga - to wybrane sygnały y.. Umożliwia to podejmowanie decyzji zarówno na podstawie sygnałów zewnętrznych jak i wygenerowanych wcześniej przez sterownik sygnałów wyjściowych (stanów sterowanych obiektów). Przy takich założeniach jedno z możliwych rozwiązań układu współpracy z obiektem sterownika, może mieć postać jak na rys. 7.36.
k-ełementowy wektor N wybiera jedno z wejść (przy s^^, = 0) albo wyjść (przy s^g-^ =0); w tym ostatnim przypadku wpisuje do wybranego przerzutnika wyjściowego wartość określoną przez sygnał y^.
W tego typu urządzeniach programowanie powinno być bardzo proste, jest więc wskazane rozbicie algorytmu ną najmniejsze czynności, a więc - stosowanie mikroinstrukcji z zespołów podstawowych 3* lub 3* > Ponieważ mikroinstrukcja warunkowa z adresem A. „ (Zespół 3* (7.49))
1 *“-■ TI
nie jest dogodna w użyciu, 'wybierzemy Zespół 3 (7.51) z
zapamiętywaniem warunku:
(7.69a) (7.69b) (7.69c)
A.: execute y^;
A.: if q then go to N; (M = Aj), A.: execute (q:= xN);
0: |
if |
X1 |
then |
go |
to |
2; |
16: |
if |
X . i |
then |
go |
to |
18; |
1: |
go |
to |
13: |
17: |
go |
to |
23; | ||||||
2: |
if |
X1 |
then |
go |
to |
4; |
18: |
if |
x2 |
then |
go |
to |
20; |
3: |
go |
to |
9: |
19: |
go |
to |
23; | ||||||
4: |
if |
x2 |
then |
go |
to |
6; |
20: |
if |
X4 |
then |
go |
to |
22; |
5: |
go |
to |
9; |
21: |
go |
to |
23; | ||||||
6: |
if |
x4 |
then |
go |
to |
8; |
22: |
go |
to |
32; | |||
7: |
go |
to |
9; |
23: |
if |
X1 |
then |
go |
to |
25; | |||
8: |
go |
to |
13; |
24: |
go |
to |
28; | ||||||
9: |
if |
X2 |
then |
go |
to |
11; |
25: |
if |
X2 |
then |
go |
to |
27; |
10: |
go |
to |
15; |
26: |
go |
to |
28; | ||||||
11: |
if |
x3 |
then |
go |
to |
13; |
27: |
go |
to |
32; | |||
12: |
go |
to |
15; |
28: |
if |
X3 |
then |
go |
to |
30; | |||
13: |
execute (y |
1 1): |
29: |
go |
to |
34; | |||||||
14: |
go |
to |
16; |
30: |
if |
X4 |
then |
go |
to |
32; | |||
15: |
execute (y |
1 : = |
* 0); |
31: |
go |
to |
34; |
32: execute (yg := !): 33: go to O;
34: execute (yg := 0): 35: go to 0:
Rys. 7.34. Mikroprogram pracy układu kombinacyjnego z przykładu 7.5 (Zespół 31)