インストールしたgEDA/gafを使って、図のような簡単なCR回路を描いてみます。
その後 ngspiceでシミュレーション、gwaveでグラフをプロットしてみましょう。
gEDA Suite project managerは gEDAの各プログラムを統合するGUIですが、 現在は開発が止まっており、gEDAの最新バージョンにはそのままでは対応しません。 ここで配布する geda-20070216-0.nosrc.rpmをビルドしてできる geda-projectmanager パッケージは、独自パッチを当てて gschem, ngspice, gwaveのそれぞれ最新バージョンに対応させたものです。 これを使って練習してみます。
gnomeですとアプリケーションメニューの「プログラム開発」あるいは「教育・教養」のところに「geda プロジェクト・マネージャ」があります。 ターミナルから起動する場合のコマンドは $ geda です。
「project」→「new」で Project Nameは project1, Directoryは /home/○○/gaf/project1として OKを押します。 新規作成なのに Project Already exists. Overwrite OK? とメッセージが出ますが、Yesを押します。
次回からは「project」→「open」で、/home/○○/gaf/project1/project1.prj ファイルがあるので、それを選びます。
「Tool」→「Schematic editor」を選ぶと gschemが起動します。
gEDA Suiteのメニューバーに依らずとも、gnomeですとアプリケーションメニューの「プログラム開発」あるいは「教育・教養」のところに「回路図エディタ」があります。 ターミナルから起動する場合のコマンドは $ gschem です。
gschem起動時にステータスのウィンドウが開きますが、これは気にせず閉じておきます。 右のようなフレームが現れます。
部品追加ボタンを押すと、部品選択ウィンドウが立ち上がります。
まず電源は analogや powerのところにもありますが、後に ngspiceでシミュレーションするために、
spiceのホルダから vac-1.sym を選びます。RとCは analogのホルダに registor-1.sym, capacitor-1.symがそれぞれあります。
接地のマークは powerのホルダにある gnd-1.symを選びます。
選択後マウスの左クリックの繰り返しで同じ部品が置かれます。
Cは向きが異なりますが、マウスの中ボタンを押すと90℃回転します。
あるいは、いったん横向きのまま配置し、 「編集」→「90°回転モード」にして、配置されたCをもういちど左クリックすれば、縦向きに変わります。 キーボードから[e][r]の2文字を続けて打ち込んでも同じことができます。
部品を置き終わったら、部品追加ボタンの右隣にあるネット追加ボタンを押して、配線を始めます。 配線時は図を拡大しておいたほうがやり良いです。 スクロールマウスを使っていると、スクロールで拡大縮小ができるので、慣れると便利です。 配線の始点で左クリック、終点で2度クリックするとそこで配線が切れます。
部品Rを左ボタンでダブルクリックすると、アトリビュート編集のウィンドウが開きます。 refdesの項目は部品番号ですR?となっているところをR1と書き換えます。 次にAdd Attributeを使って抵抗値を書き加えます。 名前は value、値は 1kと入力し、追加ボタンを押すと、上の欄にそれが加えられます。 表示関係のチェック欄は、「表示」と「値」にのみチェックし、ウィンドウを閉じると、1kの抵抗値が回路図上に表示されます。
同様にCの部品番号をC1、valueに 1nFを追加します。
電源の valueにはすでに dc 0 ac 1が入っていますので、refdesだけVinに変更します。
R1とC1を繋いでいる配線をクリックし、アトリビュート編集ウィンドウで、 名前 netname、値 Vout を追加します。
以上で回路図は書けたのですが、ngspiceでシミュレーションするときのコマンドを別ファイルで用意することとして、 そのファイル名を図面の中に指定しておきます。
部品追加ボタンを押して立ち上がる部品選択ウィンドウの中から、spiceのフォルダを開きます。 その中から spice-include-1.symというものを選び、 図面の空いたところに置きます。
マウス右ボタンクリックなどで選択モードにして、 さきほど置いた spice-includeを左ボタンでダブルクリックします。 アトリビュート編集ウィンドウが立ち上がるので、fileの値に sample.cmd と書き込みます。 refdesの値は A? となっていますが、これを A1と書き換えておきましょう。
右の図は説明用に少し大きさを変えていますが、だいたいこのような感じで図面はできあがりです。 ファイルを保存します。
「ファイル」-->「名前を付けて保存…」で /home/○○/gaf/project1/sample.sch の名前で保存します。 ファイル名の拡張子は自動では付きません。回路図ファイル名にはいつも .sch を明示的に付けておきましょう。
シミュレーション条件を記すファイルの名前はさきほど sample.cmd としました。これを作成します。 geditなどのテキストエディタを立ち上げます。 gEDA Suiteの「Tool」→「Text editor」を選ぶと geditが起動しますが、他の方法で立ち上げても構いません。 新しく次のようにコマンドを書きます。
* Spice control command .ac dec 100 1k 10MEG
「*」で始まる行はコメント。次の行の .ac はAC解析を意味し、decはグラフは10倍毎の対数目盛、 100はプロットの点数で、続いて 1kHz-10MHzの間のシミュレーションを指示しています。 これを /home/○○/gaf/project1/sample.cmd の名前で保存します。
gEDA Suiteの「File」→「Import」を選び、 さきほどの sample.sch と sample.cmd をプロジェクトに取り込みます。
gEDA Suiteの Modles あるいは Filesの窓にある sample.schを選択します。 sample.schが選択された状態で 「Action」メニューの中から 「Create SPICE netlist」を選択します。 Statusの窓に Errorが表示されなければ、Modulesの窓の Simulationsの下に sample.cirというファイルが作成されているはずです。
ここでエラーがあれば、回路図に誤りがあるかもしれないので、 sample.schを選択した状態で「Action」-->「Open」で gschemを起動し、修正します。 線が繋がっているように見えて繋がっていないのは、拡大して点検すると発見しやすいでしょう。
sample.cirを選択した状態で 「Action」-->「Simulate(SPICE)」で ngspiceにファイルが渡され、シミュレーションを実行します。 エラーがなければ Graphsの下に sample.rawができているはずです。
ここでエラーがあれば、ふたたび回路図をチェックするか、 あるいは sample.cirを「Action」-->「Edit」で開くとネットリストがチェックできるので、 慣れるとこれでも分かるかもしれません。 sample.cmdが誤っている場合もあります。同様に「Action」-->「Edit」で開けます。
sample.rawを選択した状態で 「Action」-->「View with Gwave」で gwaveが起動します。 gwaveメインのウィンドウとは別に sample.rawの中の変数リストのウインドウも開かれているはずです。 この中から voutをドラッグし、メインのウィンドウに2つあるグラフ描画エリアにドロップする(落とす)と グラフがプロットされます。
「Options」-->「X Axis Scale」-->「Log」を選ぶと X軸だけ対数軸となります。
グラフの上をマウスの左ボタンでクリックすると、XとYそれぞれの値が読めます。
gwaveでは罫線が入らないようです。 sample.rawを選択した状態で 「Action」-->「Open」で ngnutmegが起動します。 現れたターミナルで次のようにタイプするとプロットができます。 こちらのほうが見やすいという方もおられるでしょう。お好みで。
> plot vout
ngnutmegの終了コマンドは quitです。
> quit
gEDA Suite project managerを使わなくてもターミナルを立ち上げ、コマンドラインからgEDA/gafの各プログラムを操作できます。
/home/○○/gaf/project1ホルダを作成し、その中に移動します。
$ mkdir /home/○○/gaf/project1 $ cd /home/○○/gaf/project1
project1] $ gschem sample.sch &
回路図エディタが立ち上がるので、前章の要領で回路図を作り、ファイルを保存します。 /home/○○/gaf/project1フォルダの中に sample.schの名前でファイルが作られているはずです。
project1] $ gedit sample.cmd &
立ち上がった geditで前章と同じコマンドを記述し、保存します。
* Spice control command .ac dec 100 1k 10MEG
geditでなくとも、お好みのテキストエディタで上記内容の sample.cmdを作成しても構いません。
project1] $ gnetlist -g spice-sdb -o sample.cir sample.sch
ネットリスト sample.cirができあがります。
project1] $ ngspice -b -r sample.raw sample.cir
メッセージが流れ、sample.rawができあがります。
project1] $ gwave sample.raw &
Gwaveのメインウィンドウと変数選択ウィンドウが立ち上がるので、 前章と同じく voutをグラフ描画エリアにドラッグ、ドロップするとグラフが描かれます。
project1] $ ngnutmeg sample.raw > plot vout
グラフが現れます。ngnutmegの終了コマンドは quitです。
> quit
コマンドラインに慣れている人は前章の方法が使いやすいかもしれませんが、 回路図の修正やシミュレーション条件をいろいろ変えて繰り返していると、少々めんどうくさくなります。 そこで、次のような Makefileを用意します。
# Makefile for spice simulation from schematic diagram name = untitled spice = ngspice models = All: $(name).raw %.raw: %.cir %.cmd $(spice) -b -r $@ $< %.cir: %.sch $(models) gnetlist -g spice-sdb -o $@ $<
name = のところは sampleでもよいかもしれません。 プロジェクトフォルダ /home/○○/gaf/project1の中に以上の内容の Makefileを保存しておきます。 新しくプロジェクトを作るごとに、そのフォルダ内に同じものをコピーしておきます。
回路図ファイル ○○.schを作成したり修正して保存したのち、あるいはシミュレーション条件 ○○.cmdを変更、保存したら、 それらファイルのあるプロジェクトフォルダの中で、次のコマンドを打つとネットリストの再作成と、シミュレーションの実行が自動的に進みます。
project1] $ make ○○.raw
あとは ○○.rawを gwaveあるいは ngnutmegで開きます。
gschemの使い方は、英文で gschem Warmup for Beginners があります。 日本語では Ryusaiさんのページが分かりやすいでしょう。
ご意見、お問い合わせは Linux掲示板 へ