第5章 より進んだ回路シミュレーション技法

5.1 フーリエシミュレーション

SPICEに実装されたフーリエ解析では、ユーザは1つまたはそれ以上の時間領域の回路信号のフーリエ変換を実行し、周波数領域でそのスペクトラムを調べることができます。SPICE流のフーリエ解析はNgspiceとXyceの両方に実装されています。spice4qucsのユーザは、Fourier analysisという特別のアイコンを使ってフーリエシミュレーションを使うことができます。そのシミュレーションアイコンは、Spice simulationsグループにあります。フーリエ解析が必要であれば、現在作業中の回路図にTransient analysisアイコンと一緒に“Fourier analysis”アイコンをコピーして配置してください。SPICEのフーリエ解析は、過渡シミュレーションにより生成されたシミュレーションデータを使うので、過渡シミュレーションの時間領域データが無ければ意味がありません。フーリエ解析と過渡シミュレーションのリンクは、フーリエ解析の最初のプロパティとして、結合された過渡シミュレーションの名前を入力することで形成されます。

フーリエ解析のプロパティリストには、以下のような項目があります:

  1. Sim — Linked transient analysis icon name.リンクされた過渡解析のアイコンの名前。

  2. numfreq — ハーモニックスの数:ngspiceでは可変だが、Xyceでは10に固定されています。

  3. F0 — このパラメータは、生成された周波数領域のスペクトラムの、基本周波数です。

  4. Vars — このパラメータは出力信号のリストです。出力信号は、ノード電圧か電流です。リストでそれぞれの項目は空白で区切られなくてはなりません。

フーリエシミュレーションは、指定されたそれぞれの出力信号に対し4つの出力ベクトルを作成しますが、例えばv(out)の場合:

  1. magnitude(v(out)) — 強度のスペクトラム

  2. phase(v(out)) — 位相スペクトラム(度で表示)

  3. norm(mag(v(out)) — 正規化した強度のスペクトラム

  4. norm(phase(v(out)) — 正規化した位相スペクトラム

spice4qucsでは、それらの4つのベクトルをプロットすることができます。

これはフーリエ解析の小さな例ですが、上記で紹介された主要な特徴と、小信号ACシミュレーションとフーリエ解析の関係を示すものです。

図5.1 1段のトランジスタアンプのフーリエ解析と小信号AC解析

5.2 歪解析

SPICEの歪解析は、シミュレーションされる回路の小信号歪解析を提供するものです。歪解析が必要であれば、現在作業中の回路図に、特別な Distortion analysisアイコンをコピーして配置してください。それは、小信号AC解析と同様の解析を行ないますが、回路の歪成分を計算します。SPICE歪解析は、ngspiceのみで使用できます。計算さえた歪成分、例えば二次や三次の成分の値は、ngnutmegスクリプトの宣言文を使って抽出できます。ngnutmegで使える演算子と関数の詳細については、公式のngspiceマニュアルを見てください。

ngspiceの歪解析では、特別なAC電圧源でシミュレーションされる回路を駆動しなくてはなりません。この拡張された信号源は、Spice componentsグループにあります。ngspiceの歪解析を正しく動作させるには、電圧源のパラメータ DISTOF1または(および)DISTOF2を指定しなくてはなりません。ngspiceの歪解析のすべての機能の詳細については、公式のngspiceマニュアルを見てください。標準のQucsのAC信号源では、ngspiceの歪解析は動作しないので、注意してください。

これは、一段のトランジスタアンプの、歪成分を推定するSPICE歪解析の基本的な適用例です。

disto_EN

図5.2 1段トランジスタアンプのSPICE小信号歪解析

5.3 ノイズシミュレーション

SPICEのノイズ解析を使えば、指定された周波数バンド幅でのトータルの回路ノイズを計算することができます。ngspiceのノイズシミュレーションは2つのベクトルを生成します:

  1. onoise_total — 積分した出力ノイズ

  2. inoise_total — 等価な入力雑音

pice4qucsでは、これらのベクトルをプロットできます。単一の信号周波数でのノイズシミュレーションでは、たった1つのノイズデータが出力されるだけであることに注意してください。現時点では、ngspiceにしかノイズ解析は実装されていません。しかし、近い将来ノイズシミュレーションはXyceにも追加されると期待されています。

ノイズ解析を設定するには、ノイズ解析アイコンのドロップダウンリストに以下の4つのパラメータを追加してください:

  1. Bandwidth limits — 解析の開始と終了周波数をHzで指定。

  2. Points count — ノイズシミュレーションの周波数ポイントの数。

  3. Output — 出力パラメータの名前。これは、ノード電圧でもブランチの電流でも良い。

  4. Source — 入力電圧源の名前。ここでは、標準のQucsの電圧源を使用できます。

noise_EN

図5.3 1段トランジスタアンプのノイズ解析

5.4 1つまたは2つのパラメータでスイープ制御されたシミュレーション

NgspiceとXyceでは、1つのパラメータと2つのパラメータ(ネストしたループ)の両方を使うことができます。Xyceでは時間領域のパラメータスイープで妥当な結果が得られるという保証が無いのは、Xyceはそれぞれのスイープ変数のステップに対し、適応的な時間ステップを採用するからです。DCと周波数領域に対しては、パラメータスイープは正しく動作します。

QucsとSpice4qucsのパラメータスイープの定義には、以下のような違いがあります。

  1. 部品の値をスイープするには、変数名ではなく、部品の名前を使わなくてはなりません。例えば、C1とR1の値をスイープするには、C1, R1を使わなくてはなりません。

  2. Ngspiceでは、部品のモデルのパラメータをスイープできます。その際、Component_name.Parameter_nameのような記法を使わなくてはなりません。例えば、T1.Bf は、トランジスタT1Bfパラメータをスイープします。

  3. スイープ変数として、.PARAM や.GLOBAL_PARAMの名前を使うことはできません。

図5.4 パラメータスイープの例

これは、パラメータスイープの使い方のちょっとした例です。スイープ変数は、コレクタ抵抗R2です。それは、Parameter Sweepのプロパティで指定されています。

図5.5 モデルパラメータのスイープ例

5.5 Qucs and SPICE simulation of device and circuit temperature properties

back to the top