ORGANIZACIJA PREKIDNOG SISTEMA ZA MIKROPROCESOR M6800 Mikroprocesor M6800 ima tri prekidna ulaza: Reset (RES), Non-Maskable Interrupt (NMI - nemaskirajući prekid) i Interrupt Request (IRQ). Prekidni sled može započeti upotrebom odgovarajućih upravljačkih signala na ta tri prekidna ulaza, ili upotrebom instrukcije SWI (softverski, programski prekid). Rezultirajući prekidni sled različit je za svaki od gornjih slučajeva. Sklopovski (hardverski) zahtev za prekidom (IRQ) obično generišu međusklopovi U/I (PIA, ACIA), i sklopovi koje projektuju korisnici. Postavljanjem linije IRQ u logičku 0 zahtev se aktivira. Sl.58 prikazuje prekidni sled pri aktiviranju linije IRQ. Sl.58 - Prekidni sled za prekid IRQ Nakon pojave IRQ=0 i ispitivanja prekidne maske u registru uslova, sledi skladištenje programibilnih registara (PC, IX, ACCA, ACCB, CCR) u memoriju određenu sadržajem pokazivača steka SP. Postupak skladištenja traje sedam memorijskih ciklusa. Po dva su ciklusa potrebna za skladištenje sadržaja programskog brojila i indeksnog registra, a po jedan za akumulator A, akumulator B, te registar uslova CCR. Sadržaj pokazivača steka umanjiće se za sedam i pokazivati sledeću praznu memorijsku lokaciju. Adresa prekidnog programa pribavlja se sa memorijskih lokacija FFF8 i FFF9. Postavljanje prekidne maske važna je operacija u organizaciji prekidnog sistema. Postavljanjem maske definisan je postupak rukovanja u slučaju pojave više zahtava za prekid. Ukoliko se želi omogućiti gnežđenje prekidnih programa, mora se obrisati prekidna maska instrukcijom CLI na početku prekidnog programa. Međutim, ako se ne želi gnežđenje prekida, prekidna maska se ne briše. 45
Maska se automatski briše tek izvođenjem instrukcije RTI (Return from Interrupt - povratak iz prekidnog programa). Izvođenjem instrukcije RTI, iz steka se vraćaju sva skladištena stanja radnih registara, te sadržaj programskog brojila i registra uslova (Sl.59). Budući da je pre prekida prekidna maska bila obrisana (inače ne bi ni došlo do prekida), nakon izvođenja instrukcije RTI, odnosno vraćanja u prekinuti tekući program, ponovno je omogućen prekid. Sl.59 - Izvođenje instrukcije RTI: a) pre izvođenja instrukcije RTI, b) nakon izvođenja instrukcije RTI Na Sl.58 prikazana je situacija u kojoj nakon postavljanja prekidne maske sledi grananje na prvu instrukciju u prekidnom programu. To se postiže punjenjem programskog brojila sadržajem memorijskih lokacija FFF8 i FFF9. Mikroprocesor pribavlja prvu instrukciju iz lokacije koja je određena novim sadržajem programskog brojila. Sadržaj u memorijskim lokacijama FFF8 i FFF9 naziva se vektorom. Mikroprocesor šalje na adresnu sabirnicu adresu FFF8 i postavlja liniju R/W u 1 te se sa izabrane lokacije pribavlja značajniji bajt nove vrednosti programskog brojila (PC8-15). Nakon toga sledi adresa FFF9 i pribavljanje drugog bajta nove vrednosti programskog brojila (PC0-7). Na taj se način pribavlja vektor. Nemaskirajući prekid NMI Sa zadnjim bridom (prelazom logičke 0 u 1) signala na ulazu NMI inicira se u mikroprocesoru prekidni sled. Kako sam naziv kaže, taj se prekid ne može maskirati. Prekidna maska u registru uslova CCR ne utiče na nemaskirajući prekid. Na ovu prekidnu liniju obično se priključuju spoljni logički sklopovi sa najvišim prioritetima u pogledu zahteva za posluživanje. Izuzev činjenice da taj tip prekida ne može biti maskiran, prekidni sled je u potpunosti jednak sledu izvođenja IRQ prekida. Nakon završetka izvođenja tekuće instrukcije mikroprocesor skladišti stanja, postavlja masku i pribavlja vektor sa memorijskih lokacija FFFC i FFFD (Sl.60). 46
Sl.60 - Prekidni sled za prekid NMI Nemaskirajući prekid upotrebljava se i za sisteme gde se stanje tekućeg programa moraju sačuvati prilikom ispada napajanja (stanja se skladište u memoriju sa baterijskim napajanjem). Reset (RES) Kada je RESET=0, mikroprocesor postavlja masku prekida i sa memorijskih lokacija FFFE i FFFF pribavlja vektor (adresu prve instrukcije u prekidnom programu), (Sl.61). Taj prekid koristi se za startanje mikroprocesora nakon uspostavljanja napona napajanja. Budući da se upotrebljava za start mikroprocesora (start-up mode), nije potrebno skladištenje stanja u stek. Sl.61 - Prekidni sled za prekid RES 47
Programski (softverski) prekid SWI Mikroprocesor M6800 poseduje takođe softverski prekid. Izvođenje softverskog prekida (SWI - instrukcija) inicira sled prikazan na Sl.10.14. Vektor se pri softverskom prekidu pribavlja iz memorijskih lokacija FFFA i FFFB. Sl.62 - Sled izvođenja prekida SWI Softverski prekid se upotrebljava kao ispitna tačka (break-point) pri otkrivanju i otklanjanju grešaka u programu. - U slučaju istovremenih zahteva za prekid, prioritet prekida je sledeći: 1.) RESET, 2.) NMI, 3.) SWI, 4.) IRQ. Prioritet prekida Vektor pribavljen sa memorijskih lokacija koje su specifične za pojedinu vrstu prekida, određuje početnu adresu prekidnog programa. Ako je na svaku prekidnu liniju (IRQ, NMI) priključen jedan spoljni logički sklop, izvor prekida je poznat i određeno je grananje na odnosni prekidni program. Problem prioriteta prekida javlja se pojavom više istovremenih zahteva za prekid na istoj prekidnoj liniji. Metodom prozivanja prioritet se određuje redosledom ispitivanja stanja spoljnih logičkih sklopova ili U/I međusklopova; Sl.63 prikazuje postupak ispitivanja za tri U/I međusklopa. Postoje modifikacije metode prozivanja kod kojih se najpre prikupljaju sva stanja, a zatim se određuje redosled posluživanja u zavisnosti od vremena proteklog od poslednjeg posluživanja spoljnjeg logičkog sklopa. 48
Sl.63 - Postupak ispitivanja stanja tri U/I međusklopa, potencijalna izvora zahteva za prekid U primeru priključenja više spoljnjih logičkih sklopova na istu prekidnu liniju, metoda prozivanja može biti prespora za utvrđivanje izvora prekida i njegovog posluživanja. U tom slučaju primenjuje se hardverska organizacija pririteta prekida, koja pospešuje mehanizam utvrđivanja uzroka prekida. Sl.64 (lančanim saobraćanjem (daisy chaining) i Sl.65 (višenivovski prekidi) prikazuju primer takve hardverske organizacije. Sl.64 - Određivanje prioriteta lančanim saobraćanjem (daisy chaining) 49
Asinhroni karakter prekida dozvoljava simultanu pojavu više zahteva za prekidom. Da bi se razrešio problem simultanih zahteva, a kako se usluga ne može dati svim zahtevima istovremeno, uvode se strukture prekida sa prioritetima. Konkurentne situacije se lako prevazilaze dodelom svakom uređaju jedinstvenog nivoa pririteta. Najopštiji način realizacije ove strukture podrazumeva selektivno omogućavanje prekida određenog nivoa pririteta na početku izvršavanja svake rutine za obradu prekida. Često dovoljan je i način koji koristi prag jednak tekućem aktivnom nivou prekida i zabranjuje prekide čiji nivo prioriteta ima vrednost manju od vrednosti praga. Ovakva struktura se susreće kod jedinice za upravljanje prekidima sa prioritetima za Intel 8080 koja se realizuje posebnim sklopom (Sl.64). Interesantan način za realizaciju strukture vektorskih prekida sa prioritetima je kodiranje prioriteta i korištenje koda pririteta umesto određenog broja adresnih linija adresne sabirnice. Jedan primer ovakve strukture prikazan je na Sl.65. Struktura obezbeđuje osam nivoa prioriteta prekida. Ako bi se, na primer, ova struktura prioriteta prekida primenila na Motorolu 6800, najpogodnije bi bilo da se vektori prekida smesta na lokacijama od (FFF9, FFF8) do (FFFB, FFFA) kako je to prikazano na Sl.3.66. Odgovarajuća tabela istine za koder prioriteta sa Sl.3.65 data je na Sl.3.67. Sl.65- Struktura prekida sa osam nivoa prioriteta Sl.66 - Vektori prekida za višenivovsku strukturu prekida sa osam nivoa prioriteta Motorole 6800 50
Nivoi prioriteta U l a z i 0 1 2 3 4 5 6 7 I z l a z i A 4 A 3 A 2 A 1 IRQ Lokacija vektora 1 (najvi{i) 1 x x x x x x x 1 1 0 0 1 FFF9 FFF8 2 0 1 x x x x x x 1 0 1 1 1 FFF7 FFF6 3 0 0 1 x x x x x 1 0 1 0 1 FFF5 FFF4 4 0 0 0 1 x x x x 1 0 0 1 1 FFF3 FFF2 5 0 0 0 0 1 x x x 1 0 0 0 1 FFF1 FFF0 6 0 0 0 0 0 1 x x 0 1 1 1 1 FFEF FFEE 7 0 0 0 0 0 0 1 x 0 1 1 0 1 FFED FFEC 8 0 0 0 0 0 0 0 1 0 0 1 0 1 FFEB FFEA 9 0 0 0 0 0 0 0 0 0 0 0 0 0 Sl.67 - Tabela istine kodera prioriteta DIREKTNI PRISTUP MEMORIJI UVOD Prekidnom U/I prenosu, u zavisnosti od broja spoljnih logičkih sklopova priključenih na istu prekidnu liniju i od izabrane metode za otkrivanje uzročnika prekida, potrebno je vreme za posluživanje prekida, odnosno vreme za prenos jednog elementa iz bloka podataka. Međutim u slučaju postojanja čestih zahteva za U/I prenosom od strane spoljnih logičkih sklopova, te postojanje zahteva za prenos većih blokova podataka, može se očekivati otežano i vrlo usporeno izvođenje glavnog (prekinutog) programa. Rešenje tog problema je u povećanju brzine U/I prenosa podataka i oslobađanju mikroprocesora od tereta U/I prenosa. Pomoću direktnog pristupa memoriji ostvaruje se brz prenos podataka između memorije i spoljnih logičkih sklpova, a da ne sudeluje mikroprocesor i da se ne menja sadržaj njegovih registara. Budući da se taj prenos vrši bez programskog upravljanja, granice brzine postavljene su sa sklopovskim karakteristikama komponenti mikroračunara. Primeri upotrebe metode direktnog pristupa memoriji su pri prenosu podataka između memorije mikroračunara i jedinice diskete, između brzih A/D pretvarača i memorije; između memorije i prikazne jedinice. ORGANIZACIJA DIREKTNOG PRISTUPA MEMORIJI (DMA) Sl.68 daje šematski prikaz realizacije direktnog pristupa memoriji. U ovom postupku tok podataka, uspostavljen između vanjskog logičkog sklopa i memorije mikroračunara, zaobilazi mikroprocesor, odnosno DMA ima izdvojen kanal za prenos podataka. 51
Sl.68 - šematski prikaz direktnog pristupa memoriji (DMA) Zbog specifične organizacije mikroračunara, te nepostojanja izdvojenog kanala između memorije i upravljažkog sklopa DMA, pri organizaciji direktnog pristupa mora se upotrebiti ista spoljna sabirnica koju upotrebljava i mikroprocesor (Sl.69). Mikroprocesor i upravljački sklop DMA zajednički dele sabirnice na sledeći način: Sl.69 - Šematski prikaz stvarne organizacije direktnog pristupa memoriji (DMA) za mikroračunar U primeru normalnog delovanja mikroprocesora upravljački sklop DMA se električki odspaja od spoljne sabirnice postavljanjem svojih izlaza u stanje velike impedance (Sl.70). 52
Sl.70 - Primer normalnog delovanja mikroprocesora (šematski prikaz) Pri direktnom pristupu memoriji priključuje se upravljački sklop DMA na spoljnu sabirnicu, a mikroprocesor se odspaja od spoljne sabirnice postavljanjem svojih izlaza u stanje velike impedance (Sl.71). S obzirom na način realizacije direktnog pristupa memoriji, postoje sledeće tehnike: - direktni pristup memoriji zaustavljanjem procesora, - direktni pristup memoriji krađom ciklusa, - kombinacija gornjih metoda, - direktni pristup memoriji multipleksiranjem operacija DMA/MPU (mikroprocesorskih). Direktni pristup memoriji zaustavljanjem procesora najjednostavnija je metoda ali budući da može postojati relativno veliko kašnjenje od trenutka zahteva za prenos DMA do trenutka zaustavljanja procesora u nekim aplikacijama je ta metoda neprihvatljiva. Aktiviranjem (od strane spoljnjeg logičkog sklopa) upravljačkog signala za zaustavljanje, mikroprocesor završava svoju tekuću instrukciju i postavlja adresnu sabirnicu i sabirnicu podataka u stanje velike impedance. Time daje na raspolaganje sabirnice upravljačkom sklopu DMA. Sl.71 - Primer DMA prenosa (šematski prikaz) 53
Metoda direktnog pristupa memoriji krađom ciklusa ne zaustavlja mikroprocesor, već on samo privremeno obustavlja tok provođenja instrukcije. To omogućava upravljačkom sklopu DMA da za prenos iskoristi vrlo kratke vremenske intervale. Krađa ciklusa mikroprocesoru od strane operacija DMA odražava se na smanjenju brzine delovanja mikroprocesora zbog smanjenja frekvencije signala (takta) vremenskog vođenja. Direktni pristup memoriji krađom ciklusa u stanju kada je procesor zaustavljen kombinacija je opisanih metoda. Takvom kombinacijom koristimo se kao jednom od varijanti organizacije direktnog pristupa memoriji (Halt Steal Mode) u upravljačkom sklopu LSI DMA za mikroprocesor M6800. Pri toj metodi mikroprocesor je u stanju HALT za vreme koje je potrebno da se izvrši prenos samo jednog bajta. Nakon prenosa samo jednog bajta upravljanje se usmerava na mikroprocesor. Metoda direktnog pristupa memoriji multipleksiranjem operacija DMA i delovanja mikroprocesora omogućuje najveću brzinu izvođenja operacija mikroprocesora. Pri toj metodi mikroprocesor se ne zaustavlja, niti smanjuje brzinu operacija uz istovremeni prenos DMA. Operacije mikroprocesora i prenosa DMA su multipleksirane tako da je pristup memoriji od strane mikroprocesora omogućen za vreme jedne faze signala vremenskog vođenja, a pristup memoriji od strane upravljačkog sklopa DMA za vreme druge faze signala vremenskog vođenja (Sl.72) Sl.72 - Multipleksiranje operacija DMA/MPU Frekvencija signala vremenskog vođenja u tom slučaju mora biti prilagođena brzini memorije koja se upotrebljava. Obično je perioda toga signala jednaka dvostrukom vremenu trajanja memorijskog ciklusa. Da bi se ostvario direktan pristup memoriji, potrebna je upravljačka logika, koja sjedinjuje sledeće funkcije Sl.73: a) Upravljanje adresnom sabirnicom - dodeljivanje adresne sabirnice mikroprocesoru i upravljačkom sklopu DMA. b) Upravljanje sabirnicom podataka. c) Adresiranje memorije. Kao što mikroprocesor ima programsko brojilo i jedan ili više internih registara za adresiranje, upravljački sklop DMA mora imati adresni registar, koji sadrži adresu sledeće memorijske reči koja će sudelovati u prenosu. Sadržaj adresnog registra DMA se inkrementira nakon svakog prenosa reči. d) Brojanje reči. Blok podataka koji sudeluje u prenosu obično je unapred definisane dužine. Za vreme prenosa podatka broj prenesenih reči mora se stalno upoređivati sa željenom dužinom bloka. Prenos DMA se završava kada je dostignuta definisana dužina bloka. e) Izbor načina upravljanja. Status - upravljački registar upravljačkog sklopa DMA sadrži upravljačku reč koja određuje smer toka podataka pri DMA prenosu, informaciju da li je upravljački sklop DMA aktivan, izbor tehnike prenosa DMA i sl.. 54
Sl.73 Blok šema upravljačkog sklopa DMA Postupak DMA se može prikazati sledećim koracima (Sl.73) - generisanje zahteva za prenos DMA od strane spoljnjeg logičkog sklopa (1) i slanje zahteva mikroprocesoru (2) - slanje signala potvrde prihvatanja zahteva (3) - adresiranje memorije (4) - prenos podataka između memorije i spoljnjeg logičkog sklopa (5) - završetak prenosa DMA (6) ORGANIZACIJA DMA ZA MIKROPROCESOR M6800 Direktni pristup memoriji zaustavljanjem procesora Postavljanjem linije HALT u logičku 0 (HALT ili DMA REQUEST-zahtev za DMA) od strane spoljnjeg logičkog sklopa preko upravljačkog sklopa DMA, zahteva se zaustavljanje mikroproceesora i postavljanje njegovih linija (R/W, adresna sabirnica, sabirnica podataka) u stanje velike impedance. U stanju HALT mikroprocesor se zaustavlja na kraju izvršene instrukcije, signal BA (Bus Available)- sabirnice raspoložive - postaje logičko 1, izlaz mikroprocesora VMA (Valid Memory Address) - adresa pravomoćna - postaje logička 0. Izlazne linije mikroprocesora koje se koriste logikom sa tri stanja prelaze u stanje velike impedance. Signal (takta) vremenskog vođenja φ2 prisutan je bez obzira da li je procesor u stanju HALT ili ne, i služi za sinhronizaciju prenosa podataka pri DMA. Izabrani memorijski čip je omogućen signalom AMV koji je uslovni invertirani signal VMA (mikroprocesora). Uslovljen je upravljačkim signalom od strane sklopa DMA u trenutku prenosa DMA Signal R/W generisan je od strane upravljačkog sklopa DMA, sa zadatkom da upravlja smerom prenosa. Prenos DMA inicijalizovan je postavljanjem HALT linije (DMA REQUEST) u logičku 0. Prelaz na ulazu HALT ne sme se dogoditi za vreme poslednjih 250ns signala φ1. Stoga je pogodno 55
sinhronizovati prelaz signalom φ1 (prednjim bridom). Mikroprocesor uvek završava izvođenje tekuće instrukcije pre zaustavljanja. Ako se prelaz na liniji HALT dogodio unutar 100ns nakon prednjeg brida signala φ1, mikroprocesor će se zaustaviti nakon provođenja tekuće instrukcije. Ako se prelaz dogodio nakon 100 ns, mikroprocesor se zaustavlja tek nakon izvođenja sledeće instrukcije. Vreme odgovora na DMA zahtev zavisi od trajanja instrukcije. Direktan pristup memoriji krađom ciklusa Osnova ove tehnike DMA je krađa ciklusa mikroprocesoru za prenos DMA. Ta krađa ciklusa mikroprocesoru odražava se u sporijem izvođenju programa za vreme prenosa DMA pri TSC=1. Tada se adresna sabirnica i linija R/W upravljačke sabirnice postavlja u stanje visoke impedance. TSC ne utiče na sabirnicu podataka ali kako pri TSC=1 φ1 mora biti 1 a φ2 mora biti 0 tako i sabirnica podataka prelazi u stanje velike impedance, budući da se signal φ2 upotrbljava za upravljanje ulazom DBE. Postavljanjem signala DBE u 0 (φ2 je nisko za vreme od 4,5 µs), sabirnica podataka prelazi u stanje velike impedance. Kočenje signala (takta) vremenskog vođenja zamrzava za trenutak rad mikroprocesora i dodeljuje sabirnice upravljačkom sklopu DMA. DMA krade ciklus (TSC=1 ograničeno je pri DMA na 3µs) i obavlja se prenos. Budući da se zamrzavanje može dogoditi u bilo kojem ciklusu, čak i usred izvođenja instrukcije od više ciklusa, maksimalno kašnjenje prenosa DMA je jedan ciklus. To znači da prenos DMA neće nikada čekati duže od 1µs, bez obzira koja se instrukcija izvršava. Za razliku od DMA zaustavljanjem procesora, vreme trajanja mu je ograničeno jer je mikroprocesor dinamička sprava i ovo kočenje može trajati najviše 4.5µs. Direktan pristup memoriji multipleksiranjem operacija MPU/DMA Kada je memorija najmanje dvaput brža u odnosu na procesor, direktan pristup memoriji može se koristiti jednom polovinom memorijskog ciklusa a da ne utiče na performansu mikroprocesora. Upotrebom dva puta brže memorije omogućeno je da se u jednom normalnom procesorskom ciklusu (npr. 1µs) obave dva prenosa po sabirnici podataka. U prvom prenosu učestvuje upravljački sklop DMA. Signal C DMA upravljačkog sklopa DMA omogućava mu dostup do sabirnice podataka, adresne sabirnice, te do dela upravljačke sabirnice. Istovremeno signal C µp odspaja mikroprocesor od sabirnica postavljanjem izlaza međuregistra u stanje velike impedancije. Najbolje karakteristike opisane metode su u pogledu vremena izvođenja operacija mikroprocesora i brzine prenosa DMA, ali su potrebni složeni sklopovi i brža memorija. Spomenimo samo da se metoda multipleksiranjam MPU/DMA može primenjivati i na memorije koje nisu brže u odnosu na mikroprocesorski ciklus. To se postiže rastezanjem signala φ1 i φ2, odnosno smanjenjem frekvencije signala vremenskog vođenja. Očito je da se tako smanjuje brzina rada i samim tim i performansa mikroprocesora. 56
Sl.74- Vremenski dijagram direktnog pristupa memoriji multipleksiranjem operacija MPU/DMA 57