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