Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Në këtë tutorial, ne do të përdorim FPGA për të kontrolluar qarkun e jashtëm LED. Ne do të zbatojmë detyrat e mëposhtme
(A) Përdorni butonat e shtypjes në FPGA Cyclone IV DuePrologic për të kontrolluar LED.
(B) LED LED ndizet dhe fiket periodikisht
Demo video
Menyja e laboratorit:
Hapi 1: Ndërtoni një qark elektronik
Hapi 2: Kontrolloni Pin Planner dhe Edit Verilog Code
Hapi 3: Ndryshoni Kodin Verilog
Kur blini FPGA DueProLogic, duhet të merrni një DVD. Pasi të hapni "Projects_HDL", duhet të shihni skedarin origjinal të kodit
Shtoni kodin e theksuar. Regjistron portet I/O dhe cakton numra në porte.
tela dalëse [7: 0] XIO_1, // XIO-D2-D9
tela dalëse [5: 0] XIO_2, // XIO-D10-D12
tela dalëse [5: 0] XIO_3, // XIO-D22-D29
tela hyrëse [5: 0] XIO_4, // XIO-D30-D37
tela hyrëse [5: 0] XIO_5, // XIO-D38-D45
tela dalëse [4: 0] XIO_6_OUT, // XIO-D46-D53
tela hyrëse [31: 5] XIO_6, // XIO-D46-D53
tela dalëse [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
tela hyrëse UBA, // Çelësat e butonit të shtytjes
tela hyrëse UBB // Çelësat e butonit të shtytjes
cakto XIO_1 [3] = start_stop_cntrl;
cakto XIO_2 [1] = fillo_blinky; // LED flash LED ndezur dhe fikur
cakto XIO_2 [2] = 1'b1; // dalje LART
cakto XIO_2 [3] = ~ UBA; // Shtyp butonin A
cakto XIO_2 [4] = UBB; // Shtyp butonin B
cakto c_enable = XIO_5 [2];
cakto LEDExt = XIO_5 [5];
Atëherë duhet të vendosim një kohëmatës vonesash. Komentoni kodin origjinal të kohëmatësit dhe shkruani një funksion të ri të kohëmatësit
//-----------------------------------------------
// Fillimi i Blinky LED
//-----------------------------------------------
/*
gjithmonë @(paraqiti CLK_66 ose negedge RST)
filloj
nëse (! RST)
start_blinky <= 1'b0;
tjeter
filloj
nëse (control_register [7: 4]> 0)
start_blinky <= 1'b1;
tjeter
start_blinky <= 1'b0;
fund
fund
*/
reg [31: 0] ish;
fillimi fillestar
ex <= 32'b0;
start_blinky <= 1'b0;
fund
gjithmonë @(paraqiti CLK_66)
filloj
ex <= ex + 1'b1;
nëse (ish> 100000000) // ndizet/fiket flash 1.6 sekonda, ora 66MHz
filloj
start_blinky <=! start_blinky;
ex <= 32'b0;
fund
fund
//-----------------------------------------------
// Numëruesi i kohëmatësit të vonesës LED
//-----------------------------------------------
/*
gjithmonë @(paraqiti CLK_66 ose negedge RST)
filloj
nëse (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
tjeter
filloj
nëse (gjendja [SELECT_MODE])
led_delay_counter <= vlera kohore;
tjetër nëse (gjendja [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
fund
fund*/
Hapi 4: Përpiloni Kodin Verilog
Shtypni "Fillo Përpilimin" në Quartus, asnjë mesazh gabimi nuk duhet të gjenerohet.
Nëse merrni mesazh gabimi për shumë kunja. Shkoni te Detyrat -> Pajisja -> Opsionet e pajisjes dhe kunjit -> Kunjat me qëllim të dyfishtë -> ndryshoni vlerën e kunjit përkatës në "Përdorni si I/O të rregullt".
Pas përpilimit, duhet të merrni direkt skedarin e daljes pof. Nëse programi juaj kompjuterik nuk është i përditësuar, mund të merrni vetëm soft file. Kur të ndodhë, klikoni "File" në Quartus -> "konvertoni skedarët e programimit". Ndryshoni cilësimet të cilat shënohen me kuti të kuqe.
Hapi 5: Le ta Provojmë
Në fund të fundit, duhet të funksionojë !!! LED i verdhë është gjithmonë i ndezur. LED i kuq po ndizet. LED blu fiket nëse shtypni butonin B. LED e gjelbër ndizet nëse shtypni butonin A