„Laboratórium 1 - 11. Mérés: Programozható perifériák mérése” változatai közötti eltérés

Új oldal, tartalma: „{{GlobalTemplate|Villanyalap|LaborI11esMérés}} ==Fontos megjegyzés== '''Ez a mérés tavaly óta egészen más. Az ide föltett segédanyagoknak közük nincs hoz…”
 
Wachag (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
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]!