発端
Autodesk Fusionを用いて、定番のオペアンプ、NJM4580を含む回路を設計しようとしていた。製造元から配布されているspiceモデルをダウンロード、ライブラリに追加しようとした。
ところが、ライブラリ中の、パラメータを中かっこでくくって後に書く記法にはFusionの回路シミュレータが対応していないようである。(ngspiceでは、LTspiceやPspiceとは .paramコマンドの書き方が異なるのかもしれない)
しかしFusionの回路図エディタは非常に使いやすいので、どうにかそのままシミュレーションもできたらいいなということで、LTspiceを用いてシミュレーションすることにした。
(Autodesk Fusion側の)ライブラリの準備
spiceでのシミュレーションにかかわらない部分(シンボルのピンの配置など)については準備済みとする。
抵抗
まずはシンボル。「97 Info」レイヤーに「>SPICEMODEL」「>SPICEEXTRA」を書いておいて、回路図でspiceモデルが反映されるようにする
次に、コンポーネントの画面上部から、「spiceモデルを追加」。Spice Typeを「R: Resistor」として、Mapボタンからマッピング。
オペアンプ
抵抗と同様に、シンボルに「>SPICEMODEL」「>SPICEEXTRA」を書いておく。
spiceモデルの追加について。spice typeはX: Subcircuitとしておく。Mapボタンから、subcktの設定に移る。
姑息なやり方にはなってしまうが、「NJM4580_Fusion」というsubcktを定義し、その中で「NJM4580」というsubcktを参照することにする。これなら、複数のsubcktを定義せずに済む。「NJM4580」は、後ほどLTspiceに移ったとき読み込む。
ピンのマッピングについては、データシートとにらめっこしながら割り当てていく。
その他
電源やGNDについては、公式から配布されている「ngspice-simulation」ライブラリを使用する。(特に、GNDについては基板設計でもそのまま使える)
回路図を書く
簡単のために、抵抗とオペアンプと電源周りのみを使って、増幅率-2倍の反転増幅回路と増幅率3倍の非反転増幅回路をつなげた回路を書いた。
入力には、振幅0.1Vの1kHzの正弦波を入れている。(V3に対して「値の設定」で、「sine(0 0.1 1k)」を直打ちした)
電源は±9Vを供給している。また、ネットの名前は上の図の通り。
ネットリストをエクスポートする
コマンドラインの窓にexportと入力する。
Enterを押すと何やらいろいろ候補が出てくる。ここから、「SpiceNetList」を選択。適当な場所に名前を付けて保存しておく。とりあえず、piyo.cirで保存した。
LTspiceで編集
ここからは、作業場所をLTspiceに移す。LTspiceで、先ほど作ったpiyo.cirを開く。
(略)
.TEMP=25.0
* --------- .OPTIONS ---------
* --------- .PARAMS ---------
* --------- devices ---------
V_V2 POW_POS 0 +9V
R_R4 IN2_INV OUT2 20k
R_R5 0 IN2_INV 10k
V_V3 IN 0 sine(0 0.1 1k)
R_R2 IN1_INV OUT1 20k
V_V1 POW_NEG 0 -9V
R_R6 0 OUT2 470k
X_U1 OUT1 IN1_INV 0 POW_NEG OUT1 IN2_INV OUT2 POW_POS NJM4580_FUSION
R_R1 IN IN1_INV 10k
R_R3 0 OUT1 1Meg
* --------- models ---------
* (model found in library)
*
.SUBCKT NJM4580_Fusion 1 2 3 4 5 6 7 8
XU1 1 2 3 4 5 6 7 8 NJM4580
.ENDS subnam
* --------- simulation ---------
.print DC V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.print AC V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.print TRAN V(OUT2) V(IN) V(IN2_INV) V(IN1_INV) V(POW_POS) V(POW_NEG) V(OUT1) I(V_V3) I(V_V1) I(V_V2)
.END
LTspiceのライブラリの入っているフォルダに、配布されていたライブラリファイル「njm4580_v2.lib」を放り込み、piyo.cirの適当な場所に「.lib "njm4580_v2.lib"」と追記。
また、simulationの行の次あたりに「.tran 10m」を追記しておく。
シミュレーション実行
左上のRunボタンを押して実行。
Runボタンの右隣にいくつかいったところにある「pick visible traces」から、V(in)、V(out1)、V(out2)を選択。
1段目で-2倍、2段目で3倍となっている様子が分かる。
感想
Fusionのシミュレーションの部分だけLTspiceで行うことで、配布されているライブラリにも対応できるようになった。Fusionでの基板設計がはかどりそうだけど、もうちょっと効率のいいやり方は探せばありそう。特にシミュレーションのオプションとライブラリ読み込みの追記の部分は、毎度するのはちょっとめんどくさい。
おしまい。