IMTEE
Přednáška č. 2
Činnost CPU • Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus Æ fáze Æ strojový cyklus Æ instrukční cyklus Hodinový cyklus
•
CPU je synchronní obvod – nutné hodiny (fCLK)
Instrukční cyklus
• = doba potřebná pro vykonání jedné instrukce • Nejnižší úroveň přístupná programátorovi Strojové cykly: • IF = instruction fetch, čtení instrukce • ID = instruction decode, dekódování instrukce • OF = operand fetch, čtení operandů • IE = instruction execution = vykonání instrukce • WB = result store, zápis výsledku IF
•
AB = adress bus, DB = data bus
• •
V PC je adresa následující instrukce CPU vystaví na AB její adresu, I je přes DB: M –> IR
• •
Řadič dekóduje I a generuje řídící signály pro ALU a další interní obvody CPU Obsah PC na AB, ALU: PC = PC+k (k dle instrukce nebo skoku)
ID
1
IMTEE
Přednáška č. 2
OF
•
IR zapíše adr. op. na AB, M vystaví op na DB
•
ALU vykoná operaci dle instrukce v IR, op nebo cíl = Acc
IE
WB
Ne vždy se vykonává
•
IR vystaví na AB adresu, kam se uloží výsledek, Acc ho vystaví na DB, a ta pak do M
Běh CPU
• • •
CPU postupně opakuje instrukční cykly Nepřekrývané zpracování o IC (PC = PC+k) Æ IC (PC = PC+k) Æ IC (PC = PC+k) Æ IC (PC = PC+k)… Překrývané zpracování (pipelining) o = proudové zpracování instrukcí
2
IMTEE
Přednáška č. 2
o Zkracuje dobu zpracování 1 instrukce Æ zvýšení výkonu CPU Reset CPU
• • •
= uvedení CPU do výchozího stavu Při startu CPU (náběh hodin, napájení – prevence proti nedefinovaným stavům CPU), nebo uživatelsky (špatný program, vnější vlivy – rušení) Všechny registry do výchozího stavu (0), PC na výchozí adresu (obvykle 0)
Mikrokontrolér (uC) • • •
• •
(jednočipový uPočítač) = součástka, u které jsou na jednom čipu integrovány následující komponenty: CPU, volitelně RAM a ROM, I/O interface , periférie (časovače, sér. kanál, A/D apod.) Æ uC se pak schopen samostatné funkce (jen s několika málo komponenty navíc) Využití v embedded systems Existuje obrovské množství uC – 4,8 (těch je většina),16 i 32b
Nejznámější 8b uC (v ČR):
• • • • •
Intel 8051 a jeho klony (Atmel, Philips, Dallas, AD, …) Microchip řada PIC Motorola 68HC Zilog Z80 Atmel řada AVR.
Mikroprocesory řady 8051 Historie
• • •
Od fy Intel vylepšením I8049 První I8051 – 1980 Dnešek Æ klony o = na úrovni instrukcí kompatibilní s 8051 (jádro), avšak jiné vnitřní principy, paměti a periferie
3
IMTEE
Přednáška č. 2
o Příklad viz. „KlonyAtmel.xls“
Jádro 8051 •
Harvardská architektura
• • • • •
Paměť programu – původní I8051 4kB ROM nebo OTP, nebo nic Vnitřní paměť dat 128B Řadič přerušení – 5 zdrojů Styk s okolím – 8b brány P0 až P3 vyvedena sběrnice (na P0, P2) – 16b adresová, 8b datová
4
IMTEE
Přednáška č. 2
ALU •
ALU – pracuje pouze s celým kladnými čísly o délce 1B.
•
Zobrazitelný rozsah pro 8 bitů – 0 až 255. Má omezenou podporu pro práci se zápornými čísly (2D).
Organizace paměti Paměť programu
•
adresovatelných 64 kB (0 – 0FFFFh) – 16b adresa!!!
• •
vnitřní (volitelně) – EA = 1 (do 0FFFh, pak vnější) Vnější – EA = 0, připojena na sběrnici uC
Paměť dat („RAM“)
• •
Vnitřní (na čipu) – 128 B (některé typy 256 B – rozšířená paměť) Vnější (možno připojit na sběrnici) – do 64kB
• •
Do obou přístup pomocí různých instrukcí (nehrozí tedy kolize) V oblasti 80h až 0FFh je oblast SFR (special function register) = registry pro zjištění či nastavení činnosti uP
5
IMTEE
• •
Přednáška č. 2
0 až 1Fh – 4 banky (0–3) 8 registrů R0 až R7 (lze je přepínat softwarově v PSW), po resetu je aktivní banka 0 2Fh až 7Fh – zbývající, volně přístupná RAM, z toho: o 20h – 2Fh – bitově adresovatelná oblast (= 128b, lze přistupovat k jednotlivým bitům) – lze samozřejmě i bytové adresování
SFR
• •
A – Akumulátor o Základní registr ALU – všechny operace ALU mají jako jeden operand A B – Akumulátor
6
IMTEE
•
Přednáška č. 2
o Vstup do ALU pro násobení a dělení, je v něm také část výsledku PSW – stavové slovo procesoru
Pozn: CY = C Všechny bity kromě b1 lze číst i nastavovat • C – přenos o Měněn automaticky procesorem při aritmetických operacích o C = 1 –> pokud dojde k přenosu mezi b7 a b8 – přetečení ALU (výsledek > 0FFh) • AC – pomocný přenos o Při operacích v kódu BCD o AC = 1 –> pokud dojde k přenosu mezi b3 a b4 – přetečení v BCD • OV – přetečení při práci se znaménkem o OV = 1 –> přenos mezi b6 a b7 <> přenos mezi b7 a b8, také při dělení a násobení • P – paritní bit o P = 1 – lichá parita A (v A je číslo s lichým počet bitů v log1)
Časování CPU •
Instrukční cyklus = o 6 stavů S1 až S6
7
IMTEE
Přednáška č. 2 o Sx = 2 fáze o Celkem tedy IC = 1/12*TCLK o Př.: fCLK = 12MHz Æ IC = 1 µs
Kromě toho ještě MUL a DIV trvají 4 IC
Módy adresování •
Direct o lze pouze do vnitřní RAM pomocí 8b adresy o platí i pro registry – jsou mapovány do RAM!!! o Př: mov A,20h (A Å 20h)
8
IMTEE
Přednáška č. 2 mov
•
•
•
A,R0
(A Å R0, což je adr 0h)
Indirect o Lze přistupovat do interní a externí RAM, a dokonce i do ROM o 8b – přes R0, R1 – v assembleru @Rx (x = 0,1), u externí RAM přitup pouze do dolních 256 B o 16b – externí RAM, ROM (pomocí 16b registru DPTR podrobněji později) o Př: mov A,@R0 (A Å (R0)) Immediate o jako jeden z operandů instrukce uvedena 8b konstanta o Př: mov A,#10 (A Å 10) Relative o Pouze při přístupu do ROM (skoky, volání podprogramů) – podrobněji později
9