9、LTspiceでシミュレーションできない特性とその対策

別に 「LTspice」に問題があるわけではありません。Spice系シミュレーション共通と思われる内容です。 (気が付いたら、不定期に項目を追加する予定)

部品モデルの不備

これは明らかに使う側の問題ですが、正式な部品モデルが潤沢に用意されていないので誰もが最初に引っ掛かる問題点。Rohmは沢山の品種のモデルを公開しているし、東芝などPspice用のモデルで公開しているメーカーもあるので、根気よく探せば手に入る品種もあります。
(例えばA1015/C1815, A970/C2240は、パッケージ違いのA1162/C2712, A1163/C2713が使える)

困るのは、メーカーが供給している正式なデータなのに使えない(駄目な)モデルがある点。
例えば、標準で入っているRohmの2SCR375P (120V1.5A定格) では、Bf=153.42 Vaf=4.84となっており、Vce=100Vで使うとVafが低いので実効hfeは3000を超えます。

これは実際にはあり得ない話でモデルのパラメータが誤っているのですが、その原因はちゃんとあり、「ある意味では」間違いではない。
データシートを見るとVce=0~1.2V, Ic=0~0.5Aの出力特性カーブが掲載されており、低Vce大電流領域(準飽和状態)なのでコレクタ電流はまだ上昇過程にあり、このグラフを表現するにはVaf=4.84が必要だったのです。つまり、飽和直前のVce<2Vの領域のみに適用できるモデル。
Vce=5V以上の飽和していない(普通の)状態を計算するには”Vaf=200”と書き直す必要があります。
このような例は他にも見られ、例えば東芝のTTA004B (160V1.5A定格) も同様にVAF=6.8。

2SC2712(2SC1815のパッケージ違い)の数値も、Vaf=30で本来の値と一桁違うし、Cje=10pFで高周波特性は実力の3倍になってるし、Rb=10でカタログ値のRbb'=50Ωと5倍違うし、Ise=5e-14でIsの値より大きいので0.1mAでhfeがかなり低下し0.1mAでもフラットなデータシートのhfeカーブとは全然違う。

つまり、すでにある部品モデルやメーカーから入手した正式なモデルでも、内容を精査して使いたい動作点付近(Vce, Ic等)での値をちゃんと表わしているかを確認しないといけない。
これは、「普通のユーザー」にはとても難しい。お金の取れるプロの領域に入るかも知れません。


出力インピーダンスの電圧依存性(Icの曲がり)の表現

この問題は、Vaf(出力インピーダンス)の電圧依存性を記述できない、Spiceシミュレータの本質的な欠点。
上記の2SCR375PやTTA004BのVaf異常値も、準飽和領域での特性再現を優先した結果です。

まずは、TTA004Bのデータシートのカーブと、オリジナルのSpiceモデルでのシミュレーション結果を比較。

東芝の提供しているこのSpiceモデルが、2V以下の領域のみに忠実な事がよく分かる。
3~4Vを過ぎてIcの曲線が平坦になってくるのをSpiceでは記述できない(直線しか描けない)のです。

したがって、単一のモデルでは低電圧領域か、普通の平坦部かのどちらかしか表現できません。
無理やりにでもこれをモデル化するには、両方の特性を表現した素子(2個)を組み合わせれば可能。

下の図のように、コレクタ側に準飽和時の特性を記述した素子(TTA004C)を挿入し、本来の素子のモデルはVaf=100 Ikf=2.5 に書き換えます。(Q1のベース電流をそのままQ2にも流す。)

2つの素子のVce負担の切り替わりでカーブは折れ線になりますが、2V以下の領域を正確に記述したままで飽和していない平坦なコレクタ電流の領域も正しく表現することが出来ます。

この2段積み重ね方式では、上側のVafの低いQ2が働く(Icカーブが急な傾きの所)場面では下のQ1はVceはゼロに近く、飽和しています。実際のパワートランジスタの準飽和領域ではコレクタ高抵抗層の電圧降下で内部コレクタ接合は飽和が始まっているので、この方が現実を正しく反映している。

上に乗せるQ2は、余計な抵抗ロスやスイッチ時間が発生して本来のQ1の特性に影響しないように、余計なパラメータは書かずにBf, Vaf, Ikf, Nk, Brのみ記述します。(Brは大きくしてVceロスを軽減)
この方法でも、Icカーブの緩やかな曲りは表現できないので、Vafの電圧依存による歪の発生は計算できません。

これは、Spiceそのものの限界(※)なので、「Vaf変動による非直線性は全く考慮されていない」と言う事実を認識したうえで、実際にはどの程度歪が上乗せされるかを自分で見積もらなくてはならない。
(汎用PNPの2N2906や2SA1015, 2SA733等は比較的広い範囲でVAの値が一定値を取るので、電圧増幅段の出力インピーダンスがこの石で決まる場合はVA=定数で計算しても比較的正確な結果が得られる事もある)

※素子のモデルパラメータには電圧・電流の値は使えないが、電圧源や電流源では回路上の値を使って非線形な値を記述できるので、ベースに非線形な電流源を挿入することで計算する事は可能なはずである。
(但し、単純にIb, Vceをパラメータにしてベースに電流源を並列に入れても、計算が収束しない)

ベースへの高注入効果によりhfeが低下する現象(B-E接合の逆ベース電流成分増加)はすでにIKFでモデル化されているが、Vceの影響が計算されないので、新たに飽和時にコレクタからの逆注入でIKF効果がVceで変調される現象をモデル化したのが下の図の補正方法。
Q1のVce=Vc1-Ve1で検出し、V=Vce/(Vce+Ic+2)の補正電圧を並列にしたダイオードに加えて、Vce=0付近でのhfe低下をD1に流れ込む電流で表現している。(Vceが-2V以下に逆転する領域はエラーが出るので並列にDiを入れる必要があるが、補正電流を電圧で表現することで計算が可能となった。)

このモデルで東芝の18A定格パワートランジスタTTA002/TTC002のIc-Vce特性を再現したのが下のグラフ。 (ベース電流IBのステップはそれぞれ元のグラフと合致させている。 )


TTC002では飽和直前のIc傾斜が一定になる準飽和領域が見られないので、準飽和を表現するために上に乗せる「TTA002B」の部分は削除し、他のパラメータ値を調整している。
少しの手間を掛けてやれば、SpiceでもここまでBJTのIc-Vce特性の曲りを再現できるのである。


hreを無視

トランジスタの4端子パラメータで昔から有名なhfe, hie, hoe, hreがありますが、 LTspiceにはhreの概念はありません。hre=0なのです。

本来は、BJTのベース電流はベースからエミッタに注入される無駄な成分(注入効率)と、少数キャリアがベース中で多数キャリアと結合してコレクタに到達しない成分(輸送効率)の2つがあり、前者はVbeのみに依存し、後者はVce変化によるベース幅変調の影響を受けます。

Vceが変化した時にコレクタ接合の空乏層拡大でベース幅が1%変化するとIcは1%増加し輸送効率によるIb成分は1%減少します。 hreはIb一定条件なので、流入するベース電流が減るとVbeを大きくして同じIbを流さねばならず、Vbeは増加します。→これがhre。

Spiceシミュレーションでは注入効率によるIb成分が支配的であると仮定していて、輸送効率変化によるIb変化を無視しているので、Vceが変化してもIbは変わらずVbeも変化しない(=hreゼロ)。

実際のhパラメータの記載されているトランジスタでhfe, hie, hoe, hreの関係を見ると、大多数のNPNトランジスタではhoe*hie/hfe≒hreであり、PNPではhoe*hie/hfe≒0.1*hre程度の値となります。つまり、PNPでは輸送効率によるIb成分は全体のIbの10%程度だが、NPNではIbはほとんどが輸送効率による成分。したがってNPNではhre=0とする近似は正しくない。

これが実際にどのくらい計算結果に影響するかと言えば、大電流・低周波でコレクタを定電流受けした時に入力インピーダンスが本来のhieの値から半減する形で現れます。Creからの帰還量がhre成分より大きくなる小電流・高周波では誤差は気にならない。

本当にNPNのエミッタ接地でゲイン10000倍以上を得る場合など、ちゃんと計算したい場合はIb減少分を表現するためにB-E間に電流源:I=Ic(Q1)*Vce(Q1)/Vaf/Bf を追加します。簡易的にはコレクタとベースの間に高抵抗:Rbf=hie/hre を挿入しても良いがhieは電流依存なので小振幅限定。
(PNPの場合はhoeの値がそもそも大きいので、hreによる帰還成分は無視して問題ない。)


高周波での位相回転量

SpiceのBJT, FETモデルではトランジスタ単独でのhfe位相は1次遅れまでで90°を超えることはありませんが、計算させてみるとTfの時間遅れ成分が少し入るので、ft周波数で約100°遅れになります。
ところが、実際のトランジスタはベースやゲートの内部抵抗があるので分布定数回路になり、Chip内部のベース端子から遠い位置にある部分の位相はもっと遅れます。

2N3904(汎用のNPNトランジスタ)のhfeの位相遅れのデータが右図。
ftの1/30 (hfe=30dB) ですでに90°回り、ft(hfe=0dB)ではさらに40°回っている。

高周波用のトランジスタではft/10周波数で90°回るのが普通なので、ft≒200MHz程度の一般用では10MHzを超えたらSpiceシミュレータの計算結果は信用できない場合がある。

NFBのゲインクロスを10MHzに取った場合、20MHz付近までに位相回転によるピークが発生していないかはとても重要であり、これは非常に深刻な問題です。
spiceモデルでこれを記述することは出来ないので、素子の外部に位相遅れを表現する部品を追加しなければなりません。


2019/6/18追記:デバイスパラメータにPTFと言う項目があり、ft(1/2piTf周波数)での遅延による位相回転量を指定できる。(指定なしではPTF=10程度の位相遅れ)
2N3904の場合 "PTF=135" を追加すると100MHz以下の周波数では位相ずれをかなり再現できる。但し、PTF>90に設定するとft以下のまだゲインがある所で位相回転が180°を超えてエミッタフォロワの自己電流帰還だけでも発振する不具合が出る。PTF<90ではft/5以下の周波数帯でグラフの特性に近付けるには不十分なので、下の回路で補正する方がより正確に再現できる。

なるべく元のBJTのft電流特性に影響しないように工夫した補正回路の例が右図。

本来の2N3904はCje=8E-12, Rb=20ですが、Cjeの位置をRbの前に出すためにCje=8E-13と一桁小さくし、この8pFと数10MHzでの位相回転を表現するためにRb=100と大きくします。

トランジスタの外部にCje(8pF)を移動し、直列に元のRbと同じ20Ωを挿入。

(CjeやRbの大きな品種ではRbは元の値のまま、Cjeは一部を外へ出すだけで済む事もある。)

これで同じバイアス条件(40V10mA)時のIcゲインを計算すると右図のようになり、100MHz以下ではかなり位相遅れ量を再現することが出来ました。

Rb=100にした弊害でftに近い200MHz以上ではずれていますが、この付近は使わない周波数領域なので無視。Rbを大きくし過ぎると大電流領域でベース電荷量が増えた時のgmのカットオフが下がり過ぎて実際にはRbb'が大電流では低下するのと異なるので、広い電流範囲では使えない手法です。

Mos-FETの場合でも、同様にRgとCgsを素子本来の分を半分外部に出して、CR2段のLPFを構成させると1次遅れを超える位相回転を表現することが出来ます。


FETの急激なカットオフ(小電流でのgm低下)

SpiceモデルではFETは完全な二乗特性であり、VpでピンチオフするのでVgs-gm特性は一直線で下がってVpでゼロと交差します。
ところが実際の素子ではチップ内のVp不揃いによりピンチオフ点は不明確になり、微小電流ではバイポーラのような指数関数になります。(Id-gm曲線が√のカーブではなく傾き一定の直線でゼロと交わる)

2SK2231の実測データが右図で、完全な二乗特性なら青のgmカーブは直線でVgs=1.8Vでゼロに交差するはずが、0.1A以下では直線から外れ、黒のId-gm特性も0.1A以下は√ではなくて電流に正比例となっています。

Mos-FETのAB級PP出力段をSpiceで解析すると、Vpで完全にカットオフしてgmが非連続になるので歪波形がシャープに出ますが、実際の素子ではカットオフは不明確なのでシミュレーションのような歪波形にはなりません。
小信号用のJ-FETでも同様の現象があり、品種によっては低電流でのgmが√Idの計算から外れます。(大電流領域で√Idから外れるのはソース抵抗"Rs="パラメータ指定でOK)

VDmosに限れば、 "Subthres" というパラメータを指定する事で二乗特性からLog特性への移行を反映出来ます。但し、移行は指定電流以下で完全に切り替わるので、gm特性は不連続になってしまい実際の緩やかなカーブとは異なっています。

この特性を正しく反映させるにはソースに指数関数特性を持つダイオードを挿入すれば良いが、外部に接続したのではゲート駆動電流のCgs分がダイオードのVf変化を反映しないので、Cgsは繋いだダイオードの外側との間に入れなければなりません。
さらにゲート内部抵抗Rgの電圧降下は、Cgsを外に出してしまうとCgdに流れる分は外部に入れたRgだけ余分になってしまうので、正しく計算させるには素子パラメータのCgs, Rgを削除してソースに入れたダイオードの外側に同じ値のCgs, Rgを追加します。

実際に .model DD D(Is=1u N=3.3):品名DDのダイオードをソースに挿入し、その分素子のKpパラメータを増やして実測データとId-gm特性が揃うように調整すると小電流から数Aまで非常に良い近似が得られ、シミュレーションでも高域クロスオーバー歪みが激減しました。(ドレイン逆電流が流れるような使い方ではソースに入れたDiが電流阻止してしまうので、ゲートをソースと短絡した同じFETを外部にダミーとして繋ぎ、本体側のFETはCgs, Cjo共に0とする)


準飽和によるftの減少

大電流でVceが低下した時のftの減少は、一応Itf, Vtf, Xtfの3つのパラメータで表現できます。
しかし、その減少カーブは準飽和によるftの減少(コレクタ内部抵抗によるRc*Ic=Vceで低下が始まる)とはかなり違い、Itfを超えるとftの減少は止まってしまい、1/Xtf以下にはなりません。

Xtfの値を数100に大きくして大電流での低下幅を表現しようとしても、Vce変化に対しft低下が始まる電流値は指数的に変化するので抵抗性のリニアな特性とはずれてしまう。Vafの変化と同様に、Spiceではこの現象は正しく表現出来ないとあきらめて「大体」で済ますしかない。

Xtf=10kと非常に大きくしてVtf=0.5にし、Vce=1.5Vで準飽和が始まる電流値の100倍の値をItfとすると、Vce=0.5~5Vでの飽和はほぼ正確に表現できます。
高耐圧素子で使用電流範囲内でVce>10Vで準飽和が始まる品種ではVtf=1.5にし、1.5Vでの準飽和開始電流の200倍の値をItfとする。


小電流でのft減少カーブ

Spiceでは小電流でのft減少はCjeで指定(gm/2pift=Cjeの周波数でftが半減)されますが、その減少カーブはIcに正比例でIc=1/100になるとftも1/100になります。

実際のデータシートを見ると、ほとんどのTrで低下度合いは√Icに比例するカーブになっており、小電流ではシミュレーション結果は大きくずれてしまう。小電流で使う場合は、データシートのftになるようにCjeの値を再設定必要。


ダイナミックな温度変化の影響

温度を指定してパラメータの変化を計算することは出来ますが、シミュレーションは指定した温度に固定されており時間的に変動する温度の影響は計算できません。

半導体のVbe, Vgsは温度係数が大きく、素子の発熱量変動が大きいとジャンクション温度が変化してVbeは時間的に変動するのですがこれによる歪の発生を調べることが出来ない。
ちゃんと計算するには、素子の発熱量(Vce*Ic)を電流源として素子の熱容量と熱抵抗で温度上昇値を電圧としてシミュレーションする回路を追加し、得られた温度(電圧)をベースに直列に入れた電圧源の変化として補正すれば良い。


配線の浮遊容量、インダクタンスなど

あたりまえですが、シミュレータ上の配線はGNDも含めて抵抗もインダクタンスも浮遊容量も完全にゼロなのに対し、 現実の配線は抵抗、インダクタンス、浮遊容量を持っています。

これらの影響が無視できる低周波では抵抗成分だけ配線に追加すればOKですが、VHFを過ぎてUHFになる辺りの高周波からは数cmの配線でも影響が大きくなります。

100kHzまでしか使わないオーディオ用途の回路でも、不必要に高ftの素子を使ってゲインを持っている周波数がUHF帯にまで掛かると回路図に現れない浮遊インダクタンスや容量で共振して発振する事がある。1GHzを超える帯域を持つ高周波素子は非常にじゃじゃ馬なので、安易に使うと必ず発振します。

パターンの波長短縮率を2/3とすると、100MHzでλ=2mなので10cmの配線の往復での位相回転量は36°となります。反射波の位相ずれを無視できるのがここまでとすると、100MHzでは配線10cm毎に浮遊容量と配線インダクタンスを回路図に挿入する必要があります。

ワイヤを使った普通の配線の場合、浮遊インダクタンスを全く考慮しない場合はせいぜい30MHz、手動でインダクタンスや浮遊容量を回路に追加して対処できるのは300MHzまで(多層基板でパターン長1cm以下に抑えて1GHzまで)です。それ以上は高周波専用シミュレータの出番。

    目次に戻る     次に進む       アンプ設計のTOPに戻る