Újrakonfigurálható eszközök

Hasonló dokumentumok
Újrakonfigurálható eszközök

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

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Elektronikus dobókocka tervezési példa

LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.

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

Újrakonfigurálható eszközök

Digitális elektronika gyakorlat

Újrakonfigurálható eszközök

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 2. rész

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

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

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

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 3. rész

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

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

Beágyazott és Ambiens Rendszerek Laboratórium BMEVIMIA350. Mérési feladatok az 1., 2. és 3. mérési alkalomhoz

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

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 4. rész

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

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Egyszerű RISC CPU tervezése

Digitális technika (VIMIAA02) Laboratórium 5.5

Hardver leíró nyelvek (HDL)

Programozási segédlet DS89C450 Fejlesztőpanelhez

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

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

Digitális technika (VIMIAA01) Laboratórium 4

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

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

Bevezetés az elektronikába

EB134 Komplex digitális áramkörök vizsgálata

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

Bevezetés az elektronikába

Digitális technika (VIMIAA02) Laboratórium 4

DIGITÁLIS TECHNIKA 8 Dr Oniga. I stván István

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA02) Laboratórium 4

7.hét: A sorrendi hálózatok elemei II.

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.

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

Digitális technika (VIMIAA01) Laboratórium 9

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

3. Hőmérők elkészítése

2008. október 9. Verzió

MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel

Az MSP430 mikrovezérlők digitális I/O programozása

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 1. rész

Digitális technika VIMIAA01 5. hét

Számlálók, adatfeldolgozó egységek

Verilog ismertető (Szántó Péter, BME MIT, )

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Digitális technika VIMIAA01 5. hét Fehér Béla BME MIT

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

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

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

10. Digitális tároló áramkörök

LOGSYS DIGITÁLIS VIDEO INTERFÉSZ MEGVALÓSÍTÁSA A LOGSYS KINTEX-7 FPGA KÁRTYÁVAL június 16. Verzió 1.0.

M-Bus Master MultiPort 250D/L

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

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

DIGITÁLIS TECHNIKA I

A Picoblaze Core implementálása FPGA-ba

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

Verilog HDL ismertető 2. hét : 1. hét dia

ARM Cortex-M0+ mikrovezérlő programozása KEIL MDK 5 környezetben. 11. Impulzus-szélesség moduláció (PWM)

A Verilog HDL áttekintése

Újrakonfigurálható eszközök

Labor 2 Mikrovezérlők

Mechatronika, robottechnika és mikroszámítógépek, I. ZH, NÉV: október 20. 8:15-10:00, ST122 NEPTUN KÓD:...

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

Digitális technika VIMIAA02

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Digitális technika VIMIAA02

2) Tervezzen Stibitz kód szerint működő, aszinkron decimális előre számlálót! A megvalósításához

Szántó Péter BME Méréstechnika és Információs Rendszerek Tanszék, FPGA Labor

Digitális technika Laboratórium 6.

Digitális technika VIMIAA hét

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

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

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

Szekvenciális hálózatok Állapotdiagram

DIGITÁLIS TECHNIKA II

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

Digitális technika VIMIAA hét

Ismerkedés az MSP430 mikrovezérlőkkel

2.3. Soros adatkommunikációs rendszerek CAN (Harmadik rész alapfogalmak II.)

CAESAR CT-401-típ. autóriasztó + rablásgátló

Programozott soros szinkron adatátvitel

Átírás:

Újrakonfigurálható eszközök 4. Verilog példaprogramok EPM240-hez Hobbielektronika csoport 2017/2018 1 Debreceni Megtestesülés Plébánia

Tartalom C-M240 fejlesztői kártya, felhasznált kivezetések 15-fdiv-LED: LED villogtatás frekvencia leosztással 16-fdiv-div: Két LED villogtatása frekvencia-osztással Project05: LED futófény Project06: Gombok és számkijelzés Project07: Bináris számláló Project08: 8-bites léptetőregiszter Hobbielektronika csoport 2017/2018 2 Debreceni Megtestesülés Plébánia

C-M240 fejlesztői kártya Gyártó: Shenzhen 21EDA Electronic Technology CPLD: Altera MAX II EPM240T100C5N Órajel: 50 MHz VDD: 3,3 V Perifériák: 8-digit kijelző, 8 LED, 4 +1 nyomógomb, 1 csipogó Fejlesztői környezet: ALTERA QUARTUS Prime (Intel FPGA) Hobbielektronika csoport 2017/2018 3 Debreceni Megtestesülés Plébánia

C-M240 felhasznált kivezetések Bemenetek CLK_50M az órajel bemenet DEV_CLK a reset gomb CLK_50M input PIN_12 K1 gomb input PIN_29 K2 gomb input PIN_28 K3 gomb input PIN_27 K4 gomb input PIN_26 DEV_CLK input PIN_44 Kimenetek BELL output PIN_50 D30 LED8 output PIN_51 D31 LED7 output PIN_52 D32 LED6 output PIN_53 D33 LED5 output PIN_54 D34 LED4 output PIN_55 D35 LED3 output PIN_56 D36 LED2 output PIN_57 D37 LED1 output PIN_58 Hobbielektronika csoport 2017/2018 4 Debreceni Megtestesülés Plébánia

C-M240 felhasznált kivezetések Számjegyek DIGIT1 (jobb szélső) output PIN_86 DIGIT2 output PIN_87 DIGIT3 output PIN_96 DIGIT4 output PIN_89 DIGIT5 output PIN_97 DIGIT6 output PIN_91 DIGIT7 output PIN_92 Szegmensek DATA0 output PIN_85 A DATA1 output PIN_84 B DATA2 output PIN_83 C DATA3 output PIN_82 D DATA4 output PIN_81 E DATA5 output PIN_78 F DATA6 output PIN_77 G DIGIT8 (bal szélső) output PIN_95 DATA7 output PIN_76 DP Hobbielektronika csoport 2017/2018 5 Debreceni Megtestesülés Plébánia

LED villogtatás frekvencia leosztással Projekt: 15-fdiv-LED // Egy frekvenciaosztót használunk a D37 LED (pin 58) villogtatásához module ledwater (clk_50m, led_out); input clk_50m; // 50MHz-es órajel (pin 12 bemenet) output led_out; // LED (pin 58 kimenet) reg [24: 0] count; // 25,000,000-szoros osztó reg div_clk; // a leosztott órajel reg led_out; // LED kimenet always @ (posedge clk_50m) if (count == 25000000) // 25,000,000 ciklust számlál div_clk <= ~div_clk; // 0.5 s periodusidő (2 Hz). count <= 0; // számláló törlése else count <= count + 1; // számláló léptetése led_out <= div_clk; // másodpercenként felvillan a LED module 50 PIN_12 PIN_58 MHz 1 : 25 000 000 osztó Vcc Hobbielektronika csoport 2017/2018 6 Debreceni Megtestesülés Plébánia D37 R37

Két LED villogtatása frekvencia-osztással Az előző projektet kibővítjük egy második számlálóval, melynek kimenete 4 Hz-en ketyeg. Ezzel egy másik LED-et villogtatunk. module ledwater (clk_50m,led_out,f_led_out); Projekt: 16-fdiv-div input clk_50m; output led_out; output f_led_out; reg [24: 0] count; reg [24: 0] f_count; reg div_clk, f_div_clk; reg led_out, f_led_out; // 50MHz-es órajel (pin 12 bemenet) // LED2 (pin 57 kimenet) // LED1 (pin 58 kimenet) // 25,000,000-szoros osztó // 12,500,000-szoros osztó // A leosztott órajelek // LED kimenetek // A count frekvenciaosztót használjuk a D36 LED (pin 57) villogtatásához always @ (posedge clk_50m) if (count == 25000000) // 25,000,000 ciklust számlál div_clk <= ~div_clk; // 0.5 s periodusidő (2 Hz). count <= 0; else count <= count + 1; led_out <= div_clk; // számláló törlése // számláló léptetése // másodpercenként felvillan LED2 Hobbielektronika csoport 2017/2018 7 Debreceni Megtestesülés Plébánia

Két LED villogtatása frekvencia-osztással Az előző projektet kibővítjük egy második számlálóval, melynek kimenete 4 Hz-en ketyeg. Ezzel egy másik LED-et villogtatunk. Projekt: 16-fdiv-div // Az f_count frekvenciaosztót használjuk a D37 LED (pin 58) villogtatásához always @ ( posedge clk_50m ) if ( f_count==12500000 ) // 12,5000,000 ciklust számlál f_div_clk<=~f_div_clk; // 0.25 s periódusidő (4 Hz). f_count<=0; else f_count<=f_count+1; // számláló léptetése f_led_out<=f_div_clk; // félmásodpercenként felvillan LED1 module Hobbielektronika csoport 2017/2018 8 Debreceni Megtestesülés Plébánia

Project05: LED futófény Az alábbi projektben a C-M240 kártya 8 db LED-jén állítunk elő oda-vissza pásztázó futófényt. Ebben is van frekvenciaosztó, csak másképp használjuk. Az 50 MHz-es rszer órajelet egy 26 bites számlálóval leosztjuk, melynek felső 4 bitje vezérli a kijelzés ütemeit (0 15. ütem). // LED chaser 8 db LED felhasználásával // Az effekteket egy frekvenciaosztó segítségével ütemezzük module chaser (clk_50m, dataout); input clk_50m; // 50MHz rszeróra bemenet (pin 12) output [7: 0] dataout; // a 8 db LED kimenet (pins 51 reg [7: 0] dataout; reg [25: 0] count; // Frekvenciaosztó számláló regisztere // Számláló léptetése always @ (posedge clk_50m) count <= count + 1; Hobbielektronika csoport 2017/2018 9 Debreceni Megtestesülés Plébánia

Project05: LED futófény always @ (posedge clk_50m) case (count [25:22]) // count[25:22] a számláló legfelső 4 bitje, // ez az ütemezés kulcsa T = 2^27/50 000 000 s // Egyidejűleg csak egy LED világít 0: dataout <= 8'b11111110; 1: dataout <= 8'b11111101; 2: dataout <= 8'b11111011; 3: dataout <= 8'b11110111; 4: dataout <= 8'b11101111; 5: dataout <= 8'b11011111; 6: dataout <= 8'b10111111; 7: dataout <= 8'b01111111; 8: dataout <= 8'b01111111; 9: dataout <= 8'b10111111; 10: dataout <= 8'b11011111; 11: dataout <= 8'b11101111; 12: dataout <= 8'b11110111; 13: dataout <= 8'b11111011; 14: dataout <= 8'b11111101; 15: dataout <= 8'b11111110; case module Felhasznált kivezetések clk_50m Pin 12 LED D37 Pin 58 LED D36 Pin 57 LED D35 Pin 56 LED D34 Pin 55 LED D33 Pin 54 LED D32 Pin 53 LED D31 Pin 52 LED D30 Pin 51 Hobbielektronika csoport 2017/2018 10 Debreceni Megtestesülés Plébánia

Project06: gombok és a számkijelzés Az alábbi projektben a lenyomot nyomógomb sorszámát íratjuk ki a C-M240 kártya 7-szegmenses számkijelzőjén. A kiírás a nyomógomb sorszámának megfelelő helyiértéken történik (jobb szélről kezdve). A nyomógombok pergésmentesítése azáltal megy végbe, hogy csak a tiszta lenyomások jelentenek eseményt, a felengedések és az együtes lenyomások nem. Bemenetek: clock_50mhz Pin 12 K1 Pin 29 K2 Pin 28 K3 Pin 27 K4 Pin 26 Kimenetek: Seg A Pin 85 Digit 1 Pin 86 Seg B Pin 84 Digit 2 Pin 87 Seg C Pin 83 Digit 3 Pin 96 Seg D Pin 82 Digit 4 Pin 89 Seg E Pin 81 Digit 5 Pin 97 Seg F Pin 78 Digit 6 Pin 91 Seg G Pin 77 Digit 7 Pin 92 DP Pin 76 Digit 8 Pin 95 Hobbielektronika csoport 2017/2018 11 Debreceni Megtestesülés Plébánia

Project06: gombok és a számkijelzés module project06(clk_50m,key,segment,digit); input clk_50m; // 50MHz rszer órajel (Pin 12) input [3:0] key; // K1, K2, K3, K4 nyomógombok állapota output reg [3:0] digit; // számjegyek vezérlése output reg [7:0] segment; // a DP és a gfedcba szegmensek reg [3:0] key_temp; // átmeneti tároló always@ (posedge clk_50m) key_temp<=key; // a nyomógombok állapotának rögzítése case (key_temp) 4'b1110:segment<=8'b1111_1001; // szegmens kód K1 lenyomáskor 1 4'b1101:segment<=8'b1010_0100; // szegmens kód K2 lenyomáskor 2 4'b1011:segment<=8'b1011_0000; // szegmens kód K3 lenyomáskor 3 4'b0111:segment<=8'b1001_1001; // szegmens kód K4 lenyomáskor 4 case always@ (posedge clk_50m) case(key_temp) 4'b0111:digit<=4'b0111; // K4 lenyomáskor a 4. számjegy 4'b1011:digit<=4'b1011; // K3 lenyomáskor a 3. számjegy 4'b1101:digit<=4'b1101; // K2 lenyomáskor a 2. számjegy case module 4'b1110:digit<=4'b1110; // K1 lenyomáskor a 1. számjegy Hobbielektronika csoport 2017/2018 12 Debreceni Megtestesülés Plébánia

Néhány szó a figyelmeztetésekről Az alábbi fgyelmeztetések azt jelzik, hogy bizonyos kimenetek mindig alacsony vagy magas szinten maradnak. Esetünkben ez nem hiba: a B szegmens it mindig világít, a tizedespont soha. Hobbielektronika csoport 2017/2018 13 Debreceni Megtestesülés Plébánia

Project07: bináris számláló Az alábbi projektben egy 21-bites frekvencia előosztót és egy 8- bites bináris számlálót defniáltunk. A 8-bites számláló állapotát a C-M240 kártyán található 8 db LED segítségével folyamatosan kijelezzük. module binary_counter (clk_50m,led_array); input clk_50m; // 50MHz órajel (Pin 12 bemeneten) output [7:0] led_array; // LEDek vezérlése (Pin 51 - Pin 58) reg [7:0] led_array; reg [20:0] f_divider; // frekvencia-osztó (1 : 2 097 152) reg [7:0] counter; // 8-bites bináris számláló always @ (posedge clk_50m) f_divider <= f_divider +1; always @ (posedge f_divider[20]) counter = counter + 1; led_array = ~counter; module // A frekvenciaosztó léptetése // A 8-bites számláló léptetése // és állapotának kijelzése Hobbielektronika csoport 2017/2018 14 Debreceni Megtestesülés Plébánia

Project08: 8-bites léptetőregiszter Léptetőregisztert a nem blokkoló értékadások használatával alakíthatunk ki. Például: always @ (posedge clk) s_reg[0] <= din; s_reg[1] <= s_reg[0]; s_reg[2] <= s_reg[1]; s_reg[3] <= s_reg[2]; s_reg[4] <= s_reg[3]; s_reg[5] <= s_reg[4]; s_reg[6] <= s_reg[5]; s_reg[7] <= s_reg[6]; ahol clk az órajel, din az adatbemenet, [7:0]s_reg pedig a léptetőregiszter. A léptetést így is írhatjuk: s_reg <= {s_reg[6:0],din}; {..., } a konkatenáció (összefűzés) A következő projektben 1 Hz-es órajellel léptetünk egy 8-bites regisztert, melynek adatbemenete a K1 gombbal vezérelhető. Hobbielektronika csoport 2017/2018 15 Debreceni Megtestesülés Plébánia

Project08: 8-bites léptetőregiszter module shifter (clk_50m,din,led_array); input clk_50m; // 50MHz rszer órajel (Pin 12 bemeneten) input din; // adatbemenet (K1 gomb, PIN_29) output [7:0] led_array; // LED kimenetek (PIN_51 - PIN_58) reg [7:0] led_array; reg [24: 0] f_count; // 25,000,000-szoros osztó reg div_clk; // A leosztott órajel reg [7:0] s_reg; // 8-bites shift regiszter always @ (posedge clk_50m) if (f_count == 25000000) div_clk <= ~div_clk; // 25,000,000 ciklust számlál // 0.5 s időközönként állapotot vált // számláló törlése f_count <= 0; else f_count <= f_count + 1; // számláló léptetése led_array <= ~s_reg; always @ (posedge div_clk) s_reg[0] <= din; s_reg[1] <= s_reg[0]; s_reg[2] <= s_reg[1]; s_reg[3] <= s_reg[2]; s_reg[4] <= s_reg[3]; s_reg[5] <= s_reg[4]; s_reg[6] <= s_reg[5]; s_reg[7] <= s_reg[6]; module A 8 bites shif regiszter állapotát a C-M240 kártya 8 LED-je segítségével folyamatosan kijelezzük. A bitenkénti negáció a LED-ek negatív logikájú vezérlése miat szükséges. Hobbielektronika csoport 2017/2018 16 Debreceni Megtestesülés Plébánia