r8-1.doc

(274 KB) Pobierz
Szablon dla tlumaczy

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óźnień dla układów 8255 i PIO, pracujących w trybach transmisji wyjściowej z po­twier­dze­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.

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

 

 

 

Dekoder adresów można wygodnie zrealizować opierając się na w oparciu o 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.

Jedyna tabela, jaka została zamieszczona w tej książce, znajduje się w rozdziale 1. i nosi tytuł „Parametry elektryczne cyfrowych układów scalonych rożnych serii”. Czyżby chodziło o tę tabelę!?

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 odnaleźć 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 podłączamy na wejście układu CTC, a  ­ na wejście układu PIO. Nieco więcej uwagi należy poświęcić wejściu układu 8255. Otóż układ ten nie ma wejścia , 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 było aktywne tylko wówczas, gdy aktywny jest zarówno sygnał , jak i wyjście dekodera.

Rysunek 8.1.

Brak podpisu.

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óźnienia czasowe dla portów układów 8255 i PIO. Liczniki te pracują w trybie czasowym, a więc źró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ł 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 staniem wysokim, a  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 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 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ł jest aktywny, natomiast i  nieaktywne. Wynika stąd potrzeba wytwarzania sygnału dla układu PIO, gdy co najmniej jeden z sygnałów i  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óźnienia dla układu 8255, pracującego w trybie transmisji wyjściowej z po­twier­dze­niem. 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 zZastosować pełne dekodowanie adresów.

Tabela 2. Określanie stanów linii adresowych (przykład 2)

...

Zgłoś jeśli naruszono regulamin