gEDA で回路図作成からシミュレーション
gschem は gEDA/gaf でメインツールである回路図エディタです。ここでは、この gschem による回路入力から SPICE シミュレーション用のネットリスト生成、そしてシミュレーションといったデザインフローを試していきます。
gschem で回路図作成
端末から以下のように入力することによって回路図作成のウィンドウが立ち上がります。オペアンプを使った2次の Buterworth Low Pass Filter の回路を例にします。
$ gschem lpf.sch &
タイトルブロックの追加
回路図入力画面のメニューバー「追加」-「部品」で部品選択ウィンドウが立ち上がり、まず初めに「 titleblock 」-「 title-A3.sym」を選択し適当な場所におきます。キーボードから [ve] と入力するかメニューバーから「表示」-「拡大範囲」をクリックすると部品に合わせた画面表示になります。
部品の追加
部品選択ウィンドウの 「Linear Technology」 ライブラリから lm358-1.sym、「Basic devices」ライブラリから resister-2.sym を3つ、capacitor-1.sym を2つ、「SPICE simulation elements」ライブラリから vac-1.sym 、と vdc-1.sym を2つ追加する。部品の回転、移動を行いながら、ネットの接続をして回路を作成します。また、SPICE のシミュレーションコマンドが記述されたファイルをインクルードする為に「SPICE simulation elements」ライブラリから spice-include-1.sym を追加します。
シンボルの作成
gschem の部品ライブラリに既に登録されているシンボルがそのまま使えれば良いのですが、使えない場合には新たにシンボルを作成するか、既にあるシンボルを編集して作成します。またトランジスタやオペアンプ等のアクティブ素子は使用するSPICEモデルで記述されている端子の順番にシンボルの属性(pinseq)があっているか確認が必要になります。
今回使用するオペアンプ LMX358 は既に登録されているLM358の pinseq や device name を修正して新たにシンボルとして登録しています。
具体的にはすでに登録されれいるシンボル lm358-1.sym をローカルのライブラリ ディレクトリに lmx358-1.sym というシンボル名でコピーしこれを編集します。
$ cd gaf/gschem-sym/ $ cp ../geda/share/gEDA/sym/linear/lm358-1.sym lmx358-1.sys
変更内容は以下になります。
v 20031231 1 L 200 0 200 800 3 0 0 0 -1 -1 L 200 800 800 400 3 0 0 0 -1 -1 L 800 400 200 0 3 0 0 0 -1 -1 T 675 600 5 10 0 0 0 0 1 device=LM358 <--- LMX358に変更 T 700 1200 5 10 0 0 0 0 1 numslots=2 T 675 1050 5 10 0 0 0 0 1 slotdef=1:1,2,3,4,8 <--- 1:8,4,3,2,1に変更 T 675 900 5 10 0 0 0 0 1 slotdef=2:7,6,5,4,8 <--- 2:8,4,5,6,7に変更 T 675 750 5 10 0 0 0 0 1 slot=1 T 700 1350 5 10 0 0 0 0 1 footprint=DIP8 P 200 600 0 600 1 0 1 { T 50 625 5 8 1 1 0 0 1 pinnumber=3 T 50 625 5 8 0 0 0 0 1 pinseq=3 } P 200 200 0 200 1 0 1 { T 50 225 5 8 1 1 0 0 1 pinnumber=2 T 50 225 5 8 0 0 0 0 1 pinseq=2 <--- 4に変更 } P 800 400 1000 400 1 0 1 { T 875 425 5 8 1 1 0 0 1 pinnumber=1 T 875 425 5 8 0 0 0 0 1 pinseq=1 <--- 5に変更 } P 500 200 500 0 1 0 1 { T 525 50 5 8 1 1 0 0 1 pinnumber=4 T 525 50 5 8 0 0 0 0 1 pinseq=4 <--- 2に変更 } P 500 600 500 800 1 0 1 { T 525 650 5 8 1 1 0 0 1 pinnumber=8 T 525 650 5 8 0 0 0 0 1 pinseq=5 <--- 1に変更 } L 250 600 350 600 3 0 0 0 -1 -1 L 300 650 300 550 3 0 0 0 -1 -1 L 250 200 350 200 3 0 0 0 -1 -1 T 225 350 9 8 1 0 0 0 1 LM358 <--- LMX358に変更 T 200 900 8 10 1 1 0 0 1 refdes=U?
シンボルの属性を確認あるいは編集するには直接 Editor で開くことのほかに gschem でシンボルを選択し、「階層」-「シンボルへ」をクリックし Symbol Editor を起動しさらに、「編集」-「隠しテキスト表示」をクリックすることでできます。
部品の属性変更
回路図から SPICE のネットリストを生成する為に、リファレンス情報(refdes)、抵抗・コンデンサの定数等の値(value)やネット名(netname)情報といった属性を編集する必要があります。属性を編集するには編集する部品を選択してキーボードから [ ee ] と打つか、編集する部品をダブルクリックすることによって attribute 編集ウィンドウが現れます。
オペアンプは「refdes」の「値」を [U?] から [X1] に修正し、「value」と「file」を追加しそれぞれの「値」を [LMX358] と [/home/hoge/gaf/gschem-sym/LMX358.FAM] とします。「file」にはSPICE モデルのパスを指定しています。
SPICE model ファイルの編集
今回使用したオペアンプ LMX358 の SPICE モデル LMX358.FAM はMAXIM/DALLASのオペアンプ/コンパレータマクロモデルからダウンロードし、以下のように多少の編集をしています。
* LMX358 MACROMODEL -- 省略 -- * Connections * 1 = IN+ * 2 = VEE * 3 = IN- * 4 = OUT * 5 = VCC ******************************* *.SUBCKT LMX358 1 2 3 4 5 6 7 8 <-- コメントアウト * XAMP1 8 4 3 2 1 OPAMP <-- コメントアウト * XAMP2 8 4 5 6 7 OPAMP <-- コメントアウト *.ENDS <-- コメントアウト ******************************* ******************************* .SUBCKT LMX358 10 18 7 6 75 <-- Subcircuit 名を OPAMP から LMX358 に変更 * 10 = VCC * 18 = VEE * 7 = IN+ * 6 = IN- * 75 = OUT ***************** -- 省略 -- .ENDS
このようにシンボルの属性の編集や新規に作成したシンボルを使った回路図が以下です。なお、オペアンプはローカルに作成したシンボルを部品選択ウィンドウの「ライブラリ」-「gschem-sym」から lmx358-1.sym に置き換えています。
gnetlist でシミュレーション用のネットリストを生成
SPICEネットリストを生成するには端末から "gnetlist -g spice-sdb <filename.sch>"を実行します。デフォルトでは output.net というファイルができますが、任意のファイル名で出力するには -o <任意のファイル名>とします。
以下、作成した回路(lpf.sch)からネットリスト(lpf.cir)を生成する実行例です。。
$ gnetlist -g spice-sdb -o lpf.cir ~/gaf/project1/lpf.sch Command line passed = gnetlist -g spice-sdb -o lpf.cir /home/hoge/gaf/project1/lpf.sch Loading schematic [/home/hoge/gaf/project1/lpf.sch] Using SPICE backend by SDB -- Version of 4.28.2007 schematic-type = normal schematic $
ngspice でシミュレーション
Ngspice でシミュレーションするには、端末から "ngspice" を実行します。
$ ngspice ****** ** ngspice-24 : Circuit level simulation program ** The U. C. Berkeley CAD Group ** Copyright 1985-1994, Regents of the University of California. ** Please get your ngspice manual from http://ngspice.sourceforge.net/docs.html ** Please file your bug-reports at http://ngspice.sourceforge.net/bugrep.html ** Creation Date: Sun Mar 11 16:41:36 JST 2012 ****** ngspice 1 ->
ngspice のコマンドラインから "source lpf.cir" 、"run" を実行します。詳細は 「ngspice 〜SPICEシミュレータ〜」を参照してください。