Innehållsförteckning:

FPGA Cyclone IV DueProLogic - Tryckknapp & LED: 5 steg
FPGA Cyclone IV DueProLogic - Tryckknapp & LED: 5 steg

Video: FPGA Cyclone IV DueProLogic - Tryckknapp & LED: 5 steg

Video: FPGA Cyclone IV DueProLogic - Tryckknapp & LED: 5 steg
Video: FPGA-макетная плата ALTERA Cyclone IV EP4CE6,23 ноября 2022 г. 2024, November
Anonim
FPGA Cyclone IV DueProLogic - Tryckknapp och LED
FPGA Cyclone IV DueProLogic - Tryckknapp och LED

I denna handledning kommer vi att använda FPGA för att styra extern LED -krets. Vi kommer att genomföra följande uppgifter

(A) Använd tryckknapparna på FPGA Cyclone IV DuePrologic för att styra LED.

(B) Flash -LED tänds och släcks regelbundet

Videodemo

Lab-meny: https://roywchpi.blogspot.com 2020/06/10-fpga-dueprologic-push-button-led.html

Steg 1: Bygg en elektronisk krets

Steg 2: Kontrollera Pin -planeraren och redigera Verilog -koden

Kontrollera Pin Planner och redigera Verilog -koden
Kontrollera Pin Planner och redigera Verilog -koden

Steg 3: Redigera Verilog -kod

Redigera Verilog -koden
Redigera Verilog -koden

När du köper FPGA DueProLogic bör du få en DVD. När du har öppnat "Projects_HDL" bör du se den ursprungliga kodfilen

Lägg till den markerade koden. Det registrerar I/O -portarna och tilldelar nummer till portarna.

utmatningskabel [7: 0] XIO_1, // XIO-D2-D9

utgångskabel [5: 0] XIO_2, // XIO-D10-D12

utmatningskabel [5: 0] XIO_3, // XIO-D22-D29

ingångskabel [5: 0] XIO_4, // XIO-D30-D37

ingångskabel [5: 0] XIO_5, // XIO-D38-D45

utmatningskabel [4: 0] XIO_6_OUT, // XIO-D46-D53

ingångskabel [31: 5] XIO_6, // XIO-D46-D53

utgångskabel [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76

ingångskabel UBA, // Tryckknappsbrytare

ingångskabel UBB // Tryckknappsbrytare

tilldela XIO_1 [3] = start_stop_cntrl;

tilldela XIO_2 [1] = start_blinky; // LED -blixt LED på och av

tilldela XIO_2 [2] = 1'b1; // utmatning HÖG

tilldela XIO_2 [3] = ~ UBA; // Tryckknapp A

tilldela XIO_2 [4] = UBB; // Tryckknapp B

tilldela c_enable = XIO_5 [2];

tilldela LEDExt = XIO_5 [5];

Sedan måste vi ställa in en fördröjningstimer. Kommentera den ursprungliga timerkoden och skriv en ny timerfunktion

//-----------------------------------------------

// LED blinkande start

//-----------------------------------------------

/*

alltid @(posedge CLK_66 eller negedge RST)

Börja

om (! RST)

start_blinky <= 1'b0;

annan

Börja

if (control_register [7: 4]> 0)

start_blinky <= 1'b1;

annan

start_blinky <= 1'b0;

slutet

slutet

*/

reg [31: 0] ex;

första början

ex <= 32'b0;

start_blinky <= 1'b0;

slutet

alltid @(posedge CLK_66)

Börja

ex <= ex + 1'b1;

om (ex> 100000000) // blinkar på/av ~ 1,6 sekunder, klocka 66MHz

Börja

start_blinky <=! start_blinky;

ex <= 32'b0;

slutet

slutet

//-----------------------------------------------

// LED -fördröjningstimerräknare

//-----------------------------------------------

/*

alltid @(posedge CLK_66 eller negedge RST)

Börja

om (! RST)

led_delay_counter <= TIMER_LOW_LIMIT;

annan

Börja

if (ange [SELECT_MODE])

led_delay_counter <= timer_value;

annars om (ange [WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

slutet

slutet*/

Steg 4: Kompilera Verilog -kod

Kompilera Verilog -koden
Kompilera Verilog -koden
Kompilera Verilog -koden
Kompilera Verilog -koden

Tryck på "Starta kompilering" i Quartus, inget felmeddelande ska genereras.

Om du får ett felmeddelande om flera stift. Gå till Uppdrag -> Enhet -> Enhets- och stiftalternativ -> Dubbelsidiga stift -> ändra värdet på lämplig stift till "Använd som vanlig I/O".

Efter sammanställningen bör du få pof -utmatningsfil direkt. Om din programvara inte är uppdaterad kan du bara få sof-fil. När det händer klickar du på "Arkiv" i Quartus -> "konvertera programmeringsfiler". Ändra inställningarna som är markerade med röda rutor.

Steg 5: Låt oss prova

Det borde ju fungera !!! Den gula lysdioden lyser alltid. Den röda lysdioden blinkar. Den blå lysdioden släcks om du trycker på knapp B. Den gröna lysdioden tänds om du trycker på knapp A

Rekommenderad: