Čeština / English
Login

SVN Repository / Prohlížení

Aktuální adresář: FITkit / trunk / apps / demo / led / doc /

index.rst

   1  .. article:: apps_demo_led
   2      :author: Zdeněk Vašíček <vasicek AT fit.vutbr.cz>
   3      :updated: 20090326
   4  
   5      Jednoduchá aplikace demonstrující řízení LED diody pomocí FPGA a pomocí mikrokontroleru.
   6  
   7  ========================
   8  Blikání diodami LED
   9  ========================
  10  
  11  Popis aplikace
  12  =================
  13  
  14  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.
  15  
  16  Aplikace se skládá ze dvou částí:
  17  
  18  * **Blikání LED řízené z FPGA**
  19  
  20    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).
  21  
  22    ::
  23  
  24       LEDF <= cnt(22);
  25  
  26       counter: process(RESET, SMCLK)
  27       begin
  28           if (RESET = '1') then
  29               cnt <= (others => '0');
  30           elsif SMCLK'event and SMCLK = '1' then
  31               cnt <= cnt + 1;
  32           end If;
  33       end process;
  34  
  35    Zdrojové kódy je možné nalézt v souboru `fpga/top.vhd <SVN_APP_DIR/fpga/top.vhd>`_.
  36  
  37  * **Blikání LED řízené z MCU**
  38  
  39    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).
  40  
  41    ::
  42  
  43      while (1)
  44      {
  45        delay_ms(1);  //zpozdeni 1ms
  46        counter++;
  47        if (counter == 500)
  48        {
  49           flip_led_d6(); //invertovat LED
  50           counter = 0;
  51        }
  52        terminal_idle();
  53      }
  54  
  55    Zdrojové kódy je možné nalézt v souboru `mcu/main.c <SVN_APP_DIR/mcu/main.c>`_.
  56  
  57    .. note:: 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.
  58  
  59  Zprovoznění aplikace
  60  ========================
  61  1. přeložte aplikaci
  62  2. naprogramujte MCU a FPGA a spusťte terminálový program.
  63  
  64     Nyní by měla blikat dioda D6 a D4.
  65  
  66  Aplikace nevyžaduje ke své činnosti nastavit kromě propojek umožňujících programování další propojky.
Zobrazeno: 141958x Naposledy: 20.5.2013 04:19:45