Abstrakt: Jednoduchá aplikace demonstrující řízení LED diody pomocí FPGA a pomocí mikrokontroleru.
Tato jednoduchá aplikace demonstruje řízení LED diody pomocí čítače implementovaného v FPGA a pomocí mikrokontroleru. Jedná se o nejjednodušší aplikaci, kdy zdrojové kódy obsahují pouze nezbytné minimum.
Aplikace se skládá ze dvou částí:
Blikání LED řízené z FPGA
VHDL kód obsahuje pouze 23-bitový čítač, což je komponenta, která s každou náběžnou hranou hodinového signálu inkrementuje svůj obsah. Poslední bit čítače je připojen na LED diodu D4, která tak začne ihned po naprogramování FPGA obvodu blikat s periodou cca půl sekundy. Čítač je synchronizován hodinovým signálem SMCLK s kmitočet 7.3728MHz, který generuje mikrokontroler (detaily viz schema kitu).
LEDF <= cnt(22); counter: process(RESET, SMCLK) begin if (RESET = '1') then cnt <= (others => '0'); elsif SMCLK'event and SMCLK = '1' then cnt <= cnt + 1; end If; end process;
Zdrojové kódy je možné nalézt v souboru fpga/top.vhd.
Blikání LED řízené z MCU
Kód v mikrokontroleru, který tajišťuje periodické blikání LED diody D6 se skládá z nekonečné smyčky obsahující funkci delay_ms(1)
, která realizuje pomocí volně běžícího čítače zpoždění 1ms. Po 500ti iteracích se invertuje bit připojený na LED diodu. Po naprogramování MCU začně periodicky blikat červená dioda D6 (pokud je aktivní terminál, případně zůstanou rozpojeny propojky J8 a J9).
while (1) { delay_ms(1); //zpozdeni 1ms counter++; if (counter == 500) { flip_led_d6(); //invertovat LED counter = 0; } terminal_idle(); }
Zdrojové kódy je možné nalézt v souboru mcu/main.c.
Funkce terminal_idle zajišťuje obsluhu terminálu, tzn. přijímá a vyřizuje zaslané příkazy. V této jednoduché aplikaci může být bez problémů vypuštěna.
přeložte aplikaci
naprogramujte MCU a FPGA a spusťte terminálový program.
Nyní by měla blikat dioda D6 a D4.
Aplikace nevyžaduje ke své činnosti nastavit kromě propojek umožňujících programování další propojky.