Innholdsfortegnelse:

FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn
FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn

Video: FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn

Video: FPGA Cyclone IV DueProLogic - Trykknapp og LED: 5 trinn
Video: FPGA Cyclone IV DueProLogic Controls Raspberry Pi Camera (tutorial & code) 2024, November
Anonim
FPGA Cyclone IV DueProLogic - Trykknapp og LED
FPGA Cyclone IV DueProLogic - Trykknapp og LED

I denne opplæringen skal vi bruke FPGA til å kontrollere ekstern LED -krets. Vi skal gjennomføre følgende oppgaver

(A) Bruk trykknappene på FPGA Cyclone IV DuePrologic for å kontrollere LED.

(B) Blitslys på og av med jevne mellomrom

Videodemo

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

Trinn 1: Bygg elektronisk krets

Trinn 2: Sjekk Pin -planleggeren og rediger Verilog -koden

Sjekk Pin -planleggeren og rediger Verilog -koden
Sjekk Pin -planleggeren og rediger Verilog -koden

Trinn 3: Rediger Verilog -koden

Rediger Verilog -koden
Rediger Verilog -koden

Når du kjøper FPGA DueProLogic, bør du motta en DVD. Etter at du har åpnet "Projects_HDL", bør du se den originale kodefilen

Legg til den uthevede koden. Den registrerer I/O -portene og tildeler nummer til portene.

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

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

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

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

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

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

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

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

inngangskabel UBA, // Trykknappbrytere

inngangskabel UBB // Trykknappbrytere

tilordne XIO_1 [3] = start_stop_cntrl;

tilordne XIO_2 [1] = start_blinky; // LED blits LED av og på

tilordne XIO_2 [2] = 1'b1; // utgang HØY

tilordne XIO_2 [3] = ~ UBA; // Trykknapp A

tilordne XIO_2 [4] = UBB; // Trykknapp B

tilordne c_enable = XIO_5 [2];

tilordne LEDExt = XIO_5 [5];

Deretter må vi stille en tidsforsinkelse. Kommenter den originale timer -koden og skriv en ny timer -funksjon

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

// LED Blinkende start

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

/*

alltid @(posedge CLK_66 eller negedge RST)

begynne

hvis (! RST)

start_blinky <= 1'b0;

ellers

begynne

hvis (kontrollregister [7: 4]> 0)

start_blinky <= 1'b1;

ellers

start_blinky <= 1'b0;

slutt

slutt

*/

reg [31: 0] eks;

første start

eks <= 32'b0;

start_blinky <= 1'b0;

slutt

alltid @(posedge CLK_66)

begynne

eks <= eks + 1'b1;

hvis (eks> 100000000) // blits på/av ~ 1,6 sekunder, klokke 66MHz

begynne

start_blinky <=! start_blinky;

eks <= 32'b0;

slutt

slutt

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

// LED Delay Timer Counter

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

/*

alltid @(posedge CLK_66 eller negedge RST)

begynne

hvis (! RST)

led_delay_counter <= TIMER_LOW_LIMIT;

ellers

begynne

hvis (oppgi [SELECT_MODE])

led_delay_counter <= timer_value;

annet hvis (oppgi [WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

slutt

slutt*/

Trinn 4: Kompiler Verilog -kode

Kompiler Verilog -koden
Kompiler Verilog -koden
Kompiler Verilog -koden
Kompiler Verilog -koden

Trykk på "Start kompilering" i Quartus, ingen feilmelding skal genereres.

Hvis du får feilmelding om flere pins. Gå til Oppgaver -> Enhet -> Enhets- og pinnealternativer -> Pinner med to formål -> endre verdien på den riktige pinnen til "Bruk som vanlig I/O".

Etter kompilering bør du få pof -utdatafilen direkte. Hvis programvaren din ikke er oppdatert, kan det hende du bare får sof-fil. Når det skjer, klikker du "File" i Quartus -> "konverter programmeringsfiler". Endre innstillingene som er markert med røde bokser.

Trinn 5: La oss prøve det

Tross alt burde det fungere !!! Den gule LED -en er alltid på. Den røde LED -en blinker. Den blå lysdioden slås av hvis du trykker på knapp B. Den grønne lysdioden lyser hvis du trykker på knapp A

Anbefalt: