代数/数値式は、回路シミュレーションで以下のような重要な役割を担っています:
回路素子のパラメータ化
シミュレーションデータの後処理
ユーザ定義の部品の定義
spice4qucsサブシステムにより、上記のリストの1と2の操作および3の項目は、簡単に実行できます。
spice4qucsは、以下の代数/数値式をサポートします:
1. 通常のQucsの方程式。これらは自動的にSPICEの.PARAM宣言とngnutmegスクリプトに自動変換されます。シミュレーション変数を含まない方程式(例えば、ノード電圧や素子電流)は、生成されるSPICEネットリストに、.PARAM 文として渡されます。それと対照的に、1つまたはそれ以上のシミュレーション変数を含む方程式は、SPICEシミュレーションファイルで、ngspiceの.control文と.endc文の間に置かれます。.control と .endcに囲まれるブロックは、通常1つまたはそれ以上のSPICEシミュレーションコマンドの後に置かれます。シミュレーション変数を含む方程式を処理できるのはngspiceだけであり、Xyceにはまだこのための適当な後処理が実装されてないことに注意してください。
2. .PARAM の項目。それらの文は、生成されるSPICEネットリストで直接.PARAMの項目に移されます。
3. .GLOBAL_PARAMセクション。この機能は、.PARAM iの項目と同じように動作します。
4. .OPTIONS セクション。この機能は、ngspiceやXyceで内部的に定義された変数、例えばGMINを変更する手段を提供するものです。
5. ngnutmegスクリプト。これらは、シミュレーション後のngnutmegポストプロセッサーに直接渡されます。この機能は、Xyceではサポートされてないことに、あらためて注意してください。
最後の4つの種類の式をあらわすアイコンは、ComponentsパレットのSpice sectionsグループの中にあります。
ngspice は方程式をフルにサポートします。ただしSパラメータシミュレーションに関係した数学関数 (例えば stoz(), stoy(), など) だけは実装されていません。 複素数演算もサポートされています。同様に、物理定数(q, kB, など) も使うことができます。Qucs の方程式は、パラメータ化と後処理の両方の目的で使用できます。ただし、SPICEの変数名は、大文字と小文字を区別しませんが、Qucsatorは区別することに注意してください。そのため、Qucsator ではKv と KV では別の変数であるのに対し、ngspiceとXyceでは同一の変数になります。代数方程式は、通常通り、括弧が評価の順番を決め、左から右に評価されます。
前述したように、シミュレータ変数を含む式、例えばノード電圧や素子電流は、ngnutmegスクリプトに変換されます。以下の例(RC回路の複素電力の計算)では、ngspiceでのQucs方程式の使い方を例示しています。この回路は、ngspiceとQucsatorの両方で正しくシミュレーションできます。
図4.1 RC回路のトータル電力
以下の式を計算する必要があります:
トータル電力:
S=abs(U˙⋅I˙)
有効電力:
P=ℜ[U˙⋅I˙]
無効電力:
Q=ℑ[U˙⋅I˙]
シミュレーション結果を図4.2に示します。
図4.2 トータル電力、有効電力、無効電力のカーブ
Xyce回路シミュレータは、ngnutmegのような後処理を含めずに配布されています。残念ながら、そのために、XyceはQucsの方程式の一部しか処理することができません。特に、Xyceがサポートするのは、パラメータ化だけです。ノード電圧や素子電流を含む代数方程式は、Xyceでは無視されます。
簡単な例を示します。これは、パラメータ化を3つのシミュレータすべてのバックエンドで利用できることを例示しています。RCL回路の共振周波数 fresの推定にパラメータ化を利用しています:
fres=12πLC‾‾‾√
図4.3 パラメータ化したRCL回路
3つの回路のシミュレーション結果は同じだとわかりますね。
注意:
方程式の順序は重要なので気をつけてください。SPICEシミュレーションは、方程式の順序の影響を受けますが、Qucsatorでは式の順序は問題になりません。パラメータを含む式と後処理の式で問題になります。Spice4qucsは方程式の順序には注意を払いません。ユーザは、Undefined variable...というシミュレーション時のエラーを回避するために、適切な方程式の順序を選択する必要があります。このことは、回路図上の2つまたはそれ以上のEquationコンポーネントにも影響があります。
シミュレーションデータの後処理は、回路シミュレータの非常に重要な機能です。2つの一般的な方法が、ngspiceとqucsatorでデータの後処理に採用されています。
まず、特別なコンポーネントであるNutmeg Equation を実装しました。これは、確立されたQucs Equationコンポーネントと同様の方法で動作します。そのプロパティダイアログ(図4.4)はNutmeg Equationアイコンをダブルクリックすると開きます。
図4.4 Ngnutmeg Equation のプロパティダイアログ
ユーザは(最初のパラメータとして)ngnutmegスクリプトがリンクされているシミュレーションのタイプを指定する必要があります。以下のシミュレーションタイプを使うことができます:
AC
TRAN
DISTORTION
DC
All simulations
“All simulations” のタイプを選択した場合、すべてのシミュレーションについて、方程式が評価されます。ノード電圧と素子電流については、標準的なSPICE記法、例えばノード電圧はv(node)やV(n1, n2)を使わなくてはなりません。同様にプローブ電流は、 Pr1という名前のQucsのプローブに流れる電流を表す場合、VPr1#branchのようなSPICEの用語で指定します。spice4qucsでは、すべてのngnutmeg関数と演算子を制限なく使うことができます。しかし、ngnutmeg式の中の変数は大文字と小文字を区別することは気をつけてください!
そのほかのすべての式やパラメータは、ngnutmegの式になります。これらは、ngnutmegのlet文に変換されます:
let Var1 = Expression1 let Var2 = Expression2 let VarN = ExpressionN
これらの式は、最初のものから最後のものまで、優先度は括弧に従って、評価されます。ngspiceの式を記述する時は、式の順番に注意してください。
次の例(図4.5)では、2つの方程式のタイプを使用する方法を例示します。
図4.5 ngnutmegでシミュレーションデータを後処理する歪解析
シミュレーション出力データを後処理する2つ目の方法では、通常のQucs Equationコンポーネントを使います。しかし、spice4qucsでは、Qucsの式の中で、SPICE記法を使えることに注意してください。次の例では、この特徴の使い方を示します。
図4.6 Qucs式でのSPICE記法の使用例
QucsのEDDモデルは、電流方程式と電荷方程式で記述されます。EDDは N 個のブランチを持ちます。電流方程式は、両端の電圧がVNのブランチNを流れる電流を電流INに結びつけます:
I1=f1(V1,…,VN)…IN=fN(V1,…,VN)
チャージ方程式は、両端の電圧が VNのブランチNに蓄積する電荷QNを、ブランチNを流れる電流INに結びつけます:
Q1=g1(V1,…,VN)…QN=gN(V1,…,VN,I1,…,IN)
EDDの式の中では、Qucsの式の記法を使わなくてはなりません。Qucs記法は、自動的にSPICE記法に変換され、ここでQucsのEDD関数は、SPICEネットリストビルダーによって合成され、SPICEのBタイプの電源を使って作られた電気的に等価な回路を形成します。
spice4qucsサブシステムは、EDDの電流と電荷の両方の方程式をサポートします。EDDモデルは、ngspiceでもXyceでも特に何もしなくてもシミュレーションできます。SPICEの数学関数はすべて利用できます。以下の例(図4.7と4.8)は、EDDベースの回路のシミュレーション方法を示しています。
最初の例は、トンネルダイオードの一連のIV曲線を例示しており、トンネルダイオードのIV曲線は、以下の方程式で近似されています:
I=Is(eVφT−1)+Ivek(V−Vv)+Ip⋅VVpeVp−VVp
図4.7 EDDによるコンパクト素子モデルを用いたトンネルダイオードのシミュレーション
2番目の例は、非線形容量を容量電荷Qと印可電圧 Vを結びつける多項式で近似する方法を例示しています。
Q=C1V+C2V22+C3V33+…+CNVNN
F図 4.8 ngspiceとXyceを使った非線形容量のシミュレーション
図4.9 非線形容量を持ったRC回路の振幅応答
spice4qucsの特別なコンポーネントであるEquation defined source を使ってQucsのEDDと同じことができます。このコンポーネントは、Spice componentsのグループに入っています。これは、BタイプのSPICE電圧/電流源のビヘイビャを実装するものです。ngspiceマニュアルの5.1章に詳細な情報が書かれています。図4.10の例は、この電源の利用法を示します。B電源では、SPICE記法を使わなくてはならないことに注意してください。
図4.10 Bタイプの電源を使った電圧逓倍器のモデル
QucsのRFEDDデバイスは、まだspice4qucsによってサポートされていません。一時的な回避策としては、R,C,LのモデルとBタイプの電源を代わりに使ってください。また、ngspiceの hertz 変数は、QucsのRFEDDモデルと同じ機能のモデルを合成できるようにするため、信号周波数を表すように定義されています。詳細については、公式ngspiceマニュアルの3.2.4、3.2.8、3.2.12章、および5.1章を参照してください。