Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

AutóélelmiszerépületFöldrajzGazdaságKémiaMarketingMatematika
OktatásOrvostudományPszichológiaSportSzámítógépekTechnika

Az Intel 8259A programozható megszakításvezérlô

számítógépek



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Az Intel 8259A programozható megszakításvezérlô

Az I8259A legfeljebb 8 vektorjellegű megszakításkérés kezelésére alkalmas, és külön külsô áramkörök nélkül 64 hasonló megszakításkérés kiszolgálására bôvíthetô. Belsô felépítése az 1. ábrán látható.



Ez az elem az I8080/8085 és I8086/80286 mikrogéprendszerek számára készült, de máshol is használható, ahol a külsô eszközök kiszolgálása prioritásos alapon történik. Parancsszavak kiadásával programozható. Többféle prioritási módja is van, azaz a mikrogép teljes megszakítási rendszere rugalmasan változtatható, a kívánt működésnek megfelelôen, programozottan illeszthetô a környezetehez.

A megszakitásvezérlô belsô felépitése

Megszakitáskérés regiszter - IRR -

a regiszter bemeneteire 8 külsô eszköz írhatja be kiszolgálási igényét aszinkron módon.

IR0IR7

- megszakitáskérés vonalak.

Megszakítás-maszk regiszter -IMR -

- a regiszter az IRR bitjeit engedélyezi vagy letiltja (ha a maszk megfelelô bitjének értéke '1', akkor az IRR-ben az ehhez tartozó külsô eszköz kiszolgálását tiltja).

- magasabb prioritású vonal letiltása természetesen nem okozza automatikusan az alacsonyabb prioritású vonalak letiltását is.

Megszakításkérés prioritás vizsgáló

- az egység feladata az IRR-ben lévô legmagasabb prioritású, az IMR által engedélyezett megszakításkérés kiválasztása és továbbítása az ISR-be.

Megszakítás kiszolgálás jelzô -ISR-

a regiszter bitjei azt mutatják, hogy éppen melyik megszakításkérések kiszolgálása folyik. Az ISR-be az INTA hatására íródhat be a megfelelô bit, azaz természetesen a processzor határozza meg, hogy hány megszakításkérést fogad el és szolgál ki (újabb megszakításkérés elfogadása és kiszolgálása azt jelenti, hogy vagy befejezôdött a korábbi, vagy a processzor felfüggesztette).

Megszakítás vezérlô

- Az 1. ábrán látható vezérlôegység feladata a megszakításkérések (INT) továbbítása a CPU felé, ezek nyugtázásának érzékelése (INTA), valamint a megfelelô idôzítô és vezérlôjelek elôállítása a peifériák és a processzor megfelelô kiszolgálásához és szinkronizálásához.

INT

- ez az output egyenesen a CPU-hoz megy. A jelszint kompatibilis a 8080A, 8085A és 8086 input szintekkel.

INTA

- hatására az 8259A a megszakításvektort az adatbuszra küldi. Az adat formátuma az adott rendszertôl függ.

Adatsín-puffer

-A háromállapotú adatsínpuffer illeszti az egységet a sínrendszerhez. Az átmenô adatokon kívül a vezérlô- és állapotszavak forgalma is itt zajlik.

D0D7

- adatvonalak.

Írás - olvasás vezérlô

- Az írás/olvasás vezérlôben két regiszter található: az inicializálási- (ICW) és a működési parancsregiszter (OCW). Ezek különbözô információkat tartalmaznak a teljes működésre vonatkozólag, mekyek alapján a be- és kiviteli műveletek vezérelhetôk. Ez az egység engedélyezi egyébként az állapotinformációk továbbítását is.

CS - kiválasztójel engedélyezi az összes műveletet.

WR - az itt megjelenô alacsony jelszint engedélyezi a CPU-t, hogy inicializáló és vezérlô parancsszavakat küldjön a 8259A-nak.

RD - az itt megjelenô alacsony jelszint engedélyezi a 8259A-t, hogy az IRR, IMR, ISR regiszterek tartalmát vagy a megszakítási szintet az adatbuszra küldje.

A0 - a RD és WR jelekkel együtt használatos a parancsszavak beírásánál és az állapotregiszterek olvasásánál. A címbusz bármely vonala lehet.

Kaszkád buffer

- A kaszkád puffer/komparátor tárolja a rendszerben levô összes I8259A azonosítóját, és ezeket szükség esetén összehasonlítja.

CAS - vonalak teszik lehetôvé az egy rendszeren belüli több I8259A összekapcsolását. Ha az egyik megszakításvezérlôtôl egy másik kiszolgálást kér, akkor ennek elfogadása esetén a CAS vonalakon megjelenik annak az eszköznek a kódja, amelyiknek bejelentkezése éppen elfogadott.

SP/EN - jel a pufferelt működési mód esetén az adatsínpuffereket engedélyezi, egyébként pedig az M/S (mester-szolga) relációra utal.

Megszakitás kezelés 8/16 bites mikroprocesszoroknál

Az I8259A programozható, és közvetlenül képes címezni a megfelelô megszakítási rutinokat. Ez utóbbi a rutinok direkt és indirekt hívását is lehetôvé teszi, tehát -ha ez elônyös egy adott alkalmazásban - az eszközök lekérdezése elhagyható ! Egy megszakításkérés kiszolgálása során végrehajtott műveletek többé-kevésbé függnek a processzortól. Központi egységünkben I8080/85 processzort használva a tevékenységek a következôk:

- 1. Beérkezik egyszerre egy vagy több megszakításkérés az IR0-7 vonalakon, amelyek bebillentik a megfelelô IRR biteket

- 2. Az I8259A kiértékeli a kéréseket, és - ha szükséges - az INT vonalon megszakításkérést küld a processzornak.

- 3. A CPU nyugtázza a megszakításkérést, és INTA jellel válaszol.

- 4. Az I8259A - miután fogadta az INTA jelet - bebillenti a legmagasabb prioritású kérének megfelelô ISR bitet és törli az ennek megfelelô IRR bitet. Ezután egy CALL parancsot (11001101) küld a 8 bites adatbuszra a D7 - D0 lábakon keresztül.

- 5. A CALL hatására két további INTA jel érkezik a CPU-tól.

- 6. A két INTA jel hatására a 8259A az adatbuszra küldi a megszakításkezelô rutin kezdôcímét, az alacsonyabb 8 bitet az elsô, a magasabb 8 bitet a második INTA után.

- 7. Ezt a teljes 3 byte-os CALL-t adja ki a 8259A. AEOI (automatikus megszakítás vége) módban a harmadik INTA jel után az ISR bit automatikusan törlôdik, egyébként pedig az EOI utasítás törli.

Központi egységünkben I8080/85 processzort használva a tevékenységek a 3. lépésig megegyeznek.

- 4. Az I8259A - miután fogadta az INTA jelet - bebillenti a legmagasabb prioritású kérének megfelelô ISR bitet és törli az ennek megfelelô IRR bitet (az adatsínhez ekkor még nem fordul).

- 5. Az I8086 processzor kiad még egy INTA jelet, melynek hatására az I8259A az adatsínre küldi a 8 bites megszakításvektort, amelyet a processzor beolvas és azonositja a megszakítást kiszolgáló szubrutint.

- 6. AEOI (automatikus megszakítás vége jelzés) működési módban az ISR bit törlôdik, egyébként mindaddig változatlan marad, míg a kiszolgáló rutin EOI (megszakítás vége) parancsot nem küld.

Ha a 4. lépésnél a megszakításkérés már nem áll fenn (ami azt jelenti, hogy a kérés idôtartama túl rövid volt), akkor az I8259A 7. szintű (legalacsonyabb) megszakításkérést küld.

Az I8086 CPU tehát két megszakítást nyugtázó (INTA) ciklust hajt végre. Az elsô ideje alatt az I8259A rögzíti a megszakítás kéréseket, hogy megtudja határozni a beérkezett kérések és a kiszolgálás alatt álló megszakítások közül melyik rendelkezik a legmagasabb prioritással, a második INTA jel hatására kiküldi a a legmagasabb prioritásu vektorhoz tartozó megszakításvektort

Inicializálási parancsszavak

A normál működés megkezdése elôtt az I8259A-t inicializálni kell, azaz az elkövetkezô működés támogatásához legalkalmasabb állapotba állítani. Ha a megszakításvezérlô a mikroprocesszortól az A0 = '0' mellett olyan parancsot kap amelyben D4 = '1', azt az 1. inicializáló parancsszónak (ICW1) tekinti. Ez indítja el az inicializálást, melynek során a következôk automatikusan lezajlanak:

- a megszakítási maszkregiszter (IMR) törlôdik,

- az IR7 bemenet válik a legalacsonyabb prioritású bemenetté

Az I8259A programozásához összesen négyféle inicializáló parancsszó (és háromféle műveleti parancsszó, amint ezt a késôbbiekben látni fogjuk) használható. A 2. ábrán bemutatjuk az I8259A teljes inicializáló műveletsorozatát a parancsszavak felépítésével együtt.

ICW1, ICW2

Az elsô inicializáló parancsszó (melyben - mint említettük - a D4 értéke mindig '1', és kiadáskor A0 a legalacsonyabb helyiértékű címvonal - értéke '0') alacsonyabb helyértékű fél bájtján a következô vezérlô biteket tartalmazza:

LTIM: szint- vagy élvezérelt megszakítási üzemmód állítható be (az elsô esetben a megszakításkérést szint jelzi, melynek megszűnése a kérés visszavonását jelenti, a második esetben impulzussal jelzett megszakításkérés is felismerhetô). LTIM = '1' esetén szintvezérelt mód áll be.

ADI: hívási (CALL) címtartományt állitja be, a cimtartomány 4- és 8 byte-os lehet 8 bites, illetve 4 bytes 16 bites mikroprocesszoroknál. ADI = '1' esetén 4 byte-os tartomány.

SNGL: jelzi a rendszerben levô - összekapcsolt - I8259-k számát .SNGL = '1' esetén egy 18259A van, ekkor ICW3 - at nem olvas be.

IC4: '1' értéke jelzi az ICW4 szükségességét ('0' esetén az I8259 nem is vár ICW4-et).

Az elsô inicializáló parancsszó magasabb helyértékű fél bájtja, valamint a teljes második (ICW2) parancsszó címinformációt tartalmaz.

ICW3

A harmadik parancsszó (ICW3) beolvasása csak akkor szükséges (tehát csak akkor várja az I8259), ha a rendszerben egynél több I8259 működik egymással összekapcsolva kaszkád üzemmódban. Ezt az SNGL bit jelzi az ICW1-ben, és ennek hatására a megszakításvezérlô fogadja az ICW3 parancsszót. Mivel több I8259-t tartalmazó rendszerben egyszerre csak az egyik lehet mester, a parancsszó a mester (és a szolgák) kijelölésében játszik szerepet. Az ICW3 parancsszót a megszakítás vezérlô egy belsô regiszterben tárolja.

Ha szóbanforgó I8259 mester (amelyet akár az SP, akár - pufferelt üzemmódban - az ICW4-ben lévô M/S határoz meg), a parancsszóban található '1'-ek a rendszerben lévô szolgákat azonositják. A megszakítás esetén az elsô byte-t továbbra is a mester küldi el, azonban 8 bites mikroprocesszorok esetén a második és a harmadik byte-t, illetve 16 bites mikroprocesszorok esetén a második byte-t azonban már az a szolga küldi el, amelyet a mester (a prioritásinformációk alapján, a kaszkádvonalakon keresztül) kiválaszt. Ha viszont a kérdéses I8259 szolga (amelyet - a mesterhez hasonlóan - az SP vagy M/S határoz meg), akkor - lévén, hogy a rendszerben több szolga is lehet, míg a mester csak egy - a segédregiszter alsó három bitje (B0B2) a szolga azonosítóját tartalmazzák. Maga a szolga I8259 összehasonlítja ezeket a biteket a kaszkád bemeneteivel, és ha azonosak, akkor kiadja a vektorinformációt az adatvonalakra.

ICW4

A negyedik inicializáló parancsszóban öt vezérlô bittel választhatunk ki (vagy tilthatunk le) különbözô funkciókat:

SFNM:egymásba ágyazott megszakításvezérléseket kezelô üzemmód kiválasztása,

BUF: pufferelt üzemmód beállítása, melyben az SP/EN engedélyezô kimenet, és a mester/szolga szerepet az M/S dönti el,

M/S: pufferelt üzemmódban jelzi, hogy az adott I8259 a rendszerbe mester vagy szolga (nem pufferelt üzemmódban nincs szerepe),

AEOI: automatikus 'megszakítás vége' üzemmód kiválasztás,

MPM: a rendszerben használt mikroprocesszor (I8080A/85A vagy I8086) típusát határozza meg

Az ICW4-gyel kiválasztható funkciókra a késôbbiekben még visszatérünk, viszont itt kell megjegyeznünk, hogyha az összes vezérlôbit értéke '0',akkor a teljes ICW4 elhagyható (IC4 = '0' az ICW1-ben).

Az inicializáló parancsszavakkal az I8259 beállítható úgy, hogy megfelelôen megkezdhesse működését, vagyis képes legyen megszakításkéréseket fogadni és ezeket továbbítani a processzor felé. Az összes szükséges ICW kiadása után az I8259 automatikusan az ún. egymásba ágyazott megszakításos üzemmódba áll be, azaz ilyen elv szerint kezeli a megszakításkéréseket.

Müveleti parancsszavak

OCW1

Az OCW1 a megszakítási maszkregiszter (IMR) megfelelô bitjét (helyérték szerint) állítja be, mellyel engedélyezheti vagy letilthatja a bitet tartalmazó csatornát (például az OCW1 00H értéke az összes csatorna, 55H értéke pedig a páratlan sorszámú csatornák engedélyezését eredményezi).

OCW2

Az OCW2 három vezérlôbitje a forgó prioritást (R) és a lehetséges megszakítás vége állapotokat (SEOI - különleges, EOI - normál) vezérli, az L2-L0 bitek pedig - ha a SEOI aktív - a megszakítási szintet határozzák meg.

OCW3

Az OCW3 két vezérlôbitje - az ESMM és az SMM - speciális maszkolt üzemmódot állítja be, vagy tiltja le (az ESMM az SMM külön engedélyezô bitje). A további három közül az egyikkel (P) a lejérdezéses működési mód választható ki, a fennmaradó kettôvel (ERIS, RIS) pedig a megszakításkérések regiszterének (IRR) vagy a kiszolgálás alatt álló megszakításkérés regiszterének kiolvasása vezérelhetô.

A0

D7

D6

D5

D4

D3

D2

D1

D0

M7M0 Megszakítási maszk

M7

M6

M5

M4

M3

M2

M1

M0

0 - nem maszkolt

1 - maszkolt

A0

D7

D6

D5

D4

D3

D2

D1

D0

R

SEOI

EOI

L2

L1

L0

A legalacsonyabb prioritású eszköz BCD kódja

'A' tipusú forgatás törlése

Nem specifikus EOI

Specifikus EOI

'A' tipusú forgatás beállítása

Automatikus forgatás EOI - re ('A')

'B' tipusú forgó prioritás beállítása

Forgatás EOI - re ('B')

A0

D7

D6

D5

D4

D3

D2

D1

D0

ESMM

SMM

P

ERIS

RIS

Speciális maszkolt üzemmód

Lekérdezés

A kiszolgálást jelzô regiszter tartalmának kiolvasása

Megszakítási üzemmódok

Normál megszakítás vége üzemmód

Az a bit, amely jelzi, hogy egy megszakításkérés éppen kiszolgálás alatt áll (ISR), vagy automatikusan törlôdik az utolsó INTA jel után (amikor az AEOI bit az ICW1-ben '1'), vagy külön EOI parancs törli, melyet a processzor kiszolgáló rutinjának utolsó (RET) utasítása küld az I8259-nak. (Ha szolga prioritásvezérlôk is vannak a rendszerben, akkor két EOI parancs kiküldése szükséges: egy a mesternek, és egy a pillanatnyi szolgának.)

Az EOI parancs egyedi és általános lehet. Ha az I8259 az egymásba ágyazott prioritási rendszerben működik, könnyen meg tudja állapítani, hogy az EOI parancs melyik ISR bit törlését írja elô, hiszen - definíció szerint - a legmagasabb prioritású (bebillentett) ISR bitet kell törölni -általános EOI parancs -.

Abban a pillanatban , ahogy a működés során az egymásba ágyazott prioritású szerkezetrôl más kiszolgáló módra térünk át, az I8259 önmagában képtelen meghatározni, hogy melyik volt az utolsó (nyugtázott és kiszolgált) megszakításkérés. Minden ilyen esetben tehát egyedi EOI parancsot (azaz SEOI-t) kell küldeni, amely tartalmazza a törlendô ISR szintet is. A RET utasítás EOI-t küld, ha az OCW2-ben az EOI='1'. Az L0--L2 bitek tartalmazzák a törlendô ISR bit prioritási szintjét, ha az SEOI='1' (egyébként édektelenek). Megjegyezzük, hogy az IMR bittel maszkolt ISR bit egyedi EOI paranccsal nem törölhetô, ha az I8259 speciális maszkolt módban van.

Automatikus megszakítás vége üzemmód

Az automatikus megszakítás vége állapot az ICW4 AEOI bitjével vezérelhetô, tehát a beállítás után csak újrainicializálással változtatható meg. Ebben az üzemmódban az I8259 az utolsó INTA jelet követôen automatikusan végrehajtja ugyanazt a műveletet, amelyet egyébként az egyedi EOI idézne elô. Ez a működési mód csak akkor használható, ha a rendszerben egyetlen prioritásvezérlôn belül egymásbaágyazott, többszintű megszakítási szerkezet alkalmazása nem szükséges (okát már többször említettük). AEOI esetén automatikus prioritásforgatás külön vezérlô flip-floppal hajtható végre, amelyet az R='1', az SEOI='0' és EOI='0' kombináció billent be, és az R='0', SEOI='0' és EOI='0' kombináció töröl (az OCW2-ben). Természetesen az EOI és az SEOI ekkor csak '0' lehet (az automatikus EOI mód miatt, ld. 2. ábra).

Maszkolt üzemmód

Minden megszakításkérés a megszakítási maszkregiszter (IMR) bitjeivel maszkolható. Ez a regiszter az OCW1-en keresztül állítható be, és '1' értékű bitjei letiltják a hozzájuk tartozó csatornát (a többi csatornát nem befolyásolják). Ez az egyszerű maszkolt üzemmód. Ezzel kapcsolatban viszont arról sem szabad elfeledkeznünk, hogy az I8259A alapvetô működési elve az, hogy egy megszakítás kiszolgálása során az összes alacsonyabb prioritású megszakításkérést automatikusan letiltja. E kettô együtt azonban már problémát okozhat, hiszen sokszor szükséges, hogy valamely megszakításkérést kiszolgáló rutin dinamikusan átrendezze a mikrogéprendszer prioritásszerkezetét, pl. úgy, hogy bizonyos esetekben engedélyez, egyébként pedig letilt alacsonyabb prioritású kéréseket. E alacsonyabb prioritású megszakításkéréseket - az I8259A-n keresztül - programmal nem lehet engedélyezni, hiszen a nyugtázott megszakításkérés elindított egy kiszolgáló rutint (tulajdonképpen ennek kellene az alacsonyabb prioritású kéréseket engedélyeznie), és záró EOI parancs még nem érkezett (amely törölné az IS - a kiszolgáló állapotot jelzô - bitet).

Speciális maszkolt üzemmód

E problémán segít a speciális maszkolt üzemmód (amely az OCW3 két bitjével állítható be), mely során, ha egy bit a megszakítási maszkregiszterben egy meghatározott megszakítási szintet letilt, akkor még az összes többi (magasabb és alacsonyabb prioritású egyaránt) engedélyezett marad (természetesen azok, amelyek nem maszkoltak). Ezzel tehát bármelyik megszakításkérés szelektív módon engedélyezhetô és letiltható, és bármely program (beleértve a megszakításkéréseket kiszolgáló rutinokat is) korlátozás nélkül, dinamikusan átrendezheti a rendszer prioritásszerkezetét.

Ágyazott megszakításmód

Az I8259A az inicializálás után automatikusan egymásbaágyazott üzemmódba áll be. Ekkor a megszakításkérések prioritása rögzített (az IR0 a legmagasabb, az IR7 a legalacsonyabb szintű, de bizonyos módon - mint ezt a késôbbiekben látni fogjuk - változtatható. A nyugtázás vétele után a legmagasabb prioritású kérés vektorát az I8259A ráküldi az adatvonalakra és bebillenti az IS regiszterennek megfelelô (ISR0 - ISR7) bitjét. E bit mindaddig '1' marad, amíg a mikroprocesszor az IRET utasítás végrehajtása során EOI paranccsal nem törli. Ha az IEOI (automatikus megszakítás vége) bit '1', akkor a második INTA ciklus befejezôdésével automatikusan törlôdik. Amíg az ISR bit '1', az összes azonos vagy alacsonyabb szintű megszakításkérés le van tiltva. A magasabb szintű megszakításkéréseket a mikroprocesszor csak akkor nyugtázza, ha a belsô, megszakításkéréseket engedélyezô flip-flopját a futó program törölte (EI utasítással).

Speciális ágyazott megszakításmód

Az egymásbaágyazott üzemmód egy bôvített formája a speciális egymásbaágyazott mód, amely több összekapcsolt prioritásvezérlôt tartalmazó nagyobb rendszerekben használatos, és a prioritási szintek az egyes szolgákon belül állandóak (a mester egymásbaágyazott üzemmódban működik). Ez az üzemmód az egyszerű egymásbaágyazottól csak annyiban tér el, hogy ha a mester egy szolgától elfogadott egy kérést, akkor ezzel egyidejűleg nem tiltja le ezt a szolgát (még a kiszolgálás idejére sem), hanem elfogad - magasabb prioritású - további kéréseket, és ezeket továbbítja a CPU-nak. Ebbôl persze az az eltérés is következik, hogy amikor egy kiszolgáló rutin visszaadja a vezérlést, programmal meg kell vizsgálni, hogy ez volt-e az adott szolgától érkezett egyetlen kérés, vagy sem. Ez a szolgának küldött általános EOI parancs útján hajtható végre, amely után ellenôrizhetô, hogy az IS regisztere nulla-e, vagy sem. Ha igen, akkor a mesternek is kiküldhetô általános EOI, ha nem, akkor természetesen nem, hiszen ekkor még van másik (aktív) kérés

Lekérdezéses megszakításmód

A megszakításkérések lekérdezéses kiszolgálása talán a legjobban ismert és legáltalánosabban használt módszer (nem feltétlenül, és nem mindig indokolt). Ebben az esetben magának a mikroprocesszornak a belsô megszakításkéréseket engedélyezô flip-flopja '0' (letiltott) állapotban van, az IR0IR7 megszakítás bemenetekre beérkezô megszakításkérések hatására nem állít elô megszakításkéréstaz INT kimenetén a mikroprocesszort felé. Az üzemmódot POLL parancs állítja be, az OCW3 P bitjének bebillentésével, és ekkor az I8259A a következô RD impulzust a megszakítás nyugtázásának tekinti. Ha volt megszakításkérés, akkor bebillenti a megfelelô ISR bitet, és beolvassa a megszakítási szintet. A WR és RD között a megszkítások letiltott állapotban vannak. Az RD alatt az adatsínre küldött bájt formátuma: (4.ábra)

D7

D6

D5

D4

D3

D2

D1

D0

I

X

X

X

X

W2

W1

W0

ahol az alacsonyabb helyértékeken levô W0-W2 a kiszolgálást kérô legmagasabb prioritású eszköz prioritási szintje, és I='1', ha a megszakításkérés fennáll. A lekérdezéses kiszolgálás akkor alkalmazható eredményesen (és gazdaságosan), ha több prioritási szinthez ugyanaz a kiszolgáló rutin tartozik, vagy ha 64-nél több prioritási szint használata szükséges.

Változó (forgó) prioritás

A forgó prioritási módnak két változata használható: az automatikus mód, amely azonos prioritású eszközök kiszolgálásánál elônyös, és a programozott mód, ahol a prioritások 'elforgatását' program vezérli. Tárgyalásunk elôtt azonban a megszakítás vége és az automatikus megszakítás vége parancsot és állapotot (EOI és AEOI) kell röviden áttekintenünk.

Automatikus prioritás-váltás

Ez a mód azonos prioritású eszközök kiszolgálására különösen alkalmas. Alapelve az, hogy ha egy eszköz kérésének elfogadása és kiszolgálása megtörtént, akkor ennek várakoznia kell addig, amíg az összes többi - fennálló - -kérés kiszolgálása le nem zajlik, és csak ezután kaphat ismét kiszolgálást. Ez annyit jelent, hogyha például (ld. 5. ábra) a második eszközé a pillanatnyilag legmagasabb prioritás, akkor ennek kiszolgálása után - a pozíciójából eredô elforgatás következtében - biztosan a harmadik eszközé lesz a legmagasabb, és a második (éppen kiszolgált) eszközé a legalacsonyabb.

Forgatás elôtt

IS7

IS6

IS5

IS4

IS3

IS2

IS1

IS0

IS - állapot

Prioritásállapot

Forgatás után

IS7

IS6

IS5

IS4

IS3

IS2

IS1

IS0

IS - állapot

Prioritásállapot

Legmagasabb prioritás

Legalacsonyabb prioritás

A második eszközhöz tartozó ISR bit - természetesen - a kiszolgálás után törlôdik, és - a 4. ábra szerint - a harmadik eszközhöz tartozó ISR bit '0', tehát nem kér kiszolgálást. A következô - kiszolgálást kérô - legmagasabb prioritású eszköz a 4., a kiszolgálását és a prioritások elforgatását követô állapotot az ábra szintén mutatja. Talán felesleges is megjegyezni, hogy a prioritási állapotot tartalmazó regiszter elforgatása az IS regisztert nem befolyásolja (ez biztosítja, hogy az IS bitekhez mindig a pillanatnyi állapotot tükrözô prioritást tartozzon). Látható, hogy - mivel az IS regiszter 8 bites - egy eszköznek a legrosszabb esetben 7 másik eszköz egyszeri kiszolgálását kell kivárnia. Az 'A' típusú forgatás az OCW2-ben írható elô az R='1', EOI = '0', SEOI='0' kombinációval (3. ábra). A prioritási állapot változása az EOI ill. AEOI parancs hatására történik meg. Amint ezt korábban említettük, az R='1', EOI='0', SEOI='0' kombináció hatására egy forgatás jelzô flip-flop billen be.

Programozott prioritás-váltás

A prioritások változtatása programmal is megoldható. A program a legalacsonyabb prioritási szintet (7.) állítja be, miáltal (ld. 5. ábra) az összes többit is rögzíti (ha tehát - mondjuk - a harmadik eszközé a legalacsonyabb prioritás, akkor automatikusan a 4. eszköz kapja a legmagasabbat. A prioritás váltás parancsot az OCW2-ben lehet megadni az R='1', SEOI='1' kombinációval. Az OCW2 L0-L2 bitjei ekkor a legalacsonyabb prioritású eszköz szintszámát tartalmazzák. Itt tehát a prioritási állapot változása programvezérelt, és az OCW2 változtatásával hajtható végre. Az EOI parancstól ez független (bár ennek végrehejtásáról is az OCW2 is gondoskodik), tehát a prioritási sorrend változása az EOI alatt vagy attól függetlenül is végrehajtható.

A megszakításvezérlô regisztereinek kiolvasása

A műveleti parancsszavakban levô vezérlôbitek közül még a RIS és ERIS bitek funkcióit nem tárgyaltuk. A processzorral kommunikáló külsô áramkörök - mint az I8259 is - csak úgy képesek a megfelelô összeköttetés fenntartására (a processzorral), ha a CPU-tól érkezô parancsok végrehajtásán túlmenôen saját működésükrôl, állapotukról is képesek információt szolgáltatni. Ez az I8259 esetében úgy történhet, hogy a processzor (az OCW3 segítségével) kiolvashatja a belsô regiszterek (IMR, ISR, és IRR) tartalmát.

Az IRR (megszakításkérések regisztere) bitjei egyenként a megszakításokat kérô eszközhöz tartoznak, vagyis e regiszter tartalma határozza meg az adott pillanatban nyugtázásra váró megszakításkéréseket. Amint egy nyugtázás megérkezik, a legmagasabb prioritású kéréshez tartozó IRR bit törlôdik (az IMR regiszter tartalma e regiszterét nem befolyásolja).

Az ISR (a kiszolgálás alatt álló megszakításkérés regisztere) a legutoljára nyugtázott (tehát pillanatnyilag kiszolgálás alatt álló) megszakításkérés prioritási szintjét tartalmazza. Tartalmát az EOI parancs írja át.

Az IMR (a megszakítási maszkregiszter) '1' értékű bitjei a hozzájuk rendelt megszakításkérési vonalakat maszkolják (letiltják). Az IMR és IRR bitjei helyérték szerint tartoznak egymáshoz.

Mind az IRR, mind az ISR kiolvasása az RIS és ERIS bitek vezérletével történhet (az OCW3-ban). Az ERIS a RIS engedélyezô bitje, vagyis kiolvasás csak ERIS='1' esetén lehetséges. Ekkor a RIS='0' az IRR a RIS='1' pedig az ISR kiolvasását eredményezi. A regisztertartalmak kiolvasását megelôzôen egyébként nem szükséges minden esetben OCW3-at kiküldeni mindaddig, amíg a legutolsó OCW3-ban megadott információk érvényesek (tehát az I8259 tárolja,hogy legutoljára melyik regiszterének kiolvasása történt meg). Lekérdezéses üzemmódban természetesen bármely regiszter kiolvasásához minden esetben ki kell küldeni az OCW3-at. Inicializálás után az I8259 automatikusan az IRR kiküldésére áll be. Az IMR kiolvasásához OCW3 egyáltalán nem szükséges, mivel A0='1' mellett a kimenô adatsín RD='1'-nél az IMR-t tartalmazza. Az IMR és ISR kiolvasásához az RD jelet megelôzôen WR jel is szükséges.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1344
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved

Distribuie URL

Adauga cod HTML in site