Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
U ovom ćemo vodiču koristiti FPGA za upravljanje vanjskim LED krugom. Provest ćemo sljedeće zadatke
(A) Za upravljanje LED diodama koristite gumbe na FPGA Cyclone IV DuePrologic.
(B) LED dioda bljeskalice povremeno se uključuje i isključuje
Video demo
Izbornik laboratorija:
Korak 1: Izgradite elektronički krug
Korak 2: Provjerite Pin Planner i uredite Verilog kod
Korak 3: Uredite Verilog kôd
Kada kupujete FPGA DueProLogic, trebali biste dobiti DVD. Nakon što otvorite "Projects_HDL", trebali biste vidjeti izvornu datoteku koda
Dodajte označeni kôd. Registrira I/O portove i dodjeljuje brojeve portovima.
izlazna žica [7: 0] XIO_1, // XIO-D2-D9
izlazna žica [5: 0] XIO_2, // XIO-D10-D12
izlazna žica [5: 0] XIO_3, // XIO-D22-D29
ulazna žica [5: 0] XIO_4, // XIO-D30-D37
ulazna žica [5: 0] XIO_5, // XIO-D38-D45
izlazna žica [4: 0] XIO_6_OUT, // XIO-D46-D53
ulazna žica [31: 5] XIO_6, // XIO-D46-D53
izlazna žica [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
ulazna žica UBA, // Prekidači pritiskom na gumb
ulazna žica UBB // Prekidači pritiskom na gumb
dodijeli XIO_1 [3] = start_stop_cntrl;
dodijeliti XIO_2 [1] = start_blinky; // LED bljeskalica LED uključena i isključena
dodijeliti XIO_2 [2] = 1'b1; // izlaz HIGH
dodijeliti XIO_2 [3] = ~ UBA; // Pritisnite gumb A
dodijeliti XIO_2 [4] = UBB; // Pritisnite gumb B
dodijeli c_enable = XIO_5 [2];
dodijeli LEDExt = XIO_5 [5];
Zatim moramo postaviti mjerač odgode. Komentirajte izvorni kod mjerača vremena i napišite novu funkciju mjerača vremena
//-----------------------------------------------
// LED Treperenje treperi
//-----------------------------------------------
/*
uvijek @(postavljeni CLK_66 ili negedge RST)
početi
ako (! RST)
start_blinky <= 1'b0;
drugo
početi
if (control_register [7: 4]> 0)
start_blinky <= 1'b1;
drugo
start_blinky <= 1'b0;
kraj
kraj
*/
reg [31: 0] ex;
početni početak
ex <= 32'b0;
start_blinky <= 1'b0;
kraj
uvijek @(postavljeno CLK_66)
početi
ex <= ex + 1'b1;
if (ex> 100000000) // bljeskalica uključena/isključena ~ 1,6 sekundi, radni takt 66MHz
početi
start_blinky <=! start_blinky;
ex <= 32'b0;
kraj
kraj
//-----------------------------------------------
// Brojač LED odgode
//-----------------------------------------------
/*
uvijek @(postavljeni CLK_66 ili negedge RST)
početi
ako (! RST)
brojač zaostajanja_odlaganja <= TIMER_LOW_LIMIT;
drugo
početi
ako (navedite [SELECT_MODE])
brojač_odgode_odgoda <= vrijednost_vremena;
inače ako (navedite [WAIT_FOR_TIMER])
brojač_odluke_odgoda <= brojač_odgode_kašnjenja - 1'd1;
kraj
kraj*/
Korak 4: Sastavite Verilog kod
Pritisnite "Pokreni kompilaciju" u Quartusu, ne bi se trebala generirati poruka o pogrešci.
Ako primite poruku o pogrešci o više pinova. Idite na Zadaci -> Uređaj -> Opcije uređaja i pinova -> Dvonamjenske pinove -> promijenite vrijednost odgovarajućeg pina u "Koristi kao običan I/O".
Nakon kompilacije trebali biste izravno dobiti pof izlaznu datoteku. Ako vaš softver nije ažuriran, možete dobiti samo sof datoteku. Kada se to dogodi, kliknite "Datoteka" u Quartusu -> "pretvori programske datoteke". Promijenite postavke koje su označene crvenim okvirima.
Korak 5: Pokušajmo
Uostalom, trebalo bi raditi !!! Žuta LED dioda uvijek svijetli. Crvena LED dioda treperi. Plava LED dioda isključuje se ako pritisnete gumb B. Zelena LED lampica uključuje se ako pritisnete tipku A