メディア

デジタル制御電源を学ぶ(3) バックコンバータでデジタル制御を実践するDesign Hands-on(2/3 ページ)

» 2012年03月09日 16時27分 公開
[増田浩一,新日本無線]

ソフトウェアの基本構成を準備する

 I/Oレジスタの設定が確認できたら、ソフトウェアの基本構成を準備しよう。図2は、ソフトウェア処理の流れを(a)通常処理、(b)周期処理、(c)即時処理の3種類に分けて示したものだ。実際には、各処理を関数と呼ばれる1つのまとまりとして扱うことになる。この図2の分け方は、本稿で取り上げたバックコンバータ固有のものではなく、任意のデジタル制御に適用できる。電源の要求仕様が異なってもこの分け方そのものは変わらず、単に(b)周期処理や(c)即時処理に含まれる処理の数が違ってくるだけだ。今回取り上げている電源では、周期処理として電圧制御を1つ、即時処理として過電圧保護とUART通信の2つをCPU割り込み関数として準備すればよい。

図2 図2 ソフトウェア処理の流れ (クリックで拡大)

 それでは、図2(a)(b)(c)に示した流れに沿って、ソフトウェアがどのように処理されるか確認してみよう。まずは(a)通常処理からだ。電源投入またはリセット後に最初に実行する処理が、前述のI/Oレジスタ設定で行う「ハードウェア初期化」の処理である。これで、各ハードウェア間の連動の準備が整う。

 次は、「CPU割り込み関数登録」の処理だ。ハードウェアを初期化しただけではCPU割り込み要求の発生までしか進まないが、この処理によって割り込み要求とCPU割り込み関数が関連付けられ、ハードウェアとソフトウェアが連動する準備が整う。これに続く「ハードウェア動作開始」は、I/Oレジスタ設定でハードウェアの動作を許可する処理である。ハードウェアの動作は、全ての連動の準備が整ってから許可するものと心得てほしい。

 これ以降は、CPU割り込み待ちの無限ループに入る。通常処理の1つである通信コマンド実行は、この無限ループ内に配置しておく。

 (b)周期処理と(c)即時処理は、ともにCPU割り込み関数だ。図2(d)を見てほしい。実行優先順位に基づくソフトウェア処理の流れを時系列で示してある。CPUは、優先順位の高い割り込み要求が発生すると、現在の処理を保留して優先順位の高い処理を先に終了させるという流れだ。

 さて、それぞれの関数の枠組みを作成し、I/Oレジスタに関連する部分を記述したところで、ソフトウェアの基本構成は完成だ。次のステップは、ソフトウェアの記述作業になる。ただ、その作業に入る前に、この段階でハードウェア依存部のテスト方法について触れておこう。

 I/Oレジスタの設定値とPWM0出力波形の関係や、EV0外部イベントとPWM0出力波形の関係については、その出力波形で観測できる。しかし、A-D変換器のサンプリングや変換のタイミングはどのように観測すればよいのだろうか。これについては、残念ながら現実的な方法は1つしかない。すなわち、これらの観測信号を出力する手段をあらかじめ備えている制御ICを選ぶ必要がある。ただ、CPU割り込みが発生したタイミングやソフトウェア処理が完了したタイミングであれば、容易に知ることができる。汎用I/Oポートを使って、出力論理を変化させればよい。

制御方式に従ってソフトウェアを記述

 それではいよいよ、電源要求の制御方式に従ってソフトウェアの記述を進めよう。これは、電圧制御のCPU割り込み関数の記述に相当する。図3に、本稿のバックコンバータで電圧制御に適用したデジタル信号処理のブロック図を示す。

図3 図3 デジタル信号処理のブロック図 PI制御フィルタのブロックと、不連続補正のブロックからなるデジタル信号処理系である(クリックで拡大)。

 この図にある「PI(比例・積分)制御フィルタ」の考え方は、アナログ信号処理と同じなので説明は省く。デジタル信号処理とアナログ信号処理で違うのは、積分係数だけだ。デジタル信号処理では、アナログ信号処理の積分係数に信号処理周期(スイッチング周期)を乗算した値を使えばよい。

 数値データは16ビット幅または32ビット幅の符号付き整数として数値演算する。最終的に時比率(D)を表現するには16ビット幅があれば十分だからだ。ただし、積分項の前周期の結果は必ず32ビット幅とする。積分係数は比例係数に対して小さく、16ビット幅では下位ビットが切り捨てられ、演算過程で大きな誤差が生じるからだ。この連載で前回(第2回「デジタル制御用ICの特徴を理解しよう」)紹介したように、このPI制御フィルタのCPU所要サイクル数は22サイクルである。これを時間に換算すると、CPUのクロック周波数が60MHzの場合は0.37μsになる。

 図中の「不連続補正」は、VOの観測値とVIについて観測値の除算結果を求め、PI制御フィルタの演算結果に乗算して、平方根の近似演算を施したものだ。時比率(D)は、PI制御フィルタ単体の場合と比較して同じ値に収束するが、PI制御フィルタの演算結果が出力電流(IO)に比例する。この不連続処理のCPU所要サイクル数は97サイクルで、CPUクロック周波数が60MHzのとき1.62μsに相当する。

 以上より、電圧制御に要するCPUの稼働時間は、スイッチング周期3.3μsの80%以下に納まることが確認できた。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.