LastUPDATE '09.5.11 FETの記述を訂正; '06.11.13 素子Gの記述を訂正; '06.10.10 誤字の修正(pluse→pluse); '06.2.8 誤字の修正; '06.2.2 NGSPICE 用に書き直す; '05.1.25 E科 PC室の環境に合わせ一部改善; '02.3.19 目次を改善; (更新 02/3/11 最初の完成)SPICE3f4用に書き始める。
================================== 目次 I [NGSPICE 実行のための基本的な情報] II [ .CIR ファイルの作成] III [NGSPICE の実行] IV [NGSPICE 利用上の Tips] ================================== 注意:この文書は,望月が自分自身の備忘録として 書き始めたものを,せっかくなのでWeb公開するものです。 ここに書いたものは最低限の使い方です。しかし, ngspiceにはここで書いていないもっとすごい機能を 持っているようです。そうしたことに興味をお持ちなら, NGSPICEのヘルプなどの情報をご覧になることをお勧めします。 I [NGSPICE 実行のための基本的な情報] (1) 実行ファイルは, ngspice.exe です。 デフォルト設定でインストールした場合, c:\ngspice\bin\ というフォルダ内におかれています。 (2)データを置くフォルダと,実行ファイルのフォルダは, 特に関連付けたりすることは不要のようです。 データファイルは,ngspice.exe を実行した後に設定できます。 その際のファイルの問い合わせ方は,通常のWindowsのアプリと同じです。 ただし,NGSPICE は 半角文字しか認識できないようです。 ファイル名や,フォルダ名に,全角文字を入れてみると,そのファイルを認識できませんでした。 従って,データフォルダも,ルートディレクトリに直接作ってしまうことを,私としては,推奨します。 例 z:\ngspice_data\ (3)ヘルプ情報 ngspice.hlp というファイルにヘルプ情報が入っています。ほぼ英語です。 デフォルト設定でインストールした場合,c:\ngspice\ フォルダに入っています。 また,c:\ngspice\ngspice_doc というフォルダも要チェックです。 ================================== IV [ .CIR ファイルの作成] (1)回路情報を記入するファイルである cir ファイルの作成 ・ファイルは,拡張子が .cir になります ・ルートディレクトリに近いところにデータを置くことを勧めます。例えば z:\ngspice_data\ など。 ・ファイルを作ったり編集するには,notepad などのテキストエディタを使います。 (2)回路図をCIRファイルに変換する-1 ・回路図内の各ノード(節点)に番号を付けます。ただし,グランドは必ず 0 (ゼロ) と名付けます。 ・ノード間に接続される素子を(順番はどうでもいいから)全て書き出します。 例: (GND=0)--- V1 ---(1)--- R1 ---(2)--- C1 ---(GND=0) 1| V1 1 0 DC 3V (直流電圧源) 2| R1 1 2 10kOhm (抵抗) 3| C1 2 0 10nF (容量) 注意1 : 大文字も小文字も同じと解釈される 注意2 : 小さい数字を表わす単位は,m u n p (ミリ マイクロ ナノ ピコ) など 注意3 : 大きい数字を表わす単位は,k meg g t (キロ メガ ギガ テラ) など 注意4 : 間違えやすい単位は,M(ミリ)と meg(メガ)である。なお,u はマイクロを表わす 注意5 : 単位の V, A, Ohm, F, H, s, Hz は無視されるが,エラー防止に書いたほうが良い (3)回路図をCIRファイルに変換する-2 よく使われる素子 1| R### +端子 -端子 値(Ohm) (抵抗) 2| C### +端子 -端子 値(F) (容量) 3| L### +端子 -端子 値(H) (インダクタ) 4| D### p端子 n端子 モデル名 (ダイオード) 5| Q### C端子 B端子 E端子 モデル名 (トランジスタ) 6| J### D端子 G端子 S端子 モデル名 (J-FET) 7| M### D端子 G端子 S端子 Bulk端子 モデル名 (MOSFET) 8| V### +端子 -端子 DC 値(V) (直流電圧源) 9| V### +端子 -端子 AC 振幅(V) [位相] (交流電圧源) 10| V### +端子 -端子 sin(0V 141V 50Hz) (交流電圧源 オフセット0V,振幅141V,f=50Hz) 11| V### +端子 -端子 pulse(0V 10V 1ms 2ms 4ms 6ms 20ms) (パルス電圧源=初期電圧0V, パルス電圧10V, 遅延時間1ms, 立上り2ms, 立下り4ms, パルス幅6ms, 周期20ms) 12| I### は電流源であり,記述はVと同様 13| E### +端子 -端子 +制御 -制御 ゲイン (電圧制御電圧源) 14| G### +端子 -端子 +制御 -制御 トランスコンダクタンス (電圧制御電流源) 15| F### +端子 -端子 制御素子名 ゲイン (電流制御電流源) 16| H### +端子 -端子 制御素子名 伝達抵抗 (電流制御電圧源) 注意1 : ### 部は,数字やアルファベットを入れる。これにより他の素子との区別できる。 (4)回路解析方法の指定 1| * (行頭の*は,その行がコメントであることを示す) ; (行中の ; 以降はコメントである) 2| .model Q1 NPN(xxx xx xx) (デバイスパラメタの定義) 3| .inc ファイル名 (外部ファイルを(全て)読み込む) 4| .lib ファイル名 (ライブラリから(モデルやサブサーキットなど必要情報を)読み込む) 5| .end (回路記述の終り) 6| .op (DCバイアスの計算) 7| .dc V1 -3 10 0.5 (DC解析。V1を,-3V〜10Vにわたって0.5Vづつ解析) 8| .ac dec 20 1k 10meg (AC解析。1kHz〜10MHzを,10倍あたり20個所づつ解析) 9| .tran 1ns 100ns 20ns 0.1ns (過渡解析。プリント出力1nsごと,最終時間100ns,20nsはプリント出力しない,時間刻み0.1ns以内) 注意1 : cirファイルの第1行目は,必ず * から始めるコメント行にする。 注意2 : .ac の場合,回路内のAC電源は1つである。 注意3 : .ac の場合, V ... sin,pluse は使えない。 注意4 : .tran の場合,V...AC は使えない。 ================================== III [NGSPICE の実行] ここでは実行ファイルは c\ngspice\bin\ngspice.exe とする また,は解析する回路のファイル名を I\ngspice_data\n21.cir とする。 なお,ファイル n21.cir は次の通り
Download
* circuit 21 .ac dec 20 0.1 100k v1 1 0 dc 0 ac 1 r1 1 2 1k c1 0 2 1u .probe .end |
(a) ngspice の起動 手順1:c\ngspice\bin\ngspice.exe を起動する。 (システムによっては,ウインドウズのスタートボタンからたどったり,ショートカットからたどれることもあります) ↓起動したところ
(b) ファイルの読み込み 手順2:次の図のように「file」メニューから「Open」を選びます。
手順3:I\ngspice_data\n21.cir を選びます。
読み込みが終了すると次のような画面になります。
(c) シミュレーションの実行 手順4:次の図のように「run」を実行させます。
成功すると,次のような画面になります。その際に音がピッと鳴ることがあります。
なお,実行に失敗すると何らかのメッセージが出ます。 (エラーの原因によってメッセージは異なります) (d) グラフ表示 手順5:次の図のように「graph」を実行させます。
すると,次のように「どのデータを書くか」聞いてきます。 なお,ここで示された V(1) は,回路図の「1」で指定したノード(配線)の電圧を表わします。
もしも聞き方が次の図のようであって,当然聞かれるはずの V(1) や V(2) が無かったとしたら, 今までの手順のどこかで間違いがあったと言えます。
手順6:下の領域が記入する場所です。たとえば,次の図のように入力して「OK」を押します。 式を入力する際に例えば V(2) と入力したいなら,キーボードから打ち込んでも良いし, 左上の領域内の V(2) をクリックしても良いです。 なお,回路図からも分かるように, V(1)-V(2) は, R1 に加わる電圧ですし, V(2) (= V(2) - 0 ) は, C1 に加わる電圧です。 また,db( ) はデシベル計算をする関数です。
すると,次のようにグラフが表示されます。 縦軸はデシベルです。RC回路の周波数特性が見事に描かれました。
(e) グラフの印刷(お好みで) 手順7:図の様に,左上のボタンからメニューをたどると,印刷が可能です。 シミュレーションはたやすいですが,エコロジーを考えると,無駄な印刷は避けたいものです。
(f) グラフの削除 手順8:グラフのウインドウの右上にある[×]を押して,グラフを閉じます。 もしも改めてグラフを書こうとすると,次々に新しいグラフのウインドウが追加されるので, (処理時間やメモリ領域の有効利用が考えるなら)不要なウインドウが直ぐに消したほうが良いです。 (この説明に対応する図は用意していません) (g) 新たなグラフの作成 手順9:改めて 手順5〜手順6 を行えば,別のグラフを書くことができます。 例えば,式を改めて次の様にしてグラフを書き直しても良いです。 ここに示しましたように,掛け算(記号は *)など普通の数式が使えます。 また,グラフの項目数は2本に限らず,かなりの本数を同時に書かせることができます。 (複数のグラフを書くときの問題は,コンピュータの制限よりも,むしろ図が見難くなる事でしょう)
(h) 新たな条件の設定 手順10:次の図の操作をすると,テキストエディタが立ち上がります。 そうしたら,パラメタを変えることができます。(例えば抵抗値を10倍に変えるなど) パラメタを変えたら,テキストエディタを終了します。 終了時には当然データをセーブします。
(i) (お好みで) 各部の電圧や電流の表示 手順11:上の図で,「EDIT source」を選ぶ代わりに「Print ALL」というコマンドを選ぶと, 各部の定常的な電圧を示します。 もしも V(2) の電圧だけで良いならば,キーボードから「print v(2) (enter)」と打ち込みます。 同様に,ある素子に流れている電流を知りたければ,キーボードから「show r1 (enter)」と打ち 込みます。 (k) 新しい条件での再計算 手順12:手順10で説明したテキストエディタの処理が終えたら,次の図の様に、「run circuit ?」 とPCが聞いてきますので,下の1行だけ用意されたウインドウで,キーボードから「run (enter)」 と打ち込みます。すると,再計算をしてくれます。 なお,「y (enter)」 でも,メニューの「Command」から「Yes and return」でも可能です。 これでちょうど手順4が終わったのと同等になります。あとは手順5から実施してください。
(l) 終了 手順13:「File」メニューから「Exit」を実行させます。 他の方法として,ウインドウの右上の[×]をクリックしたり, 「exit (return)」と入力しても終了できます。 ================================== IV [NGSPICE 利用上の Tips] '05.2.2からこのソフトを使い始めました。'05.2.2現在,ウラワザは殆ど知りませんが, 今後気が付いたら記載する予定です。 ================================== 例題は,別ファイルに示します。