Laboratórium 1 - 11. Mérés: Programozható perifériák mérése
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
Fontos megjegyzés
Ez a mérés tavaly óta egészen más. Az ide föltett segédanyagoknak közük nincs hozzá. Csak hogy ne lepődjetek meg.
Többen jelezték hogy a Beugró kidolgozás 1. kérdésre rossz a válasz
a helyes válasz elvileg ez: Az órajel 2O ns -os de a mintavételezés 4 ns-onként történik az órajel váltása így csak 4ns-onként lehetséges. Ezért létrejöhet 16ns-os periódusidő is ekkor természetesen a következő periódus 24 ns-os. A két órajelre ezek a mintavételi időpontok ráadásul eltérőek lehetnek, így ezért láthatunk két különböző órajelet.
A mérésről
Beugró
A beugró 2 kérdésből állt.
- Az egyik az ellkérdésekből volt, a 13 -mas (_Mekkora átviteli sebesség érhető el EPP módban? Hasonlítsa össze a PC-n található külső interfészek átviteli kapacitásait (soros,párhuzamos,USB,Firewire)_.
- A másik kérdés pedig: adott volt egy átviteli sebesség bps -ben és, hogy 8N1 kódolású. Mennyi idő alatt lehet átvinni 10byte-ot.
A mérés nem volt olyan érthetetlen, mint pl. a 3-mas bemutató mérés. Az anyagot érdemes alaposan átnézni, de sztem nem kell elveszni a részletekben. A mérés nagyjából megoldható, mi a 2. feladat elejéig jutottunk.
Ellenőrző kérdésekre a válaszok:
Szilágyi Tamás ill. Nedi válaszai az villanysite-ról
- Az analizátor max. 3ns csatorna-csatorna eltérési tűréssel dolgozik. Az 50MHz-es jel 20ns-os periódusidejéhez képest ez jelentős hibforrás. (Mert a hozzávezetések induktív és kapacitív tulajdonságai miatt különböző késleltetéseket szenved az órajel.)
- Az eltérés az analizátor mintavételezési hibájából fakad, a 4ns mintavételi sebesség esetén a számláló állapotait is megfigyelhetjük.
- A 32 bites számláló ciklusideje f=50MHz-es órajelet feltételezve: T = 2^32/50e6 = 85,988s. A "szívhang" kb másodpercenként villog, ezért 2^32/85 = 2^26, tehát a 26. bitről üzemelhet a szívhang.
- 85,988s. (lásd előző)
- Csak a bemeneti nyomógombok vannak pergésmentesítve, ezért a kapcsolóknál lehetséges pergés.
- HW üzemmódban, ha csak a BTN5 van megnyomva: 16 lassabb bittel változik: T = 2^16 * 20ns = 1,31ms a leggyorsabban változó szegmens periódusideje.
- Ha a PC kész az adatok küldésére, küld egy RTS (Request To Send) jelet a kártyának. Ha a kártya kész a fogadásra, akkor válaszol egy CTS (Clear To Send) jellel, ekkor megkezdődik a soros átvitel.
- ha van hardveres átvitelkezelés, akkor a CTS aktív állapotának hiányában a PC felfüggeszti az átvitelt addig, amíg a kártya újra kész nem lesz.
- ha nincs engedélyezve a hardveres átvitelkezelés, akkor a CTS jel értéke közömbös.
-
- sebesség (bps)
- 8N1 (adatbitek száma:8/7/6/5, paritás:nincs/van, stopbitek száma: 1,1.5,2)
- átvitelvezérlés (hardveres, szoftveres, nincs)
- 100B = 800b, Byte-onként 1 stopbittel + 1 startbit 1000b. t = 1000/115200 s
- ??? 115200 bps vagy 19200 bps
- A vevőoldali puffer szerepe: ha a kártyya foglalt, a küldött adatok nem vesznek el, hanem beíródnak a 16bites FIFO pufferbe. Az állapotjelző bitek (half/full) révén a szoftveres megvalósítás ezekkel tudja vezérelni az átvitelt a CTS változtatásával.
-
- Standard Paralell Port
- csak kimenő irányú adatátvitel
- egyetlen 8bites kimeneti adatregiszter
- Extended Paralell Port
- a cím és az adatkivitel mellett e paraméterek visszaolvasása is lehetséges
- 8bites címregiszter, 256 egyedileg címezhető adatregiszter, az első 4 címhez egy-egy 8bites írható/olvasható adatregiszter van (a nem használt címekre írt adatok elvesznek, hiba nincs).
- Standard Paralell Port
-
- Soros port: ~56 kbit/s
- EPP: ~2 Mbit/s
- USB 1.0,1.1: 12 Mbit/s
- USB 2.0: 480Mbit/s
- Firewire: 400Mbit/s
- kb 40MIPS a segédlet szerint. Egy utasítás 2 órajel alatt megy végbe, tehát 25MIPS
- a Picoblaze processzor
- memóriája 256B (programtár) és 16B univerzális regiszter
- I/O tartománya 256B (8bites I/O-busz)
- utasításcsoportjai: vezérlő, interrupt, logikai, aritmetikai, shiftelés/forgatás, I/O
- 8bites ALU, egyszintű INT, 15szintű stack
- beágyazott vezérlőként vagy oktatási célú processzorként használható
- A végrehajtás minden utasítás után megáll. A regiszterek tartalma ekkor kiolvasható, megváltoztatható. Utána a program továbbléptethető.
- A töréspontoknál a program futása megszakítás hatására megáll. Így előre kijelölhetjük, hogy meddig fusson a program, majd leállás után kiolvashatjuk a memóriatartalmat és a regisztereket debugolás céljából.
- Csak olyanoknál, ahol a program megszakítható. Pl. hardveres adatkapcsolatok megvalósításakot egy-egy csomag vagy byte elküldése közben nincs értelme megállítani a programot. A belső számítások, feltételes elágazások helyessége viszont ellenőrizhető.
- Egyszintű, szintérzékeny: ha engedélyezve van, akkor a Picoblaze minden újabb utasítás elővétele előtt megvizsgálja az interrupt bemenet értékét. A megszakítási vektor: FF (ide általában egy ugró utasítást szokás tenni). Nem túl bonyolult feladatok megoldására való, mert nagyszámú interrupt kérés különválasztása már problémát jelenthet.
- A Picoblaze egy nagyon alapszintű processzor, melynél kisebbet semmihez nem érdemes használni. Microchip PIC mikrovezérlők gyártanak jóval nagyobb memóriával és hasznos portokkal, I/O egységekkel. Motorola ipari vezérlők is széles körben elterjedtek. Egyes helyeken még i386-ot is használnak beágyazott vezérlőként.
Házik:
4-es
nekem ez volt, rövid, ezért leírom, meg azért, mert a villanysite-on több megoldást láttam, de mindegyikben volt vmi apró hiba. Ez nem jelenti, hogy az enyémben nem lesz. Készítsen egy számlálót felhasználva az f1~1Hz frekvenciájú jelet. A számláló állapotát a LED-eken jelenítse meg.
------------------------------------------------------------------------------------- LOAD s1, 00 OUTPUT s1, 02 ; a ledek törlése zero: ; itt nulla (lett) az f1 jel INPUT s0, 01 ; nyomógombsor beolvasása AND s0, 04 ; f1 kimaszkolása JUMP Z , zero ; f1 még mindig nulla ADD s1, 01 ; f1 felfutott, a számláló inkrementálódik OUTPUT s1, 02 ; új értékét ki is küldjük a led-sorra notzero: ; itt egy (lett) az f1 jel INPUT s0, 01 ; nyomógombsor beolvasása AND s0, 04 ; f1 kimaszkolása JUMP NZ, notzero ; f1 még mindig nulla ; ha a maszkolás után "nemnullát" kapunk (azaz f1 még mindig magas) akkor folytatja a lefutó él ellenőrzését JUMP zero ; különben meg f1 lefutó éle megjött, kezdhetjük előlről az egészet (feltétel nélkül) -------------------------------------------------------------------------------------
-- Ger****** - 2007.10.08.
2-es
Itt van a 2. házi feladat is, ami tesztelve volt mérésen, és jó!
------------------------------------------------------------------------------------- ; Bagi Tamás Zoltán ; DBREBY ; 2007.10.07. ; ; Labor I. 11. mérés heti felkészülési feladata ; Egy nyomógomb megnyomására a LED-ekre kiírja a gomb sorszámát (1-5) ; Konstans definíciók: CONSTANT bt, 01 ; Nyomógombok CONSTANT ld, 02 ; LED-ek CONSTANT bt1, 80 ; 1-es gomb-maszk (1000 0000) CONSTANT bt2, 40 ; 2-es gomb-maszk (0100 0000) CONSTANT bt3, 20 ; 3-es gomb-maszk (0010 0000) CONSTANT bt4, 10 ; 4-es gomb-maszk (0001 0000) CONSTANT bt5, 08 ; 5-es gomb-maszk (0000 1000) CONSTANT btm, F8 ; Nyomógomb-maszk (1111 1000) ; Regiszter elnevezések: NAMEREG s0, w ; Munkaregiszter NAMEREG s1, tmp ; Segédregiszter ; Programtörzs: LOAD w, 00 ; A LED kijelzo törlése OUTPUT w, ld ; Hurok: INPUT w, bt ; A gombok állapotának beolvasása AND w, btm ; f1, f50, f1k eltüntetése LOAD tmp, w ; Tisztázott (fxy nélküli) gombállapotok elmentése XOR w, bt1 ; Az 1-es gomb van-e lenyomva (kizárólag)? JUMP Z, Gomb1 ; Ugrás, ha igen. LOAD w, tmp ; A munkaregiszter helyreállítása XOR w, bt2 ; Az 2-es gomb van-e lenyomva (kizárólag)? JUMP Z, Gomb2 ; Ugrás, ha igen. LOAD w, tmp ; A munkaregiszter helyreállítása XOR w, bt3 ; Az 3-as gomb van-e lenyomva (kizárólag)? JUMP Z, Gomb3 ; Ugrás, ha igen. LOAD w, tmp ; A munkaregiszter helyreállítása XOR w, bt4 ; Az 4-es gomb van-e lenyomva (kizárólag)? JUMP Z, Gomb4 ; Ugrás, ha igen. LOAD w, tmp ; A munkaregiszter helyreállítása XOR w, bt5 ; Az 5-ös gomb van-e lenyomva (kizárólag)? JUMP Z, Gomb5 ; Ugrás, ha igen. LOAD w, 00 ; Vagy nincs lenyomva gomb, vagy több gomb van lenyomva -> OUTPUT w, ld ; -> A LED kijelzo törlése. JUMP Hurok Gomb1: LOAD w, 01 ; A LED kijelzon: 1 (0000 0001) OUTPUT w, ld ; JUMP Hurok ; Vizsgálat kezdete elölrol. Gomb2: LOAD w, 02 ; A LED kijelzon: 2 (0000 0010) OUTPUT w, ld ; JUMP Hurok ; Vizsgálat kezdete elölrol. Gomb3: LOAD w, 03 ; A LED kijelzon: 3 (0000 0011) OUTPUT w, ld ; JUMP Hurok ; Vizsgálat kezdete elölrol. Gomb4: LOAD w, 04 ; A LED kijelzon: 4 (0000 0100) OUTPUT w, ld ; JUMP Hurok ; Vizsgálat kezdete elölrol. Gomb5: LOAD w, 05 ; A LED kijelzon: 5 (0000 0101) OUTPUT w, ld ; JUMP Hurok ; Vizsgálat kezdete elölrol. -------------------------------------------------------------------------------------