12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON

Hasonló dokumentumok
14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

A Picoblaze Core implementálása FPGA-ba

Hardver leíró nyelvek (HDL)

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Egyszerű RISC CPU tervezése

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Mérési jegyzőkönyv. az ötödik méréshez

Dr. Oniga István DIGITÁLIS TECHNIKA 9

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

Újrakonfigurálható eszközök

ISE makró (saját alkatrész) készítése

2. tartály tele S3 A tartály tele, ha: S3=1 I tartály tele S5 A tartály tele, ha: S5=1 I 0.4

DVR-812 VEZETÉK NÉLKÜLI DVR HASZNÁLATI ÚTMUTATÓ

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Bev Be e v z e e z t e ő t az ISE re r nds nds e z r e használatához

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

Az EuroProt készülékcsalád

KÖZGAZDASÁGI ALAPISMERETEK (ELMÉLETI GAZDASÁGTAN)

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

#Bevezetés Beállítások NA 3000 # 1.1.

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Napkollektor szabályozó. Tipikus felhasználási területek: Önálló- és félig elkülönített lakóépületekhez Kisebb társasházakhoz Kereskedelmi épületekhez

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

Kondenzátorvédelmi funkció feszültségváltós kettős csillagkapcsolású telepre

VLP-sorozatú lineáris labortápegység

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

TSZA-04/V. Rendszerismertető: Teljesítmény szabályzó automatika / vill

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

PROGRAMOZHATÓ LOGIKAI. Előadó: Dr. Oniga István

A Verilog HDL áttekintése

Pontosság. időalap hiba ± 1 digit. Max. bemeneti fesz.

ElMe 6. labor. Helyettesítő karakterisztikák: Valódi karakterisztika 1 pontosabb számításoknál 2 közelítő számításoknál 3 ideális esetben

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Jelalakvizsgálat oszcilloszkóppal

S7021 ADATGYŰJTŐ. 2-csatornás adatgyűjtő számláló és bináris bemenettel. Kezelési leírás

Líneáris függvények. Definíció: Az f(x) = mx + b alakú függvényeket, ahol m 0, m, b R elsfokú függvényeknek nevezzük.

Újrakonfigurálható eszközök

Tervezési módszerek programozható logikai eszközökkel

Használati útmutató. Tyredog TD-4000A (X-típus)

MS-ADTKIJ Kezelési útmutató

Újrakonfigurálható eszközök

FEDÉLZETI INERCIÁLIS ADATGYŰJTŐ RENDSZER ALKALMAZÁSA PILÓTA NÉLKÜLI REPÜLŐGÉPEKBEN BEVEZETÉS

Verilog HDL ismertető 4. hét : hét dia

Elektronikus dobókocka tervezési példa

VDP-808N VEZETÉK NÉLKÜLI DVR HASZNÁLATI ÚTMUTATÓ

Billenőkörök. Billenő körök

MÁOK Sm. Szervezete 7400 Kaposvár, Cseri major Utolsó frissítés: TÁVOKTATÁS. MS Excel táblába oszlop beszúrása

Használati útmutató. Digitális szobatermosztát THR840DEE Rev. A. THR840DEE-HU.indd :49

Billenőkörök. Mindezeket összefoglalva a bistabil multivibrátor az alábbi igazságtáblázattal jellemezhető: nem megen

SW-4836 ASI Changeover Controller

1. BEVEZETÉS A RENDSZER ELEMEI, ARCHITEKTÚRÁJA... 5

VERTESZ Fázisazonosító Felhasználói Leírás

A MiniRISC processzor

Programozható logikai vezérlõk

VHR-23 Regisztráló műszer Felhasználói leírás

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

HASZNÁLATI UTASÍTÁS. AC-610 digitális lakatfogó


1. Kombinációs hálózatok mérési gyakorlatai

Landis + Gyr Dialog. Z.x.D300/400 fogyasztásmérők. Kijelző kezelés

RAPTOR - primer áramnyomató rendszer


5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Fan-coil termosztátok LCD kijelzővel

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

MIKROÖKONÓMIA I. Készítette: K hegyi Gergely és Horn Dániel. Szakmai felel s: K hegyi Gergely június

Felhasználói kézikönyv. TB6560HQV3-T3 (V type) 3 tengelyes léptetőmotor vezérlő

Szakdolgozat. Balázs Ádám Kuk József

4. mérés Jelek és jelvezetékek vizsgálata

Digitális rendszerek tervezése FPGA áramkörökkel LOGSYS példa

Elektropneumatika. 3. előadás

Szobatermosztát nagyméretű LCD kijelzővel (nem programozható) Nagy méretű LCD kijelző Elemes tápellátás: 2 x Alkáli elem AA típusú, 1.

Verilog HDL ismertető

A PLÁ k programozhatóságát biztosító eszközök

Digitális kártyák vizsgálata TESTOMAT-C" mérőautomatán

HASZNÁLATI ÚTMUTATÓ. Version március

Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)

Sorompó kezelés mérlegműszerrel

Felhasználói kézikönyv

3. RADIOAKTÍV MINTÁK AKTIVITÁSÁNAK MEGHATÁROZÁSA

XXI. Országos Ajtonyi István Irányítástechnikai Programozó Verseny

Menü rendszer és használat:

Vigilec Mono. Egyfázisú szivattyú vezérlő és védelmi doboz. I. A csavarok eltávolítása után csúsztassuk felfelé az előlapot a felső állásba (A ábra)

Univerzális modul. RF-alapú univerzális modul - Maximum 2 helyiségcsoport előszabályozásához - Maximum 3-fokozatú szellőztetés szabályozásához

Új év nyitás ÉV NYITÁS ELŐTT KÉSZÍTSÜNK BIZTONSÁGI MENTÉST A CIN MAPPÁTÓL!

Átírás:

12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON 1

Az FPGA eszközök bemeneti jeleit gyakran mechanikai kapcsolókkal hozzuk létre. Használható váltókapcsoló, amely a nulla és az egyes logikai szintnek megfelelő értékek közül az egyiket továbbítja az FPGA adott kivezetésére vagy egyetlen érintkezővel épített kapcsoló, amely a tápfeszültséggel- és a felhúzó/lehúzó ellenállással definiált szintet az ellenkező logikai értékre húzza bekapcsoláskor. 2

Minden esetben számítanunk kell a mechanikai érintkező pergésére, ami abból áll, hogy a logikai szint, kapcsolás közben, nem egyszer módosul, hanem többször oda-vissza vált (ábra), mire megnyugszik. 3

A kapcsoló pergése sok esetben a digitális berendezés téves működéséhez vezet. Például, ha egy lefutó élre működő számláló bemenetére vezetjük a fenti jelet, az egy helyett hetet fog lépni. Ráadásul a pergés egyedi, nem ismétlődő jelenség, így a berendezés válasza is esetrőlesetre változó. Ilyesmi, természetesen, nem engedhető meg, a digitális berendezésektől hibátlan és ismételhető viselkedést várunk el. 4

Az alábbi példában olyan megoldást mutatunk be, amely a kapcsoló egy aktiválásakor / deaktiválásakor egy felfutó vagy lefutó élt hoz létre, figyelmen kívül hagyva az FPGA bemeneti jelének a kapcsoló okozta pergését. Ezt a feladatot mindjárt a jel fogadását követően kell megoldani, hogy a további fokozatok működése zavartalan legyen. 5

12.1. ÚJ PROJEKT LÉTREHOZÁSA Az új projekt létrehozása ugyanúgy történik, ahogy azt a 10.1 pontban láttuk. A beállítások ablakban (Project Settings) a korábban megnyitott projekt beállításai jelennek meg. Ha nem akarunk áttérni másik FPGA eszközre, akkor nem kell semmit igazítani a beállításokon. 6

12.2. FELADAT DEFINIÁLÁSA A Basys2 fejlesztőlapon négy nyomógomb található az alábbi bekötésben: 7

Ezek közül a BTN0 jelölésű nyomógombot fogjuk használni. Az R42 ellenálláson keresztül a VCC3V3 táp magas logikai szintre húzza a nyomógomb és az ellenállás közötti pontot. Az IC8A logikai inverter ilyenkor alacsony logikai szintet hoz létre, ezt a BTN0 bemenetre továbbítja. Az R29 ellenállás és a C63 kondenzátor aluláteresztő szűrőként viselkedik. 8

A gomb minden lenyomásakor egy belső decimális számlálónak egyet kell felfelé számlálnia, a tartalmat a DSP0 kijelzőn kell megjeleníteni. Pergésmentesítés nélkül a számláló össze-vissza számlálna, mert egy-egy gombnyomáskor egynél több (változó számú) impulzus érkezne a számláló bemenetére. 9

A pergésmentesítés megoldására számos javaslatot találunk a szakirodalomban. Az itt leírt megoldás digitális átlagolásnak felel meg. A nyomógombbal képzett bemeneti jelet az órajel minden felfutó élénél beolvassuk, összesen fél millió alkalommal egy kiértékeléshez. Tekintettel az 50 MHz-es órajelre, minden 10 ms-os intervallum végén történik egy kiértékelés. 10

Ha a beolvasott érték az adott órajel periódusban logikai egyes, eggyel növeljük egy belső számláló tartalmát, nulla esetére tartjuk az addig elért értéket. Ha az intervallum (10 ms) végén az átlagolást végző számláló tartalma 250.000 vagy annál nagyobb, tekinthető úgy, hogy a kapcsoló megnyugodott a magas logikai szinten, ill. közel van a megnyugváshoz. Kisebb tartalom esetén a logikai szintet alacsonynak nyilvánítjuk. A belső számláló tehát a gombnyomásokat számlálja. 11

12.3. TERV HDL LEÍRÁSA A pergésmentesítést végző egység és a decimális számláló Verilog nyelvi leírását alább láthatjuk. A leírás kezdetén deklaráljuk az adathordozókat, majd példányosítjuk az órajel modult. Ez esetben nem szükséges sem az órajel frekvenciájának növelése sem a csökkentése, ugyanakkor az egész terv egy órajel tartományban (domén) működhet, ami jelentősen egyszerűsíti a leírást. 12

A kijelző AN1, AN2, AN3 vezérlőjeleit egyesre kell állítani, hogy csak a jobb oldali kijelző legyen aktív, ezen kívánjuk megjeleníteni a számláló tartalmát (DSP0). Az első always eljárásban végezzük a szegmenseket meghajtó jelek (DSP0_To_Display) képzését a számláló pillanatnyi tartalma alapján. Nem szükséges ezt másodpercenként ötven milliószor végezni (ezt jelenti az érzékenységi listában a posedge Clk50MHz), ez adja a legegyszerűbb HDL leírást és szintetizálandó hálózatot. 13

Az első always eljárást követő deklarációk a második eljárásban szereplő adathordozókat deklarálják. A második always eljárás végzi a nyomógomb állapotának átlagolását. Az átlagolást 10ms-ig végezzük, remélve, hogy a kapcsoló pergése ennél gyorsabb, így az átlagolt jel monoton lesz (az egymás utáni értékek nem fognak le-fel ugrálni). 14

Az átlagolási periódust a cnt_10ms számláló határozza meg: 50MHz-es órajel mellett az 500.000-es modulusú számláló számlálási periódusa 10ms. Az átlagolás abból áll, hogy az említett periódus alatt megszámláljuk a nyomógombról érkező egyeseket. Ha ezek többségben vannak, úgy tekinthetjük, hogy a gomb meg lett nyomva (Btn0=1 b1). Ilyenkor (a Btn0 jel felfutó élénél) növelni kell eggyel a DSP0 számláló tartalmát. 15

module Pergesmentesites( output reg [7:0] DSP0_To_Display, output AN0, AN1, AN2, AN3, input ibtn0, input iclk50mhz); DCM_Module DCM_Module_inst(iClk50MHz,Clk50MHz); reg [3:0] DSP0 = 0; assign AN0 = 0; assign AN1 = 1'd1; assign AN2 = 1'd1; assign AN3 = 1'd1; 16

always@(posedge Clk50MHz) begin case(dsp0) 4'd0: DSP0_To_Display <= ~(8'b0011_1111); 4'd1: DSP0_To_Display <= ~(8'b0000_0110); 4'd2: DSP0_To_Display <= ~(8'b0101_1011); 4'd3: DSP0_To_Display <= ~(8'b0100_1111); 4'd4: DSP0_To_Display <= ~(8'b0110_0110); 4'd5: DSP0_To_Display <= ~(8'b0110_1101); 4'd6: DSP0_To_Display <= ~(8'b0111_1101); 4'd7: DSP0_To_Display <= ~(8'b0000_0111); 17

4'd8: DSP0_To_Display <= ~(8'b0111_1111); 4'd9: DSP0_To_Display <= ~(8'b0110_1111); endcase end reg [3:0] buf_btn0 = 0; reg [18:0] cnt_10ms = 0, Av_Btn0 = 0; reg Btn0 = 0, 18

Prev_Btn0 = 0; always@(posedge Clk50MHz) begin buf_btn0 <= {buf_btn0[2:0], ibtn0}; cnt_10ms <= cnt_10ms + 1'b1; if(cnt_10ms == 19'd500_000) 19

begin Av_Btn0 <= 0; Btn0 <= (Av_Btn0 >= 18'd250_000)? 1'b1 : 0; Prev_Btn0 <= Btn0; if({btn0, Prev_Btn0} == 2'b10) if(dsp0== 4'd9) DSP0 <= 0; else DSP0 <= DSP0 + 1'd1; end 20

else begin if(buf_btn0[3] == 1'b1) Av_Btn0 <= Av_Btn0 + buf _Btn0[3]; end end endmodule 21