SPICEに実装されたフーリエ解析では、ユーザは1つまたはそれ以上の時間領域の回路信号のフーリエ変換を実行し、周波数領域でそのスペクトラムを調べることができます。SPICE流のフーリエ解析はNgspiceとXyceの両方に実装されています。spice4qucsのユーザは、Fourier analysisという特別のアイコンを使ってフーリエシミュレーションを使うことができます。そのシミュレーションアイコンは、Spice simulationsグループにあります。フーリエ解析が必要であれば、現在作業中の回路図にTransient analysisアイコンと一緒に“Fourier analysis”アイコンをコピーして配置してください。SPICEのフーリエ解析は、過渡シミュレーションにより生成されたシミュレーションデータを使うので、過渡シミュレーションの時間領域データが無ければ意味がありません。フーリエ解析と過渡シミュレーションのリンクは、フーリエ解析の最初のプロパティとして、結合された過渡シミュレーションの名前を入力することで形成されます。
フーリエ解析のプロパティリストには、以下のような項目があります:
Sim — Linked transient analysis icon name.リンクされた過渡解析のアイコンの名前。
numfreq — ハーモニックスの数:ngspiceでは可変だが、Xyceでは10に固定されています。
F0 — このパラメータは、生成された周波数領域のスペクトラムの、基本周波数です。
Vars — このパラメータは出力信号のリストです。出力信号は、ノード電圧か電流です。リストでそれぞれの項目は空白で区切られなくてはなりません。
フーリエシミュレーションは、指定されたそれぞれの出力信号に対し4つの出力ベクトルを作成しますが、例えばv(out)の場合:
magnitude(v(out)) — 強度のスペクトラム
phase(v(out)) — 位相スペクトラム(度で表示)
norm(mag(v(out)) — 正規化した強度のスペクトラム
norm(phase(v(out)) — 正規化した位相スペクトラム
spice4qucsでは、それらの4つのベクトルをプロットすることができます。
これはフーリエ解析の小さな例ですが、上記で紹介された主要な特徴と、小信号ACシミュレーションとフーリエ解析の関係を示すものです。
図5.1 1段のトランジスタアンプのフーリエ解析と小信号AC解析
SPICEの歪解析は、シミュレーションされる回路の小信号歪解析を提供するものです。歪解析が必要であれば、現在作業中の回路図に、特別な Distortion analysisアイコンをコピーして配置してください。それは、小信号AC解析と同様の解析を行ないますが、回路の歪成分を計算します。SPICE歪解析は、ngspiceのみで使用できます。計算さえた歪成分、例えば二次や三次の成分の値は、ngnutmegスクリプトの宣言文を使って抽出できます。ngnutmegで使える演算子と関数の詳細については、公式のngspiceマニュアルを見てください。
ngspiceの歪解析では、特別なAC電圧源でシミュレーションされる回路を駆動しなくてはなりません。この拡張された信号源は、Spice componentsグループにあります。ngspiceの歪解析を正しく動作させるには、電圧源のパラメータ DISTOF1または(および)DISTOF2を指定しなくてはなりません。ngspiceの歪解析のすべての機能の詳細については、公式のngspiceマニュアルを見てください。標準のQucsのAC信号源では、ngspiceの歪解析は動作しないので、注意してください。
これは、一段のトランジスタアンプの、歪成分を推定するSPICE歪解析の基本的な適用例です。
図5.2 1段トランジスタアンプのSPICE小信号歪解析
SPICEのノイズ解析を使えば、指定された周波数バンド幅でのトータルの回路ノイズを計算することができます。ngspiceのノイズシミュレーションは2つのベクトルを生成します:
onoise_total — 積分した出力ノイズ
inoise_total — 等価な入力雑音
pice4qucsでは、これらのベクトルをプロットできます。単一の信号周波数でのノイズシミュレーションでは、たった1つのノイズデータが出力されるだけであることに注意してください。現時点では、ngspiceにしかノイズ解析は実装されていません。しかし、近い将来ノイズシミュレーションはXyceにも追加されると期待されています。
ノイズ解析を設定するには、ノイズ解析アイコンのドロップダウンリストに以下の4つのパラメータを追加してください:
Bandwidth limits — 解析の開始と終了周波数をHzで指定。
Points count — ノイズシミュレーションの周波数ポイントの数。
Output — 出力パラメータの名前。これは、ノード電圧でもブランチの電流でも良い。
Source — 入力電圧源の名前。ここでは、標準のQucsの電圧源を使用できます。
図5.3 1段トランジスタアンプのノイズ解析
NgspiceとXyceでは、1つのパラメータと2つのパラメータ(ネストしたループ)の両方を使うことができます。Xyceでは時間領域のパラメータスイープで妥当な結果が得られるという保証が無いのは、Xyceはそれぞれのスイープ変数のステップに対し、適応的な時間ステップを採用するからです。DCと周波数領域に対しては、パラメータスイープは正しく動作します。
QucsとSpice4qucsのパラメータスイープの定義には、以下のような違いがあります。
部品の値をスイープするには、変数名ではなく、部品の名前を使わなくてはなりません。例えば、C1とR1の値をスイープするには、C1, R1を使わなくてはなりません。
Ngspiceでは、部品のモデルのパラメータをスイープできます。その際、Component_name.Parameter_nameのような記法を使わなくてはなりません。例えば、T1.Bf は、トランジスタT1の Bfパラメータをスイープします。
スイープ変数として、.PARAM や.GLOBAL_PARAMの名前を使うことはできません。
図5.4 パラメータスイープの例
これは、パラメータスイープの使い方のちょっとした例です。スイープ変数は、コレクタ抵抗R2です。それは、Parameter Sweepのプロパティで指定されています。
図5.5 モデルパラメータのスイープ例