FPGA活用回路&サンプル記述集(2) ―― モータやLEDを駆動するパワー回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年3月 9日
今回はモータやLEDの駆動回路を紹介します.最近のCPLD/FPGAの出力は5m~20mA程度の駆動能力を備えており,一般的なLEDくらいは直接点灯できます.しかし,大電流を必要とする高輝度LEDやパワーLEDを駆動する場合には外付け回路が必要です.また,近年はロボットや自動車など,可動部を持つ製品にFPGAが搭載される機会が増えています.このようなアプリケーションで使用されるステッピング・モータやブラシレス・モータをFPGAで制御したいという要求が増えています.(編集部)
- 事例1.1個または複数の7セグメントLEDをFPGAから直接駆動する回路
【Keyword】 7セグメントLED - 事例2.パルス波のデューティ比を変えて白色LEDの明るさを調整する回路
【Keyword】 白色LEDドライバ - 事例3.デューティ比をリニアに設定できるPWMパルス生成回路
【Keyword】 PWMパルス生成回路 - 事例4.パワー・デバイスをスイッチするためのデッド・タイム生成回路
【Keyword】 IGBT,デッドタイム - 事例5.2相ユニポーラ・ステッピング・モータの制御回路
【Keyword】 ステッピング・モータ,パワー・トランジスタ - 事例6.IGBTモジュールを利用したブラシレス・モータ駆動回路
【Keyword】 ブラシレス・モータ
事例1.1個または複数の7セグメントLEDをFPGAから直接駆動する回路
浅井 剛
- 回路図:図1-1
- 主要部品:7セグメントLED
- 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は電流制限用の抵抗です.
図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のソース・コード
tag: FPGA