Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
V tomto tutoriálu použijeme FPGA k ovládání externího LED obvodu. Chystáme se implementovat následující úkoly
(A) K ovládání LED použijte tlačítka na FPGA Cyclone IV DuePrologic.
(B) LED dioda Flash se pravidelně zapíná a vypíná
Video demo
Laboratorní nabídka:
Krok 1: Vybudujte elektronický obvod
Krok 2: Zkontrolujte Pin Planner a upravte Verilog Code
Krok 3: Upravte kód Verilog
Při nákupu FPGA DueProLogic byste měli obdržet DVD. Po otevření „Projects_HDL“byste měli vidět původní soubor kódu
Přidejte zvýrazněný kód. Zaregistruje I/O porty a přiřadí portům čísla.
výstupní vodič [7: 0] XIO_1, // XIO-D2-D9
výstupní vodič [5: 0] XIO_2, // XIO-D10-D12
výstupní vodič [5: 0] XIO_3, // XIO-D22-D29
vstupní vodič [5: 0] XIO_4, // XIO-D30-D37
vstupní vodič [5: 0] XIO_5, // XIO-D38-D45
výstupní vodič [4: 0] XIO_6_OUT, // XIO-D46-D53
vstupní vodič [31: 5] XIO_6, // XIO-D46-D53
výstupní vodič [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
vstupní vodič UBA, // tlačítkové spínače
vstupní vodič UBB // tlačítkové spínače
přiřadit XIO_1 [3] = start_stop_cntrl;
přiřadit XIO_2 [1] = start_blinky; // LED blesk LED zapíná a vypíná
přiřadit XIO_2 [2] = 1'b1; // výstup VYSOKÝ
přiřadit XIO_2 [3] = ~ UBA; // Stiskněte tlačítko A
přiřadit XIO_2 [4] = UBB; // Stiskněte tlačítko B
přiřadit c_enable = XIO_5 [2];
přiřadit LEDExt = XIO_5 [5];
Poté musíme nastavit časovač zpoždění. Komentujte původní kód časovače a napište novou funkci časovače
//-----------------------------------------------
// LED Blinky start
//-----------------------------------------------
/*
vždy @(posedge CLK_66 nebo negedge RST)
začít
pokud (! RST)
start_blinky <= 1'b0;
jiný
začít
if (control_register [7: 4]> 0)
start_blinky <= 1'b1;
jiný
start_blinky <= 1'b0;
konec
konec
*/
reg [31: 0] ex;
počáteční začátek
ex <= 32'b0;
start_blinky <= 1'b0;
konec
vždy @(posedge CLK_66)
začít
ex <= ex + 1'b1;
pokud (např.> 10 000 000) // zapnutí/vypnutí blesku ~ 1,6 sekundy, hodiny 66 MHz
začít
start_blinky <=! start_blinky;
ex <= 32'b0;
konec
konec
//-----------------------------------------------
// Počítadlo časovače zpoždění LED
//-----------------------------------------------
/*
vždy @(posedge CLK_66 nebo negedge RST)
začít
pokud (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
jiný
začít
if (state [SELECT_MODE])
led_delay_counter <= hodnota_časovače;
else if (state [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
konec
konec*/
Krok 4: Kompilace kódu Verilog
V Quartusu stiskněte „Spustit kompilaci“, nemělo by se generovat žádné chybové hlášení.
Pokud se zobrazí chybová zpráva o více pinech. Přejděte na Úkoly -> Zařízení -> Možnosti zařízení a pinů -> Dvojúčelové piny -> změňte hodnotu příslušného pinu na „Použít jako pravidelný I/O“.
Po kompilaci byste měli získat výstupní soubor pof přímo. Pokud váš software není aktuální, můžete získat pouze soubor sof. Když k tomu dojde, klikněte v Quartusu na „Soubor“-> „převést programovací soubory“. Změňte nastavení, která jsou označena červenými rámečky.
Krok 5: Zkusme to
Přece by to mělo fungovat !!! Žlutá LED dioda vždy svítí. Červená LED bliká. Modrá LED dioda zhasne, když stisknete tlačítko B. Zelená LED se rozsvítí, když stisknete tlačítko A