NGSPICE
SPICEは、California大学Berkeley校で開発された回路シミュレータで、現在のバージョン3f5で開発が止まっています。BSIM3、BSIM4のMOSモデルが同校から提供されています。その後のSPICEの更新は、イタリアのローマ大学の学生達によるNGSPICEがしています。簡単なディジタル回路の機能シミュレーションができるXSPICEも組み込まれており、サンプルを公開しています。Linux、Windows、MacOS Xでバイナリーのインストーラがあります。SPICEは、グラフィック・インターフェースとしてnutmegを持っていますが、KJWavesの方が多機能です。又、ASCOを使えば、回路の最適化ができます。
SPICEには、FFT機能がないので出力波形のスペクトル解析ができません。(但し、Windows版のngspice-26では可能) 仕方がないのでFFTは、Octaveで行います。では、一例として1kHzのサイン波のスペクトル解析をしてみます。先ず、トランジェント解析をしてサンプリングしたサイン波のサンプリング値を求めます。サンプリング数を1024にして、以下の記述をsignal.cirとして作ってみました。
vin 1 0 sin(0 1 1k)
.op
.tran 0.976563us 1000us
.print tr v(1)
.plot tr v(1)
.end
NGSPICEを起動する為、次のコマンドを入力します。
ngspice
次にファイルsignal.cirを読み込んで実行し波形を表示させます。
source signal.cir
run
plot v(1) > signal.raw
nutmeg でグラフが表示されますが、quit ボタンをクリックして終了します。signal.raw のファイルができていることを確認して下さい。
次にサンプリング値のデータファイルを作成します。
print v(1) > signal.dat
signal.datのファイルができています。ファイルを開くと3列の数字が並んでいます。いらない箇所を削除します。次にOctaveで、このファイルを読み込ませてFFTをします。Octave を起動して以下のコマンドを入力します。
load signal.dat
y=fft(signal(:,3),1024);
y=20*log10(abs(y));
f=(0:50);
plot(f,y(1:51))
このようなグラフが表示されます。先程できた signal.raw を使って KJWaves でグラフ表示させます。詳しくは
ここ を参照して下さい。