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 Az első á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 ágyazott 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 A gyű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