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