
アプリケーション・ノート使用上の注意
本アプリケーションノートの英語以外の言語への翻訳はユーザの便宜のために提供されるものであり、リビジョンが古い場合があります。最新の内容については、必ず最新の英語版をご参照ください。
なお、日本語版のアプリケーションノートは基本的に「Rev.0」(リビジョン0)で作成されています。

AN-1343: ホット・スワップ・デバイスとパワー・モニタ・デバイスの電力量測定
はじめに
アナログ・デバイセズは幅広いホット・スワップ・デバイスやパワー・モニタ・デバイスを提供しており、その中には電力量測定機能を備えたものもあります。これらのデバイスには、ADM1075、ADM1276、ADM1278、ADM1293、ADM1294 などがあります。
これらのデバイスは、それぞれ入力電圧と出力電流を測定することができます。12 ビット入力電圧(VIN)と12 ビット出力電流(IOUT)の測定値の積が計算され、入力電力値(PIN)が与えられます。この乗算は固定小数点演算を使用して行われ、得られる値は24 ビット値です。結果は12.0 フォーマットです。つまり端数はありません。
PMBus™ホット・スワップ・コントローラ用アプリケーション・プロファイルは、ユーザーが個々の電力サンプルを読み取れること、あるいは内蔵電力量測定機能を使用できることを定めています。内蔵電力量測定機能の利点は、電力サンプルを読み出すためにホスト・プロセッサがパワー・モニタを継続的にポーリングしなくてもよいことです。個々の電力サンプルはチップ上で積算されます。したがって、継続的にポーリングを行わなくても、ユーザーはPMBus 経由で間欠的にパワー・モニタからの読み出しを行うことができ、他のトランザクション用にI2C バスを空けておくことができます。
瞬時電力測定
24 ビット電力値は、READ_PIN_EXT コマンドを使って読み出すことができます。24 ビット値の上位16 ビットは、READ_PINコマンド使用時にPINの戻り値として使われます。入力電力レジスタは2 の補数を返すので、正の電力測定の場合、MSB は常に0 です。
電力量測定
電力計算が完了するたびに24 ビット電力値が24 ビット電力量アキュムレータ・レジスタに加算されます。この24 ビット電力値も2 の補数で表わされるので、MSB は常に0 です。この電力量アキュムレータ・レジスタが0x7FFFFF から0x000000 にロールオーバーするごとに、16 ビットのロールオーバー・カウンタがインクリメントされます。ロールオーバー・カウンタはストレート・バイナリで、ロールオーバー前の最大値は0xFFFF です。
ADM1293/ADM1294 は24 ビットの電力量アキュムレータをフルに使用し、0x7FFFFF ではなく0xFFFFFF でロールオーバーします。それに応じてREAD_EIN およびREAD_EIN_EXT の計算を調整してください。
24 ビットのストレート・バイナリ電力サンプル・カウンタも、電力値が計算されて電力量アキュムレータに加算されるごとに1 ずつインクリメントします。
これらのレジスタは、電力量アキュムレータに必要な精度レベルと、パワー・モニタリング・デバイスからの読み出し頻度を制限する必要性の有無に応じて、2 つあるコマンドのどちらかを使って読み出すことができます。
- READ_EIN コマンドは、電力量アキュムレータの上位16ビット、ロールオーバー・カウンタの下位8 ビット、およびサンプル・カウンタの全ビット(24 ビット)を返します(表1 を参照)。
- READ_EIN_EXT コマンドは、電力量アキュムレータの全ビット(24 ビット)、ロールオーバー・カウンタの全ビット(16 ビット)、およびサンプル・カウンタの全ビット(24ビット)を返します(表2 を参照)。より長いロールオーバーのカウンタを使用するということは、データを失うことなく、デバイス読み出しの時間間隔を秒単位から分単位へと延長できることを意味します。
バス・ホストはこれらの値を読み出すことができ、積算電力量の差、サンプル数の差、および最後の読み出しからの時間差を計算することによって、ホストは 最後の読み出し以降の平均電力と消費電力量を計算することができます。
時間差はプロセッサのタイム・スタンプに基づいてバス・ホストによって計算され、アナログ・デバイセズのパワー・モニタはこの計算を行いません。
データの喪失を避けるために、バス・ホストは、ロールオーバー・カウンタにラップ・アラウンドが2 回以上生じないようなレートで読み出しを行う必要があります。カウンタにラップ・アラウンドが生じると、PIN用に読み出す次の値が前の値より小さくなってしまいます。
EIN レジスタの読み出し
時間的に整合したデータが得られるように、電力量測定レジスタを一動作で読み出します。
Bits | Bit Name | Description | Reset | Access |
[47:24] | SAMPLE_COUNT | これは、収集され電力量カウント・アキュムレータに積算されたPINサンプルの合計数で、24 ビットの符号なしバイナリ値です。バイト5 がハイ・バイト、バイト4 がミドル・バイト、バイト3 がロー・バイトです。 | 0x000000 | R |
[23:16] | ROLLOVER_COUNT | 電力カウントが0x7FFF から0x0000 へロールオーバーした回数です。これは8 ビットの符号なしバイナリ値です。 | 0x00 | R |
[15:0] | ENERGY_COUNT | PMBus ダイレクト・フォーマットの電力量アキュムレータ値。バイト1 がハイ・バイト、バイト0 がロー・バイトです。内部的には電力量アキュムレータは24 ビット値ですが、このコマンドでは上位16 ビットだけが返されます。24 ビットすべてにアクセスするには、READ_EIN_EXT レジスタを使用してください。 | 0x0000 | R |
EIN(拡張)レジスタの読み出し
時間的に整合したデータが得られるように、拡張高精度電力量測定レジスタを一動作で読み出します。
Bits | Bit Name | Description | Reset | Access |
[63:40] | SAMPLE_COUNT | これは、収集され電力量カウント・アキュムレータに蓄積されたPINサンプルの合計数で、24 ビットの符号なしバイナリ値です。バイト7 がハイ・バイト、バイト6がミドル・バイト、バイト5 がロー・バイトです。 | 0x000000 | R |
[39:24] | ROLLOVER_EXT | 電力カウントが0x7FFFFF から0x000000 へロールオーバーした回数です。これは16 ビットの符号なしバイナリ値です。バイト4 がハイ・バイト、バイト3 がロー・バイトです。 | 0x0000 | R |
[23:0] | ENERGY_EXT | PMBus ダイレクト・フォーマットの拡張高精度電力量アキュムレータ値。バイト2がハイ・バイト、バイト1 がミドル・バイト、バイト0 がロー・バイトです。 | 0x000000 | R |
ポーリング時間の例
A/D コンバータ(ADC)の変換時間は、データシートの仕様から計算できます。たとえばADM1278 では、IOUT サンプル1 個の標準的な変換時間は144μs で、VINサンプル1 個の変換時間は64μs です。したがって、ADM1278 においてIOUT とVINのサンプリングを有効にした場合の変換時間は208μs です(平均計算を行わない場合)。128 回の平均を取る場合の標準的なADC 変換時間は26.624ms になります(つまり208 μs × 128)。
この例では、電力の読み取り値の平均が700W であるものとします。ダイレクト・フォーマット・コードでは、電力値は次の値で返されます。
Power = 6123 × RSENSE × 700 W × 10−2
ADM1278 のデータシートに記載されているPMBus ダイレクト・フォーマットの式を参照してください。
RSENSE = 0.25 mΩ だとすると、次式が成り立ちます。
Power = 6123 × 0.25 mΩ × 700 W × 10−2 = 10,715.25 = 10,715
電力量アキュムレータは24 ビットで、値は2 の補数です。READ_EIN コマンドは電力量アキュムレータ・レジスタ(ENERGY_COUNT)の上位16 ビットを返します。正の電力値ではMSB は常に0 です。したがってENERGY_COUNT は、積算された電力が2(16 − 1) = 32,768(ダイレクト・フォーマット・コード)に達するとロールオーバーします。この例の電力量アキュムレータは、ADC サンプルが32,768/10,715 = 3.058 になるとロールオーバーします。
READ_EINコマンド用のロールオーバー・カウンタは8 ビット値です。この8 ビット値はストレート・バイナリ数で、そのロールオーバー値は28 = 256 です。ロールオーバー・カウンタは、電力量アキュムレータがロールオーバーするごとに1 回ずつインクリメントします。READ_EIN を使用したと仮定すると、ロールオーバー・カウンタをラップ・アラウンドさせるために必要なADC サンプルの数は256 × 3.058 = 782.8 サンプルで、これから合計ロールオーバー時間は1 回平均の場合で1782.8 × 208μs =0.16 秒、128 回平均の場合で782.8 × 26.624 ms = 20.84 秒となります。
ポーリング時間は、16 ビットのロールオーバー・カウンタを使用するREAD_EIN_EXT コマンドを代わりに使用することによって、大幅に(256 倍)増やすことができます。上で計算した例のロールオーバー時間は、1 回平均の場合で41.7 秒、128 回平均の場合で5335.4 秒= 88.9 分に増加します。
以上から、ロールオーバー時間(秒)は次の式で計算できます。
独立に設定できる電力平均方法
上の「ポーリング時間の例」に示した例は、PMON_CONFIG レジスタの電圧および電流(VI)の平均方法と同様に電力の平均方法が設定されることを前提としています。しかし、ADM1278やADM1293/ADM1294 では電力の平均方法をユーザーーが独立に設定できるので、常にこのような前提が成り立つとは限りません。
実際、VI の平均方法は、1 回のADC トリガで取り込むADC サンプルの数を設定します。電力値は計算値なので、電力の平均方法は、平均計算の方法と、その結果をいつ出力レジスタに加算するかを決定します。たとえば、VI の平均回数が128 回で電力の平均回数が1 回の場合、1 回のADC トリガで128 個のVI サンプル収集が開始されます。128 サンプル全体の平均電圧値と平均電流値がREAD_VIN レジスタとREAD_IOUT レジスタに戻されますが、128 個の電力測定値はすべて電力量アキュムレータに加算され、サンプル・カウントは128 だけインクリメントします。
これに対し電力の平均方法も128 回に設定すると、128 個のサンプルの最後に平均電力値が1 個だけ電力量アキュムレータに加算され、サンプル・カウントが1 だけインクリメントします。
したがって、電力の平均方法の設定値は、電力値が電力量アキュムレータに加算される頻度を決定し、そのオーバーフローの頻度に影響を与えます。電力の平均方法の設定値を大きくすることは、READ_EINコマンド間のポーリング間隔を長くできることを意味します。電力の平均方法の設定値を大きくする代償として、測定精度と分解能がわずかに低下します。
以上をまとめると、データ喪失をなくすために必要なポーリング時間は、主に、測定する電力値の大きさ、電力の平均方法の設定値、およびREAD_EIN またはREAD_EIN_EXT のどちらを使用するかに依存します。