Technika mikroprocesorowa - laboratorium Ćwiczenie 1: Struktura
Transkrypt
Technika mikroprocesorowa - laboratorium Ćwiczenie 1: Struktura
Technika mikroprocesorowa - laboratorium Informatyka studia dzienne Ćwiczenie 1: Struktura mikrokomputera. Celem ćwiczenia jest zapoznanie się z ogólną strukturą mikrokomputera z rozbiciem na poszczególne bloki funkcjonalne, ze szczególnym podkreśleniem znaczenia i sposobu działania mikroprocesora wraz z najbliższym otoczeniem. Istotnym elementem ćwiczenia jest poznanie zależności czasowych w trakcie wykonywania wybranych rozkazów i ich interpretacja. Użycie programu DEBUG i analizatora stanów logicznych uczy dodatkowo umiejętności posługiwania się tymi narzędziami w trakcie prac uruchomieniowych systemów mikroprocesorowych. Wymagane wiadomości: a) Struktura mikroprocesora 8080 i 8086/8088. b) Standardy magistral w mikrokomputerach 8 i 16-bitowych. c) Magistrala BUSMAT. d) Assembler 8080 i 8086/8088. e) Program DEBUG. f) Zasada działania analizatora stanów logicznych. g) Analizator typu PC-52 - sposób użytkowania. h) Arytmetyka binarna. Program ćwiczenia: a) zapoznanie się z modułowym systemem mikrokomputerowym MSM b) zestawienie podstawowej konfiguracji mikrokomputera c) pisanie i uruchamianie prostych przykładów programów w assemblerze 8088 pod kontrolą debuggera d) analiza wykonania przykładowego rozkazu e) obserwacja wybranych przebiegów za pomocą oscyloskopu f) przyłączenie i uruchomienie analizatora stanów logicznych PC-52 g) ćwiczenia wyboru opcji pracy ASL h) szczegółowa analiza cyklu rozkazowego transmisji do pamięci. W ćwiczeniu posłużymy się dwoma komputerami. Jeden z nich (IBM PC) będzie tylko narzędziem pomiarowym współpracującym z analizatorem stanów logicznych. Drugi, MSM88 zestawiony w system pracujący w oparciu o procesor 8088 będzie komputerem badanym. Modułowy System Mikrokomputerowy produkowany jest przez firmę IMPOL w oparciu o procesory INTEL 8080/8085/8086/8088 i Z80. Poszczególne płyty układowe (karty) stanowią funkcjonalną całość, zaprojektowaną i wyprodukowaną w oparciu o mechaniczny standard EUROCARD. Logicznie jeden pakiet może stanowić np. pamięć, uniwersalny port, sterownik urządzenia peryferyjnego, timer, kontroler przerwań itp. Moduły mogą współpracować ze sobą dzięki wspólnej magistrali systemu odpowiadającej standardowi BUSMAT. Dzięki takiej konstrukcji nie tylko w łatwy sposób możemy zestawić własny unikalny mikrokomputer, ale możemy go w przejrzysty sposób rozbudowywać uzupełniając o dodatkowe bloki pamięci i moduły sterujące wraz z wymaganymi urządzeniami zewnętrznymi. Oprócz wykorzystania firmowych modułów możemy także zaprojektować, 1 wykonać i podłączyć własne dedykowane urządzenia stosując się do wymagań przyjętych standardów. Pierwszym z nich jest Magistrala typu BUSMAT, której sygnały przedstawione zostały w dodatku A. Rozkład sygnałów na poszczególnych szynach magistrali będzie potrzebny w trakcie przyłączania sond analizatora stanów logicznych do systemu MSM. W początkowej fazie ćwiczenia będziemy badać sposób wykonywania wybranych rozkazów pod kontrolą programu DEBUG, co daje nam możliwość "kwantowania" stanów procesora do jednego cyklu rozkazowego. Przy założeniu, że student zna rozkazy i zasady programowania w assemblerze 8088 ograniczymy się jedynie do podania najważniejszych komend debuggera. 1. Wywołanie programu następuje po podaniu nazwy DEBUG. 2. Poprawność załadowania i gotowość do przyjęcia zleceń sygnalizuje pojawienie się znaku "-". 3. Na tym etapie możemy stosować komendy, z których najważniejsze podano poniżej: a) A [<address>] - assemble/asemblacja; - A bez parametru rozpoczyna asemblację od adresu wskazanego przez aktualną zawartość rejestrów; - po średniku można umieścić komentarz; - błąd sygnalizowany jest komunikatem "^ERROR". b) U[<range>] - unassemble/deasemblacja; range - zakres; - range=np. 0733:100 L10 od adr. CS=733, IP=100, 16 bajtów; - lub 0733:100 108 od adr. CS=733, IP=100 do 733:108; - bez parametru - 32 bajty od adresu wg akt. zaw. rejestrów. c) D[<range>] - dump/przgląd pamięci; range - j.w.; - D bez parametru wyświetla zawartość 128 bajtów pamięci. d) R[<register name>] - register/kontrola i aktualizacja zawartości rejestrów roboczych; - R bez parametru wyświetla aktualną zawartość wszystkich rejestrów; - po podaniu prawidłowej nazwy rejestru AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, IP, PC (fizyczny adres rozkazu) można wprowadzić nową zawartość heksadecymalnie. Tylko do rejestru znaczników wprowadzamy bity pojedynczo i symbolicznie, zgodnie z poniższą tabelką: FLAG NAME 1 0 ------------------------------------------------Overflow OV NV Direction DN UP Interrupt EI DI Sign NG PL 2 FLAG NAME 1 0 -------------------------------------------------Zero ZR NZ Auxil.Carry AC NA Parity PE PO Carry CY NC e) E<address> [<list>] - enter/zapis pamięci; - "<list>" jest szeregiem wartości heksadecymalnych do umieszczenia od wskazanego adresu, oddzielonych spacjami; - brak parametru <list> wyświetla akt. zaw. zaadresowanej komórki i czeka na podanie nowej, spacja automatycznie inkrementuje adres. f) T[=<address>][<value>] - trace/krokowe wykonanie programu; - "=<address>" - adres startu; - "<value>" - ilość kroków; - brak parametrów - wykonanie instrukcji pod adresem wskazanym przez akt. zaw. rejestrów. g) G[=<address> [<address> ...]] - go/ciągłe wykonanie programu; - "=<address>" - adres startu; - "<address>" - adres zatrzymania - break point; - program uruchamiany bez parametrów musi mieć zapewniony powrót do DEBUG. h) Q - quit/powrót - wyjście z programu DEBUG. Dla pełnego poznania możliwości programu DEBUG odsyłamy studenta do szczegółowego opisu debuggera. Rozłożenie pracy procesora na poszczególne etapy związane z cyklem rozkazowym może jednak być niewystarczające z punktu widzenia projektanta urządzeń mikroprocesorowych. Dlatego też, jak również ze względu na bardziej szczegółowe poznanie procesów zachodzących w systemie wykorzystujemy w ćwiczeniu hardware'owe narzędzie - analizator stanów logicznych. Najbardziej ogólnym opisem tego urządzenia byłoby sformułowanie, że jest to wielokanałowy próbnik stanów logicznych z pamięcią. Dlatego właśnie skonstruowany jest on w postaci sondy wielokanałowej przyłączonej do mikrokomputera. Szybkie procesy zachodzące w procesorze mogą być w sposób ciągły zapisywane w pamięci RAM mikrokomputera. Są one jednak rzadko powtarzalne w sposób cykliczny. Przy większej ilości sygnałów badanych, a z taką sytuacją mamy tu do czynienia (szyny adresowe, szyny danych, szyny sterujące itd.) zapisanie przebiegów nawet krótkiego przebiegu czasowego z odpowiednią częstotliwością próbkowania wymagałoby olbrzymich zasobów pamięci i stwarzałoby duże trudności w analizie tak obszernego materiału. Musimy zatem ograniczyć się do ściśle określonego przedziału czasowego, w którym zachodzą przewidywane przez nas określone sytuacje. Jesteśmy w stanie wyodrębnić je dzięki komparatorowi stanów logicznych stanowiącemu integralną część analizatora. Komparator 3 wytwarza impuls "wychwytujący" właściwy moment czasowy zatrzymania w pamięci stanów logicznych na wszystkich przyłączonych sondach w zadanym okresie czasu poprzedzającym i następującym po pojawieniu się wymaganej kombinacji bitów na sondach. Kombinację tę zadajemy przed uruchomieniem analizatora w sposób programowy. Dzięki dynamicznemu badaniu działania systemów mikroprocesorowych analizator umożliwia znalezienie niesprawnych modułów i wykrycie trudno zauważalnych konfliktów czasowych. sygnały Układ próbkujący z komparatorem Pamięć buforowa Układ zobrazowania wyników monitor Zegar zewnętrzny Układ sterowania klawiatura generator IBM PC + program LOGIC Schemat blokowy analizatora stanów logicznych. Wywołanie programu następuje po umieszczeniu dyskietki w komorze A i podaniu nazwy LOGIC. Przejrzysty opis funkcji dostępnych na każdym poziomie ułatwia posługiwanie się urządzeniem. 1. S - clock source/źródło zegara, do wyboru a) wewn, b) zewn. [ad b) przyłączyć sondę C i podać które zbocze jest aktywne]. 2. R - clock rate/częstotliwość wewn. zegara - 25 kHz do 100MHz; [przy 100 MHz ilość aktywnych sond maleje z 24 do 6]. 3. V - threshold voltage/poziomy logiczne 0 i 1 (TTL, ECL, adjust). 4. W - trigger word/ słowo synchronizacji - kombinacja stanów logicznych na wybranych sondach, przy której następuje "zatrzaśnięcie " przedziału czasowego o długości 1 kB/clock rate w sąsiedztwie wychwyconej kombinacji. 4 Dwa górne rzędy czytane pionowo oznaczają nr sondy 2 3 kanał 23 w trzecim rzędzie wpisujemy warunek synchronizacji x lub 0, 1. 5. P - trigger position/pozycja triggera - ustawia proporcje czasu poprzedzającego spełnienie zadanego warunku i zarejestrowanych przebiegów w czasie po jego wystąpieniu. 6. C - capture/zatrzaśnij - wychwytuje przebieg na sondach w czasowym sąsiedztwie zadanego warunku. 7. L - state list/lista stanów logicznych - wyświetla liczbowe wartości stanów na sondach w funkcji czasu (binarna zawartość pamięci buforowej RAM). 8. T - timing/wykres czasowy - podaje graficzny obraz przebiegów. 9. N - channel name/oznaczenie kanałów - pozwala na wprowadzenie własnych opisów sygnałów na poszczególnych sondach zgodnie z ich przyłączeniem do układu badanego. 10. E - repeat/powtórz i A - repeat when trigger/powtórz przy spełnieniu zadanego warunku cyklicznie ponawiają odczyt stanów na sondach bezwzględnie i przy wystąpieniu warunku. Dla pozostałych funkcji programu LOGIC odsyłamy studenta do szczegółowego opisu firmowego. Sposób przyłączenia analizatora i przetestowanie podstawowych funkcji ćwiczymy podłączając do jednej z sond sygnał zegara CCLK. Należy pamiętać, że numery na sondach odpowiadają numeracji w słowie synchronizacji oraz kolejności na diagramie czasowym. Kolejną czynnością będzie przyłączenie do analizatora magistrali danych i części adresowej (z braku wystarczającej ilości kanałów) oraz wybranych sygnałów sterujących (MW/, MR/). W dalszej części ćwiczenia należy w systemie MSM pod kontrolą programu DEBUG przygotować krótką sekwencję programową składającą się z przygotowania w wybranych rejestrach procesora określonej wartości binarnej oraz adresu, a następnie cyklicznie (w pętli) przesyłanie tej wartości pod wskazany adres. Biorąc pod uwagę koincydencję występowania na magistrali danych, adresowej i sterowania: a) adresów pobieranych rozkazów, b) adresów argumentów operacji, c) kodów wykonywanych operacji, d) adresów przesłań, e) przewidywanych sygnałów sterujących można przygotować słowo synchronizacji (W) w jednoznaczny sposób wychwytujące jednoczesne pojawienie się zadanych sygnałów. W tak przygotowanym układzie wykonujemy komendę C i przy braku synchronizacji powodujemy krokowe wykonywanie przygotowanego programu aż do oczekiwanego momentu pojawienia się sygnału "DATA CAPTURED" wskazującego na poprawne przyłączenie sond i wychwycenie momentu pojawienia się żądanej kombinacji bitów. Dokładna analiza "timingu" pozwoli na prześledzenie kolejnych faz wykonywania rozkazu na 5 poziomie cyklu zegarowego. Przy okazji możemy zapoznać się ze szczegółowymi podkomendami funkcji "timing" pozwalającymi na dokładniejsze rozbicie cyklu magistralowego na poszczególne fazy oraz wygodniejszą jego obserwację na ekranie (SCREEN SPEED: F=fast, S=slow; SCALE: D=decrease, I=increase; CUR1: 1=ON, 2=LOCK; CUR2: jak poprzednio). Najbardziej pouczające jest napisanie programu, w którym wykonane będą następujące czynności: a) załadowanie młodszej części akumulatora wartością (np. 0AAH), b) przygotowanie początkowego adresu pamięci danych w rejestrze BX, c) przesłanie młodszej części akumulatora do pamięci [BX], d) przesłanie z powrotem do akumulatora, e) inkrementacja zawartości akumulatora, f) skok do punktu c. Teraz należy uruchomić program w sposób krokowy z parametrem 256 kroków (pełny zakres wszystkich przesyłanych do pamięci wartości). W słowie synchronizacji ustawiamy adres transmisji (fizyczny) oraz którąś z dalszych wartości inkrementowanego akumulatora (np. 128) wraz z sygnałem sterującym zapisu. komenda C lub odpowiedź YES=F1 spowoduje rozpoczęcie oczekiwania na zadane słowo synchronizacji na podłączonych sondach do chwili aż na liniach danych pojawi się wartość 128 (komunikat "DATA CAPTURED"). To samo należy powtórzyć zmieniając w słowie synchronizacji sygnał odczytu na aktywny. Analiza czasowego otoczenia "wychwyconej" sytuacji uzmysławia jak wiele innych czynności wykonuje procesor na magistrali w trakcie krokowego wykonywania tej sekwencji obsługując monitor ekranowy MSM i inne funkcje związane z ciągłą pracą debuggera. Wykonanie programu w sposób ciągły (komenda G) pozwoli na obserwację procesów zachodzących na wybranych szynach używanych teraz wyłącznie przez napisany przez nas program. Opisany w ten sposób diagram czasowy należy już precyzyjnie zinterpretować. Ostatnią część ćwiczenia należy powtórzyć w kilku wariantach zmieniając słowo synchronizacji, częstotliwość zegara, źródło zegara, zbocze synchronizujące. 6 LITERATURA 1. Badźmirowski i in.: Systemy mikroprocesorowe WNT 2. Misiurewicz: Układy mikroprocesorowe WNT 3. Praca zbiorowa: Modułowe Systemy Mikrokomputerowe WNT 4. Bieńkowski: Mikroprocesory Wyd. Politechniki Warszawskiej 5. Pawłowski i in.: Układy mikroprocesorowe 8080/6800/2900 Wyd. Politechniki Warszawskiej 6. Grabowski Koślacz: Podstawy i praktyka programowania µP WNT 7. Fleichtinger: Poradnik - Mikrokomputery WKŁ 8. Katalog firmowy INTEL 9. Zeszyty Przemysłowego Instytutu Elektroniki UNITRA-CEMI seria: Systemy Mikroprocesorowe 7 Dodatek A Rozmieszczenie sygnałów na magistrali BUSMAT (w nawiasach podano numery kanałów analizatora stanów logicznych podłączonego do magistrali) GRUPA SYGNAŁÓW RZĄD a OPIS Siganl GND POWER + 5V dc SUPLIES AND + 12V dc CONTROLS Power Fail Interrupt ADDRESS Address Lines DATA Data Lines DATA TRANSFER CONTROLS Memory Read I/O Read Wait Request Reserved Parallel Interrupt INTERRUPTS Request Lines BUS EXCHANGE CONTROLS POWER SUPLIES Bus Priority In Bus Clock Bus Busy + 15V dc + 5V dc Siganl GND NR STYKU NAZWA SYGANŁU GND + 5V + 12V PFIN/ ADR0 (0) ADR2 (2) ADR4 (4) ADR6 (7) ADR8 (9) ADR10 ADR12 ADR14 ADR16 (10) ADR18 (12) DAT0 (16) DAT2 (18) DAT4 (20) DAT6 (22) MR/ (15) IOR/ WRQ/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 INT0/ INT2/ INT4/ INT6/ BPRN/ BCLK/ BUSY/ + 15V + 5V GND 8 RZĄD b NAZWA SYGANŁU OPIS GND Siganl GND + 5V + 5V dc - 12V - 12V dc RESET/ System Reset ADR1 (1) ADR3 (3) ADR5 (5) ADR7 (8) ADR9 Address Lines ADR11 ADR13 ADR15 ADR17 (11) ADR19 (13) DAT1 (17) DAT3 (19) Data Lines DAT5 (21) DAT7 (27) MW/ (14) Memory Write IOW/ I/O Write INTA/ Interrupt Acknowledge CIRQ/ Common Interrupt Request INT1/ Parallel Interrupt INT3/ Request Lines INT5/ INT7/ BPRO/ Bus Priority Out CCLK/ Constant Clock CBRQ/ Common Bus Request - 15V - 15V dc + 5V + 5V dc GND Siganl GND