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.