本稿では、2回に分けてデジタル・パワー・システム・マネージャ(DPSM:Digital Power System Manager)について詳しく解説します。そのPart 1となる今回は、まずDPSMの製品ファミリを紹介します。次に、それらを使用した電流検出の方法について詳しく説明します。そのなかで、DPSM向けの開発環境であるLTpowerPlay®の機能も紹介していきます。最後に、電力量の計測方法について解説を加えることにします。なお、Part 2では、電源電圧が高い値である場合や負の値である場合を対象とし、電流検出の方法やその精度について説明します。それを通して、DSPMが備えるデジタル機能について詳細に解説する予定です。
はじめに
基板レベルの設計を担当する技術者は、様々な役割を担うことになります。まずは基板に命を吹き込み、その健全性を監視したり、設定を調整したりすることになります。また、診断を実行し、点検のためにオフラインにし、正常に動作しない場合にはトラブルシューティングを行うことになるでしょう。更には、複雑な基板の電源を、問題を生じさせることなく適切に遮断することが求められるケースもあるはずです。多くの場合、電源を設計/開発する際には、何らかのパワー・マネージメント技術を適用することになります。同技術を適用することが望ましいというレベルの案件も存在するかもしれませんが、適用が強く求められるケースも少なくないはずです。DPSM ICは、そうしたニーズに対応するための様々な機能を備えています。その例としては、パワーオン・シーケンスの制御、障害の検出、マージンのテスト、シャットダウンに関する調整、電圧/電流の測定、分析用のデータの収集といったものが挙げられます。本稿では、DPSM ICの例として「LTC297x」を取り上げ、その概要を説明します1。その上で、各製品を使って、電源から供給される電流の値を測定する方法について詳しく解説します。
FPGA、CPU、光トランシーバーなどは、かなり高価なコンポーネントだと言えます。それらのデバイスに適用する電源回路では、おそらく電源レールから流れる電流を測定することが重要な意味を持つはずです。そうした重要な電源レールについては、電流の測定結果を基に性能に関する知見を得ることが可能になるからです。電流を測定した結果がデジタル値として得られる場合、そのデバイスでは電力/電力量を算出することもできます。また、システムのホストは、独自の計算、データの傾向の把握、タスクのスケジューリングなどを実施できるようになります。
電流の検出をテーマにした技術記事やアプリケーション・ノートは数多く公開されています。しかし、DPSMに特化したドキュメントはほとんどありません。そこで、本稿ではDPSM ICをテーマとして取り上げることにしました。アナログ、デジタルの両側面から、電源電圧が低い場合、高い場合、負である場合の電源電流を測定するための様々な回路を紹介します。
LTC297x:DPSMの製品ファミリ
本稿ではDPSM ICの具体的な例として、LTC297xを取り上げます。これらの製品は、電流の測定機能を備えています。それぞれの製品の違いを表1にまとめました。
「LTC2977」、「LTC2979」、「LTC2980」、「LTM2987」は、電流を監視するように構成することができます。但し、いくつかの制約があります。例えば、電流の測定をサポートしているのは奇数番のチャンネルのみです。また、測定結果としてはスケーリングされていないV単位の値が返されます。このような制約についてはPart 2で詳しく説明します。
本稿では、「LTC2971」、「LTC2972」、「LTC2974」、「LTC2975」に重点を置くことにします。これらの製品は、電源回路から供給される電流(出力電流)の測定に対応します。また、測定結果は、システム/ソフトウェア側でREAD_IOUTコマンドを使うことによってA単位の値を取得することができます。
なお、アプリケーション・ノート「AN-105: 電流センス(検出)回路集 電流に対するセンスを養う」では様々な回路、事例を取り上げています。一部の回路は、アナログ・デバイセズのDPSM ICにも適用できます。
出力電流の監視 | 出力過電流/低電流のスーパーバイザ | 入力電流の監視 | 電力量の積算 | LTpowerPlayによるサポート | |
LTC2971 | ✔ | ✔ | ✔ | ✔ | |
LTC2972 | ✔ | ✔ | ✔ | ✔ | |
LTC2974 | ✔ | ✔ | ✔ | ||
LTC2975 | ✔ | ✔ | ✔ | ✔ | ✔ |
LTC2977 | 奇数番のチャンネル | ✔ | |||
LTC2979 | 奇数番のチャンネル | ✔ | |||
LTC2980 | 奇数番のチャンネル | ✔ | |||
LTM2987 | 奇数番のチャンネル | ✔ |
1 本稿において、LTC297xという用語は、LTC2971、LTC2972、LTC2974、LTC2975、LTC2977、LTC2979、LTC2980、LTM2987のことを指します。LTC2970は含まれません。
DPSMの基本
DPSMは、電源回路の主要な電圧や電流の測定値をデジタル形式で提供します。代表的なDPSM ICであるLTC297xファミリの大きな特徴としては、次の点が挙げられます。すなわち、システムのホストやLTpowerPlayをベースとして、初期の基板の立ち上げ、デバッグ、ベースラインとなるデータの収集/検証、傾向の把握を実現できるようになるということです(図1)。電源チャンネル(電源回路の出力チャンネル)の中には、電流の正確な測定値を必要としないものもあります。しかし、重要な電源チャンネルの多くは高精度の電流測定を必要とします。
本稿では、様々な電流検出の方法について説明します。そのなかで、コスト、複雑さ、精度の間のトレードオフについても触れることにします。

様々な電流検出の方法
LTC2971/LTC2972/LTC2974/LTC2975を使えば、電源回路の出力電流を正確に測定することができます。これらの製品は、電流検出に専用のピンとA単位で取得したテレメトリ・データを提供するPMBus(Power Management Bus)のコマンドに対応しています。可能であれば、これらの製品を使用するとよいでしょう。
例えば、ISENSEのラインにシャント抵抗(電流検出抵抗)を接続し、いくつかのレジスタを設定すれば、あとは各DPSM ICが必要な処理を行ってくれます(図2)。検出/測定した電圧の値を基に電流値を算出する処理も、各DPSM ICが実行します。また、LTpowerPlayを使用すれば、電流の測定結果を数値とテレメトリ・プロットによってリアルタイムに表示することも可能です(図3)。

LTC2977/LTC2979/LTC2980/LTM2987を使用することでも、出力電流の測定は行えます。但し、READ_IOUTコマンドを使用した結果としては電圧値が返されます。したがって、システムのホストやLTpowerPlayによって、それらの値を電流値に変換しなければなりません。このことは、ICではなくファームウェアがシャント抵抗の値を記憶しておく必要があるということを意味します。
シャント抵抗を使う以外に、電流検出の方法は存在しないというわけではありません。表2に、DPSM ICで使用できる電流検出の方法と、その際に生じるトレードオフについてまとめました。この表に示したものだけでなく、コストや基板面積などの要素について考慮する必要もあります。
シャント抵抗 | インダクタのDCR | IMONピン | |
精度 | 非常に良い | 良好 | 良好。但し、通常、負荷が軽い場合の精度については規定なし |
出力パス | 損失あり(IRドロップ) | 追加の損失なし | 損失なし |
フィルタ | 1ピンごとに1極のフィルタ | 1ピンごとに2極のフィルタ | 単純なRCフィルタ |
その他 | 事実上、コモンモードに関する制限はなし。製品によってはIMONピンにオフセット電圧が存在 |
シャント抵抗による電流検出
電流検出方法の中で最も一般的なものは、シャント抵抗を使用する方法だと言えます。この方法は、電流シャントと呼ばれることもあります。DC/DCコンバータとしてスイッチング・レギュレータを使用するのかリニア・レギュレータを使用するのかに関わらず、シャント抵抗はレギュレータの出力に直列に挿入します。シャント抵抗が帰還ループに含まれるように抵抗分圧器を出力に接続すると、レギュレータは負荷電流が流れた際にシャント抵抗によって生じるIRドロップを補正することができます(図4)。その結果、負荷レギュレーションが大幅に改善されます。
電圧値を電流値に変換するためには、PMBusのIOUT_CAL_GAINコマンド(レジスタ)を使用します。これは、シャント抵抗の公称値を表します。各DPSM ICは、ISENSEピンを介してシャント抵抗の両端に生じるわずかな電圧降下を測定します。すると、IC内部で変換処理が行われ、READ_IOUTコマンドによって出力電流の値が返されます。各DPSM ICで検出される実際の電圧は、MFR_IOUT_SENSE_VOLTAGEコマンドを使用すれば取得できます。各DPSM ICは、以下の式によって出力電流の値を算出します。
シャント抵抗を使用する場合には、温度による変動を補正するために、メーカーの仕様書に合わせてMFR_IOUT_CAL_GAIN_TCの値を設定します。一般に、10mΩを超えるシャント抵抗の温度係数は100ppm/°C未満に抑えられています。
ISENSEピン(差動ペア)の間で発生/検出可能な差動電圧の最大値は、データシートに記載されています。LTC297xのほとんどの製品では、差動電圧は±170mVに制限されています。ほとんどのアプリケーションでは、これでも十分すぎる値です。最大検出電圧は、VSENSE = RSNS×IOUT(MAX)で計算できます。一般的には、最初に最大検出電圧を決定します。そして、シャント抵抗の値は、RSNS = VSENSE/IOUT(MAX)によって算出します。最大検出電圧の値は、信号が十分に大きく、それでも出力パスで消費電力やIRドロップに関する問題が生じないように選択します。適切な値は50mV~80mV程度です。シャント抵抗の物理的なサイズについては、消費電力に関する考慮が必要です。シャント抵抗としては、定格消費電力が、同抵抗による消費電力PD = RSNS×(IOUT(MAX))2を上回るものを選択しなければなりません。
シャント抵抗による電流検出では、グラウンド基準の電流検出アンプ(CSA:Current Sense Amplifier)を追加する方法が使われることがあります(図5)。それによりシングルエンドの出力を得て、DPSM ICの電流検出ピンにその出力を入力するというものです。通常、この方法はレベル変換の手段として使用されます。LTC297xのほとんどの製品では、電源レールの上限値が6Vとなっています。実際の電源レールの電圧がそれよりも高い場合に、CSAによってレベル変換を行うということです。CSAとしては、ハイサイドのコモンモード性能が優れたものを使用する必要があります。通常、そうしたデバイスには、検出の対象とするグラウンド基準の電源レールから電力を供給します。この方法の詳細については、Part 2で説明します。
アナログ・デバイセズは、フットプリントが小さく使いやすいµModule®製品を数多く提供しています。DPSM ICは、そうした製品のシーケンス制御や監視に適したコンパニオン・チップとして使用できます。ほとんどのµModule製品は、インダクタを内蔵しています。また、なかには上側の帰還抵抗を内蔵しているものも存在します。その場合、帰還ループ内に外付けのシャント抵抗を追加することはできません。最高の電圧精度を得るためには、µModule製品の中でも上側の帰還抵抗を外付けできるものを選択する必要があります。
インダクタのDCRによる電流検出
インダクタは、理想的なインダクタンスとDCR(DC抵抗)を使ってモデル化することができます(図6)。そのDCRを利用することでも、電流検出を実現できます。降圧レギュレータの出力インダクタに流れる電流を、同インダクタのDCRに基づいて検出するということです。通常、この方法は大電流(20A以上)が流れる電源レールに適しています。そのような回路では、シャント抵抗を追加すると、消費電力が増えて余計な熱が発生してしまいます。インダクタのDCRを利用するのであれば、この問題を回避できるということです。
インダクタを利用して電流を検出するには、その両端を測定用のノードとして使用する必要があります。また、そのノードとLTC297xのISENSEピンの間にはフィルタ回路を挿入しなければなりません。具体的には、2次の差動型RCローパス・フィルタを適用します。利便性を高めつつフットプリントを低減するためには、4素子の抵抗アレイを使用するとよいでしょう。その抵抗の値は、LTC297xの入力電流によって生じる誤差を防止できるように選択する必要があります。つまり、IRドロップが十分に小さく、コンデンサの値を1µF未満に抑えられる程度に大きい値を選ばなければなりません。
LTC2971/LTC2972/LTC2974/LTC2975のデータシートには、抵抗とコンデンサの値を選択するための手順が記されています。以下に、具体的な例を示しておきます。
ここでは、インダクタンス(L)が2.2µH、DCRが10mΩ、レギュレータのスイッチング周波数fSWが500kHzであるとします。ここで、Rcm1 = Rcm2 = 1kΩであるとすると、以下のようにコンデンサの値が決まります。
インダクタのDCRを利用した電流検出では、損失が増加することはありません。しかし、DCR(巻線抵抗)のばらつきによって測定精度が低下します。インダクタ製品の仕様を見ると、DCRの値は±10%もばらつく可能性があることがわかります。また、DCRについては最大値しか示されていないケースも少なくありません。実際のDCRの値は個々のインダクタによって異なりますし、製造ロット間でも差が生じます。
フィルタ回路については別の実装方法も存在します。それは、図7のように2個の抵抗と2個のコンデンサだけを使用するというものです。部品の数を8個から4個に削減できることになりますが、フィルタとしての性能は図6の回路には及びません。
PMBusによる構成
PMBusのコマンドを使用してLTC297xの構成を行う際には、IOUT_CAL_GAINコマンドを使ってシャント抵抗またはインダクタのDCRの公称値を設定します。銅製の巻線から成るインダクタの場合、DCRの値はインダクタの温度が上昇すると増加します。その結果、READ_IOUTコマンドによって取得可能な測定値に誤差が生じます。この誤差は、MFR_IOUT_CAL_GAIN_TCコマンドを使って銅の温度係数を設定することで補正できます。LTC297xのデータシートを確認すると、そのデフォルト値は3900ppm/°Cに設定されています。この値は、使用するインダクタに応じて調整しなければなりません。というのも、このパラメータの値は、巻線の材料が純粋な銅ではなく合金である場合には大きく変化するからです。また、MFR_IOUT_CAL_GAIN_THETAコマンドを使って熱時定数を設定することも可能です。LTC297xのデータシートには、これらに関する詳細な説明が記載されています。
より高い精度で温度補正を行うためには、インダクタの近くに温度センサー(ダイオード接続したバイポーラ・トランジスタ)を配置することが重要です。LTC2971/LTC2972/LTC2974/LTC2975は、温度センサーの接続に使用するTSENSEピンを備えています。
IMONピンによる電流検出
スイッチング・レギュレータでもリニア・レギュレータでも、IMONピンを備える製品が増えてきています。IMONピンは電流検出に使用する出力ピンであり、レギュレータの負荷電流をモニタする方法を提供します。同ピンを使用する方法のメリットの1つは、損失が生じないことです。また、LTC297xのISENSEピンをレギュレータの出力であるVOUTに接続しなくてよいので、コモンモード電圧に対する配慮も不要になります(図9)。IMONピンからはシングルエンドの信号が出力されます。この信号は、出力電流の数分の1の値を表します。また、電圧出力にも電流出力にも対応します。なお、IMONピンとグラウンドの間には抵抗を接続する必要があります。IMONピンで電流出力を行う場合には、抵抗値を選択することにより、全負荷電圧の最大値を設定することができます。
IMONピンのシングルエンドの電圧は、シャント抵抗やインダクタのDCRの両端に発生する電圧よりもはるかに高くなることがあります。LTC2972とLTC2971は、そうした大きな信号を許容できるようにするための構成用ビットを備えています。そのimon_senseビットはMFR_CONFIGコマンドで設定でき、ページ指定用のコマンドとして機能します(図8)。

なお、IMONピンに接続する抵抗の値は、あらゆる負荷条件の下で広いダイナミック・レンジを確保できるように選択しなければなりません。一般に、IMONピンによる電流検出の精度は、中程度の負荷、重い負荷の場合には良好です。しかし、負荷が軽い場合には精度が低下します。詳細については、レギュレータ製品のデータシートを確認してください。
レギュレータ製品の中には、IMONピンと組み合わせた電流制限機能を提供しているものがあります。その場合、IMON/ILIMピンという名前が使われます。IMONピンに接続する抵抗の値については、全負荷の条件下でIMONピンの電圧によって電流制限回路が作動してしまうことがないように選択しなければなりません。IMON/ILIMピンを備えるリニア・レギュレータの例としては、「LT3072」や「LT3086」が挙げられます。一方、「LT3094」や「LT3045」などは、IMONピンではなくILIMピンを備えています。このピンは電流制限機能のためのものですが、出力電流のモニタにも利用可能です。一部のスイッチング・レギュレータはIMONピンだけを備えており、電流制限機能を内蔵しているのかどうかがわかりにくいことがあります。そうした製品の例としては「LT8652S」や「LT8708」があります。これらの製品の電流制限回路はフォールドバック機能を備えており、出力をシャットダウンしません。LTC298xの場合、過電流の状態を検出した際に出力を遮断するには、VOUT_ENをローに引き下げてレギュレータの出力をディスエーブルにする必要があります。
入力電流の検出
電源システムによっては、単一の電源入力が複数のレギュレータに接続されていることがあります(図10)。つまり、複数のレギュレータに対し、単一の電源入力によって電力が供給され、それを受けた各レギュレータが各種の回路に必要な電源電圧を生成するということです。LTC2971/LTC2972/LTC2975を使用すれば、単一の電源入力によって供給される入力電流IINを簡単に測定することができます。これらのICは、単一の電源入力VINの電流パスに挿入された検出抵抗RSNSに接続するためのIIN_SNSピンを備えています。これらのピンに電源入力を直接配線できるか否かはその値によって決まります。VINの値は、LTC2972/LTC2975では15V未満、LTC2971では60V未満でなければなりません。
出力電流の測定向けにも、入力電流の測定向けにも、ユーザがプログラム可能なPMBusのコマンド/レジスタが提供されています。それらを使用することで、検出した電圧値を電流値に変換することができます。入力電流を測定する場合には、PMBusのMFR_IIN_CAL_GAINコマンドを使用します(図11)。入力電流の値は、READ_IINのレジスタから読み出すことができます。

PMBusのREAD_IINコマンドとREAD_VINコマンドは、それぞれ電流の測定と電圧の測定に対応します。LTC2971/LTC2972/LTC2975では、電流、電圧、タイム・ベースを組み合わせることによって、システムに供給される電力/電力量を計算することも可能です。電力量の計算については後ほど説明します。
LTC2971を使えば、60Vの電源レールに対応して入力電流を検出することができます。同ICの場合、電源入力に付加されたシャント抵抗にIIN_SNSピンを直接接続することが可能です。但し、電源レールの電圧が24Vを超える場合、LTC2971のVPWRピンにはレギュレータによって降圧した電源電圧を供給する方法が推奨されます(図12)。そうすれば、電力を節減し、LTC2971の自己発熱を防止することが可能になるからです。VPWR×IPWRに従って電力が消費され、それに伴ってダイの温度が大きく上昇する可能性があるので注意してください。例えば、降圧レギュレータ「ADP2360」には5Vの固定出力のオプションが用意されています。同ICを使えば、低コストで小型のソリューションを実現できます。
電力量の計測
アプリケーションによっては、電力量の使用状況を監視することが重要になります。スイッチング・レギュレータ、太陽電池パネルの出力、バッテリなど、電源入力の形態にかかわらず、システムで消費するトータルの電力量を把握するのは有用である可能性があります。LTC2971/LTC2972/LTC2975を使用すれば、電源入力のハイサイドを対象として電流を検出することができます。つまり、この機能を使うことで入力電流を測定することが可能です。LTpowerPlayは、入力電流と電力量の測定値に関連する機能について検討する際に非常に役に立ちます。READ_EINコマンドを選択すれば、テレメトリ・ウィンドウに積算電力量のプロットがリアルタイムに表示されます(図13)。

電力量を測定する際には、入力電圧も測定することになります。したがって、入力電力のレポートも可能です。電力量は電力と時間の積なので、積算電力量の値はDPSM IC内部のタイム・ベースに基づいて提供されます。図14に、LTpowerPlayのGUI(Graphical User Interface)画面を示しました。右上隅のメータには、より詳細な情報が表示されます。中央の針は、W単位の入力電力をリアルタイムに表示します。また、5つの小さい目盛盤は、家庭用の電力メータと同様にトータルの積算電力量を示します。利便性を得るために、測定結果は数値としても表示されます。

LTpowerPlayは、シンプルでわかりやすいインターフェースを提供します。入力電流、出力電流、電圧、電力、電力量の測定値がまとめて表示されます。
また、入力電流、入力電圧、入力電力、入力電力量は表形式で表示することも可能です(図15)。それらは、GUIのテレメトリ部にも表示されます。MFR_EINコマンドのレジスタは、積算電力量の値をmJ単位で保持しています。電力量の積算器がアクティブであったトータルの時間は、MFR_EIN_TIMEコマンドのレジスタによって示されます。GUIは、表示されているSI単位の接頭辞を自動的に更新します。例えば、mJからJ、JからkJに変更するといった具合です。

表3は、LTC297xから読み出すことができるテレメトリ・データについてまとめたものです。ブロック読み出しであるMFR_EINのレジスタを除き、各レジスタの値はI2C/PMBusのワード読み出しによって取得することが可能です。
レジスタ名 | LTC2971/LTC2972/LTC2975 | LTC2974 | LTC2977/LTC2979/LTC2980/LTM2987 |
READ_IOUT | ✔ | ✔ | |
READ_VOUT | ✔ | ✔ | ✔1 |
READ_POUT | ✔ | ✔ | |
READ_IIN | ✔ | ||
READ_VIN | ✔ | ✔ | ✔ |
READ_PIN | ✔ | ||
MFR_EIN | ✔2 |
1 adc_hiresビットが設定されている場合、READ_VOUTの値はmV単位で返されます。L11のフォーマットです。
2 mJ単位の電力量の値とミリ秒単位の経過時間を含むブロック読み出し。