第3章 サブサーキットと素子ライブラリ

3.1 サブサーキットとマクロモデル

Spiceシミュレーションは、Qucsサブサーキットのすべての特徴をサポートします。ユーザは、NgspiceとXyceのどちらでもパラメータ化されたサブサーキットを使うことができます。サブサーキットに埋め込まれたQucsの式は、SPICEネットリストの.PARAMセクションに変換されます。式についての制約は、第4章で検討されています。サブサーキットの中にシミュレーション指示を埋め込むことはできません。

サブサーキットを持ったプロジェクト例を考えてみましょう。これは、HC-49/Uという8.86 MHzの水晶共振器のモデルです。水晶共振器は、RCL回路で表現できます。このプロジェクトは、2つの回路図から構成されます:quarz.schは、水晶共振器のサブサーキット、quarz_test.sch は、テスト回路です。

この例はexamples\ngspice\ 以下のディレクトリにあります。

図3.1に、水晶共振器のサブサーキットを示します。水晶共振器の動作原理は https://en.wikipedia.org/wiki/Crystal_oscillatorに簡単に書かれています。

Quarz_SUBCKT_EN

図3.1 水晶共振器の等価回路

水晶は、2つの共振周波数を持ったRCL回路で表現されます:

fs=12πLqCq‾‾‾‾‾√fp=12πLqCq‾‾‾‾‾√1+CqCs‾‾‾‾‾‾‾√

この式から、直列容量 Cq を得ることができます。

Cq=14π2f2sL2q

この式は、サブサーキットに置かれています。

さて、水晶共振器の振幅応答をシミュレーションしてみましょう。この目的のためには、AC simulation を実行する必要があります。図3.2は振幅応答の測定のためのテスト回路を示します。

Quarz_EN

図3.2 水晶共振器のテスト回路

シミュレーション終了後に、出力電圧(ac.v(out) 変数) または伝達係数K (変数 ac.k)をプロットすることができます。図3.3はNgspiceとXyce両方のシミュレーション結果を示しています。見ての通り、結果は一致しています。唯一の違いは、シミュレーション結果の後処理は、まだXyceには実装されていない点です。そのため、Xyceでプロットできるのは出力電圧だけです。グラフで、出力をデシベル表示するためには、Y軸にログスケールを使う必要があります。

Quarz_Sim_EN

図3.3 HC-49/U水晶結晶板の振幅応答

サブサーキットは、.SUBCKTルーチンに変換されています。テスト回路図(図3.2)に対するSpiceネットリストの例を以下に示します:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

* Qucs 0.0.19 /home/vvk/qucs/examples/ngspice/quarz_test.sch * Qucs 0.0.19 /home/vvk/qucs/examples/ngspice/quarz.sch .SUBCKT quarz _net0 _net1 f=8863k Lq=0.01406 Cs=6.5p .PARAM Cq={1/(4*3.1415926539^2*f^2*Lq)} R1 _net0 _net1 50MEG C2 _net0 _net1 {CS} R2 _net2 _net1 2 L1 _net3 _net2 {LQ} C1 _net0 _net3 {CQ} .ENDS R1 out 0 1 V1 _net0 0 DC 0 SIN(0 1 1G 0 0) AC 1 R2 _net0 in 50 XSUB1 in out quarz f=8863K Lq=0.01406 Cs=6.5P .control set filetype=ascii AC LIN 400 8800K 9000K let K=dB(V(out)/V(in)) write quarz_test_ac.txt v(in) v(out) K destroy all exit .endc .END

3.2 部品と回路のライブラリ

ライブラリ部品は、spice4qucsサブシステムでサポートされています。ユーザは、ライブラリ部品をすべて使用することができます。いくつかのライブラリには、もともとの部品のSPICEコードが埋め込まれています。これらのライブラリには、Qucsの回路図で最高のSpiceシミュレーション結果が得られたものを保管すべきでしょう。ライブラリ部品(MOSFETS ライブラリのIRFZ44 MOSFET)の使用例は、examples/ngspice/irfz44_switch.schにあります。

3.3 製造者の部品データライブラリを使うには

電子部品の製造者がデータシートにSPICEモデルを提供することはよくあります。SPICE netlist部品を使って、これらデータシートのSPICEモデルを貼り付けることができます。部品データベースのSPICEモデルを使うには、以下のステップを実行する必要があります。Spice netlist builderを使えば、余計な変換なしにSPICEモデルを出力のネットリストに置き換えることができます。

1. Spiceネットリストのテキストを切り出し、テキストファイルとして保存します。このファイルではどういう拡張子を使っても構いません。好ましいのは、**.ckt* , **.cir*, **.sp*です。

2. 回路図に、SPICE netlist部品を配置し、標準のSPICE component propertiesダイアログを使って、SPICEネットリストのノードを部品のポートに入れます。

3. 回路図をNgspice/Xyceを使ってシミュレーションします。

SPICEネットリスト部品を、.END文を使って終了することのないよう、くれぐれも注意してください。そうしないと、シミュレータは.SUBCKT ルーチンを読み込むと終了してしまい、シミュレーションが実行されません。

SPICEモデルの使用例 (LM358 opamp) を図3.4に示します。

LM358_EN

図3.4 LM358オペアンプのNgspiceを使ったACシミュレーション

これが、LM358のSPICEモデルのネットリストです。モデルは、LM358のデータシートを見てください。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

* from http://www.ti.com/lit/zip/sloj045 * LM358 OPERATIONAL AMPLIFIER "MACROMODEL" SUBCIRCUIT * CREATED USING PARTS RELEASE 4.01 ON 09/08/89 AT 10:54 * (REV N/A) SUPPLY VOLTAGE: +/-5V * CONNECTIONS: NON-INVERTING INPUT * | INVERTING INPUT * | | POSITIVE POWER SUPPLY * | | | NEGATIVE POWER SUPPLY * | | | | OUTPUT * | | | | | .SUBCKT LM358 1 2 3 4 5 * C1 11 12 5.544E-12 C2 6 7 20.00E-12 DC 5 53 DX DE 54 5 DX DLP 90 91 DX DLN 92 90 DX DP 4 3 DX EGND 99 0 POLY(2) (3,0) (4,0) 0 .5 .5 FB 7 99 POLY(5) VB VC VE VLP VLN 0 15.91E6 -20E6 20E6 20E6 -20E6 GA 6 0 11 12 125.7E-6 GCM 0 6 10 99 7.067E-9 IEE 3 10 DC 10.04E-6 HLIM 90 0 VLIM 1K Q1 11 2 13 QX Q2 12 1 14 QX R2 6 9 100.0E3 RC1 4 11 7.957E3 RC2 4 12 7.957E3 RE1 13 10 2.773E3 RE2 14 10 2.773E3 REE 10 99 19.92E6 RO1 8 5 50 RO2 7 99 50 RP 3 4 30.31E3 VB 9 0 DC 0 VC 3 53 DC 2.100 VE 54 4 DC .6 VLIM 7 8 DC 0 VLP 91 0 DC 40 VLN 0 92 DC 40 .MODEL DX D(IS=800.0E-18) .MODEL QX PNP(IS=800.0E-18 BF=250) .ENDS .