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

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
 
(8 közbenső módosítás, amit 5 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
 +
{{Vissza|Laboratórium 1}}
 +
 
__TOC__
 
__TOC__
  
7. sor: 9. sor:
 
**UART paraméterei, sebesség, PARITÁS, melyik bit érkezik először, hány bitből áll egy adatátvitel (tipikus kérdés lehet, hogy mennyi időbe telik a neptun-kódod átvitele adott bitrátával, és start, stop és paritásbit számmal)
 
**UART paraméterei, sebesség, PARITÁS, melyik bit érkezik először, hány bitből áll egy adatátvitel (tipikus kérdés lehet, hogy mennyi időbe telik a neptun-kódod átvitele adott bitrátával, és start, stop és paritásbit számmal)
 
**SPI kommunikáció, SPI topológia (milyen vezetékek vannak master és slave közt)
 
**SPI kommunikáció, SPI topológia (milyen vezetékek vannak master és slave közt)
**Hőmérő modul hőmérséklet kimenetének átszámítása ember által kezelhetővé (NEM FELEJTJÜK LE AZ ELŐJELET!)
+
**Hőmérő modul hőmérséklet kimenetének átszámítása ember által kezelhetővé ('''Nem felejtjük le az előjelet!''')
 
*''' Tipikus beugró kérdések voltak: '''
 
*''' Tipikus beugró kérdések voltak: '''
 
**UART kommunikáció paraméterei
 
**UART kommunikáció paraméterei
22. sor: 24. sor:
  
 
== Házihoz segítség ==
 
== Házihoz segítség ==
 +
*[[Media:Labor1_mérés11_házi1_2013.pdf|Kidolgozott házi feladat]]
 +
 +
== Segédanyagok ==
 +
 +
* [[Media:idigit_verilog_utmutato.pdf | A Verilog nyelv részletesebb bemutatása]] - Az infósok első féléves digit tárgyához készült, de emészthetően leírja amit nekünk is tudni kell
 +
 +
=== Beugró kérdések kidolgozása: Ellenörző kérdések 2018 ===
 +
[[:File:Verilog beugrók.pdf| Nem hivatalos kidolgozás]]
 +
 +
'''''<span style="color: red"> Ezt a részt még aktualizálni kell. Nem biztos, hogy még mindig ezek a beugrókérdések! </span>'''''
 +
 +
'''1. Egyetlen ASCII karakter UART átvitele hány bit kiküldését jelenti a házi feladatban adott paraméterek esetén? Pontosan hogy épül fel ez a keret, milyen sorrendben kell kiküldeni a biteket?'''
 +
 +
Az UART adatátvitel specifikációja szerint: 1 start bit + 8 adatbit + 1 paritásbit + 1 stopbit, összesen tehát 11 bit / 1db ASCII karakter.
 +
 +
'''2. Hogy kapjuk meg egy 4 bites BCD számjegy 8 bites ASCII kódját? Mit mutat a paritásbit, milyen hardver elemmel számítható a legegyszerűbben, ha az összes adatbit rendelkezésre áll? Páros paritás esetén milyen paritás érték tartozik az ABh adathoz?'''
 +
 +
*Az ASCII szabvány szerint egy „x” számjegy ASCII kódja 3xh alakban áll elő, pl. a 9-es számjegynek az ASCII kódja 39h = 0011.1001b.
 +
*A paritásbitet arra használjuk, hogy egy bináris számot úgy egészítsünk ki vele, hogy az vagy páros darab, vagy páratlan darab 1-est tartalmazzon. A gyakorlatban ezt hibaészlelésre használjuk.
 +
*A paritás legegyszerűbben XOR kapuk segítségével határozható meg.
 +
*ABh = 1010.1011b, mivel a bináris alak páratlan darab 1-est tartalmaz, így a paritásbit értéke 1-es lesz.
 +
 +
'''3. Ha a rendszer órajele 16 MHz, mekkora a házi feladatként létrehozott UART modul sebességének hibája százalékosan kifejezve, a specifikált értékhez képest? Okozhat-e ez problémát? (Válaszát indokolja!)'''
 +
 +
Az UART modul rate generátorjának előállításához számlálós osztót alkalmazunk. A számlálós osztó működési elve, hogy ismerve a referencia órajelet, és ismerve a kívánt órajelet, a kettő hányadosának egészre kerekített nagyságával egyező méretű (vagy nagyobb) regisztert hozunk létre, melynek értékét minden egyes felfutó élkor növeljük eggyel. Ha a regiszter eléri a kerekített hányados értékét, akkor 1-es logikai szintű jelet adunk ki. Ez lesz a leosztott rate generátor felfutó éle.
 +
Lássuk, mekkora hibát okoz a fent említett hányados kerekítése!
 +
A számláló optimális mérete: 16Mhz⁄(57600Hz=277,77…)
 +
Mivel csak egész számokat tudunk a számlálóval számolni, így a kerekített érték 278.
 +
Ezt visszaváltva frekvenciába: 16Mhz⁄(278=57553,3957Hz)
 +
A két frekvencia közötti bitidő eltérés: 1/57553,3957-1/57600=14.058ns
 +
 +
Ahhoz, hogy az adatkeret átvitele hibátlan legyen, a stop bit 16 mintavételi pontjából a 8-as és 9-es mintavételi időpontok még ténylegesen a stop bitből kell, hogy mintát vegyenek. Ebből és a bitidőből kiszámolhatjuk, hogy mekkora lehet egy keret esetén a maximális hibánk:
 +
A maximális hiba / keret: Bitidő×9/16=1/57553,3957×9/16=9,7735μs
 +
 +
Ebből a maximális hiba / bitidő, 11 bit átvitele esetén: 9.7735μs/11=888,503ns
 +
 +
A számlálónál tett kerekítésből adódó frekvenciahibából adódó bithiba, és a maximálisan megengedett bithiba aránya százalékosan kifejezve:
 +
 +
(számláló kerekítése miatti bithiba)/(maximálisan megengedett bithibas)=14,058ns/888,503ns×100=1.5822%
 +
 +
Ez, ha a vevő fél hibája 0%, akkor a specifikáció által ajánlott 2%-os hibahatáron belül van. (A specifikáció az adó és a vevő, nem pedig az adó és a clk közötti frekvenciahibához köti a hibahatárt) 
 +
 +
'''4. Egy 115200 b/s, 8N1 beállítású UART átvitel esetén mekkora eltérés engedhető meg az adó és a vevő bitidejében, ha sikeres átvitelt szeretnénk?'''
 +
 +
A vevőnek elvileg bitidőnként, a bitidő közepén kellene mintavételezni az adatokat. Mivel az adó és a vevő frekvenciája kicsit eltér, ezért ez nem teljesül. Ha a hiba 1 bitidő alatt dt (delay time), akkor ez az N-edik bit mintavételezésekor N*dt-re nő, ami akkor okoz hibát, ha a legutolsó bitnél eléri a bitidő határát. Mivel a mintavételezés a bitidő közepén kezdődik, ezért N*dt < T/2-nek teljesülni kell (minden START bitnél újra szinkronizálódik a vevő).
 +
Mindez számokkal: 8N1 beállításból tudjuk, hogy 1 Start bit + 8 Adat bit + 1 Stop bit == 10 bitet kell átküldeni. (N = 10)
 +
115200 b/s : 115200 bit megy át másodpercenként -> 1 bit: 1/115200 => 8.68 us.
 +
Képletbe behelyettesítve:
 +
10 * dt < 8.68/2
 +
dt < 0.434 us
 +
(0.434/8.86)*100 = 5% eltérés.
 +
Megj.: Sebességtől független, csak beállítástól függ, hiszen x bit/s esetén: t= 1/x, n db dt<1/x/2 ahol n a bitek száma, dt delay time, dt < 1/x/2/n. dt/t = (1/x/2/n)/(1/x)=1/2n 8N1 esetén n=10, így dt/t= 0,05 ami 5 %.
 +
 +
'''5. A házi feladatként megvalósított UART adóval minimum mennyi időbe telne a neptun kódjának elküldése?'''
 +
 +
Neptun kód 6 karakter, ennek elküldése 4800bps 8O1 (1 startbit, 8 adabit, páratlan paritás, 1 stopbit) esetén: (6*11bit)/(4800bit/s)=13,75ms
 +
 +
'''6. Egy 100 byte méretű fájl átvitele aszinkron soros csatornán 115200 bps sebesség mellett 8N1 (8 bit adat, nincs paritás, 1 STOP bit) formátumban minimum menyi ideig tart?'''
 +
 +
100 byte = 800 bit, byte-onként 1 stopbit ÉS EGY START BIT = 200 bit, összesen 1000 bit, 115200 bit/sec sebességgel ez 1000bit/(115200bit/s)=8,68 ms alatt megy át
 +
 +
'''7. A megismert soros adatátviteli módszerek közül melyiknél nem szükséges az órajelet is továbbítani?'''
 +
 +
Az UART-nál, ott az adategységek azonosítása a lokális rendszerórák használatán alapul.
 +
 +
'''8. Miért nem könnyű néhány Mbit/s sebességet elérni az UART típusú átvitelnél?'''
 +
 +
Nem igényel külön dedikált órajelvezetéket, ez korlátozza az elérhető maximális sebességet.
 +
 +
'''9. Melyik soros adatátviteli mód nem támogatja busz kialakítását?'''
 +
 +
Az UART, mivel ott a kapcsolat pont-pont típusú. (pl. számítógép-modem, számítógép-terminál)
 +
 +
'''10. Milyen átviteli paraméterek állíthatók be a PC soros kommunikációs csatornáin?'''
 +
 +
bit/sec, adatbitek, paritás, stopbitek, átvitelvezérlés
 +
 +
'''11. Hasonlítsa össze sebesség szerint a soros adatátviteli módokat!'''
 +
 +
SPI 10 Mbit/sec > I²C 3400 Kbit/sec > UART 115 Kbit/sec
 +
 +
'''12. Mi alapján osztályozódik az SPI 4 átviteli módja?'''
 +
 +
Az adatok kiléptetése és a beérkezett adatok mintavételezése az órajel egymással ellentétes éleire történik. Ennek megfelelően, továbbá figyelembe véve az órajel kiindulási nyugalmi értékét is, alapvetően 4 fajta SPI átviteli ciklus definiálható.
 +
 +
'''13. Hány vezeték kell 4 periféria SPI buszon történő használatához?'''
 +
 +
3+4 = 7 vezeték, mivel SPI esetén 3 + n kell, ahol n a perifériák száma. MISO, MOSI, SCK, SSn (n=0,1,2,3)
 +
 +
'''14. Írja fel a -42h értéket 2-es komplemens bináris formában 8 biten ábrázolva!'''
  
== Beugró kérdések kidolgozása ==
+
42h: 0100 0010
 +
Negáljuk: 1011 1101
 +
Hozzáadunk 1-t: 1011 1110  -42h
  
 
== Érdeklődőknek ==
 
== Érdeklődőknek ==
32. sor: 126. sor:
 
*[http://www.mit.bme.hu/oktatas/targyak/vimim363 Mikrorendszerek tervezése]: mikroprocesszoros rendszerek tervezése FPGA-n belül.
 
*[http://www.mit.bme.hu/oktatas/targyak/vimim363 Mikrorendszerek tervezése]: mikroprocesszoros rendszerek tervezése FPGA-n belül.
  
[[Category:Villanyalap]]
+
[[Kategória:Villamosmérnök]]

A lap jelenlegi, 2023. január 19., 16:49-kori változata

← Vissza az előző oldalra – Laboratórium 1

A mérésről

  • Megismerkedtetek egy nehezebben érthető blokkvázlattal, és néhány soros kommunikációval: UART, SPI.
  • Előkészületkor megtanultátok:
    • UART paraméterei, sebesség, PARITÁS, melyik bit érkezik először, hány bitből áll egy adatátvitel (tipikus kérdés lehet, hogy mennyi időbe telik a neptun-kódod átvitele adott bitrátával, és start, stop és paritásbit számmal)
    • SPI kommunikáció, SPI topológia (milyen vezetékek vannak master és slave közt)
    • Hőmérő modul hőmérséklet kimenetének átszámítása ember által kezelhetővé (Nem felejtjük le az előjelet!)
  • Tipikus beugró kérdések voltak:
    • UART kommunikáció paraméterei
    • SPI topológiája
    • Adott UART hullámforma milyen adatot vitt át <--- felcserélitek a bitsorrendet
    • !!!!Verilog kód alapján kiegészíteni hullámformát!!!! <-- ezzel sokatoknak baja szokott lenni
    • Hőmérő modul <--- itt lefelejtitek az előjelet
  • Mérésen megtanultátok: - Blokkvázlat megvalósítása:
    • SCLK előállítása (nem keveritek sem a rategen modullal, sem a testbench órajellel, ez egy harmadik dolog)
    • kommunikáció ütemezése
    • stabil kimenet létrehozása
    • kettes komplemens képzése
    • elméleti kérdések (írható-e egy regiszter több always blokkból, stb.)

Házihoz segítség

Segédanyagok

Beugró kérdések kidolgozása: Ellenörző kérdések 2018

Nem hivatalos kidolgozás

Ezt a részt még aktualizálni kell. Nem biztos, hogy még mindig ezek a beugrókérdések!

1. Egyetlen ASCII karakter UART átvitele hány bit kiküldését jelenti a házi feladatban adott paraméterek esetén? Pontosan hogy épül fel ez a keret, milyen sorrendben kell kiküldeni a biteket?

Az UART adatátvitel specifikációja szerint: 1 start bit + 8 adatbit + 1 paritásbit + 1 stopbit, összesen tehát 11 bit / 1db ASCII karakter.

2. Hogy kapjuk meg egy 4 bites BCD számjegy 8 bites ASCII kódját? Mit mutat a paritásbit, milyen hardver elemmel számítható a legegyszerűbben, ha az összes adatbit rendelkezésre áll? Páros paritás esetén milyen paritás érték tartozik az ABh adathoz?

  • Az ASCII szabvány szerint egy „x” számjegy ASCII kódja 3xh alakban áll elő, pl. a 9-es számjegynek az ASCII kódja 39h = 0011.1001b.
  • A paritásbitet arra használjuk, hogy egy bináris számot úgy egészítsünk ki vele, hogy az vagy páros darab, vagy páratlan darab 1-est tartalmazzon. A gyakorlatban ezt hibaészlelésre használjuk.
  • A paritás legegyszerűbben XOR kapuk segítségével határozható meg.
  • ABh = 1010.1011b, mivel a bináris alak páratlan darab 1-est tartalmaz, így a paritásbit értéke 1-es lesz.

3. Ha a rendszer órajele 16 MHz, mekkora a házi feladatként létrehozott UART modul sebességének hibája százalékosan kifejezve, a specifikált értékhez képest? Okozhat-e ez problémát? (Válaszát indokolja!)

Az UART modul rate generátorjának előállításához számlálós osztót alkalmazunk. A számlálós osztó működési elve, hogy ismerve a referencia órajelet, és ismerve a kívánt órajelet, a kettő hányadosának egészre kerekített nagyságával egyező méretű (vagy nagyobb) regisztert hozunk létre, melynek értékét minden egyes felfutó élkor növeljük eggyel. Ha a regiszter eléri a kerekített hányados értékét, akkor 1-es logikai szintű jelet adunk ki. Ez lesz a leosztott rate generátor felfutó éle. Lássuk, mekkora hibát okoz a fent említett hányados kerekítése! A számláló optimális mérete: 16Mhz⁄(57600Hz=277,77…) Mivel csak egész számokat tudunk a számlálóval számolni, így a kerekített érték 278. Ezt visszaváltva frekvenciába: 16Mhz⁄(278=57553,3957Hz) A két frekvencia közötti bitidő eltérés: 1/57553,3957-1/57600=14.058ns

Ahhoz, hogy az adatkeret átvitele hibátlan legyen, a stop bit 16 mintavételi pontjából a 8-as és 9-es mintavételi időpontok még ténylegesen a stop bitből kell, hogy mintát vegyenek. Ebből és a bitidőből kiszámolhatjuk, hogy mekkora lehet egy keret esetén a maximális hibánk: A maximális hiba / keret: Bitidő×9/16=1/57553,3957×9/16=9,7735μs

Ebből a maximális hiba / bitidő, 11 bit átvitele esetén: 9.7735μs/11=888,503ns

A számlálónál tett kerekítésből adódó frekvenciahibából adódó bithiba, és a maximálisan megengedett bithiba aránya százalékosan kifejezve:

(számláló kerekítése miatti bithiba)/(maximálisan megengedett bithibas)=14,058ns/888,503ns×100=1.5822%

Ez, ha a vevő fél hibája 0%, akkor a specifikáció által ajánlott 2%-os hibahatáron belül van. (A specifikáció az adó és a vevő, nem pedig az adó és a clk közötti frekvenciahibához köti a hibahatárt) 

4. Egy 115200 b/s, 8N1 beállítású UART átvitel esetén mekkora eltérés engedhető meg az adó és a vevő bitidejében, ha sikeres átvitelt szeretnénk?

A vevőnek elvileg bitidőnként, a bitidő közepén kellene mintavételezni az adatokat. Mivel az adó és a vevő frekvenciája kicsit eltér, ezért ez nem teljesül. Ha a hiba 1 bitidő alatt dt (delay time), akkor ez az N-edik bit mintavételezésekor N*dt-re nő, ami akkor okoz hibát, ha a legutolsó bitnél eléri a bitidő határát. Mivel a mintavételezés a bitidő közepén kezdődik, ezért N*dt < T/2-nek teljesülni kell (minden START bitnél újra szinkronizálódik a vevő). Mindez számokkal: 8N1 beállításból tudjuk, hogy 1 Start bit + 8 Adat bit + 1 Stop bit == 10 bitet kell átküldeni. (N = 10) 115200 b/s : 115200 bit megy át másodpercenként -> 1 bit: 1/115200 => 8.68 us. Képletbe behelyettesítve:

10 * dt < 8.68/2
dt < 0.434 us 
(0.434/8.86)*100 = 5% eltérés. 

Megj.: Sebességtől független, csak beállítástól függ, hiszen x bit/s esetén: t= 1/x, n db dt<1/x/2 ahol n a bitek száma, dt delay time, dt < 1/x/2/n. dt/t = (1/x/2/n)/(1/x)=1/2n 8N1 esetén n=10, így dt/t= 0,05 ami 5 %.

5. A házi feladatként megvalósított UART adóval minimum mennyi időbe telne a neptun kódjának elküldése?

Neptun kód 6 karakter, ennek elküldése 4800bps 8O1 (1 startbit, 8 adabit, páratlan paritás, 1 stopbit) esetén: (6*11bit)/(4800bit/s)=13,75ms

6. Egy 100 byte méretű fájl átvitele aszinkron soros csatornán 115200 bps sebesség mellett 8N1 (8 bit adat, nincs paritás, 1 STOP bit) formátumban minimum menyi ideig tart?

100 byte = 800 bit, byte-onként 1 stopbit ÉS EGY START BIT = 200 bit, összesen 1000 bit, 115200 bit/sec sebességgel ez 1000bit/(115200bit/s)=8,68 ms alatt megy át

7. A megismert soros adatátviteli módszerek közül melyiknél nem szükséges az órajelet is továbbítani?

Az UART-nál, ott az adategységek azonosítása a lokális rendszerórák használatán alapul.

8. Miért nem könnyű néhány Mbit/s sebességet elérni az UART típusú átvitelnél?

Nem igényel külön dedikált órajelvezetéket, ez korlátozza az elérhető maximális sebességet.

9. Melyik soros adatátviteli mód nem támogatja busz kialakítását?

Az UART, mivel ott a kapcsolat pont-pont típusú. (pl. számítógép-modem, számítógép-terminál)

10. Milyen átviteli paraméterek állíthatók be a PC soros kommunikációs csatornáin?

bit/sec, adatbitek, paritás, stopbitek, átvitelvezérlés

11. Hasonlítsa össze sebesség szerint a soros adatátviteli módokat!

SPI 10 Mbit/sec > I²C 3400 Kbit/sec > UART 115 Kbit/sec

12. Mi alapján osztályozódik az SPI 4 átviteli módja?

Az adatok kiléptetése és a beérkezett adatok mintavételezése az órajel egymással ellentétes éleire történik. Ennek megfelelően, továbbá figyelembe véve az órajel kiindulási nyugalmi értékét is, alapvetően 4 fajta SPI átviteli ciklus definiálható.

13. Hány vezeték kell 4 periféria SPI buszon történő használatához?

3+4 = 7 vezeték, mivel SPI esetén 3 + n kell, ahol n a perifériák száma. MISO, MOSI, SCK, SSn (n=0,1,2,3)

14. Írja fel a -42h értéket 2-es komplemens bináris formában 8 biten ábrázolva!

42h: 		0100 0010
Negáljuk: 	1011 1101
Hozzáadunk 1-t:	1011 1110  -42h

Érdeklődőknek

Ha felkeltette az érdeklődésedet az FPGA programozás, ezeket a tárgyakat érdemes lehet hallgatni: