REJESTRY
Transkrypt
REJESTRY
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Energoelektroniki i Maszyn Elektrycznych REJESTRY Laboratorium Techniki Cyfrowej i Mikroprocesorowej Ćwiczenie IV Opracowano na podstawie skryptu: Komputery i Programowanie II, Materiały pomocnicze do laboratorium Andrzej Haras, Janusz Nieznański WPG, Gdańsk 1990 Opracował: Sławomir Bujacz Gdańsk 2003 Układy i urządzenia mikroprocesorowe Rejestry Instrukcja 1. Cel i zakres ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi typami rejestrów i ich realizacja za pomocą programu MAX+PLUS II i zestawu dydaktycznego ZLA1. W ćwiczeniu wykorzystywane będą rejestry liczące w oparciu o układ 74194. 2. Wprowadzenie Rejestr jest układem, który służy do pamiętania (przechowywania) informacji cyfrowej. Jako blok funkcjonalny występuje niemal we wszystkich poważniejszych urządzeniach cyfrowych. Na przykład pamięć (RAM, ROM) może być traktowana jako zespół rejestrów. Jednostka centralna komputera (np. mikroprocesor) zawiera zwykle kilkadziesiąt rejestrów o różnym przeznaczeniu. Rejestry różnią się przede wszystkim sposobem wprowadzania i wyprowadzania pamiętanej informacji. Pod tym względem można je podzielić na: a) rejestry równoległe umożliwiające równoległe wprowadzanie i wyprowadzanie informacji (jednocześnie ze wszystkich i do wszystkich pozycji rejestru), b) rejestry szeregowe umożliwiające szeregowe wprowadzanie i wyprowadzanie informacji, tzn. kolejno bit po bicie, c) szeregowo-równoległe umożliwiające szeregowe wprowadzanie i równoległe wyprowadzanie informacji, d) równoległo-szeregowe umożliwiające równoległe wprowadzanie i szeregowe wyprowadzanie informacji, e) rejestry uniwersalne, które umożliwiają wprowadzanie i wyprowadzanie informacji zarówno w sposób równoległy, jak i szeregowy. Podstawowym elementem rejestru jest przerzutnik, który umożliwia zapamiętanie jednego bitu informacji cyfrowej. Parametry charakteryzujące rejestr: − długość rejestru, równa liczbie przerzutników n, n − pojemność rejestru jest równa 2 i określa maksymalną ilość różnych informacji, które mogą być zapamiętane w rejestrze, − szybkość pracy rejestru; dla rejestru równoległego będzie to czas trwania wprowadzania i wyprowadzania informacji; w przypadku rejestru szeregowego będzie to maksymalna częstotliwość impulsów zegarowych, przy której przesuwanie kombinacji nie ulega jeszcze zniekształceniu. Katedra Energoelektroniki i Maszyn Elektrycznych 2 Układy i urządzenia mikroprocesorowe Ogólną strukturę rejestru przedstawiono na rys. 1. Rys. 1. Ogólna struktura rejestru n bitowego 3. Rejestry równoległe Wprowadzenie równoległe informacji do rejestru odbywa się najczęściej za pomocą asynchronicznych wejść ustawiających CLEAR i PRESET przerzutnika. Informacja wyjściowa jest dostępna na wyjściach Q przerzutników. Rys. 2. Układy równoległego wprowadzania informacji do rejestru W przypadku a) przed wprowadzeniem informacji należy rejestr wyzerować, w przypadku b) nie jest to konieczne. Rejestry tego typu znajdują zastosowanie jako rejestry pośredniczące (buforowe), np. między licznikiem a układem wyświetlającym jego stan. Informacja z wejść równoległych X jest wprowadzana do rejestru podczas Katedra Energoelektroniki i Maszyn Elektrycznych 3 Układy i urządzenia mikroprocesorowe wysokiego stanu sygnału STROB. Przy niskim stanie tego sygnału informacja wprowadzona do rejestru zostaje w nim zatrzaśnięta. Rejestry tego typu noszą więc często nazwę zatrzasków (ang. latch). Większość rejestrów wewnętrznych mikroprocesora oraz rejestry pamięci mają wyłącznie charakter rejestrów równoległych. 4. Rejestry przesuwające Rejestry szeregowe umożliwiają przesuwanie wprowadzonej, informacji w lewo lub w prawo (rejestry jednokierunkowe), bądź też zarówno w lewo jak i w prawo (rejestry dwukierunkowe rewersyjne). Przesuwanie informacji w rejestrze odbywa się synchronicznie w takt zmian sygnału taktującego, o jedną pozycję. Ogólną strukturę rejestru szeregowego przedstawia rysunek 3. Rys. 3. Struktura rejestru szeregowego Rejestry równoległo-szeregowe i szeregowo-równoległe są również rejestrami przesuwającymi. Konstrukcja tych rejestrów polega na kombinacji dwu poprzednich typów. Jako przykład przedstawimy rejestr, który umożliwia szeregowe bądź równoległe wprowadzanie informacji; wyprowadzanie następuje w sposób szeregowy. Rys. 4. Rejestr równoległo-szeregowy Katedra Energoelektroniki i Maszyn Elektrycznych 4 Układy i urządzenia mikroprocesorowe Jeśli STROB=1, to możemy wprowadzić równolegle informację do rejestru. Przed wprowadzeniem informacji rejestr musi być wyzerowany. Jeśli STROB=0, w czasie taktowania rejestr przesuwa informację w prawo. W podobny sposób można realizować rejestry o dowolnych kombinacjach wprowadzania i wyprowadzania informacji (tzw. uniwersalne). W systemach mikroprocesorowych występuje przynajmniej jeden rejestr, tzw. akumulator, który na charakter rejestru uniwersalnego. W rejestrach rewersyjnych wprowadza się dwa wejścia dla sygnału taktującego (zegarowego), osobne dla przesuwania w lewo i prawo. Stosowane jest także rozwiązanie z jednym wejściem sygnału taktującego oraz dodatkowym specjalnym wejściem, którego stan określa kierunek przesuwania. W rejestrach szeregowych można uzyskać różne rodzaje przesuwania. Są to: − przesuwanie normalne (logiczne), − przesuwanie arytmetyczne, − przesuwanie cykliczne (rotacja). Realizacja tych operacji w systemach mikroprocesorowych odbywa się poprzez wykonanie odpowiednich rozkazów (np. RLC, RRC, RAL, RAR). Przesuwanie logiczne polega na tym, że na wejście szeregowe XS podane jest 0. Informacja zawarta w rejestrze przesuwana jest w lewo bądź w prawo (rys. 5). Rys. 5. Przesuwanie logiczne;a) w prawu, b) w lewo Przy przesuwaniu arytmetycznym informacja zawarta w rejestrze traktowana jest jak liczba. Dlatego sposób realizacji przesuwania arytmetycznego zależy od kodu zapisu tej liczby. Jeżeli zawartość rejestru traktowana będzie jak liczba binarna bez znaku, to przesuwanie arytmetyczne realizuje się identycznie jak logiczne. W takim przypadku przesuwanie arytmetyczne odpowiada dzieleniu (przesuwanie w prawo) lub mnożeniu (w lewo) zawartości rejestru przez kolejne potęgi liczby 2. Katedra Energoelektroniki i Maszyn Elektrycznych 5 Układy i urządzenia mikroprocesorowe Na przykład: w prawo 1100 12 0110 6 0011 3 0001 1 w lewo 0011 3 0110 6 1100 12 1000 8 Jak widać z przykładu, operacje mnożenia i dzielenia nie zawsze wykonywane są dokładnie. Jest to skutkiem skończonej długości rejestru. Przesuwanie cykliczne polega na tym, że wyjście szeregowe rejestru QS połączone jest z wejściem szeregowym XS. Rys. 6. Przesuwanie cykliczne: a) w prawo, b) w lewo Przykład przesuwania cyklicznego: w prawo 0110 6 0011 3 1001 9 1100 12 0110 6 w lewo 0110 6 1100 12 1001 9 0011 3 0110 6 Kolejne stany rejestru najwygodniej jest przedstawiać w postaci grafu pracy rejestru. Przykład takiego grafu dla przesuwania cyklicznego w prawo przedstawiono na rysunku 7. Należy zwrócić uwagę, że pełny graf opisujący pracę rejestru musi zawierać tyle stanów ile wynosi pojemność rejestru (w tym przypadku 16). Inną metodą notowania pracy rejestru są przebiegi czasowe. Na rysunku 8 przedstawiono przykładowe przebiegi czasowe w rejestrze 4-bitowym podczas cyklicznego przesuwania w prawo. Katedra Energoelektroniki i Maszyn Elektrycznych 6 Układy i urządzenia mikroprocesorowe Należy podkreślić, że analiza przebiegów czasowych umożliwia często nietypowe zastosowanie rejestru np. jako dzielnika częstotliwości, sterownika silnika skokowego, czy generatora przebiegów trójfazowych. Rys. 7. Przykład grafu pracy rejestru Rys. 8. Przykładowe przebiegi czasowe w rejestrze pierścieniowym T Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 12 Katedra Energoelektroniki i Maszyn Elektrycznych 6 3 9 12 7 Układy i urządzenia mikroprocesorowe 5. Rejestry liczące Rejestrem liczącym nazywamy rejestr przesuwający ze sprzężeniem zwrotnym, w którym sygnał podawany na wejście szeregowe XS jest funkcją wyjść Qi przerzutników rejestru XS = f (Q0, Q1, …, Qn-1) Podział rejestrów liczących: a) licznik pierścieniowy XS = Qn-1, b) licznik Johnsona (pseudopierścieniowy) XS = Qn-1, c) licznik liniowy XS = a0Q0 ⊕ a1Q1 ⊕ … ⊕ an-1Qn-1 Ogólną strukturę rejestru liczącego przedstawia rys. 9. Rys. 9. Ogólna struktura rejestru liczącego W liczniku pierścieniowym wyjście ostatniego przerzutnika jest podane na wejście pierwszego. W liczniku takim krąży najczęściej tylko jedno zero lub jedna jedynka (ustawione wcześniej), przesuwając się na sąsiednie wyjście po każdym impulsie zegarowym. Podczas przesuwania mogą pojawić się w rejestrze stany nieprawidłowe, które mogą być korygowane. Korekcję stanów nieprawidłowych zapewnia sprzężenie zwrotne typu X S = Qn − 2 + L + Q1 + Q0 Przy takim sprzężeniu otrzymuje się licznik pierścieniowy samokorygujący. Sprzężenie takie zapewnia korekcję zbędnych jedynek, doprowadzając do tego, że w rejestrze krążyć będzie tylko jedna jedynka. Sprzężenie X S = Qn−2 ⋅ Qn−3 ⋅ L + Q0 Katedra Energoelektroniki i Maszyn Elektrycznych 8 Układy i urządzenia mikroprocesorowe zapewnia korekcję zbędnych zer, doprowadzając do tego, że w rejestrze krążyć będzie tylko jedno zero. Przykład rejestru samokorygującego podano na rys. 10 Rys. 10. Rejestr samokorygujący Licznik Johnsona otrzymuje się łącząc negację wyjścia ostatniego przerzutnika z wejściem pierwszego przerzutnika. Pojemność takiego licznika wynosi 2n, gdzie n - ilość przerzutnikow. Rejestr przesuwający ze sprzężeniem przez sumę modulo 2 nosi nazwę rejestru liniowego. Rejestr taki może pracować jako licznik o maksymalnej pojemności 2n1. Stan 00...00 nie jest prawidłowy w takim liczniku, ponieważ ze stanu tego nie na przejacia do innych stanów. Sprzężenie zwrotne w rejestrze liniowym nie musi wykorzystywać wszystkich wyjść rejestru. Uzyskanie maksymalnego cyklu pracy możliwe jest jedynie przy wykorzystaniu niektórych wyjść rejestru. Na przykład przy n=4 należy podać XS = Q3 ⊕ Q0 lub XS = Q3 ⊕ Q2, aby uzyskać cykl pracy o 15 stanach (24-1). Rejestr liniowy ze sprzężeniem optymalnym generuje na wyjściach peudolosowy ciąg zer i jedynek. W tabeli 1 zestawiono podstawowe parametry kilku typów rejestrów scalonych. Tabela 1. Parametry rejestrów scalonych Liczba bitów Wejścia, wyjścia szeregowe Zerowanie 7475 7495 74164 74194 4 4 8 4 brak są są są jest brak jest jest są są brak są są są są są brak P, L P P, L 36 36 36 7491 74198 8 8 są są brak jest brak są brak są P P, L 18 35 Typ rejestru Katedra Energoelektroniki i Maszyn Elektrycznych Wejścia, Wyjścia Przesu- Maksymalna równo- równo- wanie w częstotliwość ległe ległe prawo impuls. (P), zegar. w lewo [MHz] (L). 9 Układy i urządzenia mikroprocesorowe 6. Sumator szeregowy Wykorzystując dwa rejestry, sumator jednobitowy oraz przerzutnik można zbudować układ umożliwiający dodawanie arytmetyczne dwu liczb binarnych. Na rysunku 11 przedstawiono schemat blokowy takiego sumatora. Rys. 11. Struktura sumatora szeregowego W rejestrach R1 i R2 znajdują się dwie liczby, które mają być dodane (składniki). Podczas dodawania zawartość tych rejestrów przesuwana jest w prawo, tzn. w kierunku najmniej znaczących bitów. Sumator jednobitowy dodaje w sensie arytmetycznym dwa bity składników. Wynik sumowania S jest pamiętany w rejestrze R1. Rejestr R1 pełni więc rolę akumulatora, tzn. pamiętany jest w nim zarówno składnik, jak i wynik dodawania. Przeniesienie powstałe w wyniku dodawania dwu bitów jest zapamiętywane w przerzutniku. Będzie ono wykorzystane podczas dodawania dwu kolejnych bitów składników. Funkcje pełnione przez sumator jednobitowy zebrano w tabeli 2. Tabela 2. Funkcje sumatora jednobitowego pn-1 0 0 0 0 1 1 1 1 a 0 0 1 1 0 0 1 1 b 0 1 0 1 0 1 0 1 S 0 1 1 0 1 0 0 1 pn 0 0 0 1 0 1 1 1 Stan przerzutnika pamiętającego przeniesienie może być ustalony za pomocą wejść ustawiających Pr i Cl. Po n taktach sygnału zegarowego (n - długość rejestrów) sumowanie jest zakończone. Jedną Katedra Energoelektroniki i Maszyn Elektrycznych 10 Układy i urządzenia mikroprocesorowe z podstawowych wad tego sumatora jest stosunkowo długi czas dodawania ograniczony maksymalną częstotliwością sygnału zegarowego. 7. Program ćwiczenia 1). Zapoznać się z funkcjami realizowanymi przez rejestr 74194, 2). W środowisku MAX+PLUS II przygotować i skompilować projekt umożliwiający sprawdzenie działania rejestru 74194. Do zadawania stanów na wejściach rejestru wykorzystać przełączniki dwupołożeniowe DIPSW (DIPSW EXTERNAL) oraz przyciski (P7…P0); do obserwacji stanów na wyjściach wykorzystać linijkę świetlną LED. 3). Na kilku przykładach sprawdzić, czy rejestr realizuje poprawnie operacje mnożenia i dzielenia przez potęgi liczby 2. Wyjaśnić przyczynę powstających błędów. 4). Przygotować projekty pozwalające sprawdzić działanie liczników: a) pierścieniowego, b) Johnsona, c) samokorygującego (dwa rodzaje). Dla każdego z liczników przeprowadzić symulację pracy w programie MAX+PLUS II. Zaobserwować przebiegi czasowe i wyznaczyć pełne grafy zmian stanów. Sprawdzić działanie każdego z liczników za pomocą zestawu dydaktycznego. Do zadawania impulsów zegarowych na wejściu rejestru można wykorzystać jeden z przycisków (P7…P0). 5). Połączyć dwa rejestry dla uzyskania rejestru pierścieniowego 8bitowego i sprawdzić jego działanie (patrz p. 2,3). 6). Połączyć układ sumatora szeregowego. Sprawdzić jego działanie na kilku przykładach dodawania liczb dodatnich i ujemnych. 8. Pytania kontrolne 1. Podać podstawowe rodzaje rejestrów oraz ich parametry. 2. Jak realizuje się równoległe wprowadzenie informacji do rejestru? 3. Co to są rejestry przesuwającej? Jakie rodzaje przesuwania realizują? 4. Podać strukturę rejestru liczącego oraz wymienić podstawowe ich rodzaje. 5. W jaki sposób zrealizować sumator szeregowy? 9. Literatura 1. Pieńkoś J., Turczynski J.: Układy scalone TTŁ w systemach cyfrowych. WKiŁ, W-wa 1980. 1986, wydanie 3 zmienione. 2. Kalisz J.: Cyfrowe układy scalone w technice systemowej. Wyd. MON, W-wa 1977. 3. Sasal W. : Układy scalone serii UCA64/UCY74. Parametry i zastosowanie. WKiŁ. Warszawa 1990. Katedra Energoelektroniki i Maszyn Elektrycznych 11 Załącznik* Układ UCY 74194 Układ UCY74194N jest czterobitowym dwukierunkowym rejestrem przesuwającym, spełniającym wszystkie wymagane przez projektanta urządzeń lub systemów funkcje. Rejestr ma równoległe wejścia i wyjścia, szeregowe wejścia dla przesuwania w prawo i w lewo, wejścia rodzaju pracy oraz asynchroniczne i niezależne od innych wejść, wejście zerowania. Oto podstawowe funkcje rejestru: − wprowadzenie równoległe, − przesuwanie w prawo, − przesuwanie w lewo, , − blokada zegara, Wprowadzanie równolegle jest realizowane synchronicznie z narastaniem zbocza impulsu zegarowego przez przyłożenie czterech bitów danych na wejścia równoległe i utrzymywanie obu wejść rodzaju pracy (S0 i S1) w stanie wysokim. W czasie wprowadzania równoległego wejścia szeregowe (SR, SL) są zablokowane. Przesuwanie w prawo jest realizowane, gdy na wejściu S0 jest utrzymywany stan wysoki, a do wejścia S1 jest przyłożony niski poziom logiczny. Dane są wprowadzane z wejścia wprowadzania w prawo (SR) i przesuwane wzdłuż rejestru w prawo synchronicznie z narastaniem zbocza impulsu zegarowego. W czasie przesuwania w prawo wejścia równoległe danych są zablokowane. Przesuwanie w lewo jest realizowane, gdy na wejściu S0 istnieje stan niski, a na wejściu S1 występuje stan wysoki. Dane są wprowadzane z wejścia wprowadzania w lewo (SL) i przesuwane wzdłuż rejestru w lewo synchronicznie z narastaniem zbocza impulsu zegarowego. W czasie przesuwania w lewo wejścia równoległe danych są zablokowane. Blokada wejścia zegarowego następuje, gdy na obu wejściach rodzaju pracy (S0 i S1) jest przyłożony stan niski. Zmiany stanu na wejściach rodzaju pracy (S0 i S1) powinny następować w czasie gdy na wejściu zegarowym istnieje stan wysoki. Działanie logiczne rejestru określa tabela stanów. Tabela stanów układu UCY 74194 Wejścia CLRN Rodzaju pracy CLK Wyjścia Szeregowe Równoległe Funkcja QA QB QC QD L H H S1 X X H S2 X X H X L ∫ SLSI X X X SRSI X X X A X X a B X X b C X X c D X X d L QA0 a L QB0 b L QC0 c L QD0 d H H H H H L L H H L H H L L L ∫ ∫ ∫ ∫ X X X H L X H L X X X X X X X X X X X X X X X X X X X X X X X H L QBn QBn QA0 QAn QAn QCn QCn QB0 QBn QBn QDn QDn QC0 QCn QCn H L QD0 Zerowanie Wprowadzanie równoległe Przesuw w prawo Przesuw w lewo Blokada H – stan wysoki L – stan niski X – stan dowolny ∫ - zmiana stanu z niskiego na wysoki QA0, QB0, QC0, QD0 – wartości odpowiednio QA, QB, QC, QD, które były przed ustaleniem warunków podanych na wejściach, QAn, QBn, QCn, QDn – wartości odpowiednio QA, QB, QC, QD, które były ustalone na wyjściach przerzutników przed ostatnią zmianą na wejściu zegarowym ze stanu niskiego na wysoki, a, b, c, d – wartości ustalone odpowiednio na wejściach A, B, C, D. * Opracowano na podstawie: Sasal W. : Układy scalone serii UCA64/UCY74. Parametry i zastosowanie. WKiŁ. Warszawa 1990.