TNJ-013:高速差動アンプの構築とそこで生じた負性抵抗の解析
2014年11月4日公開

はじめに
この技術ノートは、SPICEシミュレーションで高速差動アンプが発振し、その理由が負性抵抗だったという話について説明します。
群馬大学の遠坂客員教授から、先生がご指導されている同大学山越研究室の学生さんがご研究に使用予定の高速差動アンプ(Diff Amp)を試作当初、「OPアンプを3個使った構成で、シミュレーションで発振してしまうのだが…」というメールをいただきました。
最終的には、試作結果も含めてご連絡を頂戴し、この技術ノートに掲載可という、ありがたいお言葉をいただきました。そこで途中の解析などを含めて、ドキュメンタリータッチでご紹介させていただきたいと思います。
ご使用いただく、つまりシミュレーションにかけていたOPアンプは、AD8099でした。このOPアンプはGB積が3.8GHzもあり、超ロー・ノイズ(0.95nV/√Hz)、かつ超低歪み(-92dBc @10MHz)の電圧帰還型オペアンプです。
まずは完成した基板を図1と図2にご紹介しましょう!使用しているギガトリマ(P社さんの)が使用周波数を物語っていますね。こういう試作品の写真を見ると、わくわくしてきます!やはり私もエンジニア…。

図1. 群馬大学の学生さんが試作した高速差動アンプ

図2. 差動アンプとして使用しているAD8099を拡大したようす
とある日にメールをいただき…
とある日、遠坂先生からメールをいただきました。指導されている学生さんがAD8099を用いて差動アンプのシミュレーションをしているのだけれども、どうもある条件で発振してしまうというものでした。いただいたメールには図3~図5のような、学生の方がシミュレーションした結果もついておりました。
図3の回路(抵抗が2kΩと40Ω)は正常にシミュレーションできるのですが、図4のように「同じ利得で帰還抵抗を500Ωにすると発振してしまう」とのことです。発振周波数は約400MHzです。
また図5のようにFB端子からではなく、Vo端子(図6以降のシミュレーションではVout端子に相当)から帰還をかけると発振しないとのことでした。
「このAD8099を用いて差動構成としたアンプを試作したことは初めて」とのことでした。シングル・エンド構成でのこれまでの試作経験では問題なく動作していたということでした。
「データシートではFBとVoは接続されているが、モデルとしては、異なった端子としてモデリングされているのか」というご質問もいただきました。
FB端子とVo端子は接続されている?
事業部には確認しませんでしたが、「一般的にこのような構成であれば、FBとVoは直結されているはず…」という社内のエンジニアの話もありました。AD8099のSPICEモデルのネット・リストを追ってみたところ、違う出力パスとしてモデル化されていました。「このモデルの違いだけが問題なのか?」というところが、解析のスタートでした。
と言っても、最初は回路を読み違えて全然トンチンカンな回答をしてしまいまして、遠坂先生も苦笑いしていたことでしょう。



図5. RG = 10Ω、RF = 500ΩでVOピンからの帰還構成
高速インスツルメント・アンプとしてご使用したかった
このOPアンプを3個使用した差動アンプを、超音波受信回路の初段に用いたいとのことでした。
詳しい設計仕様はやりとりの中で確認していませんでしたが、山越研究室の学生さんが設計しており、フロントの2個にAD8099を使用し、次段の1個は利得1で安定で、50MHz程度までフルスイングできるOPアンプ構成にする予定とのことでした。
帯域20MHzくらいで100倍程度のインスツルメント・アンプが欲しいというのがゴールだったようです。
まずはシングル・エンドの回路にしてシミュレーション
結果的には、Vo端子から帰還させるか、FB端子から帰還させるかは大きな問題ではなく、発振したりしなかったりというのは、回路としての条件によるものが大きかったわけでした。
ともあれ、まずは「どんなもんだ?」という訳で、手始めとしてシングル・エンドでシミュレーションしてみました。使用したSPICEシミュレータはアナログ・デバイセズのADIsimPEです。この技術ノートはもともとNI Multsimでのシミュレーション結果をもとに作成してありましたが、新しくリリースされたADIsimPEを使ったかたちで再構成してみました。
図6のシミュレーション用回路は、図3の回路の差動増幅器のトップ部分をシングル・エンドとして抜き出したものです。これまでVo端子として説明していたものは、Vout端子になっています。また中点バーチャル・グラウンドの条件から約100倍の利得になっています。
このような構成の差動増幅の基本的な考え方として、図3の真ん中にあるR1 40Ωを20-20Ωの直列抵抗にして、この中点部分をグラウンドに落したものとして、シングル・エンドの構成で考え直します。そうすると約100倍の(シングル・エンドの)非反転増幅器として考えることができます。
余談ですが、中点をバーチャル・グラウンドとして接地して考えるのは、強電の3相交流や3相モータの解析でも同じように使われる方法です(電験2種~1種くらいになるともっと複雑な構成として考えますが…)。

図6. まずはシングル・エンドの回路にしてシミュレーション

図7. FBピンから帰還させた場合(ステップ応答)

図8. Voutピンから帰還させた場合(ステップ応答)
まずはFB端子とVout端子の違いを見てみる
図7と図8は、図3の「問題なく動く」というケースを、図6のシングル・エンド回路構成として、抵抗を2kΩと20Ωにしてシミュレーションした結果です。シミュレーションはステップ応答を入れて、立ち上り波形のオーバーシュートを確認します。これが一番簡便な安定度の確認方法です。
結果としてFB(図7)、Vout(図8)どちらから帰還しても、特に特性も変わらず、立ち上り波形もリンギングなども無くとても安定しているように思えます。
OPアンプの入力容量を考えると帰還抵抗の高いほうが発振しやすいはずなのだが?
先生のコメントにも「帰還抵抗が2kΩのほうがむしろ入力容量の影響で発振しやすいかと思うが、シミュレーションでは逆になっている」というお話がありました。
たしかにそうで、一般の増幅器構成で考えると、帰還抵抗と入力端子に生じる寄生容量成分で、寄生的なポールができて、これにより高い周波数で発振が生じてしまう可能性があります。つまり500Ωで発振せず、2kΩで発振するはずだ、というところが順当な考え方なわけです。
しかしながら、実際は逆だったわけです。メールを見ながら「うーん…」と思ったところでした。
シングル・エンド構成では問題は見えてこない…
次は動いたり動かなかったり(発振しなかったり、したり)する定数の回路です。これも同じようにシミュレーションしてみました。抵抗は500Ωと5Ωとしてあります。結果は…。図9、図10のように、これまた「安定」なのです。
差動アンプとして考えるうえでは、このように分割して考えれば(なおかつちゃんと上下対称なので)問題なく解析できるはずです。
なぜこうなってしまうのでしょうか???「むむむー」というところでした。

図9. 発振する可能性のあるR = 500Ω、5Ω。帰還を
FB端子から取った場合(ステップ応答)

図10. 発振する可能性のあるR = 500Ω、5Ω。帰還を
Vout端子から取った場合(ステップ応答)
差動構成にしてシミュレーションを再チャレンジ
シングル・エンドでは発振の兆候さえ見えません…。それでは、と図11のように差動に回路を組みなおして、シミュレーションしてみました。ここで「なぜか」R2が20Ω(本来は10Ω)になっています…。なぜでしょう…。これは単に午前中の作業で寝ぼけていたためです(笑)。これでは結果的にはG = 50です…。

図11. 差動構成に変更してみた(でもG = 50…汗)
発振が再現できた!
しかし図12のシミュレーション結果のように、この条件でも発振しています!再現してきたわけです!
図13はトランジェント解析の結果としてR2からU2側を見たインピーダンスの瞬時変化をVINN/IPROBE1として計算してみたものです。まあ、結果的にこれだけでは情報が不十分であまり意味をなさないことに気が付きました(以降で、もっと突っ込んで解析してみます)。何をボケているのでしょう…。
余談ですが、一般的なSPICEシミュレータで電流を検出するには、ゼロVの電圧源を直列に挿入しますが(SPICEシミュレーション上のテクニックなのです)、ADIsimPEでは電流プローブがありますので(図11ではIPROBE1)、これを挿入すればいいのでとても簡単です。


図13. 図12のVINNの端子電圧をIPROBE1に流れる
電流で割ったもの、つまりU2の反転入力端子の
過渡インピーダンス?(はて?それはいったい??)
AD8099の安定ゲイン要求は満足しているのだが
ここでひとつのポイントがあり、AD8099は高速アンプであることもあり、ゲインG = 1で安定ではありません。
日本語データシートp.15にもありますように、『AD8099は、RC回路を使って外部補償することにより、G = 2まで下げることができます。G = 15より上では外部補償回路は不要です』となっています。
現在の回路では外部補償が無いので、G ≧ 15である必要があります。しかしここでは一応、G = 50なんですが、発振しています…。
遠坂教授のコメントをご紹介
遠坂教授とのやりとりで頂いたコメントをここでご紹介しておきます。
■
実際とは逆にシミュレータでは発振させるのが難しいです。
理論的に発振するのはAβ=-1になる点で、極一点だけなのでここに入るのはラクダが針の穴を通るくらいの確率です。
ところが現実の装置が発振しやすいのは波形の大きさが有限でクリップし、クリップすると自動的に一巡のループ利得が1になってしまいます。したがって帰還を施した回路がクリップしていると位相が180度遅れた周波数があるとそこで発振します。
シミュレーションでショックなしにスタートさせると発振しないことが多くなります。
■
シミュレーションは便利ですが、やっぱり最後は現物での確認が、アナログ回路技術者としては重要だということですね。弊社のアプリケーション・ノートなどでも同様な啓蒙が行われております。
ハイレベルな技術者になればなるほど、シミュレータの「限界」と「癖」を十分に理解し、現実の回路動作をイメージしながら、的確かつ適切にシミュレーションで解析し、エレガントな回路を作り上げる…というところでしょうか(という私は、いつになればそうなれることやら…汗)。
マーカで発振周波数を測定してみた
以降の解析の指針とするべく、発振している周波数がどの程度かを図14のように調べてみました。トランジェント解析の結果をFFTするというまっとうな方法もありますが、適度な適当さをもって、マーカで確認してみました。
一応精度を向上させるために、10サイクルぶんをマーカで観測し、周波数として10倍で考えるようにしています。
dx = 25.87ns、周波数では38.65MHzと見えます。これは10サイクル分なので、386.5MHzという高い周波数で発振していることがわかります。
利得は変えずに抵抗を大きくしてみる
図15のように、利得をG = 100に戻さずに、寝ぼけたまま(笑)のG = 50のままで、R1 = 500Ω ⇒ 2.5kΩ、R2 = 20Ω ⇒ 100Ωとして、抵抗の相互関係は同じままで、大きさを5倍にしてみました。
これでステップ応答を確認したものが図16です。こうすると発振していません。というより安定したステップ応答の結果が得られています。
ステップ応答がオーバーシュートもなく、素直なものが得られているのであれば、差動アンプとしての全体の回路も問題なく動作するはずです…。

図14. マーカで発振周波数を測定してみた

図15. G = 50のままでR1 = 500Ω ⇒ 2.5kΩ、R2 = 20Ω ⇒ 100Ωとした(発振しなくなった回路)

AD8099の反転入力端子を見たインピーダンスを計算してみる
回路を図11の状態に戻し、下側のOPアンプU2の反転入力端子INmを見たインピーダンスをシミュレーションで計算してみました。まずAC解析をかけて100MHzから1GHzまでの小信号特性をシミュレーションします。信号源はAC解析用のAC Sourceに変えてあります。この入力端子、つまりR2のラインに流れる電流量の計測には電流プローブ(図11ではIPROBE1)を用いています。
その結果を用いて、ADIsimPEの計算機能を使って、目的の反転入力端子のインピーダンスを計算させます[Shell画面からAdd Curve機能を呼び出して、Define Curveからabs(R3_N/IPROBE1#p)で振幅レベルを、arg(R3_N/IPROBE1#p)で位相を表示]。
その結果が図17です。位相が±90°を超えていますね…。IPROBE1の挿入極性は合っているんでしょうか??

図17. AD8099の反転入力端子を見たインピーダンスを
計算してみる。上:大きさ、下:位相
位相が±90°を超えているのは接続方法が悪いのか?
その確認のために、図18のような簡単な回路を作ってみました。これで信号源V1の位相を基準として、回路に流れる電流の位相を電流プローブIPROBE1で確認してみることがひとつ(結果は図19)、もうひとつは抵抗R1に加わる電圧(結局はV1そのままだが)と電流プローブIPROBE1でセンスした電流を用いて、検算のためにR1のインピーダンスを計算させてみることです(結果は図20)。
図19と図20のように、この結果、得られた位相は「ゼロ°」です。ちなみに図19においては、ACシミュレーションしたそのままの状態としては「大きさ」しかグラフ表示されません。そこでAdd Curve機能でDefine Curveからarg(IPROBE1#p)で電流位相を表示させています。
またこのIPROBE1の端子なのですが、ためしにIPROBE1の反対側の端子#nをarg(IPROBE1#n)で表示させてみると、-180°という位相が出ます。端子#pと#nで極性が逆になるわけです。注意が必要ですね。

図18. 位相計測の極性が正しいかを確認してみる
シミュレーション回路
ということで、180°という結果が出れば、電流プローブの挿入の極性が逆ということですが、それは正しいようです。結果的に、図17の「位相が90°を超えてしまっている」のは正しいようですが、それは一体どういうことでしょうか??

図19. IPROBE1に流れる電流の大きさ(上)と位相(下)

図20. R1の端子電圧R1_PとIPROBEに流れる電流から、
R1のインピーダンスをabs(R1_P/IPROBE1#p)(大きさ、上のグラフ)、
arg (R1_P/IPROBE1#p) (位相、下のグラフ)として計算させた。
位相がゼロなので、IPROBE1の使用方法は間違いない
位相が90°を超える…これは「負性抵抗」
この「位相が90°を超える状態」というものが何かを示しておきましょう。
図21のようにインピーダンスを位相(複素数)平面で表すと、第1象限はR + L領域、第4象限はR + C領域になります。これが普通電子回路で考える位相領域であって、これは90°を超えていません。
90°を超えるところは、第2, 3象限ですが、ここではX軸、つまりReal(Z)…複素インピーダンスの実数部…がマイナスになっているものです。ここは「負性抵抗」と呼ばれる領域で、電圧を加えると電流が消費するのではなく、湧き出てくるというイメージの逆抵抗素子です。
次では先に図17で求めたインピーダンスを、負性抵抗量として再計算させてみます。
負性抵抗。そんな財布(とか銀行口座)が欲しいところ…(汗)。

負性抵抗量として再計算してみる
U2(下のOPアンプ)の反転入力端子の「抵抗相当量」をシミュレーションしてみた結果を図22に示します。図中の凡例のように、赤のトレースがその端子を見たときの実数部(抵抗成分)、緑のトレースが虚数部(リアクタンス成分)です。
マーカでふたつの周波数を示してあります。それぞれの周波数がいくつかはマーカリードアウトのところで示されています。ひとつのマーカは負性抵抗が最大のところ、もう一つのマーカはリアクタンスがゼロのところです。
発振していた周波数は何MHzだったでしょうか。
リアクタンスがゼロになる(つまり位相が-180°になる)周波数をマーカで示したものは407MHzです。一方で発振している周波数は「383.39MHz」ということでした。この2つは大体同じですね。
つまり下側のU2のOPアンプ(AD8099)だけで考えてしまってはいますが、少なくとも「この回路が負性抵抗を持ち、リアクタンス成分がゼロ」のあたりで発振していることがわかります。これは発振条件と同じといえると思います。
図22. 反転入力のインピーダンスを負性抵抗量(赤で示すreal part)として計算してみる(R1 = 500Ω、R2 = 20Ω)
負性抵抗量は抵抗を挿入してキャンセルする
このような負性抵抗は結構いろいろなところで生じるのを見ることがあります。負性な抵抗なわけですから、負性をキャンセルするには直列に抵抗を挿入すればいいのです。
エミッタ・フォロアでも負性抵抗でトラブることがある
よく見かける失敗ですが、長いケーブルをエミッタ・フォロアの入力(ベース)に接続すると、安定であるはずのエミッタ・フォロアが発振してしまうことがあります。この場合も負性抵抗が生じており、ケーブルと入力(ベース)間に直列に抵抗を挿入すると発振が止まります。私もご多分に漏れず(?!)この失敗をやらかしました。実験器具だったので製品ではなくて良かったのですが。

図23. 反転入力のインピーダンスを負性抵抗量(赤で示すreal part)として計算してみる(R1 = 2.5kΩ、R2 = 100Ω)
抵抗値を大きくして「負性抵抗」を計算してみる
さて抵抗をR1 500Ω ⇒ 2500Ω、R2 20Ω ⇒ 100Ωに変更した条件で、シミュレーションした結果を図23に示します。依然として負性抵抗は発生しています(緑のプロット)が、リアクタンス成分が大きく、リアクタンスがゼロになる(つまり位相が-180°になる)発振条件にはなっていません。一方、リアクタンスがゼロになる周波数では負性抵抗性を示していないことも分かります。また全体的にインダクティブとして大きいリアクタンスになっていますので、発振しにくいことになります。
差動アンプ全体としては、抵抗R2の両端でU1, U2が動く形になりますから、ここでは余計な容量成分が生じないので(依然として負性抵抗はありますが)、発振までには至らないと考えられます。
当然、ここに容量成分があって、インダクタンスがキャンセルされてしまう(全体のリアクタンスがゼロ)場合には発振してしまうということですね。
あとでもう少し詳しくとは思いますが、当初は抵抗R1, R2を大きくしていくと、負性抵抗が小さく(本来の抵抗に)なっていくと予想していました。しかしシミュレーションの結果としては、負性抵抗はほぼそのままでした。
いろいろ突き詰めてシミュレーションしていくと、いろいろ判ってきますね。面白いです(ネットワーク・アナライザで実測してみたいものです)。
それぞれの条件でACシミュレーション
R1 = 500Ω、R2 = 20Ωの場合と、R1 = 2.5kΩ、R2 = 100Ωの場合とで差動アンプ回路としての入出力周波数特性をACシミュレーションしてみました。図24がR1 = 500Ω、R2 = 20Ωの場合、図25がR1 = 2.5kΩ、R2 = 100Ωの場合です。これも面白いというか、なかなか意味深い結果になっています。
左のマーカは-3dBのところです。右のマーカは回路の利得が0dBになるところです。発振している定数(図24)の方が0dB(利得がゼロ)になる周波数が低いのですね。
一方で図25の、発振はしない(それでも完全に安定とはいえない)定数の方が0dBになる周波数が高いこと、ゲインにピークが出ていること、それぞれが見えると思います。ゲイン・ピークは出ていますが、動作的には動きそうに見えます。
発振の兆しを見つけるとすれば、(図24ですが)6dB/OCTで変化しているのが、12dB/OCT以上で変化しているところを見て、「?」と考えることが大事そうです。
とはいえ、これだけではなかなか問題として検出しづらいところもあるので、トランジェント解析でステップ応答を入れてみるなどして、いろいろな観点からシミュレーションしてみることが大切といえるでしょう。
図24. R1 = 500Ω、R2 = 20Ωの条件(発振している)で差動アンプとしての入出力特性をACシミュレーション

図25. R1 = 2.5kΩ、R2 = 100Ωの条件(発振していない)で差動アンプとしての入出力特性をACシミュレーション
発振しない条件でステップ応答のシミュレーションは
発振しない(でもまだ負性抵抗がある)状態の回路、R1 = 2.5kΩ, R2 = 100Ωの条件は、すでに図15、図16でステップ応答のシミュレーションをかけています。そこでも問題なさそうなレベルになっていたわけですね。
補償容量(CC)端子で安定化にチャレンジ
次はCC(Compensation Capacitor)端子を用いて補償をかけて、より安定に動作させたときに負性抵抗がどうなっていくのかについて考えてみたいと思います。
ここまでの検討で、定数を変更することにより負性抵抗の影響が少なくなることがわかりました。本来は負性抵抗自体を低減したいというところが正攻法です。
通常は「負性抵抗をキャンセルするには直列に抵抗を挿入」すればいいのですが、この回路構成だとなかなかそういうわけにもいきません。そこでCC端子に外部補償コンデンサを使ってみて、負性抵抗の特性がどうなるのかをシミュレーションで試してみました。
AD8099データシート上の外部補償コンデンサの説明
図26に示すようにAD8099の外部補償コンデンサCC(内部に抵抗もある)について、データシートにその概念が説明されています。さらにそれに関する回路図を抜き出したものを図27に示します。
なおこの補償回路の一般的な推奨値と、AD8099の性能についてはデータシートの表4に記載されています。

図26. AD8099の補償容量CCの説明

図27. AD8099の補償容量CCの回路図
CCを接続してシミュレーション
図28に補償容量CC = C1 = C2 = 1.5pFを接続してシミュレーションした回路図を示します。データシートではマイナス電源に向けて補償をかけるようになっていますが、(Cのみであることから、またシミュレーションではどちらでも結果は同じであることから)ここではグラウンドに対してCCを接続してあります。

図28. 補償容量CC = 1.5pFを接続したシミュレーション回路
図29は図28の補償容量を接続した回路で、U2の反転入力端子のインピーダンスをシミュレーションしてみた結果です。赤が実数部、緑が虚数部です。マイナスに振れているところは負性抵抗が存在する領域ですが、全く負性抵抗が無くなるまでもいかないですが、100~200Ω程度とかなり低くなっています。
図30は入出力の周波数特性をACシミュレーションしてみたようすですが、傾斜部分がだいぶ安定してきていることも判ります。逆にCCを接続した問題としては、-3dB帯域幅が狭くなってきているというところです。
いずれにしてもCCを付加することで安定化に向けることができることがわかりますね。
まとめ
回路には負性抵抗というものがあり、リアクタンス分がキャンセルされた周波数で負性抵抗により発振が生じる、ということがお判りいただけたかと思います。
なお、「データシートではマイナス電源に向けて補償をかけるようになっていますが」という点の補足として、データシートの記述の意味合いとしては、マイナス電源入力から最短距離で(余分な寄生成分をなくして)補償すべきということを言っています。
また、今回はシミュレーションを用いて回路動作の検証を行いましたが、シミュレーションモデルは「マクロ・モデル」と呼ばれる簡易等価回路になっています。そのため実際の本当の動作は、試作回路を組んで、実機で必ず確認いただくようお願いします。

インピーダンス(赤:real part, 緑 :imag part)をシミュレーション
縦軸のスケールは図22と同じとしてある

著者について
デジタル回路(FPGAやASIC)からアナログ、高周波回路まで多...
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}