Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, mőködési módjai Mikroprocesszoros Rendszerek Felépítése
Buszrendszer CPU OPERATÍV TÁR µ processzor RAM ROM BUS Illesztı egységek I/O Interface 1. I/O Interface 2. I/O Interface n. Klaviatúra Monitor Perif. Egység n. Periféria egységek: Klaviatúra, Monitor, Printer, Egér, Szkenner, stb. Mérı perifériák, Ipari folyamatirányító rendszerek perifériái,.stb.
CÍM BUS A0 A1 A2 A15 BUS BUS Pld: Operatív tár Írás ADAT BUS CONTROL BUS Tápfeszültség D0 D1 D7 MR MW I/O R I/O W ACK CPU H 1 L 0 Cím érvényes Address CPU 1 0 Adat érvényes Data CPU Slave 1 0 1 0 MW ACK t [ ns ]
CPU CPU H 1 L 0 1 0 Cím érvényes Adat érvényes Address Data CPU Slave 1 0 1 0 MW ACK t [ ns ] BUSZ CIKLUS BUSZ ciklusok: Operatív tár olvasás Memory Read MR Operatív tár írás Memory Write MW I/O olvasás Memory Read IOR I/O írás Memory Read IOW Handshake jelpár: MW-ACK IT vektor beolvasás DMA ciklusok
Bináris Decimális Hexadecimális 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 0 1 1 0 1 1 1 183 B7 2 3 2 2 2 1 2 0 1 0 1 1 2 3 2 2 2 1 2 0 0 1 1 1 B 7 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 255 1 2 3. 9 0 FF 1 2 3. 9 10 A 11 B 12 C 13 D 14 E 15 F
Operatív tár Gépi szó hossza A byte egész számú többszöröse. 8, 16, 32, 64, 128 bites gépi szó. (Arithmetika) Címezhetı legkisebb egység Külön címmel rendelkezı (külön elérhetı memória regiszter. Pld. byte Operatív tár mérete Memóriaregiszterek száma byte-ban. RAM Random Access Memory ROM Read-Only Memory Technológia MOS-FET Dinamikus memória 0000 : 0001 : 0002 : 0003 : FFFF : 00 B7 3F A1 00 Pld: 64 Kbyte
Mikroprocesszor belsı felépítése Központi vezérlı egység Arithmetikai egység CPU fı elemei: Vezérlı egység: utasítás számláló (PC, IP), utasítás regiszter (IR), akkumulátor (ACC), vezérlı jelek (órajel, IT, stb.) ALU: aritmetikai és logikai mőveletek, feltétel vizsgálat Regiszterek: általános célú, státusz, címzés: szegmens, index, stb. belsı busz, memória címregiszter, memória adatregiszter
+1-1 ACCU. TEMP. REG. TÖMB MPX IR UTASÍTÁS belsõ feltételek ALU SP PC + belsõ vezérlés DEKÓDER & VEZÉRLÕ CLOCK FLAG R. RESET ADAT CÍM VEZ. OUT. VEZ. IN. ADATBUSZ CÍMBUSZ VEZÉRLÕBUSZ BUSZ Meghajtó interface
A µ processzoros rendszer regiszter modellje (részlet) Regisztertömb : A : 00 04 F : B : 00 C : 00 D : 00 E : 00 H : 00 L : 00 PC : 0200 0201 0202 SP : Addr : 20 00 Regisztermodell: A: Akkumulátor, B,C,D,E,H általános célú regiszterek, PC: utasítás számláló regiszter (IR), SP: Stack pointer,.. Vezérlı/ Utasítás dekóder LDA /3A/ További 2db byte Fontos!! 0200 : 0201 : 0202 : 0203 : 0204 : 0205 : 0206 : 0207 : 0208 : 2000 : 3000 : 4000 : FFFF : RAM térkép: LDA /3A/ Addr L /00/ Addr H /20/ ADD /87/ Addr L /00/ Addr H /30/ STA /32/ Addr L /00/ Addr H /40/ 04 05 -- Az utasítás felhozatala után a PC a soronkövetkezı utasítás elsı byte-jára mutat. --
A gépi kódú program Assembly nyelvő program:.. LDA 2000; ADD 3000; Fordítási folyamat gépi kódú program STA 4000; (compiler, linker) Utasításkészlet Adatmozgató utasítások Arithmetikai / Logikai utasítások Vezérlésátadó utasítások (feltétel nélküli és feltételes ugrás) Szubrutinhívás I/O utasítások Különleges utasítások (IT vezérlése, NOP..)
1. Utasítás: Utasítás felhozatal: PC=0200 Buszciklus MR, addr: 0200, data: 3A Buszciklus MR, addr: 0201, data: 00 Buszciklus MR, addr: 0202, data: 20 Utasítás dekódolás [ A < (2000) ] Végrehajtás: Buszciklus MR, addr: 2000, data: 04 PC=0203, Akkumulátor: 04 2. Utasítás: Utasítás felhozatal: PC=0203 Buszciklus MR, addr: 0203, data: 87 Buszciklus MR, addr: 0204, data: 00 Buszciklus MR, addr: 0205, data: 30 Utasítás dekódolás [ A = A + (3000) ] Végrehajtás: Buszciklus MR, addr: 3000, data: 05 ALU A = A + 05 PC=0206, Akkumulátor: 09 3. Utasítás: Utasítás felhozatal: PC=0206 Buszciklus MR, addr: 0206, data: 32 Buszciklus MR, addr: 0207, data: 00 Buszciklus MR, addr: 0208, data: 40 Utasítás dekódolás [ A > (4000) ] Végrehajtás: Buszciklus MW, addr: 2000, data: 04 PC=0206, Akkumulátor: 09 0200 : LDA /3A/ 0201 : Addr L /00/ 0202 : Addr H /20/ 0203 : ADD /87/ 0204 : Addr L /00/ 0205 : Addr H /30/ 0206 : STA /32/ 0207 : 0208 : 2000 : 3000 : 4000 : FFFF : RAM térkép: Addr L /00/ Addr H /40/ 04 05 09 -- 1. utasítás 2. utasítás 3. utasítás
Az ugrás (feltétel nélküli ugrás) utasítás végrehajtása 025A : 0280 : 0281 : 0282 : - Program kezdete JMP 00 50 JUMP utasítás 1. Utasítás: Utasítás felhozatal: PC=0280 Buszciklus MR, addr: 0280, data: JUMP Buszciklus MR, addr: 0281, data: 00 Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás [ PC < 5000 ] Végrehajtás: PC=5000 0283 :. 5000 : LDA /3A/ - Addr L /00/ Addr H /20/ Program vége Nem tároltuk azt az információt, hogy honnan ugrottunk az új címre!! Feltételes ugró utasítás
A feltételes ugrás utasítás végrehajtása A FLAG (állapotjelzı) szerepe: 0 1 F : S Z - AC - P - CY 027F : 0280 : 0281 : 0282 : 0283 : CMPA JIZ 00 50. S: Elıjel Z: Zéró AC: Kiegészítı átviteljelzı Auxiliary Carry Flag P: Paritásjelzı CY: Átviteljelzı Carry Flag Az utasításkészlet leírása meghatározza, hogy mely utasítások melyik FLAG-eket állítják. 5000 : JIZ Utasítás: Utasítás felhozatal: PC=0280 Buszciklus MR, addr: 0280, data: JIZ Buszciklus MR, addr: 0281, data: 00 Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás Ha igaz akkor [ PC < 5000 ] Végrehajtás: Ha Z=1 PC=5000 Ha Z=0 PC=0283 NEM VÁLTOZIK!
A STACK Szükségessége az Elméleti Számítástudomány Stack kezelı utasítások: PUSH, POP eredményeibıl következik. A stack (verem) a memóriában helyezkedik el, mérete és helye (kezdıcíme) a programból meghatározható. 9000 : - A stack kezdıcímét a 9001: F7 programban értékadó SP : 9003 9002 : D3 utasítással állítjuk be. 9003 : 9004 : - - B : D3 C : F7 Példa: PUSH BC Végrehajtás elıtt: SP=9003, B=D3, C=F7 SP=SP-1, B regiszter tartalmának beírása az op. tárba SP=SP-2, C regiszter tartalmának beírása az op. tárba Végrehajtás után: SP=9001, B=D3, C=F7, (9002)=D3, (9001)=F7
A Szubrutinhívó utasítás végrehajtása (CALL, RET utasítás pár) 025A : - Program Paraméterátadás: pld: y=f(x) ->hol található x Címkidolgozás: hol kezdıdik az alprogram Visszatérési lehetıség biztosítása >STACK kezdete 0280 : 0281 : 0282 : 0283 : CALL 00 50. CALL 5000 CALL Utasítás: Utasítás felhozatal: PC=0280 Buszciklus MR, addr: 0280, data: CALL Buszciklus MR, addr: 0281, data: 00 Buszciklus MR, addr: 0282, data: 50 PC=0283 Utasítás dekódolás Végrehajtás: PC -> Stack (Push jellegő mővelet) PC=5000 5000 : 503D : 503E : Szubrutin kezdete RET Program vége Szubrutin RET Utasítás: Utasítás felhozatal: PC=503D Buszciklus MR, addr: 503D, data: RET PC=503E Utasítás dekódolás Végrehajtás: PC <- Stack (Pop jellegő mővelet), PC=0283
ZH!!! Egy fıprogramhoz több szubrutin is tartozhat. Egy szubrutinon belül meghívhatunk egy másik szubrutint? Ebben az esetben STACK tartalma hogyan alakul? Elvileg végtelen számú szubrutin ágyazódhat egymásba?
Az Interrupt (A Program megszakítása)_1 µ processzor OPERATÍV TÁR IT ok: A Folyamatban rendkívüli esemény történt, azonnal reagálni kell, el kell zárni a gázcsapot. IRQ1 IT ok1 I/O Interface 1. Érzékelık: Beavatkozók: Túlnyomas érzékelı Mágnesszelep.... IPARI FOLYAMAT IRQ1: Interrupt request, (Megszakítás igény) jelentkezése. A BUS egyik Control vezetéke. IT Rutin1: Interrupt lekezelı rutin, amelynek haladéktalanul le kell futnia, az I/O interfacen lévı regiszter megfelelı bitjét 0-ra állítva (az OUT-put rendszer szervói segítségével) el kell zárnia a mágnes szelepet, majd vissza kell térni a fıprogramba, oda ahol a megszakítás elıtt a programvégrehajtás tartott.
Az Interrupt (A Program megszakítása)_2 Szükségessége Címkidolgozás: hol kezdıdik az IT kezelı alprogram Vezérlés: visszatérési lehetıség biztosítása >STACK Egymásba ágyazódó IT-k IT Prioritás rendszer kialakítása Az IT jelentkezése: Elıre nem tervezhetı idıpontban. ( A program futásához asszinkron.) Végrehajtás lépései: Az éppen végrehajtás alatt álló utasítást befejezni. A PC ekkor a soron következı utasításra mutat. Ezt az értéket (op.tár címet elmenteni a STACK-be. Címkidolgozás: Vezérlés: Visszatérés a fıprogramba. 025A : 0280 : 0281 : 0282 : 0283 : 5000 : 503D : 503E : - Fıprogram kezdete LDA /3A/ Addr L /00/ Addr H /20/ Fıprogram. vége IT Rutin1 kezdete RETURN IT Fıprogram IT Rutin1
Az Interrupt (A Program megszakítása)_3 (címkidolgozás, vezérlés) 0000 : IT UGRÁSI Programból állítható PC=5000 IT rutin1 kezdıcíme TÁBLA IT regiszter 00 IT vektor 42 Program PC Az IT ekkor jelentkezik, VEKTOR PC->STACK I/O Interface 1. IT Rutin1 kezdete IT Rutin1 PC<-STACK RETURN IT