TC Moduł 11

From Studia Informatyczne

Enlarge
Układy cyfrowe cz. 2

Enlarge
Sekwencyjne bloki funkcjonalne to przede wszystkim rejestry i liczniki. W tak zwanym rejestrze uniwersalnym, oprócz typowych operacji LOAD\, i HOLD\,, występują mikrooperacje przesuwania w prawo SHR\, (Shift Right) oraz w lewo SHL\, (Shift Left).

Licznik to rejestr specjalnego typu, dodatkowo wyposażony w mikrooperację zwiększania (zliczania w górę Y := Y + 1) lub zmniejszania (zliczania w dół Y := Y - 1) jego zawartości. Mikrooperacje te zapisuje się również jako inkrementację lub dekrementację:

Y := INC(Y) ,
Y := DEC(Y) ,

Enlarge
Rejestr to w najprostszym przypadku układ składający się z zespołu przerzutników, z których każdy wykonuje identyczne funkcje. Na rysunku pokazano rejestr zbudowany z czterech przerzutników. Jest on wyposażony w 4\, wejścia typu D\,. W rejestrze takim wpisanie (LOAD\,) nowej zawartości jest dokonywane przez wejścia D_i\, synchronicznie z zegarem CLK\,. Inaczej mówiąc, po podaniu na wejścia D_i\, 4\,-bitowego słowa i po przyjściu ustalonego zbocza sygnału CLK\, nastąpi zapamiętanie tego słowa w rejestrze, co znaczy, że pojawi się ono na wyjściach Q_i\,.

Enlarge
Ważnym w zastosowaniach jest rejestr, w którym wejścia i wyjścia są połączone kaskadowo. Taki rejestr nazywa się rejestrem przesu¬wającym (shift register). Pracę rejestru przesuwającego można opisać jak w tablicy na planszy. Pokazano w niej sześć kolejnych stanów rejestru dla kolejnych sześciu impulsów zegarowych, przy założeniu, że pierwotnie rejestr znajdował się w stanie 0000\,, a na jego wejście D_1\, podano szeregowo sekwencję bitów 010000\,. Z tablicy wynika, że jedynka podana na wejście rejestru (wejście D1 pierwszego przerzutnika) pojawi się na wyjściu przerzutnika Q_4\, po czwartym impulsie zegarowym.

Enlarge
Można zbudować układ, w którym czynności wykonywane w rejestrze równoległym (jak na planszy 3) i przesuwającym będą wykonywane w tym samym bloku funkcjonalnym BF\,, a o ich wyborze będzie decydować wartość sygnału na odpowiednim wejściu sterującym. Konstrukcja takiego rejestru jest możliwa jeśli każdy przerzutnik rejestru zostanie dodatkowo wyposażony w multiplekser.

Enlarge
Dodając przed wejście każdego przerzutnika multiplekser uzyskuje się rejestr szeregowy z wpisem równoległym. W rejestrze tym sygnał wprowadzony na wejście D\, przerzutnika jest za pośrednictwem multipleksera pobierany bądź to z wejścia równoległego, bądź szeregowego (dla pierwszego ogniwa) lub z wyjścia poprzedzającego przerzutnika. W rezultacie przy sygnale Shift/Load = 0 w układzie jest wykonywana mikrooperacja przesuwania, a przy Shift/Load = 1 jest wykonywany wpis równoległy.

Enlarge
Dalsza rozbudowa prowadzi do koncepcji rejestru uniwersalnego. W rejestrze uniwersalnym, oprócz typowych operacji LOAD i HOLD, występują mikrooperacje przesuwania w prawo oraz w lewo:

SHR(x_p,Y)\, – przesunięcie logiczne słowa Y\, w prawo z wpisaniem bitu x_p\, na zwalnianą pozycję; y_{n-1} := x_p,\, y_i := y_{i+1} dla i = n-2 ,..., 0;

SHL(Y,x_l)\, – przesunięcie logiczne słowa Y\, w lewo z wpisaniem bitu x_l\, na zwalnianą pozycję; y_i := y_{i-1} dla i = n-1 ,..., 1,\, y_0 := x_l .



Enlarge
Licznik to rejestr specjalnego typu, dodatkowo wyposażony w mikrooperację zliczania. Rysunek na planszy ilustruje pracę licznika o mikrooperacjach: LOAD, HOLD, COUNT.

Enlarge
Zaprojektowanie licznika o pojemności N\, (licznik mod N\,), co oznacza zliczanie w cyklu 0, 1, ..., N - 1, 0, 1\, itd., jest prostym zadaniem syntezy logicznej. Przykładowa, zakodowana tablica przejść-wyjść licznika mod 16\,, zliczającego w górę i wyposażonego w wejście zezwalające E\, jest podana w tablicy na planszy. Bezpośrednio z tej tablicy można uzyskać tablice Karnaugha funkcji wzbudzeń dla przerzutników typu T\,.

Enlarge
Łatwo sprawdzić, że obliczonym w ten sposób funkcjom wzbudzeń odpowiada schemat logiczny licznika jak na niniejszej planszy. Rozbudowa tego licznika do układu z wpisywaniem równoległym polega na wykorzystaniu spostrzeżenia, że naturalnym układem do wpisywania jest rejestr zbudowany z przerzutników typu D\,. Przerzutnik typu T\, można zbudować z przerzutnika D\, w sposób pokazany na rysunku.

Enlarge
Zastępując każdy przerzutnik T\, licznika z planszy 10 przerzutnikiem typu D\, z bramką EXOR\, uzyskujemy układ, w którym możliwe będzie zrealizowanie dodatkowej mikrooperacji ładowania (LOAD\,).

Enlarge
Wprowadzając następnie multipleksery między wyjścia bramek EXOR\, a wejścia D\, uzyskuje się schemat licznika z wpisywaniem równoległym synchronicznym.

Enlarge
Pamięci stałe typu ROM (Read Only Memory) są układami kombinacyjnymi, w których jest możliwe tylko odczytanie infor¬macji zawartej w strukturze matrycy pamięci. Zapisanie tej informacji odbywa się w procesie technologicznym zwanym programowaniem pamięci.

O pamięci, w której wektor adresowy A\, ma długość n\, a wektor wyjściowy Y\, – długość m mówimy, że ma pojemność N\times m\, bitów (N\, słów m\,-bitowych), przy czym N = 2^n\,.


Enlarge
Na rysunku przedstawione jest działanie pamięci typu ROM o 3 wejściach adresowych. Sygnały wyjściowe pamięci odpowiadające poszczególnym adresom wyróżniono kolorami.

Enlarge
Układ cyfrowy zbudowany ze specjalizowanych bloków funkcjonalnych, z których każdy wykonuje ustalone mikrooperacje, jest nazywany układem operacyjnym (UO) lub wykonawczym. Ponieważ mikrooperacje te zgodnie z zadanym algorytmem przetwarzania – muszą być wykonywane sekwencyjnie – to do tak skonstruowanego układu należy doprowadzić odpowiednią sekwencję sygnałów sterujących. Sekwencja ta jest ciągiem słów binarnych tzw. mikrorozkazów, które wytwarzane są w wyodrębnionym układzie sterującym US. Jednocześnie informacja o stanie przetwarzania sygnałów wejściowych w wyjściowe jest przekazywana zwrotnie do układu sterującego.

Enlarge
Schemat blokowy systemu cyfrowego zbudowanego z bloków US i UO pokazano na rysunku. Wejściami układu sterującego są sygnały pochodzące z UO – tzw. sygnały predykatowe X_P\, oraz sygnały zewnętrzne X_Z\,. Sygnały predykatowe określają „stan” przetwarzania słów wejściowych w słowa wyjściowe. Przez „stan” przetwarzania należy rozumieć informację przeznaczoną do US, a określającą np. zakończenie procesu przetwarzania w danym bloku funkcjonalnym lub określony wynik tego procesu. Na przykład, jeżeli wektory A, B\, reprezentują liczby i jeśli blok BF ma dokonać porównania tych liczb i w zależności od wyniku porównania wykonać operację B - A\, lub A - B\,, to do US należy doprowadzić binarny sygnał określający jeden z dwóch „stanów”: A\le B\, lub A > B\,. Informacjami dotyczącymi pracy US są również binarne sygnały zewnętrzne X_Z\, oraz X_Y\, (np. sygnały START, ALARM).

Enlarge
Syntezę strukturalną układów cyfrowych omówimy na przykładzie układu do konwersji liczby binarnej na liczbę dziesiętną w kodzie BCD (liczbę dziesiętną z cyframi kodowanymi binarnie). W kodzie BCD (Binary Coded Decimal) każda cyfra liczby zapisanej w kodzie dziesiętnym jest przedstawiana czterobitową liczbą binarną.

Enlarge
Mówiąc poglądowo naszym zadaniem jest zaprojektowanie układu czyli skonstruowanie go z bloków funkcjonalnych. W celu ograniczenia rozmiarów układu założymy, że przetwarzana liczba binarna może być liczbą 8-bitową, ale mniejszą od 100.

Enlarge
Do projektu wykorzystamy algorytm znany pod nazwą „plus 3”. W algorytmie tym liczba przetwarzana binarna jest wprowadzana do 8 bitowego rejestru LB. Liczba w kodzie BCD jest „wytwarzana” w dwóch 4 bitowych rejestrach LDA i LDB. W poszczególnych krokach algorytmu wykonywane są następujące czynności. Sprawdzana jest liczba LDB i jeśli jest ona większa lub równa 5, to zawartość tego rejestru jest zwiększana o 3. W przeciwnym przypadku zawartość LDB nie ulega zmianie. Analogiczne czynności wykonywane są dla rejestru LDA. Po sprawdzeniu zawartość wszystkich rejestrów zostaje przesunięta o 1 bit w lewo. Po 8 sekwencjach sprawdzania i przesuwania w rejestrach LDA (część starsza) i LDB (część młodsza) powstanie liczba w kodzie BCD.

Enlarge
Pracę algorytmu „plus 3” ilustrujemy poglądowo na następującej planszy. Rysunek przedstawia zawartości rejestrów LB, LDB oraz LDA w poszczególnych krokach algorytmu. Do rejestru LB została wprowadzona (binarnie) liczba 27\,. Zauważmy, że w 6 kroku algorytmu do liczby binarnej 0110\, (dziesiętnie 6\,) została dodana liczba 0011\, (czyli 3\,). Po 8 krokach w rejestrach LDA, LDB ustaliły się liczby 0010\, oraz 0111\,, czyli 27\,.

Enlarge
Na niniejszej planszy przedstawiamy formalny zapis algorytmu. W poszczególnych klatkach sieci działań zapisujemy odpowiednie czynności (mikrooperacje). Stosujemy do tego celu symboliczne mnemoniki typowych mikrooperacji. Przykładowo: LOAD, SHIFT, DEC.

Zmienne (argumenty) w tym algorytmie to: LB – 8-bitowa liczba binarna, LDA – 4-bitowa starsza część badanej liczby, LDB – 4-bitowa młodsza część badanej liczby, LD = (LDA, LDB) – złożenie liczb LDA i LDB, czyli liczba w kodzie BCD (wynik przetwarzania), LK – zmienna pomocnicza (licznik kroków algorytmu).


Enlarge
Na podstawie formalnego zapisu algorytmu tworzymy schemat blokowy układu operacyjnego (wykonawczego). Jest on zbudowany z rejestrów R1, R2, R3 reprezentujących odpowiednio rejestry LB, LDB oraz LDA, multipleksera MUX, sumatora \sum\,, komparatora K, licznika kroków LK i rejestru R4. Potrzeba zastosowania takich bloków wynika bezpośrednio z analizy czynności wykonywanych w klatkach sieci działań opisującej pracę algorytmu.

Binarna liczba LB jest ładowana do 8-bitowego rejestru przesuwającego. Pośrednie wyniki przetwarzania (liczby LDA i LDB) są zapamiętywane w dwóch 4-bitowych rejestrach, odpowiednio R3 i R2. Rejestry R3, R2 i R1 połączone są w łańcuch, umożliwiający przesuwanie 16 bitów. Ich pracą sterują 2-bitowe sygnały S3, S2 i S1. W układzie zastosowano 4-bitowy sumator \sum\, i komparator K. Przełączanie pracy układu na badanie młodszych i starszych czterech bitów odbywa się w multiplekserze MUX. Ostateczny wynik przetwarzania (liczba dwucyfrowa LDA,LDB) jest zapisywany w 8-bitowym rejestrze R4, w którym jest on utrzymywany do czasu przetworzenia następnej liczby.

Licznik kroków algorytmu jest zrealizowany w liczniku LK zliczającym w dół z sygnałem predykatowym, wykrywającym stan licznika równy 0...0\,. Współpraca układu operacyjnego z odpowiednim układem sterującym jest realizowana za pomocą sygnałów LK = 0 i K\ge 5\,. Sygnałami sterującymi dla układu operacyjnego są sygnały S1, S2, S3 sterujące rejestrami, sygnał ładowania LOAD dla licznika i rejestru R4, sygnał DEC dla licznika LK oraz sygnał MUX sterujący multiplekserem.


Enlarge
Tak skonstruowany układ wykonawczy odbiega nieco od pierwotnego schematu z planszy 21. Po starcie (S) następuje załadowanie liczby binarnej LB do rejestru R1 (LOAD1), zerowanie rejestrów R2 i R3 (CLEAR2,3) i załadowanie licznika kroków LK. Dla młodszej czwórki bitów (MUX := 0) następuje porównanie zawartości R2 z liczbą 5. Jeżeli wynik K\ge 5\,, to do rejestru R2 jest zapisywana liczba zwiększona o 3, jeśli nie – to pierwotna liczba. Podobne operacje są wykonywane dla starszej czwórki bitów (MUX := 1), po czym zawartość rejestrów R1, R2 i R3 jest przesuwana w lewo o jeden bit (SHL). Po ośmiokrotnym wykonaniu powyższych operacji (LK = 0) czterobitowe wektory z rejestrów R3 i R2 są ładowane do rejestru R4 jako liczba w kodzie BCD.

Na tak skonstruowanej sieci działań jednocześnie dokonujemy numeracji stanów wewnętrznych odpowiedniego układu sterującego. Stany wewnętrzne oznaczone A_0\, do A_7\, kojarzymy z klatkami operacyjnymi. Należy zauważyć, że w stanie A_0\, mimo pozornie braku klatki operacyjnej wykonywana jest czynność „mikrooperacji pustej”.


Enlarge
Na podstawie sieci działań z ponumerowanymi stanami wewnętrznymi układu sterującego przystępujemy do narysowania grafu automatu sterującego. Odpowiedni układ sterujący można zaprojektować jako układ sekwencyjny, który na podstawie sygnałów wejściowych LK = 0, K\ge 5\, oraz S (start) będzie wytwarzał sygnały określające mikrooperacje: LOAD1, CLEAR itp. Dla uproszczenia zapisu można przyjąć, że sygnały wejściowe są oznaczone odpowiednio: S jako x_2\,, K\ge 5\, jako x_1\,, LK = 0 jako x_0\,. Przyjmijmy również, że sygnały wyjściowe w poszczególnych klatkach operacyjnych sieci z rysunku są oznaczone Z_0,  Z_1, ..., Z_7\,, przy czym Z_0\, jest tak zwanym mikrorozkazem pustym.

Enlarge
Odpowiednia tablica przejść wyjść automatu reprezentującego układ sterujący wynika bezpośrednio z uzyskanego grafu.