FPGA活用回路&サンプル記述集(2) ―― モータやLEDを駆動するパワー回路

浅井 剛

今回はモータやLEDの駆動回路を紹介します.最近のCPLD/FPGAの出力は5m~20mA程度の駆動能力を備えており,一般的なLEDくらいは直接点灯できます.しかし,大電流を必要とする高輝度LEDやパワーLEDを駆動する場合には外付け回路が必要です.また,近年はロボットや自動車など,可動部を持つ製品にFPGAが搭載される機会が増えています.このようなアプリケーションで使用されるステッピング・モータやブラシレス・モータをFPGAで制御したいという要求が増えています.(編集部)


事例1.1個または複数の7セグメントLEDをFPGAから直接駆動する回路

浅井 剛

外部回路
  • 回路図:図1-1
  • 主要部品:7セグメントLED
HDL記述
  • VHDL記述:リスト1-1
  • 外部入力:なし
  • 外部出力:ODATA
  • 内部入力:IDATA
  • 内部出力:なし
  • パラメータ:なし
評価環境
  • 製品に搭載実績のある回路を本誌に抽出.


 最近のCPLD/FPGAの出力は高い駆動能力を備えており,LEDの点灯に必要な5m~20mA程度の電流を供給できます.そこでBCD(Binary Coded Decimal;2進化10進数)を入力として,7セグメントLEDを直接駆動する論理を示します.

 図1-1は7セグメントLEDとFPGAとの接続回路,およびBCDからのデコード例を示したものです.LEDはアノード・コモンで,カソード側を"L"にすることで所定のセグメントをONさせます.図1-1(a)においてVDDは基板上にあるLED用電源,Rは電流制限用の抵抗です.

zu01_01.gif
図1-1 7セグメントLED駆動回路
アノード・コモンの場合.

  R=(VDD-VF)/IF
  VF:LEDの順方向電圧(V),IF:順方向電流(A)
 VDD=3.3V,VF=2.0V,IF=20mAの場合,電流制限抵抗R(Ω)は,R=(3.3-2)/(20×10-3)=65となります.

 リスト1-1にBCD→7セグメント変換モジュール「BCD7SEG」のソース・コードを示します.出力信号ODATAのMSBがセグメントaに接続するものとしています.BCDデータは正論理ですがデコード出力は負論理なので,図1-1(b)のデコード例に従い,ONしたいセグメントを"L"にします.


  library ieee;
      use ieee.std_logic_1164.all;
  entity BCD7SEG is
      port(IDATA : in std_logic_vector(3 downto 0);
                   -- BCD入力
      ODATA : out std_logic_vector(6 downto 0)
                  -- 7Segデコード出力
      );
  end BCD7SEG;
  architecture RTL_BCD7SEG of BCD7SEG is
  begin
      process(IDATA)
      begin
        case IDATA is
            when "0000" => ODATA <= "0000001"; -- abcdef-
            when "0001" => ODATA <= "1001111"; -- -bc----
            when "0010" => ODATA <= "0010010"; -- ab-de-g
            when "0011" => ODATA <= "0000110"; -- abcd--g
            when "0100" => ODATA <= "1001100"; -- -bc--fg
            when "0101" => ODATA <= "0100100"; -- a-cd-fg
            when "0110" => ODATA <= "0100000"; -- a-cdefg
            when "0111" => ODATA <= "0001111"; -- abc----
            when "1000" => ODATA <= "0000000"; -- abcdefg
            when "1001" => ODATA <= "0000100"; -- abcd-fg
            when others => ODATA <= "1111111"; -- BCDでない場合は全消灯
        end case;
    end process;
end RTL_BCD7SEG;

リスト1-1 BCD7SEGのソース・コード

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日