shino's bar

お家で使うLinux tux

gEDA/gafのインストール

電子回路設計支援ソフト - gEDA/gafの使い方

22 Mar 2007 (初出: 15 Mar 2007)

cr diagram インストールしたgEDA/gafを使って、図のような簡単なCR回路を描いてみます。 その後 ngspiceでシミュレーション、gwaveでグラフをプロットしてみましょう。


gEDA Suite project managerを使う

gEDA Suite project managerは gEDAの各プログラムを統合するGUIですが、 現在は開発が止まっており、gEDAの最新バージョンにはそのままでは対応しません。 ここで配布する geda-20070216-0.nosrc.rpmをビルドしてできる geda-projectmanager パッケージは、独自パッチを当てて gschem, ngspice, gwaveのそれぞれ最新バージョンに対応させたものです。 これを使って練習してみます。

  1. gEDA Suiteの起動とプロジェクトの作成

    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 ファイルがあるので、それを選びます。

  2. gschemの起動

    「Tool」→「Schematic editor」を選ぶと gschemが起動します。

    gEDA Suiteのメニューバーに依らずとも、gnomeですとアプリケーションメニューの「プログラム開発」あるいは「教育・教養」のところに「回路図エディタ」があります。 ターミナルから起動する場合のコマンドは $ gschem です。

    gschem起動時にステータスのウィンドウが開きますが、これは気にせず閉じておきます。 右のようなフレームが現れます。


  3. 回路図を引く

    add parts button 部品追加ボタンを押すと、部品選択ウィンドウが立ち上がります。 まず電源は 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度クリックするとそこで配線が切れます。


  4. 回路定数の記入

    部品Rを左ボタンでダブルクリックすると、アトリビュート編集のウィンドウが開きます。 refdesの項目は部品番号ですR?となっているところをR1と書き換えます。 次にAdd Attributeを使って抵抗値を書き加えます。 名前は value、値は 1kと入力し、追加ボタンを押すと、上の欄にそれが加えられます。 表示関係のチェック欄は、「表示」と「値」にのみチェックし、ウィンドウを閉じると、1kの抵抗値が回路図上に表示されます。

    同様にCの部品番号をC1、valueに 1nFを追加します。

    電源の valueにはすでに dc 0 ac 1が入っていますので、refdesだけVinに変更します。

    R1とC1を繋いでいる配線をクリックし、アトリビュート編集ウィンドウで、 名前 netname、値 Vout を追加します。

  5. Spiceシミュレーション条件ファイルの指定

    以上で回路図は書けたのですが、ngspiceでシミュレーションするときのコマンドを別ファイルで用意することとして、 そのファイル名を図面の中に指定しておきます。

    部品追加ボタンを押して立ち上がる部品選択ウィンドウの中から、spiceのフォルダを開きます。 その中から spice-include-1.symというものを選び、 図面の空いたところに置きます。

    Diagram

    マウス右ボタンクリックなどで選択モードにして、 さきほど置いた spice-includeを左ボタンでダブルクリックします。 アトリビュート編集ウィンドウが立ち上がるので、fileの値に sample.cmd と書き込みます。 refdesの値は A? となっていますが、これを A1と書き換えておきましょう。

  6. 図面の保存

    右の図は説明用に少し大きさを変えていますが、だいたいこのような感じで図面はできあがりです。 ファイルを保存します。

    「ファイル」-->「名前を付けて保存…」で /home/○○/gaf/project1/sample.sch の名前で保存します。 ファイル名の拡張子は自動では付きません。回路図ファイル名にはいつも .sch を明示的に付けておきましょう。

  7. Spiceシミュレーション条件ファイルの作成

    シミュレーション条件を記すファイルの名前はさきほど 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 の名前で保存します。

  8. プロジェクトに必要なファイルの取り込み
  9. gEDA Suiteの「File」→「Import」を選び、 さきほどの sample.sch と sample.cmd をプロジェクトに取り込みます。

  10. ネットリストの作成

    gEDA Suiteの Modles あるいは Filesの窓にある sample.schを選択します。 sample.schが選択された状態で 「Action」メニューの中から 「Create SPICE netlist」を選択します。 Statusの窓に Errorが表示されなければ、Modulesの窓の Simulationsの下に sample.cirというファイルが作成されているはずです。

    ここでエラーがあれば、回路図に誤りがあるかもしれないので、 sample.schを選択した状態で「Action」-->「Open」で gschemを起動し、修正します。 線が繋がっているように見えて繋がっていないのは、拡大して点検すると発見しやすいでしょう。

  11. シミュレーションの実行

    sample.cirを選択した状態で 「Action」-->「Simulate(SPICE)」で ngspiceにファイルが渡され、シミュレーションを実行します。 エラーがなければ Graphsの下に sample.rawができているはずです。

    ここでエラーがあれば、ふたたび回路図をチェックするか、 あるいは sample.cirを「Action」-->「Edit」で開くとネットリストがチェックできるので、 慣れるとこれでも分かるかもしれません。 sample.cmdが誤っている場合もあります。同様に「Action」-->「Edit」で開けます。

  12. グラフのプロット

    sample.rawを選択した状態で 「Action」-->「View with Gwave」で gwaveが起動します。 gwaveメインのウィンドウとは別に sample.rawの中の変数リストのウインドウも開かれているはずです。 この中から voutをドラッグし、メインのウィンドウに2つあるグラフ描画エリアにドロップする(落とす)と グラフがプロットされます。

    「Options」-->「X Axis Scale」-->「Log」を選ぶと X軸だけ対数軸となります。 グラフの上をマウスの左ボタンでクリックすると、XとYそれぞれの値が読めます。 ngnutmeg

  13. ngnutmegでプロット

    gwaveでは罫線が入らないようです。 sample.rawを選択した状態で 「Action」-->「Open」で ngnutmegが起動します。 現れたターミナルで次のようにタイプするとプロットができます。 こちらのほうが見やすいという方もおられるでしょう。お好みで。

    > plot vout

    ngnutmegの終了コマンドは quitです。

    > quit

コマンンドラインで使う

gEDA Suite project managerを使わなくてもターミナルを立ち上げ、コマンドラインからgEDA/gafの各プログラムを操作できます。

  1. 作業用フォルダの作成

    /home/○○/gaf/project1ホルダを作成し、その中に移動します。

    $ mkdir /home/○○/gaf/project1
    $ cd /home/○○/gaf/project1
  2. 回路図の作成
    project1] $ gschem sample.sch &

    回路図エディタが立ち上がるので、前章の要領で回路図を作り、ファイルを保存します。 /home/○○/gaf/project1フォルダの中に sample.schの名前でファイルが作られているはずです。

  3. シミュレーション条件ファイルの作成
    project1] $ gedit sample.cmd &

    立ち上がった geditで前章と同じコマンドを記述し、保存します。

    * Spice control command
    .ac dec 100 1k 10MEG

    geditでなくとも、お好みのテキストエディタで上記内容の sample.cmdを作成しても構いません。

  4. ネットリストの作成
    project1] $ gnetlist -g spice-sdb -o sample.cir sample.sch

    ネットリスト sample.cirができあがります。

  5. シミュレーションの実行
    project1] $ ngspice -b -r sample.raw sample.cir

    メッセージが流れ、sample.rawができあがります。

  6. gwaveでプロット
    project1] $ gwave sample.raw &

    Gwaveのメインウィンドウと変数選択ウィンドウが立ち上がるので、 前章と同じく voutをグラフ描画エリアにドラッグ、ドロップするとグラフが描かれます。

  7. ngnutmegでプロット
    project1] $ ngnutmeg sample.raw
    > plot vout

    グラフが現れます。ngnutmegの終了コマンドは quitです。

    > quit

Makefileを使って

コマンドラインに慣れている人は前章の方法が使いやすいかもしれませんが、 回路図の修正やシミュレーション条件をいろいろ変えて繰り返していると、少々めんどうくさくなります。 そこで、次のような 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掲示板


shino's bar goto [シノバー店内案内] [お家で使うLinux]