|
|
| 6. sor: |
6. sor: |
| '''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.''' | | '''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.''' |
|
| |
|
| | ==Érdeklődőknek== |
|
| |
|
| =====Többen jelezték hogy a Beugró kidolgozás 1. kérdésre rossz a válasz =====
| | Ha felkeltette az érdeklődésedet az FPGA programozás, ezeket a tárgyakat érdemes lehet hallgatni: |
| 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.
| |
|
| |
|
| | [http://www.mit.bme.hu/oktatas/targyak/vimim286 Logikai tervezés]: bővebben FPGA-ról, hardvertervezésről, perifériákról. |
|
| |
|
| ==A mérésről==
| | [http://www.mit.bme.hu/oktatas/targyak/vimim363 Mikrorendszerek tervezése]: mikroprocesszoros rendszerek tervezése FPGA-n belü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.
| | ==Házi feladatok== |
|
| |
|
| [http://www.mediatronix.com/pBlazeIDE.htm PicoBLaze-hez letöltés] | | Megváltozott, nincs információ róla. [http://wiki.test.sch.bme.hu/index.php?title=LaboRI_11._m%C3%A9r%C3%A9s&action=edit Írd meg te]! |
|
| |
|
| ==Ellenőrző kérdésekre a válaszok:==
| |
| Szilágyi Tamás ill. Nedi válaszai az [http://villany.sch.bme.hu/document.php?doc_id=9182 villanysite]-ról
| |
| <ol>
| |
| <li> 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.)
| |
| <li> 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.
| |
| <li> 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.
| |
| <li> 85,988s. (lásd előző)
| |
| <li> Csak a bemeneti nyomógombok vannak pergésmentesítve, ezért a kapcsolóknál lehetséges pergés.
| |
| <li> 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.
| |
| <li> 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.
| |
| <ul>
| |
| <li> 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.
| |
| <li> ha nincs engedélyezve a hardveres átvitelkezelés, akkor a CTS jel értéke közömbös.
| |
| </ul> Hatásuk akkor érvényesül, ha az adó gyorsabban ad, és így a lassú vevő túlcsordul.
| |
| <li>
| |
| <ul>
| |
| <li> sebesség (bps)
| |
| <li> 8N1 (adatbitek száma:8/7/6/5, paritás:nincs/van, stopbitek száma: 1,1.5,2)
| |
| <li> átvitelvezérlés (hardveres, szoftveres, nincs)
| |
| </ul>
| |
| <li> 100B = 800b, Byte-onként 1 stopbittel + 1 startbit 1000b. t = 1000/115200 s
| |
| <li> ??? 115200 bps vagy 19200 bps
| |
| <li> 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.
| |
| <li>
| |
| <ul>
| |
| <li> Standard Paralell Port
| |
| <ul>
| |
| <li> csak kimenő irányú adatátvitel
| |
| <li> egyetlen 8bites kimeneti adatregiszter
| |
| </ul>
| |
| <li> Extended Paralell Port
| |
| <ul>
| |
| <li> a cím és az adatkivitel mellett e paraméterek visszaolvasása is lehetséges
| |
| <li> 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).
| |
| </ul>
| |
| </ul>
| |
| <li>
| |
| <ul>
| |
| <li> Soros port: ~56 kbit/s
| |
| <li> EPP: ~2 Mbit/s
| |
| <li> USB 1.0,1.1: 12 Mbit/s
| |
| <li> USB 2.0: 480Mbit/s
| |
| <li> Firewire: 400Mbit/s
| |
| </ul>
| |
| <li> kb 40MIPS a segédlet szerint. Egy utasítás 2 órajel alatt megy végbe, tehát 25MIPS
| |
| <li> a Picoblaze processzor
| |
| <ul>
| |
| <li> memóriája 256B (programtár) és 16B univerzális regiszter
| |
| <li> I/O tartománya 256B (8bites I/O-busz)
| |
| <li> utasításcsoportjai: vezérlő, interrupt, logikai, aritmetikai, shiftelés/forgatás, I/O
| |
| <li> 8bites ALU, egyszintű INT, 15szintű stack
| |
| <li> beágyazott vezérlőként vagy oktatási célú processzorként használható
| |
| </ul>
| |
| <li> 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ő.
| |
| <li> 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.
| |
| <li> 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ő.
| |
| <li> 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.
| |
|
| |
| <li> 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.
| |
| </ol>
| |
|
| |
| ==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.
| |
|
| |
| <pre>
| |
| -------------------------------------------------------------------------------------
| |
| 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)
| |
| -------------------------------------------------------------------------------------
| |
| </pre>
| |
|
| |
| -- [[KissGergely|Ger******]] - 2007.10.08.
| |
|
| |
| ====2-es====
| |
| Itt van a 2. házi feladat is, ami tesztelve volt mérésen, és jó!
| |
|
| |
| <pre>
| |
| -------------------------------------------------------------------------------------
| |
| ; 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.
| |
| -------------------------------------------------------------------------------------
| |
| </pre>
| |
|
| |
|
| | ==A mérésről== |
|
| |
|
| [[Category:Villanyalap]] | | Megváltozott, nincs információ róla. [http://wiki.test.sch.bme.hu/index.php?title=LaboRI_11._m%C3%A9r%C3%A9s&action=edit Írd meg te]! |