Periféria kezelési módszerek programozott megszakításos MA-s - közvetlen szoftver ütemezés - lekérdezéses ütemezés Programozott periféria kezelés Közvetlen szoftver ütemezés gyes perifériáknál nincs szükség szinkronizálásra mert vagy nincs mihez szinkronizálódni (pl: egy kijelzőt meghajtó regiszter, egyszerű bementi port), vagy a periféria egy művelet elindítása után a következő utasítás végrehajtására már biztosan elkészül (gyors A/ konverter). Az ilyen perifériákhoz a processzor tetszőleges időpontban fordulhat. 1
Lekérdezéses ütemezés Ha a periféria sebessége olyan, hogy egy perifériás művelet néhány utasítás végrehajtási időn belül fejeződik be, akkor a szinkronizálást státus figyeléssel célszerű megoldani. INÍTÁ TÁTU OLVAÁ RAY? n AATÁTVITL i Lassú periféria esetében sok várakozással jár, ami alatt a CPU nem végez érdemleges működést. zért csak akkor engedhető meg, ha CPU egyéb feladatait így is képes elvégezni. Az igényelt hardver tekintetében általában a lekérdezéses ütemezés a legolcsóbb megoldás. 2
Program megszakításos periféria kezelés Ha a periféria csak viszonylag hosszú idő vagy előre kiszámíthatatlan idő múlva lesz kész az újabb adatátvitelre, a lekérdezéses ütemezés feleslegesen foglalja a processzor idejét. zért ilyenkor interruptos periféria kezelést célszerű alkalmazni. A perifériához fordulást maga a periféria kezdeményezi egy logikai jellel a CPU vagy IT vezérlő interrupt kérő bemenetén. Az interruptot hardvertől függően az IT vonal szintje (szintérzékeny IT), vagy a jel valamely éle (élérzékeny IT) váltja ki. Az IT kezdeményezés hatására valamilyen mechanizmussal előbb-utóbb egy speciális szubrutinra (interrupt rutin) adódik a vezérlés, ami elvégzi a periféria kezelését. Mivel a CPU és a periféria szinkronizálása automatikus, nem kell feleslegesen státusz figyeléssel tölteni az időt. Az interruptos kezelés a program áttekinthetőségét is növeli. Mivel az IT rutinban nem a periféria kezelését szolgáló, ugyanakkor mindig végrehajtandó feladatok is vannak (regiszter mentés, regiszter visszaállítás, stack kezelés), túl sűrűn érkező IT-k szintén leronthatják a CPU kihasználtságát. 3
IT-s periféria kezelést akkor célszerű alkalmazni, ha: a CPU sebessége elegendő a periféria kezelésére és az interruptok várhatóan nem túl sűrűn jönnek, közöttük a CPU elég sok utasítást képes végrehajtani, vagy ha az interrupt bekövetkezésének időpontja véletlenszerű, de ha bekövetkezik, akkor gyorsan ki kell szolgálni, az interrupt alatt elvégzendő feladatok nem vesznek túl sok időt igénybe, vagy ha igen, akkor azt egyéb IT is megszakíthatja (többszintű IT rendszer). az interruptos szervezés a program strukturáltságát, áttekinthetőségét szolgálja. 4
A közvetlen memória hozzáférés (MA) Ha a processzor sebessége nem elegendő az adatátvitel lebonyolítására a periféria és memória között, MA-s kezelést kell alkalmazni. Az ún. MA vezérlő segítségével a processzort kikerülve, közvetlen adatátvitel lehetséges a memória és a periféria között. zt nevezik közvetlen memória hozzáférésnek (irect Memory Access). A MA átvitel általában gyorsabb, mintha a CPU végezné (nem kell közben a memóriából utasításokat olvasni és nem kell az adatot a CPUn keresztül áramoltatni. A MA-s kezelést tipikusan nagy sebességű, blokkos adatátvitelt igénylő perifériáknál alkalmazzák (winchester, nagysbességű soros adatátvitel stb). MA-s periféria kezelés MC Programozott adatátvitel adat adat MMÓRIA adat PRIFÉRIA MMÓRIA CPU PRIFÉRIA a.) b.) 5
Periféria illesztés A perifériák biztosítják a processzor és a környezet közötti kapcsolatot. A periféria illesztő áramkör a periféria kommunikációs felületét illeszti a mikroprocesszor buszára mikroprocesszoros busz periféria felülete környezet CPU periféria illesztõ periféria Periféria regiszterek tipusai: üzemmód regiszter (a periféria használati jellemzőinek (pl. soros vonal sebessége) beállítása parancs regiszter (utasítás a perifériának, pl. A/ konverter indítása) státus regiszter (a periféria állapota pl. A/ konverter kész) adat regiszter (adat a perifériának vagy a perifériától pl. A/ konvertertől jövő adat, a bementi feszültséggel arányos bináris szám) 6
A periféria címdekóder felépítése A periféria kijelölése (PL) és a periférián belüli címek (PL BA+i ) kijelölésének elve: cím busz n n-k KOMP periféria bázis címe (BA) n-k = PL Belsõ regiszter kiválasztó jelek: k N1 Y0 Y1 0.. K k-1 PL BA+0 PL BA+1 IOR N2 Y k 2-1 PL k BA+2-1 Periféria cím dekóder Olvasás engedélyező és beíró impulzusok előállítása: Periféria cím dekóder cím busz n n-k KOMP periféria bázis címe (BA) n-k = k PL N1 Y0 Y1 0.. K k-1 /R BA+0 /R BA+1 olvasás engedélyezõ jelek /IOR /R N2 N3 Y k 2-1 /R k BA+2-1 k PL N1 Y0 Y1 0.. K k-1 /WR BA+0 /WR BA+1 beíró jelek /IOR /WR N2 N3 Y k 2-1 /WR k BA+2-1 7
Tipikus periféria illesztő felépítése 2 olvasható és 2 írható regiszter, adat busz leválasztással (nem IT-os) P R I F É R I A TÁTU AAT IN PARANC/VZÉRLÉ AAT OUT -R -IOR -IOR RG RG 0-7 IR B U F n A1.. A7 PL = K O M P -R0 0 1 1 K 2 kezdõ cím A0 -R1 -WR0 -WR1 PL 0 1 1 K 2 -IOR -WR -IOWR -IOR Programozási felület regiszter címe funkciója az egyes bitek szerepe írható (W), olvasható (R), vagy mindkettő (R/W) kezdő cím parancs regiszter x W kezdő cím státus regiszter x R kezdő cím+1 adat regiszter x R kezdő cím+1 adat regiszter x W 8
2 olvasható és 2 írható regiszter, adat busz leválasztás nélkül P R I F É R I A TÁTU AAT IN PARANC/VZÉRLÉ AAT OUT RG RG A1.. A7 PL = K O M P -R0 0 1 1 K 2 kezdõ cím A0 -R1 -WR0 -WR1 PL 0 1 1 K 2 -IOR -IOWR -R -IOR -WR -IOR 9
Olvasás a státus regiszterből A periféria bázis címe C0H, státus reg:c0h IN A,(C0H) utasítás hatása P R I F É R I A TÁTU=40H AAT IN PARANC/VZÉRLÉ AAT OUT -IOR RG RG 40H -R0 PL 0 1 1 K 2 = K A7-A1 1100 000 O A7-A0 0 C0H M P -R1 -WR0 -WR1 PL 0 1 1 K 2 -IOR -IOWR A0 -R -IOR -WR -IOR A7-A0 C0H PL IOR R, IOR R0 40H 10
Írás az adat regiszterbe A periféria bázis címe C0H, adat reg: C1H L A,#55H OUT (C1H,A P R I F É R I A TÁTU AAT IN PARANC/VZÉRLÉ AAT=55H -IOR RG RG 55H -R0 PL 0 1 1 K 2 = K A7-A1 1100 000 O A7-A0 1 C1H M P -R1 -WR0 -WR1 PL 0 1 1 K 2 -IOR -IOWR A0 -R -IOR -WR -IOR A7-A0 C1H IOR WR, IOWR WR1 55H AAT_RG 55H 11
Programozott kezelés (program részlet Z80 utasításokkal): A periféria parancs regiszterébe 1-et kell írni az indításhoz. A státus regiszter 7. bitjén jelzi, hogy kész van. BA equ C0H PAR_RG equ BA TAT_RG equ BA ATA_IN equ BA+1 TART equ 01H RAY equ 80H... L A,#TART OUT (PAR_RG),A ;indítás loop: IN A,(TAT_RG) AN A,#RAY ;periféria kész figyelés JZ loop IN A,(ATA_IN) ;adat beolvasás... 12
MMÓRIÁBA ÁGYAZOTT PRIFÉRIA ILLZTÉ A memória egy területét IO területnek tartjuk fenn, erre a címtartományra nem szabad memóriát illeszteni. A periféria memória referenciás utasításokkal érhető el. -R -MMR 0-k A10 A15 -MMR IR B U F n & IO P R I F É R I A TÁTU AAT IN PARANC/VZÉRLÉ AAT OUT PL & = A1 K. kezdõ O cím A9 M P -R0 0 1 1 K 2 A0 RG RG -R1 -WR0 -WR1 PL 0 1 -MMWR 1 K 2 -MMR -WR -MMR 13
Interruptos periféria IT kérő logikája bben a megvalósításban perifériában az eseményre egy impulzust kell generálni. Az impulzus billenti be az IT kérő flip-floppot és okoz IT-ot, ha a parancs regiszter ITN bitjével engedélyezve van. megvalósításban az IT rutinban kiadott státus regiszter olvasás törli az IT kérést. A státus regiszterből kiolvasható az IT kérő flip-flop állapota és az ITN bit. A up IT vonalára több periféria csatlakozhat. A perifériáknak open collectorosan kell meghajtani az IT vonalat. Az IT kérést kiszolgálásig fenn kell tartatni. R0 1 Ut & O.C. IT ITN ITR Cl Cl Pr 0 RT WR0 0 R0 IT ok (impulzus) R0 14
Adott egy mikroprocesszoros busz, melynek jelei: (adat busz), A15-A0 (címbusz), -R (alacsony aktív olvasás engedélyezés), -WR (alacsony aktív beíró impulzus, az adat a jel hátsó élénél stabil), -MR (memóriához fordulás jelzése, alacsony aktív, amíg a jel aktív, a memória cím stabil, -IOR (perifériához fordulás jelzése, alacsony aktív, amíg a jel aktív, a periféria cím stabil), -IR, alacsony aktív interrupt kérő jel, -RT, alacsony aktív alaphelyzetbe hozó jel, YCLK (rendszer órajel). A processzor 256 IO címmel rendelkezik (A7-A0). Illesszen a fenti buszra egy szinkron soros adó egységet. Az egység az AAT regiszterébe írt adatot az írást követően (annak hatására) sorosan kiadja az OUT kimenetén egy CLK órajellel együtt, amelynek felfutó élénél változik az adat. Az adás előtt és után az CLK órajel 0 értékű, az OUT kimenet pedig tetszőleges. A periféria a teljes 8 bit kiküldése után jelez a státusregiszter RY bitjén és IT-ot kér, ha engedélyezett (parancsregiszter ITN bitje). (15p) Az alábbiakban részekre bontottuk a feladatot. Az összes részfeladat megoldása után áll elő a teljes feladatot megvalósító interfész. Az egyes részeknél azok részletes funkcionális blokkvázlatát kérjük, egymástól jól elhatároltan lerajzolni! a. Rajzolja le a periféria cím és utasítás dekóderét, továbbá a parancsregisztert (ITN), az adatregisztert, a státuszregisztert és a beírásukat/kiolvasásukat lehetővé tevő logikát! Az adatregiszter az A0H címen, a parancsregiszter az A1H, a státuszregiszter az A2H címen legyen. A parancsregiszter bitkiosztása: ITN: 0. Az állapot regiszterből legyen kiolvasható az RY bit (1 bit) és az ITR = (ITN & RY) bit (0 bit) értéke! (6p) b. Rajzolja le a teljes interrupt kérő logikát, mely az RY bebillenésekor interruptot kér! Az interrupt kérés programból legyen tiltható (ITN bit) és RT hatására is tiltódjon le. Az interrupt kérő flip-flop (RY bit) törlődjön a státuszregiszter olvasása után és RT hatására. (4p) c. Rajzolja le a fent specifikált működést megvalósító soros adó egységet! (4p) d. Adja meg az egység programozási felületét, az alább megadott táblázatnak megfelelő formában! (1p) regiszter címe (hexa) funkciója bitek szerepe 7 6 5 4 3 2 1 0 tipusa R (olvasható),w (irh.), R/W (mindkettő) 15
Részletes funkcionális blokkvázlat A. A7-A2 KOMP = 1010 00 HR O OUT A1 A0 /IOR /WRA0 /WR N2 K 0 1 /WR 1 0 /R N1 2 7-0 RG 0 1 /WRA0 /WRA1 /RA2 ITN 0 Cl /WRA1 RT C. IN /L/ CLK 7-0 TRT /CLK /WRA0 Pr Cl J K 0 CLK CLK RY RT Cl Cl CLK Y7 K Z Pr CLK 0 /RA2 ITR /CLK N /RA2 RY OC. IT B. ITN ITR RY Működést bemutató idődiagram: CLK /WRA0 TRT /L/ HR CLK Z Y7 PR RY/IT -RA2 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 0 16
Memória illesztés Memória térképen reprezentáljuk a memóriák elhelyezkedését a címtartományban: 16kbyte ROM 16kbyte RAM 16kbyte RAM 16kbyte RAM A15 A14 0 0 0 1 1 0 1 1 A legfelső címbitek alapján állítjuk elő az egyes memória chipek engedélyező jelét (-C). gyszerre csak egy memória kaphat engedélyezést. Az alsó címbitek jelölik ki a kiválasztott memória egy rekeszét. A13-A0 -MMR A13-A0 A13-A0 A13-A0 A13-A0 O R 1. RAM R 2. RAM R 3. RAM ROM C C WR C WR C WR 0 1 2 3 K B A -MMWR A14 A15 17
gyszerű lapozásos memória illesztése (tömbkapcsolás) 16kbyte ROM 16kbyte RAM 32 kbyte RAM 32 kbyte RAM 0. lap 1. lap P=0 P=1 A15 A14 0 0 0 1 1 x A lapozós rész megvalósítása 2db 32kbyte-os chippel A15-A0 A13-A0 A13-A0 A14-A0 A14-A0 -R ROM 1. RAM 2. RAM 3. RAM O R R R 16k 16k 32k 32k C C WR C WR C WR -CO -CA0 -CA1 -CA2 -WR -MMR 0 1 2 3 K B A -MMR P -R0 A15 A14 WR0 0 A lapozós rész megvalósítása 1db 64kbyte-os chippel A15-A0 A13-A0 A13-A0 A14-A0 A15 -R ROM 1. RAM 2. RAM O R R 16k 16k 64k C C WR C WR -CO -CA0 -CA1 -MMR 0 1 2 3 K B A -MMR A15 P -R0 A15 A14 WR0 0 18
TÖRÉPONTI GYÉG Megadható címről olvasáskor NMI-t kér és trigger jelet generál reg A15-A0 16 16 komp -WRal TRIGGR = -NMI -MR reg A7 A6 A5 A4 A3 A2 -WR -IOR 0 L TN A1 A0 -IOWR Cl -WRen -RT -WRah -WRen -WRal -WRah A1 A0 A1 A0 19
ORO A/ + FZÜLTÉG HATÁR FIGYLŐ Az A/ TRT bemenetén levő jel felfutó éle indítja az átalakítást, majd az ezt követő 8 órajel alatt (f=10khz) az kimenetén jelenik meg az adat bitsorosan, az órajel lefutó élével szinkronban, 2-es komplemens kódban. Az átalakítás végét a RY vonal jelzi. A feladat, az A/ felhasználásával egy programozható feszültség határ figyelő megtervezése. Az áramkör - programból való engedélyezés után (N) - 1 msec-onként ciklikusan elindítja a konverziót. IT-t kér, ha az átalakított adat egy 8 biten programozható VL értéket meghalad. gyszerű IT rendszert tételezünk fel. Rendelkezésre áll egy 10 khz-es órajel. A periféria kezdőcíme A0H. U CLK TRT Ain A/ RY MB 7 6 5 4 3 2 1 0 U CLK TRT Ain A/ RY I n H R 7.. 0 N7-N0 B U F n TRT b.) 3-0 BC száml. RCO Cl N CLK10kHz a.) R0 N7 K A0 O B0 M A6 P B6 A7 B7 A>B H7-H0 H7 R G J HT WR0 0 c.) 0 K Cl R1 A7-A1 K O M 1010000 7 P 7 = RT R0 d.) 0 WR1 HTCL ITN Cl O.C. IT A0 IOR WR 1 y0 2 Y1 K 3 WR0 WR1 1 RT N WR1 Cl R 1 y0 2 Y1 K 3 R0 R1 f.) RT e.) 20