BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika (VIMIAA01) Laboratórium 9 Fehér Béla Raikovich Tamás, Fejér Attila Digit labor 9., 2014.11.10. (v1.0) BME MIT Lab9: Perifériakezelés 1. A processzor és a perifériák együttműködése 2. Busz fogalma, felépítése 3. Adatátvitel a buszon 4. Periféria programozási felülete 5. Periféria használata lekérdezéssel 6. Periféria használata eseményjelzéssel Digit labor 9., 2014.11.10. (v1.0) 1
Lab9: Perifériakezelés A processzor és a perifériák együttműködése Az adatforgalom a buszon zajlik A buszt a MASTER egységek használják Master: CPU, (DMA vezérlő) A buszhasználati jog megszerzése után (arbitráció) Busz fogalma, felépítése Adatátvitel a buszon Periféria programozási felülete Periféria használata lekérdezéssel Periféria használata eseményjelzéssel Digit labor 9., 2014.11.10. (v1.0) 2 Lab9: Perifériakezelés A busz a mikroprocesszoros rendszer belső adatátviteli egysége Részei: Címbusz, Adatbusz (kimeneti, bemeneti) Vezérlőjelek Adat kivitel (WRITE), adat beolvasás (READ) lehetséges A MiniRISC processzornál a memória és a periféria adatátvitelek azonosak, ugyanazok az utasítások használhatók (memóriába ágyazott perifériakezelés) Digit labor 9., 2014.11.10. (v1.0) 3
Lab9: Perifériakezelés A perifériák működése regiszter műveleteken keresztül vezérelhető A periféria csak a buszt látja, azon keresztül van kapcsolatban a processzorral Funkciók: adatkivitel, adatbeolvasás, parancskiadás, állapotbeolvasás Tipikus perifériaregiszterek: DOUT, DIN, COMMAND, STATUS Parancs: működtetés, üzemmód beállítás Digit labor 9., 2014.11.10. (v1.0) 4 Lab9: Perifériakezelés Passzív periféria Működés csak programozott indításra (pl. LED kijelző) Aktív periféria Működés akár külső eseményre (pl. nyomógomb) Processzor tájékoztatása, értesítése Programozott lekérdezés A processzor periodikus beolvasással ellenőrzi a periféria állapotát Kiszolgáláskérés (megszakításkérés) A periféria a változásról jelzést küld. Ehhez külön hardver áramkörök szükségesek és a programot is úgy kell elkészíteni, hogy a kiszolgálás kérések a végrehajtás során bármikor előfordulhatnak, ami a program elágazását okozhatja Digit labor 9., 2014.11.10. (v1.0) 5
Lab9_1 feladat: Bevezető feladatok Bemeneti perifériák használati kérdései Egyszerű kapcsolók, nyomógombok Egyszerű mechanikai konstrukciók Kellemetlen mellékhatás: átkapcsolási pergés Átkapcsoláskor nem egyetlen 0 1 átmenet, hanem többszörös jelváltás történik Megoldás: jelváltás érzékelése és késleltetett mintavétel A mechanikai időállandó néhány ms nagyságrendű Digit labor 9., 2014.11.10. (v1.0) 6 Lab9_1 feladat: Bevezető feladatok Bemeneti perifériák használati kérdései: Nyomógomb periféria Pergésmentesítés hardverben, mert szinte minden esetben fontos (a használati mód miatt) Változásról megszakításkérés, ha engedélyezett DIP Kapcsoló periféria Nincs pergésmentesítés, mert a használati mód nem feltétlenül igényli ( érték beállítása, majd beolvasási parancs, pl. nyomógombról) Nincs megszakítás sem Digit labor 9., 2014.11.10. (v1.0) 7
Lab9_1a feladat: A pergés jelensége Demonstrációs program a pergés jelenségéről Készítsünk egyszerű programot, ami Várakozik a kapcsoló aktiválására Ekkor egy számlálót inkrementál Várakozik a kapcsoló elengedésére Ezt a 2 ciklust ismétli egy lenyomás során és az összes tesztelt irányú átmenetet számolja, ha az nem túl gyors (a ciklus végrehajtási ideje ~us ) Javaslat: a kapcsolók csupa 1 állapotából (0xFF) induljunk, mert akkor az 1 0 átmenet finomabban kapcsolgatható Digit labor 9., 2014.11.10. (v1.0) 8 Lab9_1a feladat: A pergés jelensége Demonstrációs program a pergés jelenségéről Részlet a feladat minta forráskódjából: Készítsük el a demonstrációs programot A LOGSYS kártyán ellenőrizzük a jelenséget A valódi pergés természetesen kártyafüggő lehet Digit labor 9., 2014.11.10. (v1.0) 9
Lab9_1a feladat: A pergés jelensége A pergés ellenőrzése a nyomógombokon Alakítsuk át a programot, úgy hogy a nyomógombok működését tesztelje BT periféria beolvasása, alsó 4 bit használata Most a 0 1 átmenetet teszteljük A LOGSYS kártyán ellenőrizzük a jelenséget A hardver pergésmentesítés miatt remélhetőleg nem tapasztalunk többszörös átmenetet Digit labor 9., 2014.11.10. (v1.0) 10 Lab9_1a feladat: A pergés jelensége A pergés megszüntetése a kapcsolókon szoftveres késleltetéssel Alakítsuk át a programot, úgy hogy a kapcsolók figyelését kiegészítjük egy hosszabb idejű folyamatos mintavétellel SW periféria beolvasása, várakozás aktiválásra Azelső átmenet észlelése után addig várunk, amíg legalább 256 szor egymás után stabil értéket olvasunk be Amíg ez nem teljesül, addig mindig újrakezdjük a figyelést Digit labor 9., 2014.11.10. (v1.0) 11
Lab9_1a feladat: A pergés jelensége A pergés megszüntetése a kapcsolókon szoftveres ellenőrzéssel A program segítségével megbízhatóan olvasható be a kapcsoló állapotváltozása A gyakorlatban egyszerűen lassú mintavételezést használunk Digit labor 9., 2014.11.10. (v1.0) 12 Lab9_2 feladat: Szoftveres időzítés Gyakran szükséges a processzorok működését a valós idejű reakciókhoz igazítani Szoftveres időzítés: A processzor utasítás végrehajtásával időzítünk, azaz a processzor lényegében múlatja az időt Egyszerű megoldás, de nagy ára van: a processzor munkavégzési képességét vesztegetjük! Hardveres időzítés: Külön speciális időzítő periféria: TIMER Minden mikroprocesszoros rendszerben van (több is!) Az egyik leghasznosabb/rugalmasabb periféria! Digit labor 9., 2014.11.10. (v1.0) 13
Lab9_2 feladat: Szoftveres időzítés Szoftveres időzítés: Az időalap: egy utasítás végrehajtási ideje A MiniRISC esetében 3*T clk = 3*62,5ns = 187,5ns Az időzítés/késleltetés módja: várakozási ciklus Egy 8 bites regiszterrel T max8 = 2*256*187,5ns = 96us Az időzítés érték beállításához: Előírhatunk tetszőleges kezdőértéket A léptetés értéke lehet nagyobb, mint 1 A számláló számolhat lefelé is, de ekkor esetleg más feltételvizsgálat lehet szükséges Digit labor 9., 2014.11.10. (v1.0) 14 Lab9_2 feladat: Szoftveres időzítés Szoftveres időzítés: Hosszabb időzítések: Egymásba ágyazo ciklusokkal bonyolult szerkezet, nehezen számolható időzítés, nem használjuk Több bájtos számláló regiszter az ADC/SBC összeadás/kivonás átvitellel utasítás felhasználásával Időzítési idő 16 bites számlálóval: T max16 = 3*65536*187,5ns = 36,8ms Digit labor 9., 2014.11.10. (v1.0) 15
Lab9_2 feladat: Szoftveres időzítés Szoftveres időzítés: Valósidejű várakozások 24 bites számlálóval: T max24 = 4*2 24 *187,5ns = 12,582912 s Tetszőleges ütemezéshez elegendő átfogás Tippek: Egyszerű időzítés esetén az inicializálás elhagyható, az előző átfordulás után ugyanonnan folytatható Az inkrementálást 12 vel végezve, az időzítés ~1 s Digit labor 9., 2014.11.10. (v1.0) 16 Lab9_2a feladat: Frekvencia tesztek A MiniRISC kimenetein elérhető legnagyobb bitváltási frekvencia: Tesztprogram: max_freq.s Egy munkaregiszter tartalmának kijelzése végtelen ciklusban folyamatos invertálással Digit labor 9., 2014.11.10. (v1.0) 17
Lab9_2a feladat: Frekvencia tesztek Tesztprogram: low_freq.s A max_freq.s tesztprogramot kiegészítjük időzítő/késleltető ciklussal Digit labor 9., 2014.11.10. (v1.0) 18 Lab9_2a feladat: Frekvencia tesztek Gyűrűs számláló program készítése szoftveres időzítéssel Agyűrűs számláló 8 biten számol, jobbra vagy balra léptetéssel A léptetési frekvenciát állítsuk kb. 2 Hz re, szoftveres időzítési ciklust beépítve Készítsük el a programot, ellenőrizzük a működését a LOGSYS kártyán működtetve! A tapasztalatokat a Labor 9 Eredmények kérdőíven jegyezzük fel! Digit labor 9., 2014.11.10. (v1.0) 19