26
BME-MIT FPGA labor Digitális technika (VIMIAA02) L aboratórium 10 BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Fehér Béla Raikovich Tamás, Fejér Attila BME MIT

BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Digitális technika (VIMIAA02)Laboratórium 10

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEMVILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR

MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK

Fehér BélaRaikovich Tamás, Fejér Attila

BME MIT

Page 2: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: A GPIO Periféria használata

1. A GPIO periféria tulajdonságai2. A GPIO vonalak használata3. Az LCD kijelző ismertetése4. Az LCD kijelző illesztése a GPIO perifériához5. Az LCD kijelző elemi parancs- és adatátviteli ciklusai

„bit-banging” programozott megvalósítással6. Az LCD kijelző inicializálása, alapvető üzemmódjai7. Az LCD kijelző használata karaktersorozatok

megjelenítésére

Page 3: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: A GPIO Periféria• A GPIO általános célú be-/kimeneti periféria• A mikroprocesszorok gyakran rendelkeznek ilyen

tetszőlegesen használható GPIO interfészekkel• Ez a funkció többnyire „másodlagos” kialakítású

– A mikroprocesszor valamelyik speciális interfészének kivezetését rendelték az adott lábhoz

– Ha azt nem használjuk, akkor lehet GPIO interfészként is használni a (maradék) lábat/lábakat

A MiniRISC esetén például• Az A bővítő csatlakozón:

– Az elsődleges interfész: VGA kimenet, PS/2 bemenet– A másodlagos interfész: GPIO_A[7:0], GPIO_C[4:0]

• A B bővítő csatlakozón:– Az elsődleges interfész: GPIO_B[7:0], GPIO_D[4:0]

Page 4: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: A GPIO PerifériaA GPIO általános célú be-/kimeneti perifériák kivezetései (elérhetősége)• Fizikailag az „A” és „B” bővítő csatlakozókon

jelennek meg, a rendszer tápfeszültségekkel együtt• Ez az általános felület, a processzor így ismeri • „A” csatlakozó: GPIO_A[7:0], GPIO_C[4:0]• „B” csatlakozó: GPIO_B[7:0], GPIO_D[4:0]

Page 5: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: A GPIO Periféria• A GPIO használatához a külső egységek ehhez a

fizikai és elektromos „szabványhoz” illeszkednek. • A laborban a következő külső

modulokat/eszközöket fogjuk használni: – LCD modul– Hőmérsékletmérő modul– Mikroszervo motor

• 3 eltérő egység, 3 eltérő jelkiosztás és interfész ill. funkció vezérlési követelmény, de mind a közös csatlakozón keresztül

• A GPIO rugalmassága lehetővé teszi a feladatok megoldását

Page 6: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: GPIO Periféria• A GPIO periféria használata 3 regiszteren keresztül

történik:– Adat kimeneti regiszter OUT[7:0] (visszaolvasható)

(az assemblerben ADO, CDO, BDO, DDO neveken)

– Adat bemeneti regiszter IN[7:0] (az assemblerben ADI, CDI, BDI, DDI neveken)

– Irányvezérlő regiszter DIR[7:0] (visszaolvasható)(az assemblerben ADR, CDR, BDR, DDR neveken)

Page 7: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: GPIO Periféria• A GPIO periféria használata:

– Párhuzamos módban, együtt vezérelve a 8 bitet– Függetlenül, bitenként megadva és használva az

egyes jeleket bemenetként/kimenetként • A GPIO perifériában az adatvonalak átviteli iránya

(bemenet/kimenet) programból, dinamikusan bitenként állítható (A DIR regiszterekbe (ADR/CDR/BDR/DDR) írt értékkel)

Page 8: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: GPIO Periféria• A GPIO periféria utasítás szinten programozható

– Az utasítás végrehajtási sebesség (187,5 ns) korlátozza a jelek leggyorsabb változtatási sebességét

– A GPIO lábakon tetszés szerinti protokoll/időzítési szekvencia lejátszható (maximum a fenti sebességgel)

– Ezt hívjuk „bit-banging” módnak, azaz a processzor a program által vezérelve, a megfelelő időzítéssel, dinamikusan változtatja a lábakon megjelenő kimeneti értékeket, illetve mintavételezi és beolvassa a bemeneti értékeket.

– Az időzítés persze nem mindig pontos, kisebb ingadozás, „jitter” felléphet, bár gondos programozással ez jól kézben tartható

Page 9: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10: GPIO Periféria• A GPIO periféria specialitása• Az INPUT mindig a GPIO lábon

lévő értéket mintavételezi• Ha ez egy bemenet, akkor a

külső jel értékét adja meg• Ha nincs jel csatlakoztatva, vagy nem aktív, akkor az R

lehúzó ellenállás egy „rezisztív (gyenge)” 0 szintet ad• Ha kimenetként használjuk, az INPUT akkor is a GPIO

lábat mintavételezi – Aktív, engedélyezett kimenetnél IN == OUT– De kikapcsolt kimenetnél ez nem feltétlenül igaz!!!!!

Page 10: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_1 Feladat: GPIO Periféria• Készítsünk programot, amelyben a GPIO lábak említett

tulajdonságát statikusan, a MiniRISC IDE környezetben lépésenkénti végrehajtást használva demonstrálhatjuk

• A program használja valamelyik GPIO perifériát– Figyelem: A GPIO_C[4:3] és a GPIO_D[4:3] lábak csak

bemeneti funkciót biztosítanak, tehát a feladat szempontjából nem használhatók

– A vizsgált kimenetet 0-ba állítva, majd a DIR regiszterrel letiltva (kikapcsolva)az IN regiszter 1 értéket mutat

– A szimulátor nem hiteles!

Page 11: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2 Feladat: Az LCD modul• Beágyazott rendszerekben gyakori periféria a

karakteres megjelenítést biztosító LCD kijelző• A LOGSYS LCD modul egy egyszerű, 2 soros, 8 karakteres

szöveges megjelenítést biztosító modul• A modul felhasználói útmutatója és dokumentációja a

logsys.mit.bme.hu/document oldalon elérhető• A kijelző modul HW csatlakozó

felülete közvetlenül illeszkedik a LOGSYS Spartan-3E kártya „A” jelű bővítő csatlakozójára

Page 12: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2 Feladat: Az LCD modul• Az LCD modul az „A” csatlakozó mindkét GPIO periféria

portját használja:– GPIO_A[7:0] 8 bites parancskódok és adatok– GPIO_C[4:0] a vezérlőjelek kiadásához, és az átviteli

ciklusok ütemezéséhez 3 jel• RS: Parancs/adat reg. kiválasztás• R/W: Olvasás/írás vezérlés • E: Engedélyező, ütemező jel

Page 13: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a Feladat: Az LCD modul• Az LCD modul adatátviteli protokollja a megfelelő

időzítési adatokkal R/W = 0 WRITE R/W = 1 READ

Page 14: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a Feladat: Az LCD modul• Az LCD modul parancs/adatátviteli protokoll előírásainak

értelmezése a parancs/adat kivitelhez• Indításkor beállítjuk az RS, R/W=0

vezérlőjeleket (E = 0 ezalatt)• Ezután engedélyezhetjük az adatvonalak

meghajtását és kiadhatjuk az új parancs/adat értékét• Ha tAS idő eltelt, aktiválhatjuk az E engedélyező jelet• A jel minimum tPWEH ideig magas szintű, ezután kikapcsolhatjuk.

Az adatvonalakat ekkor mintavételezi. • Ezután tDH idővel kikapcsolhatjuk az adatvonalak meghajtását (HiZ,

nagyimpedanciás állapot), tAH idővel kiadhatunk új vezérlő jeleket (RS, R/W), de az új ciklust csak a tCYC idő eltelte után indíthatjuk el!

– Összefoglalva: minden minimum korlátos időadatnak és az értelemszerű jelváltozási sorrendnek is teljesülnie kell!

Page 15: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a Feladat: Az LCD modul• Az LCD modul parancs/adatátviteli protokoll előírásainak

értelmezése a státusz/adat beolvasáshoz• Indításkor beállítjuk az RS, R/W=1

vezérlőjeleket (E = 0 ezalatt)• Az adatvonalak alapállapota bemenet• Ha tAS idő eltelt, aktiválhatjuk az E engedélyező jelet• Ezután maximum tDDR késleltetés után megjelenik az érvényes adat• Ha az E jel már minimum tPWEH ideig magas szintű, akkor

mintavételezhetjük az adatvonalakat és ezután E kikapcsolható.• Ezután tDHR idővel az érvényes adat megszűnik, az adatvonalak

meghajtása HiZ állapotú lesz. Hasonlóan tAH idő múlva kiadhatunk új vezérlő jeleket (RS, R/W), de az új ciklust csak a tCYC idő eltelte után indíthatjuk el!

– Összefoglalva: minden minimum korlátos időadatnak és az értelemszerű jelváltozási sorrendnek is teljesülnie kell!

Page 16: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a Feladat: Az LCD modul• Az LCD modul parancs/adatátviteli protokoll előírásainak

időbeli lefolyását a MiniRISC GPIO perifériájának megfelelő ütemezésű programozásával biztosítjuk– Mivel az utasítás végrehajtási idő, a leggyorsabb

jelváltási idő és a szükséges adatmozgatási adminisztráció együttes paraméterei az LCD modul időzítésénél hosszabb időket eredményeznek, a minimum időzítések szinte automatikusan teljesülnek.

– A jelváltások helyes sorrendjére, az adatvonalak vezérlési állapotára kell odafigyelnünk.

– A parancsok végrehajtási idejét a foglaltság jelzőbit lekérdezéses ellenőrzésével (Busy Flag) várhatjuk ki

Page 17: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a Feladat: Az LCD modul• Az eddigiek alapján készítsük el a két adatátviteli

programrészletet, amely a parancsok és adatok kiküldését végrehajtja. Mindkét átviteli mód a végrehajtás előtt várakozzon a foglaltság jelzés törlésére! Tehát 3 szubrutin készül!

• lcd_wait : Olvasás státusz/utasítás regiszterből parancs kiadása, 7. bit tesztelése (BF), várakozás, amíg nem 0

• lcd_sendcmd : lcd_wait meghívása, visszatérés után írás utasításregiszterbe vezérlés beállítása (RS = 0) , majd a parancs kiadása és érvényesítése az E jellel. Utána lezárás, adatkimenetek kikapcsolása

• lcd_senddata : ugyanaz az utasítássorozat, mint az lcd_sendcmd, csak az adatregiszterrel (RS = 1)

Page 18: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• Karaktersorozat megjelenítése az LCD modulon• A főprogram általános felépítése:

– Minden programblokk egy-egy szubrutin, a programblokkok további szubrutinokat hívnak meg

– Lekérdezéses perifériakezelés és programozott késleltetés/időzítés

LCD Inicializálás

Léptetés parancs kiadása

Szöveg kiírása

Page 19: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• Karaktersorozat megjelenítése az LCD modulon• Az inicializálás feladatai:

– Várakozás, amíg BF=1 (15 ms)– FUNCTION SET parancs

(N→2 soros mód, F→ON)– DISPLAY OFF kiadása– DISPLAY CLEAR kiadása– ENTRY MODE SET kiadása

(I/D→inkrement, SH→OFF)– DISPLAY ON kiadása

• Minden parancs után várakozás BF=0-ra

• Használjuk a segédletben megadott lcd_init szubrutint!

Page 20: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• Karaktersorozat megjelenítése az LCD modulon• Az inicializálás parancssorozat szubrutinja:

– A GPIO_A és GPIO_C interfészek felprogramozása– Az LCD modul alapbeállítási parancsok kiadása az

lcd_sendcmd szubrutin többszörös meghívásával

Page 21: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• Karaktersorozat megjelenítése az LCD modulon• A kiíró programrészlet szubrutinja:

– A null-karaktervégű sztring, mutató az r8 regiszterben– A karakterek kiírása az lcd_senddata szubrutinnal

Page 22: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• A kijelző képernyő időzített léptetéséhez 500ms

hosszú szoftveres időzítő szubrutin• A programozott várakozás a szokásos 24 bites

szoftveres számlálóval– A 3 db 8 bites regiszter {r10, r9, r8} törlése és 24

bites inkrementálása ciklusonként 25-el.

Page 23: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2b Feladat: Az LCD modul• Ha elkészültek a „saját készítésű” adatátviteli és

várakozó szubrutinok• lcd_sendcmd• lcd_senddata• lcd_wait

akkor a karaktersorozatot megjelenítő alkalmazáslefordítható és tesztelhető.

• Szerkesszük össze a teljes forráskódot és végezzünk teszt futtatást a kijelzővel.

Page 24: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a feladat: Az LCD modul rutinjai

• Amennyiben nem készültek el a saját készítésűadatátviteli szubrutinok, az alábbi megoldásokhasználhatók:

Page 25: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a feladat: Az LCD modul rutinjai

• Amennyiben nem készültek el a saját készítésűadatátviteli szubrutinok, az alábbi megoldásokhasználhatók:

Page 26: BUDAPESTI M G E V I K M I R T Digitális technika (VIMIAA02 ...home.mit.bme.hu/~rtamas/vimiaa02/labor/vimiaa02_lab10.pdf · bme-mit fpga labor digitális technika (vimiaa02) laboratórium

BME-MITFPGA labor

Lab10_2a feladat: Az LCD modul rutinjai

• Amennyiben nem készültek el a saját készítésűadatátviteli szubrutinok, az alábbi megoldásokhasználhatók: