UKŁADY MIKROPROGRAMOWANE
Algorytmiczna maszyna stanów Omawiane do tej pory bloki funkcjonalne są stosowane przede wszystkim do projektowania układów (systemów) cyfrowych, których typowym zadaniem są realizacje sprzętowe algorytmów. Ale aby rozsądnie, w określonej kolejności zdarzeń, wykonać zadanie określone algorytmem, bloki funkcjonalne zastosowane w systemie muszą być odpowiednio sterowane. 2
Algorytmiczna maszyna stanów Sterowanie polega na inicjowaniu bloków do sekwencyjnego wykonywania elementarnych czynności takich jak np. zliczanie, wpisywanie do rejestru, sumowanie liczb… Domyślamy się, że czynności takiego sterowania może wykonywać układ sekwencyjny.. Dodaj Ładuj US REJESTR Prześlij Y j N - 1 n A e X Zliczaj X j N-1 Y n A e LICZNIK US wytwarza sygnały sterujące pobudzające do pracy odpowiednie bloki funkcjonalne układu wykonawczego. 3
Algorytmiczna maszyna stanów Algorithmic State Machine (ASM) Dostosowany do tych potrzeb układ sekwencyjny nazywa się algorytmiczną maszyną stanów Algorithmic State Machine (ASM) ASM to specjalnie konstruowany układ sekwencyjny umożliwiający opis podstawowych czynności wykonywanych przez bloki funkcjonalne w odpowiedniej kolejności ich działania. ASMy opisuje się sieciami działań 4
Sieć działań… …reprezentacja graficzna ASM Dwa podstawowe elementy: Ai Krawędź wejściowa stanu Lista sygnałów wyjściowych Wyjścia do innych klatek T F Warunek Ai Nazwa stanu Klatka operacyjna Klatka warunkowa (decyzyjna) 5
Sieć działań Graf zbudowany z wierzchołków (klatek) i krawędzi Klatki: x1 Z1 Z2 x3 x2 Z3 Z4 operacyjne Z Z Z x warunkowe 6
Typowe segmenty sieci działań są graficzną reprezentacją Mikroinstrukcja Typowe segmenty sieci działań są graficzną reprezentacją tzw. mikroinstrukcji Moore’a Z Ai Aj Ak x 1 Za x Ai Aj Ak 1 Zb Mealy’ego Ai :, if x then Z = Za, A’ = Aj else Z = Zb, A’ = Ak Ai : Z = Za, if x then A’ = Aj else A’ = Ak 7
Podział sieci działań… na segmenty odpowiadające mikroinstrukcjom Moore’a Stany wewnętrzne Z Ai Aj Ak x 1 A0 Z Ai Aj x1 Z1 Z2 x3 x2 Z3 Z4 A3 A1 A2 Ai Aj Ak x 1 A3 A4 A5 8
Sieć działań reprezentuje automat Podział sieci na stany (dla automatu) x1x2x3 A 000 001 011 010 110 111 101 100 A 0 A 1 A 3 A 2 A0 A1 A2 A3 x1 Z1 Z2 x3 x2 Z3 Z4 1 9
Mikroinstrukcje a stany automatu Podział sieci na segmenty odpowiadające mikroinstrukcjom Podział sieci na stany (dla automatu) x1 Z1 Z2 x3 x2 Z3 Z4 A3 A0 A0 A1 A2 A3 x1 Z1 Z2 x3 x2 Z3 Z4 1 A1 A2 A4 A5 ??? 4 stany 6 stanów W automacie w jednym stanie może być badanych wiele warunków, Mikroinstrukcjach – tylko jeden warunek !!! 10
Przykład Rozważmy przykład syntezy układu cyfrowego pobierającego dane z wejść D0,..., Dn–1 w celu ich przetworzenia w rejestrach B i Y. Układ operacyjny ma przetwarzać informację M(I ) pobieraną z n źródeł D0,...,Dn–1 za pośrednictwem multipleksera M adresowanego licznikiem I. S B := M(I) Y := 0 Y = M(I) Y := B + Y I := I + 1 B := B Y B := B/2 I := 0 NIE 1 TAK B D0 Dn-1 Y M M(I) I 11
Przykład 12 I := 0 S B := M(I) 1 B := M(I) B := B Y Y := 0 B := B/2 Y = M(I) Y := B + Y I := I + 1 B := B Y B := B/2 I := 0 NIE 1 TAK B := M(I) B := B Y B := B/2 Y := B + Y Warunek Y = M(I) 12
Przykład c.d. 13 S B := M(I) Y := 0 Y = M(I) Y := B + Y I := I + 1 B := B Y B := B/2 I := 0 NIE 1 TAK NOT B := M(I) B := B/2 B := B Y Y := B + Y Warunek Y = M(I) M(I) c0 do US Y = M(I) K (SHR(B)) X B B := X B := B/2 B := B Y Y := B + Y Y := 0 Y := B + Y Y Y 13
Przykład c.d. 14 M(I) do US Y = M(I) Y := B + Y K B := B Y X B Y := 0 Y := B + Y X v M(I) B := X B := B/2 B Y := B + Y B := B Y EXOR 14
Przykład c.d. UO US F 15 B Y M(I) Y := 0 Y := B + Y X EXOR v c0 B := X B := B/2 EXOR v c0 B + Y B Y Warunek Y = M(I) Warunek F = M(I) – Y = 0 UO M(I) Y US S F Y = M(I) 8 (+2) 15
Przykład c.d. 16 x1x0 I := 0 S = x0 S 1 B := M(I) Y := 0 Y := B + Y I := I + 1 B := B Y B := B/2 I := 0 NIE 1 TAK A0 x1x0 - 0 - - A0/Z1 A1/Z2 A2/Z3 A3/Z4 A4/Z5 A5/Z6 A6/Z7 A7/Z8 A8/Z9 - 1 1 - 0 - S = x0 A1 A2 A3 A4 A5 A6 A7 F = M(I) – Y A8 F = 0 Y = M(I) [F = 0] = x1 16
Ale nie po to stworzono pojęcie ASM, aby realizować je Przykład c.d. x1x0 A 00 01 11 10 Z A0 A1 Z1 A2 Z2 A3 Z3 A4 Z4 A5 Z5 A6 Z6 A7 Z7 A8 Z8 Z9 - 0 - - A0/Z1 A1/Z2 A2/Z3 A3/Z4 A4/Z5 A5/Z6 A6/Z7 A7/Z8 A8/Z9 - 1 1 - 0 - Ale nie po to stworzono pojęcie ASM, aby realizować je w postaci automatów! 17
Układy mikroprogramowane Bardziej rozbudowane sieci działań realizuje się w postaci tzw. układów mikroprogramowanych A MI Mikroprogram MI1 Opis MI1 1 MI2 n MIn Opis MIn W układach mikroprogramowanych… 18
Przykład mikroprogramu x1 1 A0 A Mikroinstrukcja MI Z i oczekiwanie na spełnienie warunku MI1 1 Z i przejście bezpośrednie MI2 2 Z i skok warunkowy do A6 MI3 3 Z i skok warunkowy do A2 4 5 Z i skok bezwarunkowy do A0 MI4 6 Z i skok bezwarunkowy do A4 A1 Z2 A2 Z3 ??? x2 1 A3 A6 Z2 Z4 x1 A4 Z3 x4 1 Z2 A5 19
Przykład c.d. – sieć działań, mikroprogram x 1 Ai Ai+1 Z1 x1 1 Ai+1 Ai Z A0 A MI MI1 Oczekiwanie na spełnienie warunku 1 MI2 Przejście bezpośrednie 2 MI3 Skok warunkowy do A6 3 Skok warunkowy do A2 4 5 MI4 Skok bezwarunkowy do A0 6 Skok bezwarunkowy do A4 [MI1] A1 Z2 MI2] A2 Z3 x2 1 A3 A6 Z2 Z4 Ai Z x 1 Ai+1 Aj x1 Aj Ai Z A4 Z3 x4 1 Z2 A5 [MI3] [MI4] Mikroprogram zapisuje się w pamięci stałej ROM zwanej pamięcią mikroprogramu 20
Mikroprogramowany układ sterujący Schemat blokowy MUS Takt RA UA Sygnały (warunki) zewnętrzne i wewnętrzne A PM MI DMI Dekoder mikroinstrukcji UO
Format mikroinstrukcji Adres mikroinstrukcji Format mikroinstrukcji: MI = <S, B,C, Z> Pola: S - sterujące (kod MI) B - adresowe C - kontrolne Z - operacyjne (mikrorozkaz) PM Mikroinstrukcja S B C Z
Przykład syntezy MUS Mając do dyspozycji licznik o mikrooperacjach LOAD, COUNT ze sterowaniem odpowiednio: 1 (dla LOAD), 0 (dla COUNT), pamięć ROM oraz ewentualnie inne bloki funkcjonalne i bramki, zaprojektować mikroprogramowany układ sterujący o następującej liście mikroinstrukcji I1 : Z, if xc then A’ = Ai else A’ = Ai+1, I2 : Z, if xc then A’ = Ai+2 else A’ = Ai+1, I3 : Z, A’ = Aj. W rozwiązaniu należy podać: – fragmenty sieci działań (schematy) odpowiadające wszystkim mikroinstrukcjom, – schemat blokowy układu sterującego, – tablicę prawdy dekodera mikroinstrukcji oraz minimalne wyrażenia boolowskie opisujące jego wyjścia.
Przykład c.d. - mikroinstrukcje I1 : Z, if xc then A’ = Ai else A’ = Ai+1 (oczekiwanie na spełnienie warunku) I2 : Z, if xc then A’ = Ai+2 else A’ = Ai+1 Z Ai x 1 Ai+1 (skok warunkowy o 2)) Ai Z x 1 Ai+1 Ai+2 I3 : Z, A’ = Aj Aj Ai Z C, Z C, Z B, Z Formaty mikroinstrukcji
Przykład syntezy US - schemat blokowy +2 Adresy: A, A+1, A+2, B B 00 01 11 MA Q1 Q0 C, Z B, Z Formaty mikroinstrukcji LICZNIK L A Pola C i B są polami zgodnymi ponieważ nie występują jednocześnie w żadnej mikroinstrukcji. Można je umieścić w jednym segmencie PM PM 00 C Z 01 10 B X B DMI xc s1 s0 L Q1 Q0 s1s0 C Z
Przykład c.d. – dekoder mikroinstrukcji Ai x 1 Ai+1 MI1 Ai Z x 1 Ai+1 Ai+2 MI2 00 01 11 MA Q1 Q0 +2 B A A+2 Aj Ai Z MI3 DMI xc s1 s0 L Q1 Q0 MI s1 s0 xc L Q1 Q0 1 – 2 3 LICZNIK L A Count 0 Load 1 L = s1 + xc Q1 = s0xc
Przykład (str. 139 SUL) Zaprojektować układ sterujący o następującej liście mikroinstrukcji: a) Ai : Z, A' = Ai+1 b) Ai : Z, A' = Aj. c) Ai : Z, if xc then A' = Ai+1 else A' = Ai, Ponadto układ ma umożliwiać obsługę mikropodprogramu.
Mikroinstrukcje do obsługi (mikro)podprogramu Warunkowe wejście do podprogramu Ai : if xc then A' = Aj, RS:= Ai+1 else A' = Ai+1 A i adres Ai+1 powrotu z podprogramu zapamiętany w rejestrze śladu RS 1 xc RS := A A i+1 j Rejestr Śladu q Ai+1 A k Warunkowe wyjście z podprogramu 1 xc A A :=RS i+1 A k+1 Ai : if xc then A' = RS else A' = Ai+1
Przykład c.d. Zaprojektować układ sterujący o następującej liście mikroinstrukcji: a) Ai : Z, A' = Ai+1 b) Ai : Z, A' = Aj. c) Ai : Z, if xc then A' = Ai+1 else A' = Ai, Ponadto układ ma umożliwiać obsługę mikropodprogramu. d) Ai : if xc then A' = Aj, RS:= Ai+1 else A' = Ai+1 e) Ai : if xc then A' = RS else A' = Ai+1 29
Przykład cd. Adresy: Ai+1 Aj Ai RS
Przykład cd. realizacja z rejestrem adresowym Adresy: Ai+1 Aj Ai RS
Przykład cd. realizacja z rejestrem adresowym Adresy: Ai+1 Aj Ai RS +1 RS q I I I I Q 1 2 3 MUXA RA PM S B Q q v v X DMI Z MUXW C S x c x c 32
Przykład cd. Przejście bezwarunkowe, Z Skok bezwarunkowy, Z Przejście warunkowe, Z Warunkowe wejście do podprogramu Warunkowe wyjście z podprogramu MI s2 s1 s0 xc Q q v a 0 0 0 ─ I2 HOLD Z b 0 0 1 ─ I0 c 0 1 0 0 0 1 0 1 I1 d 0 1 1 0 0 1 1 1 LOAD NOP e 1 0 0 0 1 0 0 1 I3 –
Przykład cd. z licznikiem adresowym Adresy: Ai+1 count Ai hold Aj load RS load