ttl.png



SUBCKT の登録と使用

いろいろなアプローチのしかたがあると思いますが、私の体験の 順番通りに書いてみます。 実は Web で見つけた SPICE マクロモデルを使ってみようとしたの ですが、うまくいきません。 まずは単純なところから地道に進んでみました。

Edit → Component → Misc の中に triode 三極真空管があって、
 This symbol is for use with a subcircuit macromodel that you supply.
と書いてあります。

これを回路図に置いてから、右クリックで Component Attribute Editor を開くと、 上のほうに Open Symbol というボタンがあるので、これを押します。 プレート端子 (とおぼしきもの) を右クリックすると Pin/Port Properties ダイアログが 出てきます。 Label: Plate, Netlist Order 1 であることが確認できます。 同様に、グリッド は Netlist Order 2、カソードは 3 であることがわかりました。

すでに動くことがわかっている opamp.sub を利用するためのディレクティブは、
 .include opamp.sub

であって、ファイル "opamp.sub" があるディレクトリーは:
 SwCADIII\lib\sub\

ここで、独自の SUBCKT を記述したファイルのパス名が
 SwCADIII\new_asc\doclib\triox.sub

であるとすれば、これを読み込ませるには
 .include ..\..\new_asc\doclib\triox.sub

と書けばいいのだろうと推測しました。
(「..\」はディレクトリーを一階層上に、「..\..\」は二階層上に登ることを意味します。)

"triox.sub" の内容は次の通りです。
――――――――――――――――――――――――
 * A fake triode 
 .subckt TX1 P G K
 B1 n01 0 V = 3e-2 * V(P, K) - (-V(G, K))**0.7
 B2 P   K I = 3e-4 * V(n01)**1.5
 .ends TX1
――――――――――――――――――――――――

ちょっと解説しておきましょう。 B1, B2 は arbitrary behavioral voltage or current sources です。
(任意の行動の電圧あるいは現在の出所、ではなくて、とても自由に設定できる電圧・電流源のこと。)

V(P, K) はプレート - カソード間電圧、V(G, K) はグリッド - カソード間電圧のことです。
n01 は中間的なノードで、V(n01) はその電圧のことです。

B1 は電圧源であって、ノード n01 に 3e-2 * V(P, K) - (-V(G, K))**0.7 の電圧を送り出します。
B2 は電流源であって、端子 P, K 間に 3e-4 * V(n01)**1.5 の電流を流します。

それでは、この「にせもの三極真空管」の静特性を見てみます。

 s1.png

 s2.png

プレート電圧を 0 〜 200V の間で変化させて、一本のグラフを書きます。 グリッド電圧は 0V から -8V まで -1V ステップで変化させます。 グリッド電圧をプラスにしたり、プレート電圧をマイナスにするとどうなるか なんて、知りませんよ。

上記 triox.sub を作って試している途中で、SwitcherCADIII ではべき乗の記号 "^" は使えず、"**" に置き換えなくてはならないことがわかりました。 これは大変大きなヒントです。



真空管アンプ関係で活躍していらっしゃる、中林歩さまのサイト、
 http://www002.upp.so-net.ne.jp/ayumin/audio/pctube/pctube.html
ここの、http://www002.upp.so-net.ne.jp/ayumin/audio/pctube/node41.html から、各種真空管のマクロモデルをダウンロードしました。

その中の 12AU7.lib について、"^" を "**" に変更して、私の triox.sub 中に記述にするだけで、動いた模様です。

 s3.png

中林様、どうもありがとうございました。
Vg = 0V で Ip が 0 付近のとき、Ip が不連続のように見えることを、不躾ながら中林様に質問したところ、たいへん丁寧なご返事をいただきました。 Vp = 0 のとき Ip = 0 ではない、これは接触電位差によるもので、グリッド電圧が -0.6V 以上になると初速度電流が流れることと関係している、とのことでした。 この辺はオーディオ増幅器としての用途では問題にならない部分ですよね。

ほかに、http://www.intusoft.com から Intusoft Vacuum Tube Models というのを入手しています。 使うと エラーがでます。 Subckt にパラメーターを渡すときの書式が異なること、<expression> に "? :" (条件による 選択) が使えないこと、これらはわかっています。 (<expr-1> ? <expr-2> : <expr-3> は使えます。)
http://groups.yahoo.com/group/LTspice/files/Lib/cmp/ の ExcemTubesOk.lib は動きそうです。 試してはいません。



前項の例では計算式を直接書き下したわけですが、回路図入力で 作ったものを subckt 化するにはどうしたらいいのか。
素材として CMOS トランジスターでギルバートセル (乗算器) + 能動負荷を作り、シミュレーションで動作確認しました。

 s4.png

 s5.png

あれ、Id(M4), Id(M5) の最大値が 170μA 弱で、最小値が 20μA 強だなんて、入力信号が大きすぎです。 以後、気をつけます。

次に subckt 化する部分だけを残して他を消去します。

 s6.png

Tools → Export Netlist で *.net ファイルに保存します。考え中

青く小さくなって考えたものの、net ファイルはせいぜい参考にしかなりま せん。 そこで既存の 4N25.sub 等を参考に、手で入力しま した。 "SwCADIII\new_asc\doclib\mgilbert.sub" の内容は次の通りです。

 .subckt MGILBERT 1 2 3 4 5 6 7 8 9 10
 M1 n034 2 n012 [5] s4kN
 M2 n056 3 n012 [5] s4kN
 M3 8 7 n034 [5] s4kN
 M4 9 6 n034 [5] s4kN
 M5 9 7 n056 [5] s4kN
 M6 8 6 n056 [5] s4kN
 M7 n012 4 5 [5] s4kN
 M8 4 4 5 [5] s4kN
 M9 9 9 10 [10] s4kP
 M10 8 9 10 [10] s4kP
 .model s4kN nmos(level=1 vto=0.5 kp=35.2e-6 gamma=0.91 cgso=210pF cgdo=210pF
 + cj=4.9e-4 cjsw=245pF ld=3e-7 pb=0.94 tox=50n)
 .model s4kP pmos(level=1 vto=-0.5 kp=13.4e-6 gamma=0.64 cgso=210pF cgdo=210pF
 + cj=2.3e-4 cjsw=117pF ld=3e-7 pb=0.90 tox=50n)
 .ends MGILBERT

*.asc ファイル中の U1 のシンボルは Component → Misc/DIP10 を使いました。 Subckt 名が MGILBERT ですから Value=MGILBERT とします。 LT のロゴマークは画像ファイルの段階で消しました。 LTC 社の製品ではないですから。

 s7.png

 s8.png



Subckt にパラメーターを渡すことができます。 CNY17.sub を参考に、CNY17P.sub を作成しました。

 .subckt CNY17P 1 2 3 4 5 6 7 8 9 10
 R1 N003 2 2
 D1 1 N003 LD
 G1 3 5 N003 2 {Igain}
 C1 1 2 18p
 Q1 3 5 4 [4] NP
 .model LD D(Is=1e-20 Cjo=18p)
 .model NP NPN(Bf=610 Vaf=140 Ikf=15m Rc=1 Cjc=19p Cje=7p Cjs=7p C2=1e-15)
 .ends CNY17P

 s9.png

U1 の Value は CNY17P、Value2 は Igain=2e-4 としました。 Value 欄でなく、Spice directive として .param Igain=2e-4 と書いても効果は同じです。

 s10.png

Igain=1e-4 に変えると、確かにパラメーターが渡っていることが確認できました。

 s11.png



前項に引き続いて、フォトカプラー CNY17vip という subckt を作りました。 Igain のほか Speed を指定できます。 Speed は フォトトランジスタの Cjc, Cje, Cjs を同じ倍率でスケーリングし ます。(cny17vip.sub 参照) .step param で Speed を 0.8 1.0 1.25 と変化させます。

(1) アナログ動作
s12.png

過渡応答と AC 解析
s13.png
s14.png

(2) 同、2-pole OP アンプ付
s15.png

過渡応答と AC 解析
s16.png
s17.png

(3) スイッチング動作 (飽和寸前)
s18.png

過渡応答 (拡大図)
s20.png

s21.png

 CNY17vip1.asc CNY17vip2.asc CNY17vip3.asc
 CNY17vip.asy cny17vip.sub


(4) フォトダイオード動作
cny17vip.sub の内容を調べたところ、BE 間フォトダイオードの利用を考慮 した subckt ではないとわかりました。 そこで修正版の cny17vipd.sub を使います。

s24.pngs25.png

V3 はフォトダイオードの逆バイアス電圧源で、接合容量を小さくする効果が あります。 しかしフォトダイオードは OP アンプの仮想グランドに接続されています から、近似的に接合容量の電圧変化なし → 接合容量に電流は流れない、と言え ます。 実際にバイアス電圧を 0 にして C1 を調整すると、逆バイアス電圧に対する 応答特性の変化はわずかです。 電流入力回路構成の OP アンプと併用するなら フォトダイオードの逆バイアス電圧は不要でしょう。 ノイズの点でも有利です。

U2 は 2-pole 型で GBW=10Meg Slew=10Meg です。 そろそろ OP アンプの 高周波性能も無視できなくなりましたので、帰還抵抗は小さ目にしてあります。

 CNY17vip4d.asc cny17vipd.sub

 もどる
Valid HTML 4.01!