Technika Cyfrowa 2 Wykład 3: Mikrokomputery jednoukładowe

Transkrypt

Technika Cyfrowa 2 Wykład 3: Mikrokomputery jednoukładowe
J. Sugier, TC 2
J. Sugier, TC 2
III MIKROKOMPUTERY JEDNOUKŁADOWE RODZINY 8051
Technika Cyfrowa 2
1 ARCHITEKTURA UKŁADU 8051
Wykład 3:
Mikrokomputery jednoukładowe
rodziny 8051
Mikrokomputer jednoukładowy (mikrosterownik) – układ scalony zawierający
wszystkie elementy systemu mikroprocesorowego: procesor, pamięć (RAM /
ROM) oraz szereg układów WE/WY.
• Cel: wyeliminowanie kłopotliwych w realizacji oraz zajmujących wiele
miejsca magistral łączących komponenty systemu mikroprocesorowego.
• Zastosowania: tzw. systemy wbudowane, sterujące / pomiarowe, pracujące w
konkretnym środowisku – ważna obecność wielu różnorodnych układów
WE/WY.
dr inż. Jarosław Sugier
[email protected]
Rodzina kontrolerów MCS-51
IIAR, pok. 227 C-3
Firma Intel, układ 8051, 1980 r. Obecnie kilkadziesiąt (?) wariantów
produkowanych (wciąż) przez wielu producentów.
3-1
J. Sugier, TC 2
Schemat funkcjonalny
8051
PAMIĘĆ
12
PROCESOR
8-BITOWY
8
8
8
SYSTEM
PRZERWAŃ
UKŁAD
P2P0
Dane
Sterowanie
P0
CZASOWOLICZNIKOWY
8
8
SZEREGOWY
PORT
WE/WY
J. Sugier, TC 2
• Lista rozkazów jest stała we wszystkich procesorach rodziny 51. Sterowanie
urządzeń WE/WY: poprzez ustawienia bitów w obszarze danych (tzw.
rejestry SFR) ⇒ w kolejnych wersjach kontrolera różnice w liczbie / adresach
tychże bitów.
8
Adres
16
8
Elementy
• Ośmiobitowy procesor. Lista 111 rozkazów kodowanych (wraz z
argumentami) na 1, 2 lub 3 bajtach; stosunkowo bogaty wybór rozkazów:
arytmetycznych (w tym mnożenie oraz dzielenie), logicznych, bitowych,
skoków warunkowych oraz wywołań podprogramów.
PAMIĘĆ
DANYCH
(RAM)
PROGRAMU
(ROM)
3-2
• Rozdzielenie pamięci danych i programu – tzw. architektura harwardzka;
nowość w stosunku do omawianej architektury trójmagistralowej w wersji
von Neumann’a.
RÓWNOLEGŁE
PORTY
WE/WY
RxD – P3.0
TxD – P3.1
T0 – P3.4
T1 – P3.5
INT0 – P3.2
INT1 – P3.3
• Wewnętrzna pamięć programu. Pojemność w 8051: 4096 słów 8-bitowych
(4k x 8, stąd 12 linii adresowych; 8k x 8 w 8052...). Rozszerzalna do 64 kB
po dołączeniu pamięci zewnętrznej. Wyłącznie typu ROM (PROM,
EPROM...) – nie ma rozkazu zapisu w tym bloku pamięci, możliwy tylko
odczyt specjalnym rozkazem MOVC (dane stałe).
4x8
P3
P2 P1 P0
3-3
Elementy – c.d.
3-4
J. Sugier, TC 2
• Wewnętrzna pamięć danych (internal RAM, IRAM). Rozmiar 128 bajtów
(256 bajtów w procesorze 8052 i następnych); zawiera obszar adresowany
bitowo (16 bajtów = 128 bitów). Na schemacie 8 linii adresowych już dla
8051, bo w dodatkowym obszarze 128 bajtów rejestry specjalne (SFR,
Special Function Registers).
• Linie portów P0, P1, P2, P3.
WE / WY portów równoległych oraz szereg funkcji dodatkowych:
P0 – multipleksowana magistrala danych (D0÷D7) & młodszy bajt magistrali
adresowej (PCL lub A7÷A0),
P2 – starszy bajt magistrali adresowej (PCH lub A15÷A8),
• Równoległe porty WE/WY. Cztery 8-bitowe porty równoległe P0...P3. Przy
dostępie do pamięci zewnętrznych porty P0/P2 pełnią rolę wyprowadzeń
magistral, ponadto linie portu P3 są wejściami / wyjściami innych bloków
kontrolera jak na rysunku.
P3 – linie WE/WY układów licznikowych, transmisji danych oraz przerwań,
P3.6 = !WR – WY sterujące „zapis do zewnętrznej pamięci danych”,
P3.7 = !RD – WY sterujące „odczyt z zewnętrznej pamięci danych”.
Jeszcze inne funkcje w trybie programowania wewnętrznej pamięci PROM.
• Układy czasowo-licznikowe. Dwa 16-bitowe liczniki, mogące zliczać
impulsy zewnętrzne (WE T0/T1 w porcie P3) – praca jako licznik – lub
impulsy zegarowe (XTAL) – praca jako tzw. timer.
Port P1 nie ma funkcji dodatkowych.
4 x 8 = 32 wyprowadzenia.
• Port szeregowy. Jeden kanał transmisji szeregowej; możliwa praca w jednym
z czterech trybów.
• Układ przerwań. Obsługuje dwa przerwania zewnętrzne (wyprowadzenia
INT0/INT1 w porcie P3) oraz przerwania od liczników i układu transmisji
szeregowej.
J. Sugier, TC 2
2 WYPROWDZENIA ZEWNĘTRZNE
• !PSEN (Program Store Enable) = WY sterujące „odczyt z zewnętrznej
pamięci programu”; koniec stanu aktywnego („0”) ⇒ wczytanie rozkazu.
3-5
3-6
1
J. Sugier, TC 2
J. Sugier, TC 2
3 PAMIĘĆ PROGRAMU
WYPROWDZENIA ZEWNĘTRZNE – c.d.
• Całkowita przestrzeń adresowa = 64 kB (PC zawiera adres 16-bitowy,
A15÷A0).
• !ALE (Address Latch Enable) = WY sterujące „zatrzaśnięcie podanego
adresu w P0” (zboczem opadającym).
• Organizacyjnie podzielona na 32 tzw. strony – fragmenty o rozmiarze 2kB:
pełny adres = 5b nr strony (0÷1F) + 11b adres na stronie (000 ÷ 7FF):
• !RST (Reset) = WE sygnału inicjalizacji (resetowania) układu.
• !EA (External Access) = WE testowane w trakcie inicjalizacji (reset);
wymusza pobieranie wszystkich rozkazów z zewnętrznej pamięci programu
(ignorowanie pamięci wewnętrznej).
0000 0000 0000 0000
page
offset
• Granice stron są rozróżniane przez specjalne rozkazy skoków i wywołań
podprogramów, które operują w obrębie aktualnej strony i mają o jeden bajt
krótsze kodowanie.
• XTAL1, XTAL2 = dołączenie oscylatora kwarcowego;
standardowo fXTAL = 12MHz.
• Ucc = +5V, Uss = masa.
• Całość pamięci programu jest sumą pamięci wewnętrznej (zawartej w
układzie scalonym) oraz pamięci zewnętrznej (dołączonej w konkretnej
realizacji systemu).
Razem: 40 wyprowadzeń.
3-7
3-8
J. Sugier, TC 2
• Przy inicjalizacji !EA = 0 powoduje
ignorowanie wbudowanej pamięci
wewnętrznej; wówczas układ(y)
pamięci zewnętrznej powinny być
umieszczone od adresu 0000.
• 8051 = 4kB (dwie pierwsze strony, 0000 ÷ 0FFF),
8052 = 8kB (cztery pierwsze strony, 0000 ÷ 1FFF),
itd. inne wersje...
FFFFH:
• Wyróżnione adresy:
EXTERNAL
• Jeśli !EA = 1: pamięć zewnętrzna jest
kontynuacją obszaru wewnętrznego
⇒ dekodowanie adresu musi zadbać o
umieszczenie układu pod
odpowiednim adresem początkowym:
1000h dla 8051 (4k pam. wewn.),
2000h dla 8052 (8k pam. wewn.)...
J. Sugier, TC 2
3.1 Wewnętrzna pamięć programu
PROGRAM M EM ORY
( READ ONLY)
EA = 0
EXTERNAL
0000 – adres inicjalizacji (RESET ⇒ PC = 0000)
0003 – obsługa przerwania zewn. INT0
000B – obsługa przerwania z licznika T0
0013 – obsługa przerwania zewn. INT1
001B – obsługa przerwania z licznika T1
0023 – obsługa przerwania z portu szeregowego
EA = 1
INTERNAL
• Dla pracy programu podział na
pamięć wewnętrzną i zewnętrzną
jest nieistotny i całkowicie
niewidoczny.
• Adresy programów obsługi przerwań są odległe od siebie o 8B; jeśli program
obsługi jest dłuższy, stosuje się skok do obszaru poza adresem 0023h.
• Wniosek: w momencie inicjalizacji (np. włączenie zasilania) pod adresem
0000 musi znajdować się pamięć ROM z programem startowym.
0000
PSEN
3-9
3-10
J. Sugier, TC 2
4 PAMIĘĆ DANYCH
Podział: wewnętrzna (internal, IRAM) oraz zewnętrzna (external, XRAM).
4.1 Pamięć IRAM w układzie 8051
2) Obszar rejestrów specjalnych
128 B z rejestrami
specjalnego przeznaczenia
( SFR ).
FFhex
PAMIĘĆ
UŻYTKOWA
FFhex
(adresowanie pośrednie
rejestrem R0 lub R1)
• Struktura:
1) Obszar pamięci użytkowej
128 B zawierających:
- rej. użytkowe R0÷R7,
- stos,
- 128 flag bitowych,
- komórki og. przezn.;
J. Sugier, TC 2
4.2 256B IRAM w następcach 8051 (8052, 537...)
SPECIAL
FUNCTION
REGISTERS
(SFR)
REJESTRY
SPECJALNE
SPECIAL FUNCTION
REGISTERS (SFR)
(adresowanie bezpośrednie)
80hex
7Fhex
PAMIĘĆ
UŻYTKOWA
80hex
7Fhex
Obszar
ogólnego
przeznaczenia
30hex
2Fhex
7F
7E
07
06
7D
7C
7B
7A
79
78
128 bitów
o adresach 00h ÷ 7Fh
OBSZAR
PAMIĘCI
UŻYTKOWEJ
20hex
1Fhex
05
04
03
R7
.
.
18hex
17hex
R0
10hex
0Fhex
R0
08hex
07hex
R0
00hex
R0
02
01
00
Obszar
adresowany
bitowo
• Adres komórki podany w rozkazie jako stała (tzw. adresowanie
bezpośrednie) ⇒ dostęp do rejestru specjalnego SFR, np.:
MOV A, 0D0h – prześlij do akumulatora zawartość rejestru SFR o adr. D0
Zestawy
rejestrów
użytkowych
• Adres komórki w rej. R0 lub R1 (tzw. adresowanie pośrednie) ⇒ dostęp do
pamięci użytkowej, np.:
MOV R0, #0D0h – załaduj do rejestru R0 bajt D0 (adres komórki)
MOV A, @R0
– prześlij do ACC zawartość z pamięci użytkowej.
3-12
Zestaw 3
R7
.
.
Zestaw 2
R7
.
.
Zestaw 1
R7
.
.
00hex
• Pełne 256B pamięci użytkowej; starsza połowa nakłada się na obszar SFR.
Zestaw 0
3-11
2
J. Sugier, TC 2
J. Sugier, TC 2
Uwagi
4.3 Zewnętrzna pamięć danych XRAM
• Większość asemblerów (kompilatorów języka wewnętrznego procesora) ma
zdefiniowane nazwy symboliczne adresów w obszarze SFR (np. PSW ≡
D0h), do których łatwiej się odwoływać.
MOV A,PSW ≡ MOV A,0D0h dotyczy SFR.
• W przeciwieństwie do pamięci programu XRAM jest zupełnie odrębną
przestrzenią adresową.
• Adres jest 16b (specjalny 2B rejestr adresowy DPTR): łączna przestrzeń
64kB.
• W obszarze SFR nie wszystkie 128B zajęte jest rejestrami specjalnymi; w
kolejnych wersjach (52, 55...) pojawiają się nowe związane z obsługą
dodawanych urządzeń WE/WY.
• Dostęp ograniczony i wolniejszy w porównaniu do IRAM: tylko przez rozkaz
MOVX, komunikacja tylko z akumulatorem (odczyt do lub zapis z).
• Dostęp do stosu (PUSH, POP...) przez adresowanie pośrednie rejestrem SP ⇒
stos można umieścić w górnej połowie obszaru użytkowego.
• Adres komórki pamięci XRAM (16b) pobierany z:
• Umieszczenie rejestrów wewnętrznych w obszarze pamięci – odstępstwo od
architektury podanej dla systemów mikroprocesorowych, w których był
rozdział: pamięć zewnętrzna / szybkie rejestry wewnętrzne procesora.
•
rejestru specjalnego DPTR (starszy/młodszy bajt DPH/DPL),
lub
•
Ri (R0|R1; młodszy bajt) i portu P2 (starszy bajt).
3-13
3-14
J. Sugier, TC 2
5 INTERFEJS PAMIĘCI ZEWNĘTRZNYCH
Przykład:
Zewnętrzna pamięć programu (8kB) oraz danych (8kB), obie umieszczone od
adresów 0000.
• 74573: 8 × przerz. D transparent latch (zatrzaśnięcie opadającym zboczem
sygnału !LE) z buforami 3-stanowymi otwieranymi sygnałem !OE (tu: stale
otwarte).
...
D0
...
ALE
• 8kB = 213 B => adres 13-b (A12 ÷ A0)
D0
P0
Q0
...
D7
Q7
74573
LE
OE
P2
PSEN
8051
D7
A0
...
A7
CODE
EPROM
2764
• CODE: 2764 – EPROM 8k x 8; stale aktywny, OE = PSEN.
A8
...
A12
OE
• XRAM: 6264 – RAM 8k x 8; stale aktywna (dwa WE CSx), !WE (Write
Enable) = sygnał zapisu, !OE (Output Enable) = sygnał odczytu.
CS
• Brak dekodowania adresu (oba układy stale aktywne), bo po jednym układzie
pamięci w każdej przestrzeni adresowej (kodu i XRAM) ⇒ brak konfliktów.
D0
...
EA
P3.6 (WR)
P3.7 (RD)
J. Sugier, TC 2
• !EA = 0 ⇒ tryb pracy z pominięciem wewnętrznej pamięci programu
D7
A0
...
A7
A8
XRAM
... RAM
A12 6264
• Ogólnie: separacja pamięci programu oraz danych ⇒ oddzielne sygnały
sterujące (!PSEN vs. !WR / !RD)
WE
OE
CS0 CS1
• Jeśli zewn. pamięć programu i danych ma być w jednym układzie RAM ⇒
sygnał sterujący = !PSEN * !RD
Vcc
3-15
3-16
J. Sugier, TC 2
J. Sugier, TC 2
6 CYKLE MASZYNOWE, OPERACJE SPRZĘTOWE
6.1 Cykle maszynowe
• Podstawowa jednostka cyklu rozkazowego w 8051: cykl maszynowy.
• Cykl maszynowy składa się z sekwencji 6 stanów S1..S6, każdy stan trwa
dwa okresy oscylatora (Phase1 i Phase2)
S1
OSC.
(XTAL2)
• Dla typowego oscylatora 12MHz cykl maszynowy trwa dokładnie 1µs
• Instrukcje podstawowe są wykonywane w jednym cyklu maszynowym (1µs),
¾ pozostałe w dwóch (np. także dostęp do pamięci XRAM...);
¾
¾
S4
READ OPCODE
wyjątkowo: rozkazy mnożenia i dzielenia trwają 4 cykle maszynowe;
nie ma rozkazów wykonywanych w 3 cyklach.
S5
S6
S1
S2
S3
S4
S5
S6
S1
S2
S3
S4
READ NEXT
OPCODE
(DISCARD)
S5
READ NEXT OPCODE AGAIN
S6
(A) 1-byte, 1-cycle instruction, e.g., INC A
READ OPCODE
READ 2ND
BYTE
• Zazwyczaj w każdym cyklu maszynowym następują dwa odczyty pamięci
programu (w stanach S1 i S4) ⇒ rozkazy 2B mogą być wykonane w 1 cyklu;
¾ w rozkazach 1B wartość drugiego odczytu jest ignorowana;
wszystkie rozkazy 3B są wykonywane w dwóch cyklach.
S3
ALE
• Rozkazy są kodowane na 1 ÷ 3 B
Zawsze pierwszy bajt = kod rozkazu (OPCODE), po nim ew. bajt(y) z
argumentami.
¾
S2
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
S1
S2
S3
S4
S5
READ NEXT OPCODE
S6
(B) 2-byte, 1-cycle instruction, e.g., ADD A, #data
3-17
3-18
3
J. Sugier, TC 2
6.1 Cykle maszynowe – c.d.
J. Sugier, TC 2
6.2 Operacje sprzętowe
(A) Odczyt zewnętrznej pamięci programu (MEMR CODE):
ALE
S1
OSC.
(XTAL2)
S2
S3
S4
S5
S6
S1
S2
S3
S4
S5
S6
S1
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
PSEN
PORT0
ALE
READ NEXT
OPCODE (DISCARD)
READ OPCODE
A0 ÷ A7
PORT2
READ NEXT
OPCODE AGAIN
INSTR. IN
A8 ÷ A15
A0 ÷ A7
A8 ÷ A15
(B) Odczyt zewnętrznej pamięci danych (MEMR XRAM):
S1
S2
S3
S4
S5
S6
S1
S2
S3
S4
S5
S6
ALE
(C) 1-byte, 2-cycle instruction, e.g., INC DPTR
READ
OPCODE
(MOVX)
S1
S2
NO
READ NEXT
OPCODE (DISCARD) FETCH
S3
S4
S5
S6
ADDR
(D) MOVX (1-byte, 2-cycle)
S1
NO READ NEXT
FETCH OPCODE
AGAIN
NO
ALE
S2
S3
S4
S5
PSEN
RD
S6
DATA
PORT 0
Ri or DPL
DATA IN
PCL
INSTR IN
ACCESS EXTERNAL MEMORY
3-19
6.2 Operacje sprzętowe – c.d.
(C) Zapis zewnętrznej pamięci danych (MEMW XRAM):
PORT 2
P2 or DPH
PCH
3-20
J. Sugier, TC 2
ALE
PSEN
WR
PORT 0
PORT 2
Ri or DPL
DATA OUT
P2 or DPH
PCL
INSTR IN
PCH
• Pamięć pracuje asynchronicznie (nie wg taktów CLK); na wykresach
pominięto OSC i stany S1÷S6.
• Nie ma operacji sprzętowych IOR / IOW, bo w 8051 nie ma sygnałów
sterujących dla zewnętrznych urządzeń WE / WY; jeśli takie dodatkowe
urządzenia są potrzebne, umieszcza się je w przestrzeni XRAM.
• W każdym cyklu maszynowym dwukrotnie uaktywniany jest sygnał ALE;
wyjątek: dostępu do XRAM (rozkazy MOVX), ALE uaktywniany jednokrotnie.
• MEMR CODE: Jeśli operacja dotyczy pamięci wewnętrznej, NIE są
ustawiane PSEN, PO i P2, natomiast wypr. ALE – JEST ustawiane.
3-21
4