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

浅井 剛

事例2.パルス波のデューティ比を変えて白色LEDの明るさを調整する回路

森田 一

外部回路
  • 回路図:図2-2
  • 主要部品:白色LEDドライバ
HDL記述
  • Verilog HDL:リスト2-1
  • 外部入力:なし
  • 外部出力:pout(PWM出力)
  • 内部入力:pw,clk,nreset
  • 内部出力:なし
  • パラメータ:DIV(PWMの分周比)
評価環境
  • Altera社,Quartus II


 PWMはPulse With Modurationの略で,パルス波のデューティ比を変化させて変調する方式のことです.図2-1のようにパルスの周期は固定で,パルス幅を変化させることによって出力の大きさを表現します.

zu02_01.gif
図2-1 PWM変調はパルスの幅を変えて出力の大きさを表現する

 図2-1ではパルスの周期を16分割した幅を基準にしてパルスの幅を決めているので,1~16の16段階の値がパルスのデューティ比として表現できます.

 簡易的なD-A変換器として使用する際には,出力を平滑化するためのローパス・フィルタを入れます.DCモータの制御の際には,モータ自体がローパス・フィルタとして働くため,あえてフィルタを使わないときもあります.

 同じようにPWMでLEDの発光時間を制御することでLEDの調光も可能です.ここでは,米国Catalyst Semiconductor社の白色LEDドライバ「CAT4237」と組み合わせてLEDを調光する例を紹介します(図2-2)

zu02_02.gif
図2-2 FPGAからのPWM出力を利用しLEDの明るさを調整する回路

 PWMはマイコンやDSP(Digital Signal Processor)を用いる場合はタイマのアウトプット・コンペアを利用して実現することもよくあります.今回はFPGAを用いました.

● 任意のパルスの作り方

 PWMはフリーランのカウンタとコンパレータから構成されます.図2-3のようにフリーランのカウンタの値が,設定された値より小さい期間'1'を出力します.これをVerilog HDLで記述したものがリスト2-1です.この例では,パルスの周期を256分割しているため,
  (入力した値+1)÷256
のデューティ比のパルスが出力されます.基準となるクロックをまず分周器divで分周して,フリーラン・カウンタcntに与えています.これを設定値pwと比較し,クロックでたたき直してグリッチを消しています.

zu02_03.gif
図2-3 PWMはフリーランのカウンタとコンパレータから構成される

module pwm( pw, pout, clk, nreset );
parameter DIV=20 ; ←clkを分周してPWMの周波数を設定する分周比
    input [7:0] pw ;←※1
    output pout ;
    input clk ;
    input nreset ;
 
      reg [7:0] cnt ;
      reg [15:0] div ;
      reg pout ;
 
    always @( posedge clk or negedge nreset )
    begin
      if( !nreset )begin←※2
        pout <= 0 ;
        cnt <= 0 ;
        div <= 0 ;
      end
 
      else begin
        div <= (div == DIV )? 0 : div + 1 ; ←clkの分周
        cnt <= cnt + ( div == 0 ) ;←※3
        pout <= (pw >= cnt );
 
      end
    end
endmodule
リスト2-1 PWMのパルスを生成するVerilog HDL記述

注1;この例では1周期を256等分してるため(pw+1)/256のdデューティ比のパルスがpoutから出力される
注2;リセット時に内部レジスタを初期化
注3;clkの分周器divの値が0の時だけcntをインクリメントする.cntの値が外部から設定したpwの値以下の場合に1を出す

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日