Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje mes naudosime FPGA išorinei LED grandinei valdyti. Mes ketiname įgyvendinti šias užduotis
(A) Norėdami valdyti šviesos diodus, naudokite FPGA Cyclone IV DuePrologic mygtukus.
(B) Blykstės šviesos diodas periodiškai įjungiamas ir išjungiamas
Vaizdo demonstracija
Laboratorijos meniu:
1 žingsnis: sukurkite elektroninę grandinę
2 veiksmas: patikrinkite „Pin Planner“ir redaguokite „Verilog“kodą
3 veiksmas: redaguokite „Verilog“kodą
Pirkdami FPGA DueProLogic, turėtumėte gauti DVD. Atidarę „Projects_HDL“, turėtumėte pamatyti pradinį kodo failą
Pridėkite paryškintą kodą. Jis registruoja įvesties/išvesties prievadus ir priskiria prievadams numerius.
išvesties laidas [7: 0] XIO_1, // XIO-D2-D9
išvesties laidas [5: 0] XIO_2, // XIO-D10-D12
išvesties laidas [5: 0] XIO_3, // XIO-D22-D29
įvesties laidas [5: 0] XIO_4, // XIO-D30-D37
įvesties laidas [5: 0] XIO_5, // XIO-D38-D45
išvesties laidas [4: 0] XIO_6_OUT, // XIO-D46-D53
įvesties laidas [31: 5] XIO_6, // XIO-D46-D53
išvesties laidas [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
įvesties laidas UBA, // Mygtukiniai jungikliai
įvesties laidas UBB // Mygtukiniai jungikliai
priskirti XIO_1 [3] = start_stop_cntrl;
priskirti XIO_2 [1] = start_blinky; // LED blykstės šviesos diodas įjungtas ir išjungtas
priskirti XIO_2 [2] = 1'b1; // išėjimas HIGH
priskirti XIO_2 [3] = ~ UBA; // Paspauskite mygtuką A
priskirti XIO_2 [4] = UBB; // Paspauskite mygtuką B
priskirti c_enable = XIO_5 [2];
priskirti LEDExt = XIO_5 [5];
Tada turime nustatyti atidėjimo laikmatį. Komentuokite pradinį laikmačio kodą ir parašykite naują laikmačio funkciją
//-----------------------------------------------
// LED mirksintis paleidimas
//-----------------------------------------------
/*
visada @(posedge CLK_66 or negedge RST)
pradėti
jei (! RST)
start_blinky <= 1'b0;
Kitas
pradėti
jei (kontrolinis_registravimas [7: 4]> 0)
start_blinky <= 1'b1;
Kitas
start_blinky <= 1'b0;
galas
galas
*/
reg [31: 0] ex;
pradinė pradžia
ex <= 32'b0;
start_blinky <= 1'b0;
galas
visada @(pozavimas CLK_66)
pradėti
ex <= ex + 1'b1;
jei (pvz.> 100000000) // blykstė įjungta/išjungta ~ 1,6 sekundės, laikrodis 66 MHz
pradėti
start_blinky <=! start_blinky;
ex <= 32'b0;
galas
galas
//-----------------------------------------------
// LED delsos laikmačio skaitiklis
//-----------------------------------------------
/*
visada @(posedge CLK_66 or negedge RST)
pradėti
jei (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
Kitas
pradėti
if (nurodykite [SELECT_MODE])
led_delay_counter <= timer_value;
kitaip, jei (būsena [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
galas
galas*/
4 veiksmas: sudarykite „Verilog“kodą
„Quartus“paspauskite „Pradėti kompiliavimą“, klaidos pranešimas neturėtų būti generuojamas.
Jei gaunate klaidos pranešimą apie kelis kaiščius. Eikite į Užduotys -> Įrenginys -> Įrenginio ir kaiščio parinktys -> Dvejopos paskirties kaiščiai -> pakeiskite atitinkamo kaiščio vertę į „Naudoti kaip įprastą įvestį/išvestį“.
Po kompiliavimo turėtumėte gauti pof išvesties failą tiesiogiai. Jei jūsų programinė įranga nėra atnaujinta, galite gauti tik „sof“failą. Kai tai atsitiks, „Quartus“spustelėkite „Failas“-> „konvertuoti programavimo failus“. Pakeiskite raudonais langeliais pažymėtus nustatymus.
5 žingsnis: Pabandykime
Juk tai turėtų veikti !!! Geltonas šviesos diodas visada šviečia. Mirksi raudonas šviesos diodas. Mėlynas šviesos diodas užgęsta paspaudus mygtuką B. Žalias šviesos diodas įsijungia paspaudus mygtuką A.