Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
Z rejestrami spotkasz się przy programowaniu mikrokontrolerów. Również używa się ich często jako osobnych elementów urządzenia cyfrowego. Przemysł elektroniczny produkuje wiele typów układów scalonych, które zawierają różnego rodzaju rejestry. Ten rozdział ma na celu przybliżyć ci budowę rejestrów oraz pokazać ich różne zastosowania praktyczne.
Rejestry budowane są z przerzutników oraz współpracujących z nimi sieci logicznych, które odpowiednio przetwarzają bity przechowywane w rejestrze.
Najprostszy rejestr pamięciowy (tzn. zapamiętujący bity) tworzymy z odpowiedniej liczby przerzutników typu D-Latch:
![]() |
![]() |
Wejścia rejestru oznaczamy dużymi literami A, B, C, ... Wyjścia oznaczamy QA, QB, QC, ... Dodatkowo występuje tutaj jeszcze wejście CLK (ang. clock, zegar), które służy do zapisu stanu wejść w przerzutnikach.
Rejestr ten działa w sposób następujący:
Normalnie na wejściu CLK powinien panować stan niski. W tym stanie przerzutniki D-Latch pamiętają informację i zmiany stanu ich wejść D nie wpływają na wyjścia Q.Informację, którą chcemy zapamiętać w rejestrze umieszczamy na wejściach A, B, C... w postaci bitów, tzn. stanów niskich 0 lub wysokich 1.
Na wejściu CLK umieszczamy stan wysoki 1. Wtedy informacja z wejść zostaje zapamiętana w przerzutnikach i pojawia się na wyjściach Q.
Zmieniamy stan wejścia CLK na niski 0. Spowoduje to "zatrzaśnięcie" zapamiętanej w przerzutnikach informacji. Rejestr będzie pamiętał wpisane bity aż do ponownej zmiany sygnału CLK.
Tego typu rejestr możesz sobie zbudować z dwóch układów SN7477 lub jednego układu SN74100:
Zaczynamy od rejestrów:
Rejestry będą zbudowane z przerzutników typu D-Latch. Przypominam: przerzutnik D-Latch zapisuje stan wejścia D na wyjściu Q, gdy sygnał C ma stan wysoki. Jeśli C przejdzie w stan niski, to na wyjściu Q zostanie "zatrzaśnięty" ostatnio zapisany w przerzutniku stan. Stąd słowo Latch w nazwie przerzutnika, które po angielsku oznacza klamkę lub zatrzask.
Rejestry będą 4-bitowe, zatem łączymy sygnały C przerzutników, tak aby otrzymać 4 osobne rejestry. Wejścia D odpowiadających sobie przerzutników w rejestrach łączymy ze sobą:
Zapis do rejestrów nastąpi, gdy na wejściach A...D umieścimy daną, a następnie podamy impuls zapisujący na linię C odpowiedniej grupy przerzutników. Operację taką można wykonać za pomocą prostej sieci logicznej zbudowanej z kilku bramek. Sieć będzie sterowana 2-bitowym adresem rejestru oraz sygnałem zapisu:
Zasada działania tej sieci ma być następująca:
Na wejścia A0 i A1 podajemy w postaci dwójkowej adres rejestru, w którym mają zostać zapisane dane z linii A...D.Na wejście W podajemy impuls zapisujący.
Wtedy na odpowiednim wyjściu C0...C3 ma się pojawić stan wysoki na czas trwania impulsu W.
Tabelka funkcyjna jest następująca:
A0 | A1 | W | C0 | C1 | C2 | C3 |
X | X | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 1 |
Element ten zaprojektujemy, tak aby wykorzystać go również do sterowania wyjściami z rejestrów:
Bramki AND dadzą na wyjściach stan wysoki, jeśli sygnał z dekodera i sygnał W będą miały stan wysoki. Pozostaje zatem zaprojektować dekoder. Tabelka stanów:
A0 | A1 | 0 | 1 | 2 | 3 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
Z metody algebraicznej otrzymujemy od razu funkcje sygnałów wyjściowych:
A stąd sieć dekodera:
Łączymy dekoder z sygnałem W i przerzutnikami:
Mamy zrealizowany zapis informacji do rejestru. Teraz zajmijmy się odczytem. Będzie nam potrzebny układ zwany demultiplekserem:
Demultiplekser posiada 4 wejścia danych D0...D3, 4 wejścia wybierające 0...3 i jedno wyjście Y. Zasada działania jest następująca:
Tabelka logiczna jest następująca:
0 | 1 | 2 | 3 | Y |
1 | 0 | 0 | 0 | D0 |
0 | 1 | 0 | 0 | D1 |
0 | 0 | 1 | 0 | D2 |
0 | 0 | 0 | 1 | D3 |
Sieć logiczna jest następująca:
Takich demultiplekserów będziemy potrzebować 4. Łączymy wszystko w całość i otrzymujemy:
Jak widzisz, nawet taki prosty rejestr jest układem dosyć skomplikowanym logicznie. Oczywiście, można tutaj zastosować wiele usprawnień i uproszczeń, niemniej jednak nie opłaca się budowanie takich rejestrów z pojedynczych elementów. Na szczęście przemysł elektroniczny produkuje wiele pamięci rejestrowych, gotowych do zastosowania:
SN7489, SN74189 – pamięci 64-bitowe RAM o organizacji 16 x 4 bity
SN74170 – zespół 4 rejestrów 4-bitowych – odpowiednik naszego projektu, ale w pojedynczym układzie scalonym.
Pamięci komputerowe o dużej liczbie komórek są budowane nieco inaczej, ponieważ stosowanie rejestrów byłoby w tym przypadku zbyt drogie i nieopłacalne. Opis pamięci RAM znajdziesz tutaj.
Rejestry przesuwające najczęściej stosuje się przy zamianie informacji równoległej na szeregową lub szeregowej na równoległą. Rejestry mogą przesuwać informację tylko w jednym kierunku lub w obu kierunkach. Buduje się je z przerzutników wyzwalanych zboczem sygnału zegarowego (przerzutniki D Latch nie nadają się do tego celu).
Oto 4-bitowy rejestr przesuwający w prawo zbudowany z przerzutników D:
Zasada działania jest następująca:
Na wejściu S umieszczamy daną, która ma zostać wpisana do pierwszego przerzutnika. Na wejście CLK podajemy dodatni impuls. Na opadającym zboczu tego impulsu dana z wejścia S zostaje wpisana do pierwszego przerzutnika, lecz pojawia się na wyjściu QA dopiero po czasie propagacji. Przez tę krótką chwilę pierwszy przerzutnik utrzymuje na swoim wyjściu poprzedni stan. Stan ten przenosi się na wejście D kolejnego przerzutnika i zostanie w nim zapisany przy ujemnym zboczu sygnału CLK. Tutaj sytuacja się powtarza: na wyjściu Q przerzutnika przez czas propagacji utrzymuje się poprzedni stan, który zostanie zapisany do następnego przerzutnika, itd. W efekcie informacja pamiętana w przerzutnikach zostanie przesunięta w prawo o 1 bit, a do pierwszego przerzutnika zostanie zapisany stan wejścia S.Rejestrów przesuwających zwykle nie buduje się z pojedynczych przerzutników, lecz stosuje się gotowe układy scalone:
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.