Inhoudsopgave:

FPGA Cyclone IV DueProLogic - Drukknop & LED - Ajarnpa
FPGA Cyclone IV DueProLogic - Drukknop & LED - Ajarnpa

Video: FPGA Cyclone IV DueProLogic - Drukknop & LED - Ajarnpa

Video: FPGA Cyclone IV DueProLogic - Drukknop & LED - Ajarnpa
Video: FPGA Cyclone IV DueProLogic - Push button & LED (Tutorial & code) 2024, November
Anonim
FPGA Cyclone IV DueProLogic - Drukknop & LED
FPGA Cyclone IV DueProLogic - Drukknop & LED

In deze tutorial gaan we de FPGA gebruiken om het externe LED-circuit te besturen. We gaan de volgende taken uitvoeren:

(A) Gebruik de drukknoppen op FPGA Cyclone IV DuePrologic om de LED te bedienen.

(B) Flash-LED periodiek aan en uit

Videodemo

Labmenu:

Stap 1: Bouw een elektronisch circuit

Stap 2: Controleer de Pin Planner en bewerk de Verilog-code

Controleer de Pin Planner en bewerk Verilog-code
Controleer de Pin Planner en bewerk Verilog-code

Stap 3: Verilog-code bewerken

Verilog-code bewerken
Verilog-code bewerken

Wanneer u FPGA DueProLogic koopt, zou u een dvd moeten ontvangen. Nadat je "Projects_HDL" hebt geopend, zou je het originele codebestand moeten zien

Voeg de gemarkeerde code toe. Het registreert de I/O-poorten en wijst nummers toe aan de poorten.

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

uitgangsdraad [5:0] XIO_2, //XIO -- D10-D12

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

ingangsdraad [5:0] XIO_4, //XIO -- D30-D37

ingangsdraad [5:0] XIO_5, //XIO -- D38-D45

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

ingangsdraad [31:5] XIO_6, //XIO -- D46-D53

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

ingangsdraad UBA, // Drukknopschakelaars

ingangsdraad UBB // Drukknopschakelaars

toewijzen XIO_1[3] = start_stop_cntrl;

toewijzen XIO_2[1] = start_blinky; // LED-flitser LED aan en uit

toewijzen XIO_2[2] = 1'b1; //uitvoer HOOG

toewijzen XIO_2[3] = ~UBA; //Drukknop A

toewijzen XIO_2[4] = UBB; //Drukknop B

wijs c_enable = XIO_5[2] toe;

wijs LEDExt = XIO_5[5] toe;

Dan moeten we een vertragingstimer instellen. Geef commentaar op de originele timercode en schrijf een nieuwe timerfunctie

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

// LED Knipperende start

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

/*

altijd @(posedge CLK_66 of negedge RST)

beginnen

als(!RST)

start_blinky <= 1'b0;

anders

beginnen

if(control_register[7:4] > 0)

start_blinky <= 1'b1;

anders

start_blinky <= 1'b0;

einde

einde

*/

reg [31:0] ex;

eerste begin

ex <= 32'b0;

start_blinky <= 1'b0;

einde

altijd @(posedge CLK_66)

beginnen

ex <= ex + 1'b1;

if (ex > 100000000) // flits aan/uit ~ 1,6 seconden, klok 66 MHz

beginnen

start_blinky <= !start_blinky;

ex <= 32'b0;

einde

einde

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

// LED-vertragingstimerteller

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

/*

altijd @(posedge CLK_66 of negedge RST)

beginnen

als(!RST)

led_delay_counter <= TIMER_LOW_LIMIT;

anders

beginnen

if(staat[SELECT_MODE])

led_delay_counter <= timer_value;

else if(staat[WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

einde

einde*/

Stap 4: Verilog-code compileren

Verilog-code compileren
Verilog-code compileren
Verilog-code compileren
Verilog-code compileren

Druk op "Start Compilatie" in Quartus, er mag geen foutmelding worden gegenereerd.

Als u een foutmelding krijgt over meerdere pinnen. Ga naar Assignments -> Device -> Device and Pin Options -> Dual-Purpose Pins -> verander de waarde van de juiste pin in "Use as regular I/O".

Na de compilatie zou u het pof-uitvoerbestand rechtstreeks moeten krijgen. Als uw software niet up-to-date is, krijgt u mogelijk alleen een soft-bestand. Wanneer dit gebeurt, klikt u op "Bestand" in Quartus -> "programmeerbestanden converteren". Wijzig de instellingen die zijn gemarkeerd door rode vakjes.

Stap 5: Laten we het proberen

Het moet tenslotte lukken!!! De gele LED is altijd aan. De rode LED knippert. De blauwe LED gaat uit als u op knop B drukt. De groene LED gaat aan als u op knop A. drukt

Aanbevolen: