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 BME MIT BME-MIT Digit labor 9., 2014.11.10. (v1.0)
FPGA labor
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
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
1
FPGA labor
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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
2
FPGA labor
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)
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
3
FPGA labor
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
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
4
FPGA labor
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
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
5
FPGA labor
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ű BME-MIT Digit labor 9., 2014.11.10. (v1.0)
6
FPGA labor
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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
7
FPGA labor
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ó BME-MIT Digit labor 9., 2014.11.10. (v1.0)
8
FPGA labor
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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
9
FPGA labor
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
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
10
FPGA labor
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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
11
FPGA labor
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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
12
FPGA labor
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! BME-MIT Digit labor 9., 2014.11.10. (v1.0)
13
FPGA labor
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*Tclk = 3*62,5ns = 187,5ns – Az időzítés/késleltetés módja: várakozási ciklus – Egy 8 bites regiszterrel Tmax8 = 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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
14
FPGA labor
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: • Tmax16 = 3*65536*187,5ns = 36,8ms
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
15
FPGA labor
Lab9_2 feladat: Szoftveres időzítés • Szoftveres időzítés: – Valósidejű várakozások 24 bites számlálóval: • Tmax24 = 4*224*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 BME-MIT Digit labor 9., 2014.11.10. (v1.0)
16
FPGA labor
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
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
17
FPGA labor
Lab9_2a feladat: Frekvencia tesztek • Tesztprogram: low_freq.s – A max_freq.s tesztprogramot kiegészítjük időzítő/késleltető ciklussal
BME-MIT Digit labor 9., 2014.11.10. (v1.0)
18
FPGA labor
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! BME-MIT Digit labor 9., 2014.11.10. (v1.0)
19
FPGA labor