Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Sa tutorial na ito, gagamitin namin ang FPGA upang makontrol ang panlabas na LED circuit. Ipapatupad namin ang mga sumusunod na gawain
(A) Gamitin ang mga push button sa FPGA Cyclone IV DuePrologic upang makontrol ang LED.
(B) pana-panahong naka-on at naka-off ang Flash
Video demo
Menu ng lab:
Hakbang 1: Bumuo ng Electronic Circuit
Hakbang 2: Suriin ang Pin Planner at I-edit ang Verilog Code
Hakbang 3: I-edit ang Verilog Code
Kapag bumili ka ng FPGA DueProLogic, dapat kang makatanggap ng isang DVD. Pagkatapos mong buksan ang "Projects_HDL", dapat mong makita ang orihinal na file code
Idagdag ang naka-highlight na code. Nirerehistro nito ang mga port ng I / O at nagtatalaga ng mga numero sa mga port.
output wire [7: 0] XIO_1, // XIO - D2-D9
output wire [5: 0] XIO_2, // XIO - D10-D12
output wire [5: 0] XIO_3, // XIO - D22-D29
input wire [5: 0] XIO_4, // XIO - D30-D37
input wire [5: 0] XIO_5, // XIO - D38-D45
output wire [4: 0] XIO_6_OUT, // XIO - D46-D53
input wire [31: 5] XIO_6, // XIO - D46-D53
output wire [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
input wire UBA, // Push Button Switch
input wire UBB // Push Button Switch
italaga ang XIO_1 [3] = start_stop_cntrl;
italaga ang XIO_2 [1] = start_blinky; // LED flash LED on and off
italaga ang XIO_2 [2] = 1'b1; // output TAAS
italaga ang XIO_2 [3] = ~ UBA; // Push button A
italaga ang XIO_2 [4] = UBB; // Push button B
magtalaga ng c_enable = XIO_5 [2];
magtalaga ng LEDExt = XIO_5 [5];
Pagkatapos ay magtatakda kami ng isang timer ng pagkaantala. Komento ang orihinal na timer code at magsulat ng isang bagong pagpapaandar ng timer
//-----------------------------------------------
// LED Blinky start
//-----------------------------------------------
/*
laging @ (posedge CLK_66 o negedge RST)
magsimula
kung (! RST)
start_blinky <= 1'b0;
iba pa
magsimula
kung (control_register [7: 4]> 0)
start_blinky <= 1'b1;
iba pa
start_blinky <= 1'b0;
magtapos
magtapos
*/
reg [31: 0] hal;
paunang pagsisimula
dating <= 32'b0;
start_blinky <= 1'b0;
magtapos
laging @ (posedge CLK_66)
magsimula
dating <= ex + 1'b1;
kung (hal> 100000000) // flash on / off ~ 1.6 segundo, orasan 66MHz
magsimula
start_blinky <=! start_blinky;
dating <= 32'b0;
magtapos
magtapos
//-----------------------------------------------
// LED Delay Timer Counter
//-----------------------------------------------
/*
laging @ (posedge CLK_66 o negedge RST)
magsimula
kung (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
iba pa
magsimula
kung (estado [SELECT_MODE])
led_delay_counter <= timer_value;
kung hindi man (estado [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
magtapos
wakas * /
Hakbang 4: Mag-ipon ng Verilog Code
Pindutin ang "Start Compilation" sa Quartus, walang mensahe ng error ang dapat mabuo.
Kung nakatanggap ka ng mensahe ng error tungkol sa maraming mga pin. Pumunta sa Mga Assignment -> Device -> Mga Pagpipilian sa Device at Pin -> Mga Pin na Dobleng Layunin -> baguhin ang halaga ng naaangkop na pin sa "Gumamit bilang regular na I / O".
Pagkatapos ng pagtitipon, dapat kang makakuha ng direktang file ng output ng output. Kung ang iyong software ay hindi napapanahon, maaari kang makakuha ng sof file lamang. Kapag nangyari ito, i-click ang "File" sa Quartus -> "i-convert ang mga file ng programa". Baguhin ang mga setting na minarkahan ng mga pulang kahon.
Hakbang 5: Subukan Natin Ito
Pagkatapos ng lahat, dapat itong gumana !!! Ang dilaw na LED ay laging naka-on. Ang pulang LED ay kumikislap. Ang asul na LED ay naka-off kung pinindot mo ang pindutan B. Ang berdeng LED ay nakabukas kung pinindot mo ang pindutan A