Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto tutoriále použijeme FPGA na ovládanie externého obvodu LED. Budeme implementovať nasledujúce úlohy
(A) Na ovládanie LED diódy použite tlačidlá na FPGA Cyclone IV DuePrologic.
(B) LED dióda Flash sa pravidelne zapína a vypína
Video ukážka
Laboratórna ponuka:
Krok 1: Vytvorte elektronický obvod
Krok 2: Skontrolujte plánovač pinov a upravte kód Verilog
Krok 3: Upravte kód Verilog
Pri kúpe FPGA DueProLogic by ste mali dostať DVD. Po otvorení „Projects_HDL“by ste mali vidieť pôvodný súbor s kódom
Pridajte zvýraznený kód. Zaregistruje I/O porty a priradí portom čí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čidlové prepínače
vstupný vodič UBB // tlačidlové spínače
priradiť XIO_1 [3] = start_stop_cntrl;
priradiť XIO_2 [1] = start_blinky; // LED blesk LED zapína a vypína
priradiť XIO_2 [2] = 1'b1; // výstup VYSOKÝ
priradiť XIO_2 [3] = ~ UBA; // Stlačte tlačidlo A
priradiť XIO_2 [4] = UBB; // Stlačte tlačidlo B
priradiť c_enable = XIO_5 [2];
priradiť LEDExt = XIO_5 [5];
Potom musíme nastaviť časovač oneskorenia. Komentujte pôvodný kód časovača a napíšte novú funkciu časovača
//-----------------------------------------------
// LED Blinky štart
//-----------------------------------------------
/*
vždy @(posedge CLK_66 alebo negedge RST)
začať
ak (! RST)
start_blinky <= 1'b0;
inak
začať
if (control_register [7: 4]> 0)
start_blinky <= 1'b1;
inak
start_blinky <= 1'b0;
koniec
koniec
*/
reg [31: 0] ex;
počiatočný začiatok
ex <= 32'b0;
start_blinky <= 1'b0;
koniec
vždy @(posedge CLK_66)
začať
ex <= ex + 1'b1;
ak (napr.> 100000000) // zapnutie/vypnutie blesku ~ 1,6 sekundy, hodiny 66 MHz
začať
start_blinky <=! start_blinky;
ex <= 32'b0;
koniec
koniec
//-----------------------------------------------
// Počítadlo časovača oneskorenia LED
//-----------------------------------------------
/*
vždy @(posedge CLK_66 alebo negedge RST)
začať
ak (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
inak
začať
if (state [SELECT_MODE])
led_delay_counter <= hodnota_časovača;
else if (state [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
koniec
koniec*/
Krok 4: Zostavte kód Verilog
V programe Quartus kliknite na „Spustiť kompiláciu“, nemalo by sa vytvárať žiadne chybové hlásenie.
Ak sa zobrazí chybové hlásenie o viacerých kolíkoch. Prejdite na Úlohy -> Zariadenie -> Možnosti zariadenia a pinov -> Dvojúčelové piny -> zmeňte hodnotu príslušného kolíka na „Použiť ako pravidelný I/O“.
Po kompilácii by ste mali dostať výstupný súbor pof priamo. Ak váš softvér nie je aktuálny, môžete získať iba súbor sof. Keď sa to stane, kliknite v Quartuse na „Súbor“-> „Previesť programovacie súbory“. Zmeňte nastavenia, ktoré sú označené červenými políčkami.
Krok 5: Skúsme to
Predsa by to malo fungovať !!! Žltá dióda LED stále svieti. Červená LED dióda bliká. Modrá LED dióda zhasne, ak stlačíte tlačidlo B. Zelená LED dióda sa rozsvieti, ak stlačíte tlačidlo A