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 Report

Transcript 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)