質問:
使用しているプロセッサが、データシートに記載されている値より、多くの電力を消費してしまいます。何が悪 いのでしょうか。
回答:
以前、わずかな電力しか消費しないデバイスによって発生したトラブルについての記事を執筆しました。確かに、そのようなことも起こりうるのですが、滅多にあることではありません。私の場合、通常は「データシートに記載されている値よりも消費電力が多い」という苦情に対応しているケースがほとんどです。
あるお客様が、プロセッサを実装したボードを持って私のオフィスにやってきました。そのボードが大量に電力を消費し、バッテリがすぐに消耗してしまうというのです。アナログ・デバイスのプロセッサは、消費電力が極めて少ないことを売りにしています。したがって、当社にはそのことを証明する責任があると考えました。そこで、いつものとおり、真の原因が見つかるまで、基板上のデバイスを 1 個ずつ電源から切り離すという単純な作業を実施することにしました。その準備を行っている最中に、以前も似たようなケースがあったことを思い出しました。その時は、LED が原因で問題が起きていたことを突き止めました。電流量を制限するための抵抗が付加されていない LED が、電源とグラウンドの間に接続されていたのです。過電流が原因だったのか、他の何かが問題だったのか、はっきりとは覚えていませんが、そのLED はすでに壊れていました。その時の経験から、私はまずボード上に焼損しているLED が存在しないかどうか確認しました。状況的に、それは“希望の光”となるのですが、残念ながら、壊れたLED は見当たりませんでした。ボード上には、確認すべきデバイスや問題の原因になりそうなデバイスはプロセッサ以外に存在しませんでした。しかも、お客様からは「実験室でテストした時には、電力の消費量もバッテリの寿命も予測したレベルだった。ところが、現場にシステムを配備したところ、バッテリがすぐに消耗してしまった」という追加の情報がもたらされました。それにより、私の心はさらに沈むことになりました。というのも、この種の問題は、とにかく現象を再現させることが非常に難しいのです。そのため、デバッグは極めて困難な作業になります。デジタルの領域は 1 と 0 だけで成り立っており、予測が可能で快適な世界だと言うことができます。ところが、お客様からの追加の情報により、目の前にあるのは予測が不可能でアナログ的な難題であることが明らかになったのです。
最もシンプルに表現すると、プロセッサにおいて電力を消費する主な領域としては、コア部と I/O 部の 2 つが存在します。コア部の電力を抑えたい場合には、PLL の構成(コンフィギュレーション)/クロック速度、コア部の電源レール、コアがビジーになる演算処理の量などを確認します。コア部の消費電力は、クロック速度を下げたり、特定の命令を実行してコアを強制的に停止させたり、スリープ/ハイバネーションの状態に設定したりすることによって、低減することができます。I/O 部によって多くの電力が消費されていることが疑われる場合には、I/O 部の電源、I/O 部をスイッチングさせる信号の周波数、I/O部が駆動している負荷に注目します。
私にできることは、これら 2 つの観点から原因を探すことしかありませんでした。その結果、コア部には疑わしい点はないことがわかりました。したがって、真の原因は必ず I/O 部に存在するはずでした。その時、お客様から「プロセッサは演算のためだけに使用しており、I/O部は最小限の動作しかしない」という追加の情報が寄せられました。実際、そのプロセッサの I/O ピンはほとんど使われていませんでした。
「ちょっと待ってください。一部の I/O ピンはまったく使っていませんよね。それらのピンはどこに接続されているのでしょうか?」
「もちろん、どこにも接続していません」
「あ~、そういうことですか!」
原因が判明した瞬間でした。喜びのあまり駆け出してしまうといったことはありませんでしたが、それでも、興奮を抑えるのにしばらく時間がかかりました。その後、お客様に対して次のような説明を始めました。
図1 に示したのは、一般的なCMOS デジタル入力部の回路です。併せて、論理レベルについて説明するための図も示しています。
入力に、推奨レベルのハイ(1)またはロー(0)の電圧が印加されると、PMOS FET と NMOS FET のうちいずれか一方がオンになります。言い換えると、適切なデジタル信号が印加されている場合には、両方が同時にオンしたままになることはありません。ただし、入力駆動電圧が図中の中間領域(不定領域)にある場合には、PMOSとNMOS が同時に導通します。つまり、その場合は電源とグラウンドの間に漏れ電流の経路が形成されるということです(図 2)。入力ピンをどこにも接続していないフローティングの状態では、入力ピンのノードがノイズを拾ってしまい、中間領域に陥ってしまうことがあります。そうすると、漏れ電流による電力消費が発生してしまうのです。お客様のボードでこの現象が起きていたとすれば、通常よりも多くの電力が消費されているということも、その状態がランダムに発生するということも説明がつきます。
入力ピンがフローティングになっていると、ラッチアップが発生しているかのような状態に陥ることもあります。デバイスに大電流が流れ続けて、焼損してしまうことがあるのです。「問題を抱えたボードが目の前にあるのだから、デバッグを行って原因を特定することなど簡単だろう」と考える人もいるかもしれません。ただ、このお客様が抱えていた問題は、空調設備の整った実験室でのテストでは、目に見えて危険なフラグが立つことはありませんでした。現場に配備した後になって問題が頻出したので、対処は容易ではなかったのです。
根本的な原因が判明したので、解決策も明らかになりました。使用していないすべての入力ピンに、適切な電圧を印加し続ければよい(論理レベルのハイまたはローに固定すればよい)のです。ただし、その際には注意すべき事柄があります。ここではCMOS デジタル入力に対し、この対策が適切に行われなかったために生じる可能性のあるトラブルをいくつか紹介しましょう。完全にオープン/フローティングの入力ピンだけでなく、一見適切な論理レベルに接続されているように見える入力ピンにも注意が必要なのです。
抵抗を介して単純に電源またはグラウンドに入力ピンを接続するとします。その場合、使用するプルアップ抵抗/プルダウン抵抗の値に注意する必要があります。場合によっては、ピンのソース電流/シンク電流と抵抗が組み合わせられることで、入力ピンにかかる実際の電圧が望ましくないレベルにシフトしてしまうかもしれません。つまり、プルアップまたはプルダウンが確実に行われるように、抵抗の値は適切に選択する必要があります。
なお、入力ピンにアクティブな信号を印加したいケースもあるでしょう。その場合、CMOS の負荷に対して十分な大きさの駆動能力を確保してください。この条件が満たされない場合、回路の周辺に存在する大きなノイズによって、入力ピンのノードが望ましくない状態に陥る可能性があります。
ここでは 2 つのシナリオを考えてみましょう。
- 実験室では良好に動作していたプロセッサを現場に配備すると、特に理由もないはずなのにリブートが始まることがあります。プルアップが弱いため、リセット信号線に結合したノイズによって、望まない動作に陥っているということです(図 3)。
- 図 4 に示したのは、CMOS 入力によって、大電力に対応した MOSFET/IGBT を制御するゲート・ドライバの例です。2 つ の MOSFET/IGBT が 、 気 づかないうちにオンになっているということが起こりえます。その場合、非常に好ましくない結果になります。
この他に、駆動信号の立上がり/立下がり時間が非常に長い(立上がり/立下がりが遅い)ケースも問題になります。入力信号が一時的に中間領域(中間電圧レベル)にとどまることになるため、あらゆる種類の問題が生じる可能性があります(図 5)。
ここまで、一般的な CMOS 入力で発生する可能性のあるいくつかの問題を紹介してきました。ただ、これらの問題に対処できるよう設計されている製品もあります。そうした優れたデバイスが存在することを知っておくと、役に立つケースがあるかもしれません。例えば、シュミット・トリガ入力を備えた製品は、本質的に、ノイズが多い環境や立上がり/立下がりが遅い信号の処理に適していると言えます。
また、アナログ・デバイスの最新世代のプロセッサでは、確実な動作を保証するために、上述した問題を回避できるよう設計されているものがあります。さらに、ガイドラインの中で防止策を示すといった対策も行っています。例えば、「ADSP-SC58x/2158x」のデータシートには、ピン(ノード)がフローティングにならないようにするための内部終端回路や論理回路についての説明が記載されています(図 6)。
繰り返しになりますが、特に CMOS デジタル入力については、使用していないピンは、すべて電源/グラウンドに接続しておくことが得策です。
参考文献
データシート「ADSP-SC58X/ADSP-2158X: SHARC+D u a l C o r e D S P w i t h A R M C o r t e x - A 5 」A n a l o gDevices、2017年
Abhinay Patil「低電力で焼き付き? 低消費電流でもトラブルになる時」Analog Dialogue 51-07