urządzenia zewnętrzne
DESCRIPTION
Urządzenia zewnętrzne. Urządzenia zewnętrzne 1/31. Adresowanie Metody obsługi Buforowanie informacji. Sposoby adresowania urządzeń we/wy. - PowerPoint PPT PresentationTRANSCRIPT
Urządzenia zewnętrzne
Urządzenia zewnętrzne 1/31
Adresowanie
Metody obsługi
Buforowanie informacji
Urządzenia zewnętrzne - adresowanie 2/31
Sposoby adresowania urządzeń we/wy
Adresowanie jednolite z pamięcią (ang. memory-mapped):
• stosowane w małych systemach lub tam
gdzie przestrzeń adresowa pamięci nie jest w pełni wykorzystana, a więc:
- brak możliwości późniejszej rozbudowy PAO;
• umożliwia dostęp do urz. we/wy tymi samymi rozkazami
co do zwykłych komórek pamięci, a więc:
- większa gama rozkazów;
- rozkazy mogą być wykonywane szybciej (procesory uniwersalne);
• jako sygnały strobów stosuje się linie:
/MREQ, /RD albo /WR (/MEMR albo /MEMW).
Urządzenia zewnętrzne - adresowanie 3/31
Przykład realizacji adresowania jednolitego:
VCC
A15
A14A13A12
A[0..15]
/MREQ
/CSROM/CSRAM
/CSIO1/CSIO2/CSIO3
I/O1
I/O2
I/O3
RAM
EPROM0000h
8000h
FFFFh
7xxxh
6xxxh
5xxxh4FFFh
2000h
1000h
A1
B2
C3
E14
E25
E36
Y015
Y114
Y213
Y312
Y411
Y510
Y69
Y77
74LS138
Urządzenia zewnętrzne - adresowanie 4/31
Adresowanie rozdzielone z pamięcią (ang. isolated i/o):
• stosowane w dużych systemach, systemach modułowych lub tam
gdzie przestrzeń adresowa pamięci jest w pełni wykorzystana, a więc:
- możliwość późniejszej rozbudowy PAO;
• dostęp do urz. we/wy wymaga użycia odrębnych rozkazów z grupy we-wy,
a więc zwykle:
- mała gama rozkazów do transmisji;
- rozkazy są wykonywane wolniej
(dodatkowe takty zegara w cyklach maszynowych procesory uniwersalne);
• jako sygnały strobów stosuje się linie:
/IORQ, /RD albo /WR (/IOR albo /IOW).
Urządzenia zewnętrzne - adresowanie 5/31
Przykład realizacji adresowania rozdzielonego:
VCC
A15
A14A13A12
A[0..15]
/MREQ
/CSROM
/CSRAM
/IORQ
/CSIO0/CSIO1
/CSIO7/CSIO6
/CSIO2
A7A6
A5A4
RAM
EPROM0000h
8000h
FFFFh
7000h
1000h
A3
00h
80h
FFh
40h48h50h58h60h68h70h78h
3FhIO0IO1IO2
IO6IO7
01000xxxB01001xxxB01010xxxB
01110xxxB01111xxxB
A1
B2
C3
E14
E25
E36
Y0 15
Y1 14
Y213
Y312
Y411
Y510
Y69
Y7 7
74LS138
A1
B2
C3
E14
E25
E36
Y0 15
Y114
Y213
Y312
Y411
Y5 10
Y69
Y7 7
74LS138
Urządzenia zewnętrzne - metody obsługi 6/31
1. Obsługa programowa „na bieżąco”
odczytdanej
czyjest dana?
T
badanie stanu urządzenia
N
wprowadzanie informacji wyprowadzanie informacji
czygotowe?
T
badanie stanu urządzenia
zapisdanej
N
I/O nPORT
DANYCHREJESTRSTANU
I/O m
PORTDANYCH
READY
Urządzenia zewnętrzne - metody obsługi 7/31
Cechy metody:
• prosta w oprogramowaniu, ale:
• metoda dopuszczalna gdy:
- urządzenie jest szybkie;
- mikroprocesor nie ma nic innego do roboty;
• Uwaga: niebezpieczeństwo zapętlenia się programu
przy trwale niedziałającym urządzeniu zewnętrznym
Urządzenia zewnętrzne - metody obsługi 8/31
2. Obsługa programowa w przerwaniach zegarowych
wprowadzanie informacji
PROGRAM TŁA: flagawe:=0
PROGRAM TŁA:odczyt z bufora; flagawe:=0
(opcjonalnie)
PROCEDURA OBSŁUGI PRZERW. ZEGAROWEGO:
N
N
T
Tczy jest dana ?
flagawe=0 ?
odczyt danej flagawe:=1
wyprowadzanie informacjiPROGRAM TŁA:
zapis do bufora; flagawy:=1
PROGRAM TŁA (opcjonalnie):
zapis do bufora; flagawy:=1
PROCEDURA OBSŁUGI PRZERW. ZEGAROWEGO:
N
Tflagawy=1 ?
N
Turz. gotowe ?
zapis danejflagawy:=0T
badanie stanu urządzenia
czy jest dana?
N
Urządzenia zewnętrzne - metody obsługi 9/31
Cechy metody:
• urządzenie jest obsługiwane w dyskretnych chwilach czasu;
• stała częstotliwość obsługi urządzenia;
• pomiędzy przerwaniami możliwe jest wykonywanie innych zadań;
• metoda dopuszczalna,
gdy urządzenie nie dostarcza / nie wymaga bloków informacji
Urządzenia zewnętrzne - metody obsługi 10/31
PROGRAM TŁA: flagaweK:=0; błądweK:=0;
licznikK:=MAKSILOŚĆPRÓB;
PROCEDURA OBSŁUGI PRZERW. ZEGAROWEGO:
odczyt danej flagaweK:=1
N
N
T
PROGRAM TŁA: odczyt z bufora; flagaweK:=0
(opcjonalnie)
dec(licznikK)
N
TbłądweK:=1
T
PROGRAM TŁA: zapis do bufora;
flagawyL:=1; błądwyL:=0;licznikL:=MAKSILOŚĆPRÓ
B;PROCEDURA OBSŁUGI
PRZERW. ZEGAROWEGO:
zapis danejflagawyL:=0
N
N
T
PROGRAM TŁA (opcjonalnie): zapis do bufora;
flagawyL:=1
dec(licznikL)
T
błądwyL:=1
N
T
licznikK=0 ?
licznikL=0 ?
czy jest dana ?
flagaweK=0 ?
urz. gotowe ?
flagawyL=1 ?
Urządzenia zewnętrzne - metody obsługi 11/31
3. Obsługa przy użyciu DMA
akceptacja końca transmisjiw proc. obsł. przerwania
c.d. programu głównego
programowanie układu DMA
program główny transmisja DMA
przerwanie
Urządzenia zewnętrzne - metody obsługi 12/31
4. Obsługa z wykorzystaniem przerwań od urządzeń
PROGRAM TŁA: flagawe:=0
PROCEDURA OBSŁUGI URZ. ZEWNĘTRZNEGO:
PROGRAM TŁA: odczyt z bufora; flagawe:=0
(opcjonalnie)
PROGRAM TŁA:zapis do bufora; flagawy:=1
PROCEDURA OBSŁUGI URZ. ZEWNĘTRZNEGO:
PROGRAM TŁA (opcjonalnie): zapis do bufora; flagawy:=1
wprowadzanie informacji wyprowadzanie informacji
N
Tflagawy=1 ?
N
Turz. gotowe ?
zapis danejflagawy:=0
N
N
T
Tczy jest dana ?
flagawe=0 ?
odczyt danej flagawe:=1
Urządzenia zewnętrzne - metody obsługi 13/31
Cechy metody:
• bardzo efektywna technika obsługi;
• największe korzyści występują przy przerwaniach wektorowych;
• obsługa jest realizowana tylko wtedy, gdy urządzenie sygnalizuje przerwaniem gotowość do transmisji.
Urządzenia zewnętrzne - metody obsługi 14/31
5. Obsługa bez sprawdzania stanu urządzenia
niektóre urządzenia nie wymagają bądź też nie umożliwiają kontroli
swego stanu przed transmisją, pozwalając na bezpośredni odczyt lub
zapis (np. we/wy binarne, wyświetlacze, przetworniki C/A).
Urządzenia zewnętrzne - buforowanie informacji 15/31
Zalecane zasady obsługi urządzeń zewnętrznych:
• unikanie „rozproszenia” operacji we/wy po całym programie;
• korzystanie z procedur we/wy, modułów (bibliotek) obsługi urz. zewnętrznych;
• stosowanie zmiennych buforujących odczytana informację lub informację przygotowywaną do wysłania;
Urządzenia zewnętrzne - buforowanie informacji 16/31
Przykład braku buforowania informacji wejściowej:
odczyt01110101b
port we X
port we X
port we X
C I Ą G
R O Z K A Z Ó W
t1
t2
odczyt01110101b
odczyt11110101b
NIE, ponieważ może prowadzić do:• błędnych obliczeń;• błędnego procesu decyzyjnego;
Urządzenia zewnętrzne - buforowanie informacji 17/31
Rozwiązanie poprawne:
TAK, ponieważ:• logicznie poprawniej;• szybciej.
port we X
bufor X
C I Ą G
R O Z K A Z Ó W
t1
t2
odczyt01110101b
kopia do buforaodczyt
01110101b
odczyt01110101b
odczyt01110101b
Urządzenia zewnętrzne - buforowanie informacji 18/31
Wariant z wieloma portami wejściowymi:
odczyty w celu przetworzenia
odczyt kompletu danych i kopia do buforów
port we X1
bufor we X1
C I Ą G
R O Z K A Z Ó W
. . .
port we Xk
. . .
bufor we Xk
rozwiązanie stosowane np.
w układach sterowników.
Urządzenia zewnętrzne - buforowanie informacji 19/31
Wariant z wieloma portami wyjściowymi, rozwiązanie niewłaściwe:
zapisport wy Y1
port wy Y2
port wy Y3
C I Ą G
R O Z K A Z Ó W
t1
t2
zapis
zapis
Wady:
• rozproszenie operacji wyjściowych
w kodzie programu;
• różnice czasowe t1, t2
w wysterowaniu kolejnych portów
mogą negatywnie wpływać na
sterowany obiekt
Urządzenia zewnętrzne - buforowanie informacji 20/31
Wariant z wieloma portami wyjściowymi, rozwiązanie zalecane:
zapis
bufor wy Y1
bufor wy Y2
bufor wy Y3
C I Ą G
R O Z K A Z Ó W
t1
t2
zapis
zapis
port wy Y1
port wy Y2
port wy Y3
zapis do portów
Zalety:
• zgrupowanie operacji wyjściowych
w kodzie programu;
• różnice czasowe t1, t2
w wysterowaniu kolejnych portów wy.
są sprowadzone do minimum
Urządzenia zewnętrzne - buforowanie informacji 21/31
Wariant ze słowem wyjściowym aktualizowanym fragmentarycznie,rozwiązanie błędne:
zapis bitów 3..0port wy Y
port wy Y
C I Ą G
R O Z K A Z Ó W
t1
zapis bitów 7..4
Wada:
błędy wyjść binarnych
Urządzenia zewnętrzne - buforowanie informacji 22/31
Wariant ze słowem wyjściowym aktualizowanym fragmentarycznie,rozwiązanie poprawne:
Zaleta:
logicznie poprawnezmiana bitów 7..4
zmiana bitów 3..0
bufor wy Y
C I Ą G
R O Z K A Z Ó W
t1
port wy Y1 zapis do portu
odczyt bufora
Urządzenia zewnętrzne - buforowanie informacji 23/31
Proste (jw.) mechanizmy buforowania stosuje się gdy odczyt i zapis
odbywają się regularnie, np. w przerwaniach zegarowych lub w pętli
programu głównego.
Proste bufory są obrazem w RAM odpowiadających im portów.
Dotyczy to praktycznie wszystkich rodzajów urządzeń łączących system
mikroprocesorowy z obiektem sterowanym.
Urządzenia dostarczające lub odbierające informację nieregularnie,
w przypadkowych chwilach czasu lub ze zmienną częstotliwością
wymagają złożonych struktur buforujących.
Stosuje się tzw. bufor cyrkulacyjny.
Urządzenia tego wymagające to np. porty szeregowe, klawiatury
autonomiczne, drukarki.
Urządzenia zewnętrzne - buforowanie informacji 24/31
tablica bajtówo zalecanym rozmiarze
B=2k
ważne dane
PZ
PW
Przykłady konstrukcji bufora cyrkulacyjnego
1.
PZ - indeks (zmienna) pierwszego zajętego przez jeszcze ważną informację
bajtu w buforze, PZ=0..B-1;
PW - indeks (zmienna) pierwszego wolnego bajtu w buforze, do którego może
być wpisana najnowsza informacja, PW=0..B-1.
Urządzenia zewnętrzne - buforowanie informacji 25/31
zapis do bufora odczyt z buforainformacjawejściowa
przez proc. obsł. przerwania:jeżeli (PZ+B-1) mod B PW to:
A:=IN[port we]M[BUF+PW]:=A
PW:=(PW+1) mod B
np. przez program główny:jeżeli PZ PW to:A:=M[BUF+PZ]
PZ:=(PZ+1) mod B
informacjawyjściowa
np. przez program główny:jeżeli (PZ+B-1) mod B PW to:
M[BUF+PW]:=APW:=(PW+1) mod B
przez proc. obsł. przerwania:jeżeli PZ PW to:A:= M[BUF+PZ]OUT[port wy]:=APZ:=(PZ+1) mod B
gdzie BUF oznacza adres początkowy bufora cyrkulacyjnego
Zasady obsługi takiego bufora
Bufor z dwoma indeksami PZ i PW o długości B uważa się:
- za pusty jeżeli PZ = PW;
- za zapełniony (zawiera wtedy B-1 bajtów) jeżeli (PZ+B-1) mod B = PW.
Urządzenia zewnętrzne - buforowanie informacji 26/31
2.
tablica bajtówo zalecanym rozmiarze
B=2k
ważne dane
PZ ILE
PZ - indeks (zmienna) pierwszego zajętego przez jeszcze ważną informację
bajtu w buforze, PZ=0..B-1;
ILE - zmienna określająca ilość (liczoną w bajtach) ważnych danych w buforze,
ILE=0..B.
Urządzenia zewnętrzne - buforowanie informacji 27/31
Zasady obsługi takiego bufora
Bufor z indeksem PZ i zmienną ILE, o długości B uważa się:
- za pusty jeżeli ILE = 0;
- za zapełniony (zawiera wtedy B bajtów) jeżeli ILE = B.
zapis do bufora odczyt z buforainformacjawejściowa
przez proc. obsł. przerwania:jeżeli ILE < B to:A:=IN[port we]
M[BUF+(PZ+ILE) mod B]:=AILE:=ILE+1
np. przez program główny:jeżeli ILE > 0 to:A:=M[BUF+PZ]
PZ:=(PZ+1) mod BILE:=ILE-1
informacjawyjściowa
np. przez program główny:jeżeli ILE < B to:
M[BUF+(PZ+ILE) mod B]:=AILE:=ILE+1
przez proc. obsł. przerwania:jeżeli ILE > 0 to:A:= M[BUF+PZ]OUT[port wy]:=APZ:=(PZ+1) mod B
ILE:=ILE-1gdzie BUF oznacza adres początkowy bufora cyrkulacyjnego
Urządzenia zewnętrzne - buforowanie informacji 28/31
Przykłady oprogramowania buforów cyrkulacyjnych
Ad. 1.bufor: EQU 8000hpz: EQU 8100hpw: EQU 8101h; zapis do bufora z portwe w przerwaniu LD HL,(pz) ; L:=pz, H:=pw LD A,L ; A:=pz DEC A ; A:=(A+255)mod256 XOR H ; Z=1 gdy bufor pelny JR Z,bufpelny IN A,(portwe) ; odczyt portu LD E,H LD D,0 ; DE=pw LD HL,bufor ADD HL,DE ; HL->M(pw) LD (HL),A ; M(pw):=A INC E ; pw:=(pw+1)mod 256 LD A,E LD (pw),Abufpelny:
Urządzenia zewnętrzne - buforowanie informacji 29/31
; przepisanie z bufora do portwy w przerwaniu LD HL,(pz) ; L:=pz, H:=pw LD A,L ; A:=pz XOR H ; Z=1 gdy bufor pusty JR Z,bufpusty LD E,L LD D,0 ; DE=pz LD HL,bufor ADD HL,DE ; HL->M(pz) LD A,(HL) ; A:=M(pz) OUT (portwy),A ; zapis portu INC E ; pz:=(pz+1)mod 256 LD A,E LD (pz),Abufpusty:
Urządzenia zewnętrzne - buforowanie informacji 30/31
Ad.2.dlgbuf: equ 20bufor: equ 100hpz: equ bufor+dlgbufile: equ pz+1;zapis do bufora z portwe w przerwaniu:wpisz: ld hl,(pz) ;L:=pz, H:=ile ld a,h ;A=ile cp dlgbuf ;czy ile=dlgbuf? jr z,bufpelny ;slkok jesli tak add a,l ;A:=ile+pz cp dlgbuf ;czy ponad dlgbuf-1? jr c,ltdlg ;skok jesli nie sub dlgbuf ;modulo dlgbufltdlg: ld hl,bufor ld e,a ld d,0 add hl,de ;HL->wolna komorka in a,(portwe) ;odczyt danej z portu ld (hl),a ;zapis danej dop bufora ld hl,ile inc (hl) ;ile:=ile+1bufpelny:
Urządzenia zewnętrzne - buforowanie informacji 31/31
;przepisanie z bufora do portwy w przerwaniu: ld hl,(pz) ;L:=pz, H:=ile ld a,h ;A=ile and a ;czy ile=0? jr z,bufpusty ;skok jesli tak ld e,l ;E=pz ld d,0 ld hl,bufor add hl,de ;HL->najstarsza dana ld a,(hl) ;odczyt danej z bufora out (portwy),a ;zapis do portu ld hl,ile dec (hl) dec hl ld a,(hl) ;modyfikacja pz inc a ld (hl),a xor dlgbuf ;czy pz=dlgbuf jr nz,bufpusty ;skok jesli nie ld (hl),a ;pz mod dlgbuf=0bufpusty: