7.モデルを自作して使う

 最後に、簡単なSPICEモデルを自作して、解析してみましょう。

SPICEモデルは、使われる構文で大きく2種類に分けられます。.MODELコマンドで表される組み込みモデルと、ユーザーが組み込みモデルを自由に組み合わせて作る .SUBCKTコマンドで表されるサブサーキットです。 

また、モデリングの手法としても大きく2種類に分けられると思います。SPICE誕生時の本来の目的である半導体設計用途の場合は、モデリングに際して、モデルをトランジスタレベルで実物に限りなく近づける必要がありますが、回路設計用途の
場合は、中身はどうであれ(できればコンパクトである程良い)、目的の機能を持つモデルを用意できて、回路解析がうまくできれば良いことになります。

ここでは、サブサーキット構文によって、マクロ・モデルまたはビヘイビア・モデルといわれる、機能のみを再現するモデルを作ります。
言い換えると、前節まででは既成のOPアンプモデルを使っていましたが、この部分を、TopSpiceに組み込まれている関数や素子を組み合わせて、希望する機能を持つサブサーキットとしてモデル化します。


Column [コラム]   SPICEで使用されるモデルの分類

分 類
概   要
素子記号(TopSPICE)
組み込みモデル 定数や参照素子名、関数式を入力すればよいモデル。 C,E,F,G,H,I,K,L,R,T,V
回路ファイル内で、別途.MODEL構文による記述をするか、その記述を含んだモデルライブラリを参照する必要があるモデル。そのモデル固有のモデルパラメータの設定が必要。SPICE内部に等価回路としてモデルが組み込まれている。 B,C,D,K,M,O,Q,R,S,T,U
サブサーキット 構文.SUBCKT〜.ENDSで表され、組み込みモデルや別のサブサーキットを使って、ユーザーやデバイスメーカーが自由に構成できる回路ブロック。モデルライブラリとして保存することによって、別の回路ファイルから1つの回路ブロックまたはデバイスとして利用できる。大規模な回路図/回路ファイルを階層化して、分かりやすくする目的でも使われる。
X

マクロモデル 実際のICや回路をトランジスタレベルで忠実に再現しないで、制御電源などを用いて、理想化したり、伝達関数で機能を表したりして作るモデリング方法をマクロモデリングと呼び、できたモデルをマクロモデルと呼んでいる。複雑な回路もコンパクトに表せるので、シミュレーションの効率を上げることができる。
X または組み込みモデルの組み合わせ


 前節で紹介したように、SPICEによるOPアンプモデルはメーカーより入手できますが、かなり規模が大きく、自分で手軽に特性をいじって実験してみるのは困難です。
 SPICEでは、理想OPアンプは、電圧制御電圧源(VCVS)1個(と入力抵抗1個)でできます。この基本形に多少の素子を加えて、自分で簡単に特性を変えて実験できるようにした、理想から現実に少し近づけたモデルを作ってみます。

岡村廸夫さんによるOPアンプモデル(参考書籍No.2,4)は、少ない素子数ながら12のパラメータを自由に設定可能です。このモデルには、接合型FETとダイオードを使ったバークレーSPICE対応のタイプもありますが、ここでは、よりスマートなビヘイビア・モデル(制御電源の拡張機能による素子)を使ったタイプを取り上げます。

 今回、この岡村モデルの出力振幅のリミッタ部分を電圧源に変えることにより、収束の問題を無くし、素子数の削減もできました。これから作るモデルは、前節で使ったLF353のデータシートに合わせて、次に示す特性としますが、各自いろいろ特性を変えて試してみて下さい。

   オープンループゲイン(開ループ電圧利得)=110dB
   差動入力抵抗=1Tオーム
   出力抵抗=50オーム
   第1ポール周波数=10Hz
   第2ポール周波数=1MHz
   正のスルーレート=8V/us
   負のスルーレート=-8V/us
   バイアス電流=8nA,4nA
   オフセット電流=4nA
   オフセット電圧=13mV
   正の最大振幅=12V
   負の最大振幅=-12V

 まず、順序はどちらでも構いませんが、作るモデルのシンボルを先に用意します。

ここでは前節と同じように前節で使った回路図をコピーし、変更しましょう。前節で作成したopamp2.schファイルを再度読み込んで、opamp3.schという別名で保存して下さい。メニューバーより

    
File>Save As

でopamp3.schを保存します。

X1,Vcc,Veeを選択してDeleteすることを繰り返して、この3つのシンボルを削除します。

    
Insert>Part...   または、ツール・バーの部品アイコンをクリックし

図8-1のように、電源ピンのないOPアンプのサブサーキット用シンボル"XOPAMPFI"を、選びます。


図8-1 電源ピンのないOPアンプのシンボルを選択


 これを、図8-2のように、削除したX1の代わりに回路図に配置して下さい。

図8-2 回路図に配置する



 この時、今回は必要ありませんが、シンボルが選択されて赤くなっている状態で"F"キーを押すとシンボルの上下が反転して(Flip)そのまま回路図に当てはめることができます。(尚、90°回転(Rotate)は"R",左右反転(Mirror)は"M"です。) この配置したシンボルはこの状態ではまだ、ピン付きのブラックボックスが回路図のノードに接続されたという意味しか表していません。

 次に、このシンボルの中身であるモデルを作成します。全く別の回路図にサブサーキットを作っても良いですし、同一回路図の2ページ目のシートに描いても良いですが、今回は小さな回路なので、同じシート上にサブサーキットの回路図を描きます。これは、他のSPICEにもある階層ブロックでも同様のことができますが、TopSpice独自の機能といえます。TopSpiceでは、階層ブロックの機能も別にあります。

メニューバーより、図8-3のように

    
Project> Subcircuit > New...

とクリックして、

図8-3 サブサーキット回路図を作成開始


 現れたダイアログボックスで、Name:欄に自分でモデル名を決めて入力して下さい。例として"MYOPAMP"と記入しました。Description:欄はメモ用のコメント欄です。シンボルは、既にシンボルライブラリから選び出していますので、一番下のAuto symbolのところのチェックを外しておきましょう(図8-4)。

図8-4 これから作成するサブサーキットの各種設定


 OKをクリックすると、ステイタスバーにSUBCKT OPEN: MYOPAMPと表示され、サブサーキットの作成モードに入っていることが分かります。

このモードをCloseで閉じるまで、作成した回路図が、MYOPAMPという名前のサブサーキットになります。

    
Draw>Part...
    Draw>Ground
    Draw>I/O pin...
    Draw>Wire

で図8-5と図8-6のように、素子の選択と配置を繰り返します。

図8-5 ビヘイビア電流源を選択


図8-6 一通り部品を配置した

 回路図のG1(ビヘイビア電流源)をダブルクリックし、図8-7のように設定を行います。NI1は、ユーザー定義のノード名です。

図8-7 ビヘイビア電流源の設定

 回路図のE1(ビヘイビア電圧源)をダブルクリックし、図8-8のように設定を行います。MPは、ユーザー定義のノード名です。

図8-8 ビヘイビア電圧源の設定

 サブサーキットMYOPAMPの内部回路の作成が完了したら、サブサーキット作成モードの終了です。図8-9のようにして閉じて下さい。

    
Project > Subcircuit > Close...

図8-9 サブサーキットの作成モードを終了して閉じる

 メインの回路図側のシンボルX1をダブルクリックし、Value/name欄にモデル名”MYOPAMP”を記入すれば、回路図の完了です。

図8-10 メイン回路図のシンボルX1にモデル名入力



 これで今作成したモデルがこの回路図で使えるようになりました。解析の設定や観測ポイントの設定は、回路図のコピー時に引き継がれているので、基本的に新たに作成する必要はありません。

ただし、過渡解析で、ステップ上限値(Step ceiling)を設定しないと、ビヘイビア電源の動作上の理由で解析間隔時間が粗くなります。終了時間200usなので、1/1000としてステップ上限値を200nsとします(図8-11)。

図8-11 過渡解析の設定のみ一部変更を加える

 これで、シミュレーション回路図の完成です(図8-12)。

図8-12 完成したシミュレーション回路図(サブサーキット回路図付き)

 ルックアップ・テーブル関数を使ったG1と、リミット関数を使ったE1の設定と意味について、分かりにくいかと思いますので、説明をしておきます。

このような動作を数式で記述し、実際の回路を作成しないで簡略化するモデル化の方法を、アナログ・ビヘイビア・モデリングなどと呼んでいます。TopSpiceでは、電源素子EBとGBに色々な機能があり、数式を記入できます。これらの電源がビヘイビア・モデリングのキー・ポイントになります。

(余談: SPICE3に起源があるSPICEでは、B素子が同じような機能を持ちますが、バークレーSPICEからオリジナルの進化をしているシミュレータでは、特定できないようです。)

G1は、電圧制御電流源で、任意の2点間の電圧を入力としてそれに対応した電流を出力します。アンプのゲイン110dBとスルーレート+/-8V/usの設定を担っています。

G1の詳細構文は、以下のようになります。

G1 1 0 TABLE {V(NI1,INV)} = (-405mV,-16mA) (405mV,16mA)

この構文により、ノードNI1とノードINV間の電圧が-405mVより小さい場合は-16mAの定電流を出力、405mVより大きい場合は16mAの定電流を出力。-405mVと405mVの間では、リニアに電流を出力します。

コンデンサCに電流 i が流れた時、Cに現れる電圧Vは、

    

C1を2nFとしたので、スルーレート8V/usを実現するためには、 

    8V/us=16mA/2nF

これより16mAが求まります。また、スルーレートによるリミットをかけ始める電圧は、R2が8Mオーム、オープンループゲイン110dBとなっているので、

    i*R2/OLG=16mA*8Mohm/316000=405mV

 次に、E1は、電圧制御電圧源で、+/-12Vの最大出力振幅電圧のリミッタと第2ポール部のバッファの役目をしています。

E1の詳細構文は、以下のようになります。

E1 1 0 VALUE = {LIMIT(V(MP,0),-12V,12V)}

この構文により、ノードMPの電圧を入力としてモニターし、+/-12Vを越えると+/-12Vで制限がかかります。その範囲内ではゲイン1のバッファとして働きます。

なお、第1、第2ポールは、各々下記の式で決定されています。C1がスルーレート設定により決まり、R3が出力抵抗に影響しない値という条件で、それぞれ最初に選ばれます。

      

 以上の記述では、自分でオリジナルのOPアンプ・モデルを作ろうとした場合に、パラメータ設定が前後しています。(2013-10-11追記)
手順を正しく踏んでモデル設計する場合、下記の順序になると思います。

1) 入力オフセット電圧Vos、入力バイアス電流Ib1, Ib2、入力抵抗R1の設定(データ・シートより)。
2) オープンループ・ゲインOLG、第1ポールfp1、第2ポールfp2の設定(データ・シートより)。
3) C1の設定(任意)。データ・シートよりスルー・レートを設定し、G1テーブル関数の電流値を計算で求める。
4) fp1とC1の設定値より、R2を計算で求める。
5) G1関数電流値、オープンループ・ゲインOLG、R2の値より、G1テーブル関数の電圧値を計算で求める。
6) データ・シートの最大出力電圧幅より、E1のLIMIT関数値を設定。
7) 出力抵抗値R4を設定(データ・シートに記載あれば、それを使用)。R4に対して十分小さな値として、R3を設定。
8) fp2とR3の設定値より、C2を計算で求める。

最後になってしまいましたが
、オフセット電圧/電流を設定しているVos,Ib1,Ib2と、出力振幅用のG2は、このモデルではオプション扱いとなっており、解析に必要なければ削除してしまっても問題ありません。

オフセット電圧/電流の式について、当社WEBページのここに記述があります。今回作成した回路で、オフセット電圧/電流値をさまざまに変えて出力値がどうなるか、確かめてみることも可能です。



図8-13 解析結果(DC解析,AC解析,過渡解析)



8.SPICE回路シミュレータ使用時の注意点   
    
    SPICE回路シミュレータを使うとき、以下のポイントを覚えておくと非常に役に立ちます:

  SPICEは、トポロジー・エラー(SPICE規則に違反するものを除く)している回路は、解析しません。ユーザーが得る結果は、ユーザーの回路入力ファイルが正しい場合だけ「正しい」と言えます。もし、予想外の結果となった場合には、慎重にその回路記述をチェックして下さい。
大部分のデバイス・モデルは、デバイスの動作範囲内のある限られた範囲においてのみ正確です。もし、回路内のデバイスが「典型的な」動作範囲の外で動いているならば、ユーザーはモデルが正確かどうかも確認しなければなりません。
数値シミュレーションは、解法アルゴリズムにおいて、丸めのエラーと近似エラーを前提としています。これらのエラーは、長い時間のシミュレーション、回路サイズが非常大きい場合、大きなダイナミックレンジの回路の場合に累積する傾向があります。シミュレーション結果を分析するときは常に、懐疑的な態度を保つべきです。もし、シミュレーション出力が物理的に不可能であると思われるならば、おそらくその結果は間違っています。
実際の回路は、寄生的素子の影響を受けます。高い利得または高周波の回路における寄生的素子の影響は、回路のパフォーマンスと動作を支配するかもしれません。SPICEシミュレーションに含まれる寄生的素子の影響は、ユーザー自身がそれを回路に加えなければ観ることはできません。
信号波長が回路の物理的な大きさと同等または短くなるとき、その回路を正確にシミュレーションするには、分布定数回路としてモデル化しなければなりません。
一例として、TopSpiceでは、伝送線路、ラプラス変換、周波数レスポンス・テーブルとs-パラメータ・テーブルなどのSPICE素子を使って、分布定数回路を解析することができます。また、一体化(lumped)素子を使って、近似等価モデルを開発することもできます。
SPICEは、電気的現象のシミュレータです。純粋に電気的でないシステム(モーターとランプのような)をシミュレーションすることは可能ですが、最初に非電気的なシステムを電気的に表すモデルを開発しなければなりません。
全ての回路電圧値は、グランド・ノードを基準として定められます。シミュレータ・グランド・ノードは、数学的なリファレンス・ポイントとしての意味のみを持ちます。アース・グランドと等しくはありません。
回路分岐電流は、SPICEシミュレーションにおいて直接は計算されません。全てのシミュレーション電流の出力値は、素子電流です。電流値の符号は、規則によって定義されます。電源においては、「正の」(第一の)端子から流れ出る電流は、負の値です。(電源内を+から−に流れる向きが正)他の2端子素子では、第一の端子に流れ込む電流が正の向きです。2つ以上の端子を持つ素子(例えばトランジスタ)では、あらゆる端子について流れ込む電流の向きが、正とされます。したがって、全ての素子の端子電流の合計は、ゼロとなります。


Home | What's Simulation | How to use | Links | Books | Services | About us | Contact us | Blog

Copyright(C) 2013 SimCircuit Technologies Co., Ltd.