Rozdział 8.
Złożone układy wejścia-
wyjścia
W poprzednich rozdziałach położono nacisk na zastosowanie programowalnych układów czaso-
wych i równoległego wejścia-wyjścia. Istotne jest jednak także ich połączenie z mikroprocesorem.
W niniejszym rozdziale pokazane są techniki łączenia układów tak, aby ich rejestry znajdowały się
w określonej przestrzeni adresowej, a przerwania generowane przez te układy posiadały żądane
cechy (np. priorytet, sposób obsługi). Jednocześnie, aby uniknąć niepotrzebnego zaciemniania
schematów, pomienięto tu zastosowania tych układów, gdyż zostały one zilustrowane
w poprzednich rozdziałach.
Przykład 1.
Do mikroprocesora Z-80 dołączyć układy PIO, CTC i 8255. Zadaniem układu CTC jest wytwarza-
nie opóznień dla układów 8255 i PIO, pracujących w trybach transmisji wyjściowej z potwierdze-
niem. Układ ten powinien zajmować adresy 20 23h i posiadać niższy priorytet przerwań. Układ
PIO powinien zajmować adresy 40 43h i posiadać wyższy priorytet przerwań. Układ 8255 powi-
nien zajmować adresy 60 63h i zgłaszać przerwania za pośrednictwem układu CTC tak, aby były
to przerwania o najniższych priorytetach. Wszystkie adresy znajdują się w przestrzeni wejścia-
wyjścia mikroprocesora Z-80. Zastosować pełne dekodowanie adresów. Zapewnić zerowanie
sprzętowe układów PIO, CTC i 8255 po włączeniu zasilania.
Dekoder adresów można wygodnie zrealizować opierając się na układzie 74138. Na początku
warto rozpisać przestrzenie adresowe układów w kodzie dwójkowym, aby zorientować się, które
linie adresowe należy przyłączyć do wejść bramkujących tego układu, a które do jego wejść
adresowych. Ilustruje to tabela 1.
Tabela 1. Określanie stanów linii adresowych
Układ Adresy Linie A7-A0
CTC 20-23h 001000xx
PIO 40-43h 010000xx
8255 60-63h 011000xx
0aa000xx
Dwa najmniej znaczące bity adresów (oznaczone w tabeli znakiem x) można pominąć, ponieważ
sterują one bezpośrednio odpowiednimi wejściami układów i nie wpływają na sposób pracy
dekodera. Następnie należy porównać stan linii adresowych w przestrzeniach poszczególnych
układów i odnalezć te bity adresowe, które się zmieniają. W naszym przypadku są to bity A6 i A5,
oznaczone w tabeli znakiem a. Do pełnej realizacji dekodera potrzeba jeszcze jeden bit może to
być linia A7. Wobec tego linie A4 A2 należy wprowadzić na wejścia bramkujące dekodera,
przy czym jedna z nich (dowolna) powinna przejść przez bramkę negacji, ponieważ stan aktywny
wejścia to 1 . Pozostałe linie adresowe sterują wejściami adresowymi dekodera. I tak wyjście Y1
podłączamy na wejście CE układu CTC, a Y2 na wejście CE układu PIO. Nieco więcej
uwagi należy poświęcić wejściu CS układu 8255. Otóż układ ten nie ma wejścia IORQ , a więc
nie potrafi rozróżnić, czy mikroprocesor odwołuje się do pamięci, czy do układów wejścia-
wyjścia. Stan tego sygnału nie jest także sprawdzany w dekoderze. Należy zatem zapewnić (np.
przez dołączenie bramki), aby wejście CS było aktywne tylko wówczas, gdy aktywny jest
zarówno sygnał IORQ , jak i wyjście Y3 dekodera.
Rysunek 8.1.
Do ustalenia priorytetów poszczególnych przerwań należy wykorzystać mechanizmy wbudowane
w układy mikroprocesorowe rodziny Z-80. Aby układ PIO miał przerwania o wyższych
priorytetach, jego wejście IEI musi być stale utrzymywane w stanie wysokim, natomiast jego
wyjście IEO steruje wejściem IEI układu CTC, który także może zgłaszać przerwania, ale
o niższych priorytetach. Liczniki 2. i 3. tego układu pełnią funkcję sterownika przerwań
wektorowych dla układu 8255, który nie może bezpośrednio współpracować z mikroprocesorem
Z-80 w trybie przerwań IM 2. Licznik 2. obsługuje przerwanie od portu A (sygnał IRQA). Licznik
3. obsługuje przerwanie od portu B (IRQB) jest to przerwanie o najniższym priorytecie spośród
wszystkich przerwań generowanych przez moduł. Aby układ 8255 mógł zgłaszać przerwania,
liczniki 2. i 3. muszą być odpowiednio zaprogramowane.
Liczniki 0. i 1. układu CTC wytwarzają odpowiednie opóznienia czasowe dla portów układów
8255 i PIO. Liczniki te pracują w trybie czasowym, a więc zródłem zliczanych impulsów jest
sygnał zegarowy CLK, a wejścia CLK/TRG pełnią funckję sygnałów pobudzających odliczanie.
W przypadku układu 8255 pobudzenie powinno nastąpić, gdy sygnał OBF jest aktywny. Licznik
powinien zatem reagować na zbocze opadające wejścia CLK/TRG ustala się to programowo.
Ponieważ wyjście ZC/TO jest aktywne w stanie wysokim, a ACK w niskim, potrzebna jest
bramka negacji. W przypadku układu PIO licznik powinien reagować na zbocze narastające
sygnału CLK/TRG, ponieważ wyjście RDY jest aktywne stanem wysokim. Wyjście ZC/TO
powinno także sterować wejściem STB poprzez bramkę negacji. Liczniki 0. i 1. nie muszą
zgłaszać przerwań, gdyż odpowiednie przerwania są generowane przez porty układów 8255 i PIO.
Wyzerowanie układu CTC po włączeniu zasilania nie nastręcza trudności wystarczy jego
wejście RESET połączyć z analogicznym wejściem mikroprocesora. Podobnie wygląda sytuacja
w układzie 8255, jednak sygnał zerowania mikroprocesora musi przejść przez bramkę negacji.
Natomiast w układzie PIO w ogóle nie ma wejścia zerowania. Dlatego też układ ten jest zerowany,
gdy sygnał M1 jest aktywny, natomiast RD i IORQ nieaktywne. Wynika stąd potrzeba
wytwarzania sygnału M1 dla układu PIO, gdy co najmniej jeden z sygnałów RESET i M1
mikroprocesora jest aktywny.
Przykład 2.
Do mikroprocesora Z-80 dołączyć układy CTC, 8253 i 8255. Układ CTC pełni funkcję sterownika
przerwań wektorowych dla układów 8253 i 8255. Jeden licznik układu 8253 ma wytwarzać
opóznienia dla układu 8255, pracującego w trybie transmisji wyjściowej z potwierdzeniem.
Pozostałe liczniki powinny zgłaszać przerwania o najniższych priorytetach. Układ CTC powinien
zajmować adresy 20 23h, układ 8253 24 27h, a układ 8255 3C 3Fh. Wszystkie adresy
znajdują się w przestrzeni wejścia-wyjścia mikroprocesora Z-80. W ćwiczeniu należy zastosować
pełne dekodowanie adresów.
Po rozpisaniu stanów linii adresowych w przestrzeniach poszczególnych układów otrzymujemy
informacjÄ™, takÄ… jak przedstawiono w tabeli 2.
Tabela 2. Określanie stanów linii adresowych (przykład 2)
Układ Adresy Linie A7-A0
CTC 20-23h 001000xx
8253 24-23h 001010xx
8255 3C-3Fh 001111xx
001aaaxx
W wyniku analizy przestrzeni adresowych można połączyć wejścia bramkujące układu 74138
z liniami A7 A5, natomiast linie A4 A2 muszą sterować jego wejściami adresowymi.
W przypadku układów 8255 i 8253 takie rozwiązanie nie wystarcza, ponieważ nie dekodują one
stanu linii IORQ mikroprocesora. Dlatego też sygnały CS wysyłane do tych układów mogą być
aktywne jedynie wówczas, gdy mikroprocesor odwołuje się do przestrzeni adresowej wejścia-
wyjścia. Zapewnia to odpowiednie bramkowanie wyjść układu 74138.
Aby przerwania pochodzące od układu 8253 miały najniższe priorytety, muszą być dołączone
do wejść CLK/TRG liczników 2. i 3. układu CTC. Wejścia pozostałych liczników, tj. 0. i 1.,
obsługują zgłoszenia pochodzące z portów układu 8255. Wszystkie liczniki powinny reagować
na odpowiednie zbocze. W przypadku 8255 jest to zbocze narastające, natomiast dla 8253 może to
zależeć od trybu pracy licznika tego układu. Najczęściej jednak jest to także zbocze narastające.
Rysunek 8.2.
Licznik 0. układu 8253 wytwarza opóznienie czasowe dla portu A układu 8255 pracującego
w trybie wyjściowym z potwierdzeniem. Licznik powinien pracować w trybie 5. jako sprzętowo
wyzwalany generator impulsu. Stan niski sygnału OBF powinien rozpocząć pracę tego licznika.
Ponieważ jednak licznik reaguje na zbocze narastające, konieczna jest bramka negacji.
Po zakończeniu odliczania licznik wytwarza na wyjściu stan niski, trwający przez okres sygnału
taktującego (CLK). Wyjście licznika można zatem bezpośrednio podłączyć do wejścia ACK
portu.
Porty A i B układu 8255 zgłaszają przerwania za pośrednictwem liczników 0. i 1. układu CTC,
mają więc wyższe priorytety, niż przerwania pochodzące z układu 8253.
Przykład 3.
Zaprojektować moduł, współpracujący z mikroprocesorem 8248 i zawierający układy 8255, 8253
oraz 8 KB pamięci statycznej RAM. Prócz ekspanderów wszystkie układy powinny być widziane
w przestrzeni adresowej zewnętrznej pamięci danych. Układy 8255 i 8253 powinny zajmować
adresy 00 03h oraz 04 07h, nie zmniejszając jednak pojemności dołączonej pamięci.
Dekodowanie adresów układów wejścia-wyjścia może być niepełne. Niezbędne sygnały
dodatkowe wyprowadzić z ekspandera 8243.
Ekspander został dołączony typowo za pośrednictwem portu PC mikroprocesora i sygnału
PROG. Wejście CS ekspandera można połączyć z masą, ponieważ jest to jedyny układ tego typu
w systemie. Linie P40 P43 oraz P50 stanowią rozszerzenie magistrali adresowej, niezbędne dla
adresowania pamięci statycznej. Można powiedzieć, że na tych liniach przechowywany jest rejestr
aktywnej strony pamięci. Stan linii P51 określa natomiast, czy odwołanie do przestrzeni adresowej
zewnętrznej pamięci danych odnosi się do dołączonego układu pamięci 6264, czy też do układów
wejścia-wyjścia. Stan wysoki tej linii włącza pamięć, niski układy wejścia-wyjścia. Aby
pamięć rzeczywiście się włączyła, potrzeba jeszcze, aby mikroprocesor wygenerował sygnał RD
lub WR , ponieważ oba wejścia uaktywniające układ pamięci muszą być w stanach aktywnych.
Rysunek 8.3.
Niski stan linii P51 uaktywnia dekoder 74138. Wówczas zależnie od stanu linii A4 A2 jedno
z wyjść tego układu przyjmuje stan niski. I tak, na wyjściu Y0 jest 0 , gdy mikroprocesor
odwołuje się do adresów z zakresu 00 03h w przestrzeni adresowej zewnętrznej pamięci danych.
Wyjście to może zatem sterować wejściem CS układu 8255. Analogicznie wyjście Y1 jest
dołączone do wejścia CS układu 8253. Sygnały RD i WR obu układów można dołączyć
bezpośrednio do odpowiednich wyjść mikroprocesora.
Przykład 4.
Do mikroprocesora 8051 dołączyć moduł, zawierający układy 8255 i 8253 oraz 128 KB pamięci
statycznej RAM widzianej jako zewnętrzna pamięć danych. Układ 8255 zgłasza przerwania
zewnętrzne z obu portów (port A ma wyższy priorytet) i zajmuje adresy 00 03h. Układ 8253
znajduje się pod adresami 04 07h. Generuje on opóznienie czasowe dla portu A układu 8255
i rozszerza pojemność wewnętrznych liczników mikroprocesora. W zadaniu należy zapewnić
wykorzystanie całej pojemności pamięci. Niezbędne sygnały sterujące trzeba wyprowadzić
z dowolnych linii portów. Adresowanie układów wejścia-wyjścia może być niepełne.
Rozdzielenie przestrzeni adresowej zewnętrznej pamięci danych na obszary pamięci i układów
wejścia-wyjścia uzyskano podobnie jak w poprzednim przykładzie. Stan niski wyjścia PB6
umożliwia dostęp do pamięci, wysoki do układów wejścia wyjścia. Uaktywnienie dołączonego
ukÅ‚adu pamiÄ™ci o organizacji 128K × 8 nastÄ™puje, gdy mikroprocesor wykonuje operacjÄ™ odczytu
lub zapisu zewnętrznej pamięci danych. Wyjście portu PB7 wybiera przy tym aktywną 64-
kilobajtową połówkę pamięci steruje ono stanem wejścia adresowego A16 układu.
Licznik 0. układu 8253 wytwarza opóznienie czasowe dla portu A układu 8255, podobnie jak
w przykładzie 2. Jest on taktowany sygnałem ALE, którego częstotliwość jest równa 1/12
częstotliwości oscylatora kwarcowego i np. dla 12 MHz oscylatora wynosi ona 1 MHz.
Rozwiązanie takie powoduje niewielkie zmniejszenie dokładności, gdyż podczas odwołań
do przestrzeni zewnętrznej pamięci danych jeden impuls dodatni sygnału ALE jest wstrzymywany
przez mikroprocesor.
Rysunek 8.4.
Liczniki 1. i 2. zwiększają pojemność wewnętrznych liczników mikroprocesora. Mogą one
pracować w dowolnym trybie, zależnie od potrzeb. Dlatego też wykorzystanie wejść CLK i GATE
tych liczników nie jest określone będzie ono zależeć od zastosowania układu. Wyjścia tych
liczników sterują sygnałami T0 i T1 , które są wejściami do wewnętrznego układu czasowo-
licznikowego. Liczniki wewnętrzne powinny być zaprogramowane tak, aby zliczały impulsy
zewnętrzne.
Układ 8255 może zgłaszać przerwania zewnętrzne za pośrednictwem wejść INT0 i INT1 .
Pierwsze z nich ma wyższy priorytet, dlatego też obsługuje ono port A. Ponieważ wejścia te
reagują (zależnie od sposobu zaprogramowania) na poziom niski lub zbocze opadające, a układ
8255 generuje sygnały przerwania aktywne w stanie wysokim, konieczne jest zastosowanie dwóch
bramek negacji po jednej na każdy sygnał.
Układ 74138 jest dołączony w sposób analogiczny do tego, jak zostało to opisane w przykładzie 3.
Wyszukiwarka
Podobne podstrony:
zobow r8zarzadzanie r8R8 Wielka Brytaniar8R8 3r8R8R8R8R8 Gospodarka w KrólestwieTazbir Kultura szlachecka w Polsce R82010 Audi R8 5 2 FSI Quattro ReadmeSTEP7V5 R8 9Krawiec Seksualność w średniowiecznej Polsce R8r8 rozpad Związku RadzieckiegoR8więcej podobnych podstron