Technika Mikroprocesorowa

Transkrypt

Technika Mikroprocesorowa
Podstawy Techniki Mikroprocesorowej - Laboratorium
Ćwiczenie C
Temat: Port równoległy i układ czasowy
Cel i przebieg ćwiczenia: Zapoznanie się z funkcjami i programowaniem scalonych
układów wejścia/wyjścia I8255 (port równoległy) i I8254 (układ czasowo-licznikowy).
Realizacja systemu mikroprocesorowego z jednostką centralną Z80 spełniającego rolę
stopera, zegara lub licznika zdarzeń. Wykorzystanie sprzętowych możliwości generowania
skali czasu i mechanizmu przerwania maskowalnego procesora. Napisanie programu w
języku asemblera Z80 programującego układy wejścia/wyjścia i realizujące zadaną przez
prowadzącego funkcję systemu.
Wiadomości
teoretyczne:
W
praktycznych
zastosowaniach
systemów
mikroprocesorowych niezbędne jest połączenie mikroprocesora z urządzeniami
zewnętrznymi. W tym celu stosowane są układy sprzęgające wejścia/wyjścia. Układy te
można ogólnie podzielić na:
• bezpośrednie układy wejścia/wyjścia
• scalone układy wejścia/wyjścia
Najprostszym układem wejściowym jest zespół bramek trójstanowych dołączonych
do magistrali danych systemu mikroprocesorowego. Przy pomocy takiego układu można
odczytać stany przełączników - czujników o wyjściach dwustanowych. Na wejście
sterujące bramek trójstanowych należy podać sygnał powodujący ich otwarcie wtedy gdy
mikroprocesor chce odczytać stan wejść.
Najprostszym układem wyjściowym jest rejestr o wejściach dołączonych do
magistrali danych. Układ taki można zastosować do sterowania zespołem diod świecących,
wyświetlaczy 7-segmentowych, a po odpowiednim wzmocnieniu sygnałów również
przekaźników itp.
Bezpośrednie układy wejścia/wyjścia stosowane są do sprzęgania systemu
mikroprocesorowego z urządzeniami zewnętrznymi, które są zawsze gotowe na przyjęcie
informacji (wyjście) lub dostarczają informacji w sposób ciągły (wejście). W innych
przypadkach konieczne jest użycie scalonych układów sprzęgających, które umożliwiają
realizację transmisji z potwierdzeniem. Potrzeba przesyłania z potwierdzeniem zachodzi
najczęściej wtedy gdy system mikroprocesorowy współpracuje z wolniejszym
urządzeniem zewnętrznym, które może być niegotowe na przyjęcie danych. Klasycznym
przykładem jest tutaj drukarka. Mechanizm transmisji z potwierdzeniem obejmuje
przesyłanie między systemem mikroprocesorowym a urządzeniem zewnętrznym
dodatkowych sygnałów sterujących. W trybie przesyłanie z potwierdzeniem system
mikroprocesorowy informuje urządzenie zewnętrzne o wpisaniu danych do rejestru
wyjściowego, a urządzenie zewnętrzne informuje system mikroprocesorowy o odczytaniu
danych. Dla przesyłania w odwrotnym kierunku urządzenie zewnętrzne informuje system
mikroprocesorowy o gotowości danych do odczytania, a w odpowiedzi otrzymuje
potwierdzenie odczytania danych. Sekwencja odpowiednich sygnałów przy przesyłaniu z
potwierdzeniem wygląda następująco:
1. nadajnik po wpisaniu do bufora informacji wystawia sygnał gotowości danych do
odczytania DV (Data Valid)
2. odbiornik po odebraniu sygnału DV odczytuje dane i wystawia sygnał potwierdzenia
odczytania danych DAC (Data Accepted)
3. nadajnik po odebraniu sygnału DAC kasuje sygnał DV
1
4. odbiornik w odpowiedzi na skasowanie sygnału DV kasuje sygnał DAC - jest to dla
nadajnika zezwolenie na wysłanie kolejnej danej.
Najbardziej efektywnym przesyłaniem z potwierdzeniem jest przesyłanie wykorzystujące
przerwania. W takim systemie wpisanie danych do bufora generuje przerwanie, a odczyt
odbywa się w procedurze obsługi. Innym rozwiązaniem jest generowanie przerwania po
odczytaniu danych, z zapisem w procedurze obsługi.
W odróżnieniu od prostych układów wejścia/wyjścia, których funkcja jest
całkowicie zdeterminowana sprzętowo, scalone układy sprzęgające są z reguły
programowalne. Funkcja tych układów jest zależna również od sposobu zaprogramowania
takiego układu.
Scalone układy wejścia/wyjścia można podzielić na:
• uniwersalne
• specjalizowane
Przy pomocy układów uniwersalnych można dołączyć do systemu mikroprocesorowego
różnorodne urządzenia zewnętrzne; układy specjalizowane są dedykowane do współpracy
z określonym typem urządzenia (klawiatura, monitor ekranowy, napęd dysków
elastycznych).
Przykładem programowalnego układu wejścia/wyjścia jest układ Intel 8255A. Zawiera on
trzy porty 8-bitowe podzielone na dwie grupy. Układ może pracować w trzech trybach.
Tryb 0 - bezpośrednie wejście lub wyjście w zależności od zaprogramowanego kierunku
transmisji, tryb 1 - wejście lub wyjście w zależności od zaprogramowanego kierunku
transmisji - przesyłanie z potwierdzeniem, tryb 2 - przesyłanie dwukierunkowe.
Przykładowy sposób dekodowania układu 8255A w przestrzeni wejścia/wyjścia
mikroprocesora Z80 przedstawiono na Rys. 1. Układ 8255A jest dekodowany od adresu
X0h, gdzie X=0, 1,.... E, F.
Rys. 1. Dekodowanie układu 8255A.
Układy czasowo-licznikowe są w systemach mikroprocesorowych wykorzystywane
do odmierzania czasu oraz zliczania impulsów zewnętrznych. Zastosowanie układów
czasowo-licznikowych zwalnia procesor od realizacji tych funkcji w sposób programowy.
Układy tego typu stanowią również integralną część mikrokomputerów jednoukładowych
co jest szczególnie cenne przy konstruowaniu mikroprocesorowych układów automatyki.
2
Jednym z najczęściej stosowanych układów czasowo-licznikowych jest Intel 8254.
Został zastosowany m.in. w komputerach PC/AT do generacji sygnału przerwania
zegarowego, żądania odświeżania pamięci dynamicznej oraz generacji sygnału
dźwiękowego. W skład układu 8254 wchodzą trzy niezależne liczniki 16-bitowe, z których
każdy może pracować w jednym z sześciu trybów (zliczając impulsy w kodzie binarnym
lub BCD). Dla zwiększenia zakresu odmierzanych czasów (pojemności) możliwe jest
łączenie kaskadowe liczników wchodzących w skład układu 8254.
Projekt wstępny: Zaprojektować dekoder adresów przestrzeni wejścia/wyjścia systemu
mikroprocesorowego opartego na procesorze Z80. Układ ma zapewniać dekodowanie
układu wejścia/wyjścia 8255A i układu licznika 8254. Do budowy dekodera wykorzystać
układ 74HCT138 znajdujący się na pakiecie 8255. Przygotować schemat ideowy i
montażowy zaprojektowanego układu. Do transmisji sygnału z dekodera między pakietami
wykorzystać jedną z linii magistrali definiowanych przez użytkownika U0-U3 lub
niewykorzystaną linię magistrali adresowej A16-A23.
Zaproponować sposób zastosowania układu licznika 8254 do pomiaru czasu
wciśnięcia przycisku. Do sterowania układem licznika wykorzystać zegar systemowy o
częstotliwości 4 MHz. Sposób pomiaru powinien być możliwie mało absorbujący dla
procesora - niepożądane jest programowe generowanie skali czasu oraz programowe
sprawdzanie położenia przycisku. Wynik pomiaru (w sekundach lub dziesiątych częściach
sekundy) należy wyświetlać na bieżąco na wyświetlaczu 7-segmentowym (dwie cyfry)
umieszczonym wraz z dekoderem UCY7447 na ramie panelowej. Do sterowania
wyświetlaczem wykorzystać buforowany układem 74HCT541 port A układu 8255A. Przy
projektowaniu układu do pomiaru czasu zwrócić szczególną uwagę na dostępne tryby
pracy licznika 8254 i własności poszczególnych trybów przerwań procesora Z80.
Przygotować schemat ideowy i montażowy zaprojektowanego układu. Napisać program w
asemblerze procesora Z80 inicjujący pracę układów 8254 i 8255A oraz realizujący zadany
pomiar i wyświetlający jego wynik.
Rozważyć sposób modyfikacji zaprojektowanego układu w taki sposób by mógł
spełniać rolę stopera - tzn. pierwsze wciśnięcie przycisku uruchamia zliczanie czasu z
wyświetlaniem, drugie blokuje pomiar utrzymując wynik na wyświetlaczu, trzecie zeruje
wyświetlaną liczbę i przygotowuje układ do kolejnego cyklu pomiarowego.
W ćwiczeniu wykorzystuje się "standardowy" system mikroprocesorowy Z80
wyposażony w pamięć RAM 6264 bez dekodera adresów.
Literatura:
1. Dokumentacja systemu DSM (pakiety 8255 i 8254)
2. Materiały pomocnicze do TMIK/L (programowalny układ wejścia/wyjścia 8255A
Intel, programowalny licznik 8254 Intel)
3. K. Badźmirowski i in. „Układy i systemy mikroprocesorowe” WNT, Warszawa 1990,
część 2: str. 11-20, 30-36
4. P. Misiurewicz „Podstawy techniki mikroprocesorowej” WNT, Warszawa 1991, str.
57-61, 68-78, 81-83, 93-99
5. M. Modrzejewski, A. Skorupski, C, Stępień „Układy mikroprocesorowe serii INTEL
8080” WPW Warszawa 1988
6. pr. zb, „Modułowe systemy mikrokomputerowe” WNT, Warszawa 1990, str. 427-430
7. A. Niederliński „Mikroprocesory, mikrokomputery, mikrosystemy” WSziP, Warszawa
1988, str. 208-216, 226-231
3
8. J. Pieńkos, S. Moszczyński, A. Pluta „Układy mikroprocesorowe 8080/8085 w
modułowych systemach sterowania” WKiŁ, Warszawa 1988, str. 113-121, 132-143,
306-311
9. A. Rydzewski, K. Sacha „Mikrokomputer. Elementy, budowa, działanie” WCiKT
NOT-SIGMA, Warszawa 1985, str. 129-138
Do wstępnego zapoznania się z możliwościami układu czasowego 8254 można
posłużyć się opisem układu 8253. Układ 8253 nie posiada funkcji Read Back
4