Č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 (f CLK ) Instrukční cyklus IF = 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 AB = adress bus, DB = data bus ID 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) 1
OF IE IR zapíše adr. op. na AB, M vystaví op na DB WB ALU vykoná operaci dle instrukce v IR, op nebo cíl = Acc 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
Reset CPU o Zkracuje dobu zpracování 1 instrukce zvýšení výkonu 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
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
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
SFR 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í A Akumulátor o Základní registr ALU všechny operace ALU mají jako jeden operand A B Akumulátor 6
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ě b 1 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 b 6 a b 7 <> přenos mezi b 7 a b 8, 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
o Sx = 2 fáze o Celkem tedy IC = 1/12*T CLK o Př.: f CLK = 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
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