FPGA を使用するアプリケーションにおいて、パワー・マネージメント用の適切なソリューションを設計するのは容易なことではありません。これについては、以前から多くの技術的な議論が交わされてきました。その設計作業においては、最も適切なパワー・マネージメント製品を選定し、FPGA に適用することを念頭に置いてソリューションを最適化する必要があります。
適切な電源ソリューションの選定
FPGA に給電するための最良のソリューションを見いだすのは容易ではありません。多くのベンダーが、FPGA の給電に最適だとうたう製品を販売しています。それらの製品は、どのような点で FPGA の給電に適しているというのでしょうか。FPGA の給電に特に適した DC/DC コンバータというものは存在しません。一般的には、どのような製品でも使用できます。多くの FPGAアプリケーションでは、複数の電源レールが必要になります。特定の製品が推奨される根拠は、複数種の電源出力に対応しているという点にあります。例えば、FPGA のコア部と I/O 部に加え、おそらくは DDR メモリの終端にも電源レールは必要になります。そのような理由から、1 つのレギュレータ IC に複数のDC/DC コンバータを集積した PMIC(パワー・マネージメントIC) が FPGA に適しているとされているのです。
特定の FPGA に対する給電に適切なソリューションを構築するために、よく使われる手段があります。それは、FPGA ベンダーが提供しているパワー・マネージメント向けのリファレンス・デザインを活用することです。リファレンス・デザインは、設計の最適化を目指すための出発点として利用可能です。ただし、通常はリファレンス・デザインをそのまま使うのではなく、何らかの変更を加える必要があります。FPGA を使用するシステムには追加の回路や部品が必要であり、それらにも給電しなければならないからです。もう1つ検討が必要な事柄があります。それは、FPGA に供給する必要がある電力量は固定ではないという点です。供給する電圧は、実際に使用されるロジック・レベルと FPGA の実装に大きく依存します。リファレンス・デザインに対するすべての変更を終えた時点で、当初の状態からは大きく異なるものになっているでしょう。このような理由から、リファレンス・デザインの利用が常に最適な手段になるとは言えません。そうではなく、アナログ・デバイセズが提供する「LTpowerCAD」のようなツールを利用することが最良の手段である可能性があります。DC/DC コンバータの選択を行ったり、最適化を実施したりするためのツールに、必要な電源電圧の値と電流の値を入力する手法が最良の選択肢になるかもしれないということです。

LTpowerCAD は、個々の電源レールに対する給電用のソリューションを構築するうえで役に立ちます。一連のリファレンス・デザインも用意されているので、設計の適切な出発点としても利用可能です。LTpowerCADは、アナログ・デバイセズのウェブサイトで無償ダウンロード提供されています。
電源に関するアーキテクチャと必要な DC/DC コンバータを選択したら、続いては、適切な受動部品を選定して電源を設計することになります。その作業は、FPGA ならではの特殊な要件を念頭に置いて行う必要があります。その要件とは、以下に示すようなものです。
- 個々の電流の要件
- 電源の投入/遮断シーケンス
- 電源電圧は単調に上昇させる
- 高速な電源トランジェント
- 電圧の精度
個々の電流の要件
どのような FPGA でも、実際の消費電流は使用される場面によって大きく異なります。クロッキングや FPGA の構成要素が異なれば、消費電力も異なるということです。そのため、FPGAを使用するシステムの設計において、電源に関する最終的な仕様は途中で必ず変更されることになります。各 FPGA メーカーは、必要な電力レベルの見積もりを支援するためのツールを提供しています。実際にハードウェアを構築する前に消費電力に関する情報が得られるのは、かなりありがたいことです。とはいえ、そうしたツールによって有効な見積もり結果を得るには、FPGA の設計が完了しているか、少なくともそれに近い状態になっている必要があります。
多くの場合、電源回路の設計は FPGA の最大消費電流を念頭に置いて行われます。その後、FPGA で実現した実際の回路の消費電力が少なく抑えられることがわかれば、電源回路をスケール・ダウンするということが行われます。
電源の投入/遮断シーケンス
多くの FPGA では、複数の異なる電源を供給するための特定のシーケンスが必要になります。通常は、I/O 電圧よりも先にコア電圧を供給しなければなりません。そうしなければ、破損してしまう製品も存在します。そのような事態を避けるために、電源の投入は正しい順序で行う必要があります。シンプルな投入シーケンスであれば、標準的な DC/DC コンバータのイネーブル・ピンを使用するだけで簡単に実現できます。しかし、通常は電源の遮断についてもシーケンス制御を実施する必要があります。イネーブル・ピンだけで、そのシーケンスを実現しようとしても、なかなか良い結果を得ることはできません。より良い方法は、「ADP5014」のような高度なシーケンス機能を備えるPMIC を使用することです。図 2 に赤色で示した回路ブロックにより、電源の投入シーケンス、それとは逆順の遮断シーケンスを実現することができます。

図 3 に示したのは、ADP5014 で実現可能なシーケンスの例です。電源の投入/ 遮断のシーケンスにおいて、遅延時間は同 IC の DL(ディレイ)ピンによって簡単に調整できます。
複数の異なる電源を使用する場合には、シーケンス用の ICを追加するとよいでしょう。それにより、必要に応じて電源の投入/遮断シーケンスを実現することができます。そうしたシーケンス用 IC の一例が「LTC2924」です。この IC を使用すれば、DC/DC コンバータのイネーブル・ピンを制御して電源の投入/遮断を切り替えることができます。あるいは、ハイサイドの N チャンネル MOSFET を駆動して FPGA を特定の電圧レールに接続/切断することも可能です。

電源電圧は単調に上昇させる
電源を供給する際には、その投入順について注意する必要があります。それに加えて、電圧を単調に上昇させることにも気を配らなければなりません。単調に上昇させるというのは、図 4 の電圧 A のように電圧が一度も下降することなく上昇するという意味です。一方の電圧 B は、電圧が単調に上昇していない例です。電源電圧を投入する際、特定の電圧レベルにおいて負荷に大電流が流れ込むと、電圧 B のような現象が生じる可能性があります。これを防ぐための 1 つの方法は、大電流を速やかに供給できる DC/DC コンバータを使用するとともに、長い時間をかけて緩やかに電源を投入する(ソフト・スタートを適用する)ことです。

高速な電源トランジェント
FPGA では、極めて急速に大電流が流れ始めるケースがあります。それによって、電源には大きな負荷トランジェントが生じます。これに対処するために、多くの FPGA では、入力電圧(印加される電源電圧)に対する徹底的なデカップリングが必要になります。具体的には、デバイスの VCORE ピンと GND ピンの間に複数のセラミック・コンデンサを密に配置します。一般的には、容量が最大 1 mF になるように配置されます。この大きな容量により、電源回路について、非常に大きなピーク電流を供給するために必要な要件を緩和することができます。ただし、多くのスイッチング・レギュレータや LDO( 低ドロップアウト) レギュレータでは、出力端子に付加する容量には上限値が規定されています。FPGA の電源端子に付加する容量が、その値を上回ることがないよう注意する必要があります。
電源回路の出力に大容量のコンデンサを付加するのは好ましくありません。電源を投入する際、スイッチング・レギュレータから見て、大きな容量によって出力が短絡しているようになってしまうからです。この問題には適切な対処策があります。より長い時間をかけたソフト・スタートを適用すれば、電源回路を短絡電流制限モードに移行させることなく、大容量のコンデンサに対して安全に電圧を印加することができます。

一般に、DC/DC コンバータの出力に過剰に大きい容量を接続するのは好ましくありません。問題なのは、その容量値がレギュレーションのループに含まれてしまうことです。ループ補償に対応する DC/DC コンバータでは、ループが不安定になることを防ぐために、過剰に大きな容量を出力に付加することはできない仕様になっています。多くの場合、図 6 に示すように、ハイサイドのフィードバック抵抗と並列にフィードフォワード容量を接続することにより、制御ループを調整することが可能です。

電源の負荷トランジェントや電源投入時の振る舞いについて検討する際には、LTpowerCADや「LTspice」などの開発ツールが非常に役に立ちます。FPGA に付加する大容量の入力コンデンサと電源の出力コンデンサのデカップリングについては、モデリングとシミュレーションを実施する手法が有効です。図 7 は、この概念について示したものです。プリント基板上で、POL(Point of Load)コンバータは基本的に負荷の近くに配置されます。それでも、電源と FPGA の入力コンデンサの間には、何本かのパターンが存在するはずです。基板上で、FPGA の電源に複数のコンデンサを並べて配置する場合、電源から離れているものほど電源の伝達関数に与える影響は小さくなります。それらの間には抵抗成分がありますが、パターンによる寄生インダクタンスも存在します。寄生インダクタンスの影響により、すべてのコンデンサが基板上の同じノードに接続されているのにもかかわらず、FPGA の入力容量の値を、電源回路が許容可能な最大出力容量の値よりも大きくすることができます。LTspice では、パターンの寄生インダクタンスを回路図に追加して、そうした影響に関するモデリングを実施することができます。寄生成分も適切に含めて回路のモデリングを行えば、現実に近いシミュレーション結果が得られます。

電圧の精度
通常、FPGA 用の電源には、かなり高い電圧精度が求められます。一般的には、許容される変動範囲はわずか 3 % です。例えば、Intel の「Stratix V」の場合、3 % の精度でコア電圧を 0.85 V に維持するには、わずか 25.5 mV の誤差しか許容されないということになります。この小さな許容誤差には、負荷トランジェントの後に生じる電圧変動や DC 精度も含まれます。このような厳しい要件を満たす電源回路を設計する場合にも、LTpowerCAD や LTspice などのツールが不可欠です。
FPGA の入力コンデンサについて、最後に 1 つ付け加えておきます。一般に、この用途では、大電流をすばやく供給できるようにセラミック・コンデンサが使用されます。この選択自体は間違っていませんが、DC バイアス電圧によって実際の容量値が低下することがないものを選択する必要があります。一部のセラミック・コンデンサ、特に Y5U 特性を備えるものは、最大定格値に近い DC 電圧でバイアスされると、実際の容量値が公称値のわずか 20 % まで低下します。この点には注意してください。