Inhaltsverzeichnis:

FPGA Cyclone IV DueProLogic - Taster & LED - Gunook
FPGA Cyclone IV DueProLogic - Taster & LED - Gunook
Anonim
FPGA Cyclone IV DueProLogic - Taster & LED
FPGA Cyclone IV DueProLogic - Taster & LED

In diesem Tutorial werden wir den FPGA verwenden, um eine externe LED-Schaltung zu steuern. Folgende Aufgaben werden wir umsetzen

(A) Verwenden Sie die Drucktasten des FPGA Cyclone IV DuePrologic, um die LED zu steuern.

(B) Blinkt LED periodisch ein und aus

Videodemo

Labormenü:

Schritt 1: Elektronische Schaltung aufbauen

Schritt 2: Überprüfen Sie den Pin-Planer und bearbeiten Sie den Verilog-Code

Überprüfen Sie den Pin-Planer und bearbeiten Sie den Verilog-Code
Überprüfen Sie den Pin-Planer und bearbeiten Sie den Verilog-Code

Schritt 3: Verilog-Code bearbeiten

Verilog-Code bearbeiten
Verilog-Code bearbeiten

Wenn Sie FPGA DueProLogic kaufen, sollten Sie eine DVD erhalten. Nachdem Sie "Projects_HDL" geöffnet haben, sollten Sie die ursprüngliche Codedatei sehen

Fügen Sie den markierten Code hinzu. Es registriert die I/O-Ports und weist den Ports Nummern zu.

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

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

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

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

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

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

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

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

Eingangskabel UBA, // Drucktastenschalter

Eingangsdraht UBB // Drucktastenschalter

zuweisen XIO_1[3] = start_stop_cntrl;

zuweisen XIO_2[1] = start_blinky; // LED-Blitz-LED an und aus

zuweisen XIO_2[2] = 1'b1; // Ausgang HIGH

zuweisen XIO_2[3] = ~UBA; //Taste A. drücken

zuweisen XIO_2[4] = UBB; //Taste B. drücken

c_enable zuweisen = XIO_5[2];

zuweisen LEDExt = XIO_5[5];

Dann müssen wir einen Verzögerungstimer einstellen. Kommentieren Sie den ursprünglichen Timer-Code und schreiben Sie eine neue Timer-Funktion

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

// LED Blinky start

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

/*

immer @(posege CLK_66 oder negge RST)

Start

wenn(!RST)

start_blinky <= 1'b0;

anders

Start

if(control_register[7:4] > 0)

start_blinky <= 1'b1;

anders

start_blinky <= 1'b0;

Ende

Ende

*/

reg [31:0] ex;

anfänglicher Anfang

ex <= 32'b0;

start_blinky <= 1'b0;

Ende

immer @(posege CLK_66)

Start

ex <= ex + 1'b1;

if (ex > 1000000000) // Blitz ein/aus ~ 1,6 Sekunden, Takt 66MHz

Start

start_blinky <= !start_blinky;

ex <= 32'b0;

Ende

Ende

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

// LED-Verzögerungs-Timer-Zähler

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

/*

immer @(posege CLK_66 oder negge RST)

Start

wenn(!RST)

led_delay_counter <= TIMER_LOW_LIMIT;

anders

Start

if(state[SELECT_MODE])

led_delay_counter <= Timer_Wert;

sonst if(state[WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

Ende

Ende*/

Schritt 4: Verilog-Code kompilieren

Verilog-Code kompilieren
Verilog-Code kompilieren
Verilog-Code kompilieren
Verilog-Code kompilieren

Drücken Sie in Quartus auf "Kompilierung starten", es sollte keine Fehlermeldung generiert werden.

Wenn Sie eine Fehlermeldung über mehrere Pins erhalten. Gehen Sie zu Zuweisungen -> Gerät -> Geräte- und Pinoptionen -> Dual-Purpose-Pins -> ändern Sie den Wert des entsprechenden Pins auf "Als reguläre E/A verwenden".

Nach der Kompilierung sollten Sie die pof-Ausgabedatei direkt erhalten. Wenn Ihre Software nicht auf dem neuesten Stand ist, erhalten Sie möglicherweise nur die sof-Datei. Wenn es passiert, klicken Sie in Quartus auf "Datei" -> "Programmdateien konvertieren". Ändern Sie die Einstellungen, die durch rote Kästchen gekennzeichnet sind.

Schritt 5: Versuchen wir es

Schließlich sollte es funktionieren!!! Die gelbe LED leuchtet immer. Die rote LED blinkt. Die blaue LED wird ausgeschaltet, wenn Sie die Taste B drücken. Die grüne LED wird eingeschaltet, wenn Sie die Taste A drücken

Empfohlen: