Systemy wbudowane Wykład nr 5: Bloki funkcjonalne mikrokontrolerów Piotr Bilski Budowa typowego mikrokontrolera zegar Sekwenser Układ sterowania Potok instrukcji i dekoder Układ sterowania szynami dane Układ wykonawczy Szyna sterowania adresy sygnały wyjściowe Linie sygnałowe mikrokontrolera • • • • • • • Linie adresowe Linie danych Wejścia przerwań.
Download ReportTranscript Systemy wbudowane Wykład nr 5: Bloki funkcjonalne mikrokontrolerów Piotr Bilski Budowa typowego mikrokontrolera zegar Sekwenser Układ sterowania Potok instrukcji i dekoder Układ sterowania szynami dane Układ wykonawczy Szyna sterowania adresy sygnały wyjściowe Linie sygnałowe mikrokontrolera • • • • • • • Linie adresowe Linie danych Wejścia przerwań.
Slide 1
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 2
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 3
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 4
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 5
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 6
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 7
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 8
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 9
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 10
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 11
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 12
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 13
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 14
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 15
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 16
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 17
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 18
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 19
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 20
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 21
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 22
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 23
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 24
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 25
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 26
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 27
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 28
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 29
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 30
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 31
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 32
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 33
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 2
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 3
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 4
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 5
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 6
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 7
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 8
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 9
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 10
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 11
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 12
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 13
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 14
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 15
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 16
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 17
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 18
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 19
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 20
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 21
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 22
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 23
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 24
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 25
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 26
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 27
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 28
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 29
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 30
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 31
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 32
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)
Slide 33
Systemy wbudowane
Wykład nr 5:
Bloki funkcjonalne mikrokontrolerów
Piotr Bilski
Budowa typowego mikrokontrolera
zegar
Sekwenser
Układ sterowania
Potok instrukcji i dekoder
Układ sterowania
szynami
dane
Układ wykonawczy
Szyna
sterowania
adresy
sygnały
wyjściowe
Linie sygnałowe mikrokontrolera
•
•
•
•
•
•
•
Linie adresowe
Linie danych
Wejścia przerwań IRQ
Wejścia dla przetwornika A/C
Linie portów równoległych
Linie transmisji szeregowej
Porty liczników
Jednostka centralna
•
•
•
•
•
Jednostka arytmetyczno-logiczna
Banki rejestrów
Potoki instrukcji
Formaty instrukcji
Lista instrukcji
Zestaw rejestrów
16 bitów
16 bitów
Akumulator A
Rejestr mnożnej
Akumulator B
Rejestr mnożnika
Akumulator E
Rejestr indeksowy X
Rejestr indeksowy Y
Rejestr indeksowy Z
Wskaźnik stosu
Akumulator układu mnożącego
Akumulator układu mnożącego (c.d.)
X MASK
EK
XK
Y MASK
YK
ZK
SK
Licznik programu
Słowo stanu (CCR)
Słowo wskaźników (CCR) –
68HC16
Bit obsługi nadmiaru
S
MH
H
EV
N
Rejestr stanu
Z
V
C
IP (3b)
Priorytet
przerwań
C
PK (4b)
Rozszerzenie licznika
programu
• Przerwania mają 8 poziomów priorytetów
• S – zatrzymanie zegara / operacja NOP
• MV, EV – sygnalizacja nadmiaru w układzie
mnożącym
• H – przeniesienie połówkowe
Potok instrukcji
• Mikrosekwenser steruje kolejnością
pobierania instrukcji
• Obecność pobierania instrukcji z
wyprzedzeniem (pre-fetch)
Mikrosekwenser
Potok instrukcji
Szyna danych
A
B
Układ wykonawczy
C
Formaty instrukcji
• 8-bitowy kod rozkazu, 8-bitowy argument
• 8-bitowy kod rozkazu, 4-bitowe
rozszerzenia adresów
• 8-bitowy kod rozkazu, operand
• 8-bitowy prefiks, 8-bitowy kod rozkazu
• 8-bitowy prefiks, 8-bitowy kod rozkazu,
argumenty
Lista instrukcji
•
•
•
•
•
•
•
•
•
•
Instrukcje przesłań
Instrukcje arytmetyczne
Instrukcje logiczne
Instrukcje operacji na bitach
Instrukcje sterujące
Instrukcje obsługi indeksów
Instrukcje operacji na stosie
Instrukcje manipulacji na CCR
Instrukcje DSP
Instrukcje specjalne
Instrukcje przesłań
• Służą do transmisji zawartości między
rejestrami, pamięcią i urządzeniami
wejścia-wyjścia
• Grupy:
– Ładowania (LDAA, LDAB, LDBA)
– Przesuwania (MOVB, MOVW)
– Zapamietywania (STAA, STD, STED)
– Transferu między rejestrami (TAB, TDE, TED)
– Wymiany zawartości rejestrów (XGAB,
XGDE)
Instrukcje arytmetyczne
• Służą do wykonywania operacji na liczbach
całkowitych i rzeczywistych
• Grupy:
– Dodawania (ABA, ADDA)
– Odejmowania (SBA, SDE, SUBA)
– Porównania (CBA, CPD)
– Testowania (TST, TSTA)
– Dzielenia (EDIV, EDIVS, FDIV)
– Mnożenia (EMUL, FMULS)
– Inkrementacji i dekrementacji (DEC, INC)
– Zerowania (CLR, CLRW)
– Uzupełnienia (COM, NEG)
Instrukcje logiczne i operacji na
bitach
• Służą do wykonywania operacji logicznych
• Przykłady: ANDA, ANDD, ORAA, EORA
• Operacje mogą być dokonywane na
każdym bicie osobno
• Używana jest maska, zawężająca efekt
działania operacji
• Przykłady: BITA, BITB, BCLR, BSET
Instrukcje przesunięć bitowych
• Przesunięcia logiczne, arytmetyczne i
cykliczne (rotacje)
• Przykłady: LSR, ASR, ROR, ASLD, RORD
0
b7
b0
C
b7
b0
C
0
C
C
C
Instrukcje sterujące
• Wpływają na kolejność wykonywania
instrukcji programu
• Instrukcje skoków i przerwań
• Skoki mogą być krótkie lub długie,
bezwarunkowe lub warunkowe
• Skoki krótkie:
– względny tryb adresowania z PC (i
rozszerzenia PK), 8-bitowy argument
• Przykłady skoków krótkich: BRA, BRN,
BHI, BGT, BCS, BMI
Instrukcje sterujące (c.d.)
• Skoki długie – argument 16-bitowy,
dodawany do PC (i rozszerzenia PK)
• Większy zakres pamięci w zasięgu skoku
• Przykłady: LBLE rel
JMP adres
BRCLR M, #maska, rel
• Wywoływania podprogramów (przed
skokiem zapamiętanie adresu na stosie)
• Przykłady: RTI (przerwania sprzętowe),
SWI (przerwania programowe), JSR, BSR
Instrukcje obsługi indeksów
• Operują na zawartości rejestrów
indeksowych
• Operacje: dodawanie , porównywanie,
ładowanie, wymianę zawartości rejestrów
indeksowych
• Przykłady: ADX, AIX, LDX, STX, TXY,
XGDX
Instrukcje operacji na stosie
• Manipulacja szczytem stosu zawartym w
rejestrach SK:SP, transfer danych do i ze
stosu
• Przykłady: AIS, PSHA, PSHB, PULA,
PULB
• Możliwe operacje wysyłania zawartości
wielu rejestrów naraz na stos: PSHM,
PULM. Potrzebna jest maska do
określania, które rejestry kopiować:
CCR K
D
E
IZ
IY
IX
E
D
IX
IY
IZ
K CCR
PSHM
PULM
Instrukcje manipulacji na CCR i
specjalne
• Służą do ustawiania i zerowania
poszczególnych bitów oraz przesyłać
zawartość akumulatorów
• Przykłady: ANDP, ORP, TAP, TDP itp.
• Możliwe również przesyłanie zawartości CCR
do innych rejestrów
• Instrukcje specjalne służą do zatrzymania
procesora (LPSTOP), oczekiwania an
przerwanie (WAI), uruchomienia debugera
(BGND) oraz wykonania pustego cyklu (NOP)
Instrukcje DSP
• Zestaw operacji wykorzystywanych
podczas przetwarzania sygnałów (filtracja,
obliczanie transformaty Fouriera)
• Wykorzystywane są rejestry HR i IR,
wyniki przechowywane są w akumulatorze
• Powtarzanie operacji w pętli umożliwia
realizację podstawowych działań
Pamięci
• Metody alokacji pamięci:
– Alokacja stała (obszary adresowe określone
przez producenta)
– Zmienne przypisania obszarów adresowych
(obszary ustalane przez programistę)
• Klasyfikacja:
– RAM
– ROM/OTP/EPROM
– EEPROM/Flash
Architektury mikrokontrolerów
• Rejestrowa (rejestry są częścią pamięci
RAM, jednolicie adresowanej)
– Plik rejestrów roboczych
– Obszar rejestrów specjalnych
– Pamięć podręczna
• Akumulatorowa (rejestry są wydzielone z
pamięci RAM)
Mapa rejestrów wewnętrznych
(68HC916Y3)
QSM
512 B
ADC 64 B
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH
Sterowanie
FLASH TPU
GPT 64B
SCIM 128B
Sterowanie
SRAM
MCCI 64B
TPU 512B
FLASH 16kB
FLASH 48 kB
FLASH 32 kB
FLASH TPU
4kB
SRAM 2kB
Mapa pamięci (68HC916Y3) –
wspólna przestrzeń programu i
danych
000000
Sekcja 0
Sekcja 8
QSM
Sekcja 1
Sekcja 9
ADC
Sekcja 2
Sekcja 10
Ster. FLASH
Sekcja 3
Sekcja 11
GPT
Sekcja 4
Sekcja 12
SCIM
Sekcja 5
Sekcja 13
Ster. SRAM
Sekcja 6
Sekcja 14
MCCI
Sekcja 7
Sekcja 15
TPU
FFFFFF
• Wspólna przestrzeń pamięci programu i danych
• Rozmiar: 1 MB
• 16 sekcji
Pamięć SRAM
• Szybka pamięć, wykonana np. w
technologii CHMOS
• Możliwość przejście w stan oczekiwania
(podczas zasilania bateryjnego) –
zasilanie napięciem Vstby
• Służy do realizacji stosu i przechowywania
zmiennych
Technologia CHMOS
• Complementary High-Performance MetalOxide Semiconductor
• Układy zdolne są do pracy przy niskim
napięciu zasilającym z zachowaniem
efektywności pracy
• Wykorzystywana w mikrokontrolerach oraz
kontrolerach dysków, interfejsach
peryferyjnych itp.
• Aktualna technologia: CHMOS III
(litografia 1.5 mikrona)
Obsługa pamięci SRAM
• Rejestr RAMMC służy do ustawienia trybu
pamięci (rozkazy i dane/rozkazy) i
zarządza pracą przy zmniejszonym
poborze mocy
• Rejestr RAMTST służy do testowania
pamięci
• Rejestry RAMBAH i RAMBAL
przechowują adresy bazowe (ustawiane
tylko przy zmniejszonym poziomie mocy!)
Mapa pamięci (68HC916Y3) –
rozdzielone przestrzenie
programu i danych
000000
Sekcja 1
Obsługa
wyjątków
po RESET
000000
Sekcja 1
Sekcja 2
Wektor
adresów
obsługi
przerwań
Sekcja 2
512 kB
512 kB
Nie używane
Nie używane
512 kB
512 kB
FFFFFF
Sekcja 14
Sekcja 14
Sekcja 15
Blok rejestrów
FFFFFF
Pamięci ROM, OTP i EPROM
• Wielkość rzędu kilkuset kB (np. 8, 32, 64 kB)
• Bloki pamięci mogą być maskowalne (MRM)
• Programowanie:
– W specjalnych urządzeniach (programatorach)
– W układzie (in-circut programming),
mikrokontroler musi mieć wbudowany
odpowiedni układ
– Wymagane dodatkowe napięcie 12V (z zewnątrz
lub z wbudowanej przetwornicy)
Programowanie pamięci ROM
• Konieczne dodatkowe wejścia do układu
(np. EA)
• Tryby programowania:
– Automatyczny (wyjścia PACT i PVAL) – do
programowania pojedynczych kości
– Seryjny typu Slave (konfiguracja wejść
PMODE i HSI) – do projektowania seryjnego
– Seryjny typu Word Dump
• Porty (np. P3 i P4) wykorzystywane są do
podawania danych, adresów i instrukcji
programujących
Pamięci EEPROM i Flash
• Pojemność rzędu setek kB
• Wykorzystywane w kilku blokach
• Do programowania wymagane
podwyższone napięcie (11.5-13.5V)
• Tryby pracy:
– Normalny (odczyt)
– Zapisu
• Pracą pamięci steruje rejestr FCR
Licznik nadzorcy
• Dodatkowy układ w mikrokontrolerach
pracujących autonomicznie
• Odlicza czas i oczekuje sygnałów
zerujących
• Brak sygnałów zerujących powoduje reset
mikrokontrolera
• Po resecie przeprowadzana jest
diagnostyka (wykrywanie przyczyny
zawieszenia)
Schemat licznika nadzorcy
IRQ
Blok
sterowania
przerwaniami
Układ wyboru
okresu zegara
WDTOVF
Sterowanie
sygnałem
RESET
Wewn.
RESET
RSTCSR
TCNT
Interfejs szyny
Wewnętrzna szyna danych
TCSR
Szyna modułu
Rejestry licznika nadzorcy
• TCSR – rejestr kontrolny i stanu bloku
• TCNT – 8-bitowy licznik nadzorcy
• RSTCSR – rejestr stanu i kontrolny układu
generowania sygnału reset
• Licznik nadzorcy zaczyna pracę po
ustawieniu linii WT w stan wysoki
(watchdog)