シミュレーション結果についてグラフから読み取る方法のほかに、.Measureコマンドでグラフのデータを読み取る方法を説明します。前回のまとめを行いながら、自動的にシミュレーション結果から必要なデータを取り出す方法がないかマニュアルを探していましたら、先達から「.MEASURE」コマンドが利用できるとの助言をいただき、今回の報告をまとめました。
バンドパス・フィルタ回路のピーク値(MAX)を読み取る
前回のウィーンブリッジ回路の周波数選択回路の減衰率をSPICEの「.measure」コマンドで確認してみます。次に示すように、いくつかのコマンドのパターンを回路図画面に設定してあります。
.measure(.meas)コマンド
回路図画面に.measureコマンドを設定し、シミュレーションを実行すると、ascファイルのフォルダにascファイルと同じ名前のlogファイルが作成されます。その中に.measureコマンドで指定した条件で検出されたシミュレーション結果が書き込まれます。
コマンドの書き方
このコマンドは、多様なパラメータをもっていて、いろんな場面で利用できます。ここでは、今回利用した機能を中心に説明します。
パターン1
.MEAS [param1] <name>
param1 : [AC|DC|OP|TRAN|TF|NOISE]
param1はデータを検出するシミュレーションのタイプを指定します。param1を指定すると指定されたシミュレーション・タイプを実行したときにのみこの.Measureコマンドが実行されます。省略することができ、省略した場合はこのコマンドは実行の制限がなくなります。ACはAC解析、DCはDC sweep、OP はDC op pnt、TRANは過渡解析、TFはDC Transfer、NOISEはノイズ解析のときにそれぞれデータの検出を行います。
name : logファイルに該当データを書き込むときの識別のラベルとして使用される。任意の文字列が利用できる。
param2 :[<FIND|DERIV|PARAM
[<RISE|FALL|CROSS>
Helpの使用例 MEAS TRAN res5 FIND V(out) WHEN V(x)=3*V(y) cross=3 TD=1m
helpの説明では、V(x)の値とV(y)を3倍にした値を3回交差し
たときにres5にV(out)の値をセットしてLogファイルに書き出し
ます。その際1ms間経過するまでカウントを開始しません。
上記の回路図では、次の例のほかパターンを変えてテストしています。
.means AC ANS2 FIND V(in+) at=10Hz
AC解析で、掃引周波数が10HzのときのV(in+)の値をANS2にセットして
logファイルに書き出します。この例は実際に確かめます。
パターン2
.MEAS [param1]<name>
param1 : [AC|DC|OP|TRAN|TF|NOISE]
param1はデータを検出するシミュレーションのタイプを指定します。param1を指定すると指定されたシミュレーション・タイプを実行したときにのみこの.Measureコマンドが実行されます。省略することができ、省略した場合はこのコマンドは実行の制限がなくなります。ACはAC解析、DCはDC sweep、OP はDC op pnt、TRANは過渡解析、TFはDC Transfer、NOISEはノイズ解析のときにそれぞれデータの検出を行います。
name : logファイルに該当データを書き込むときの識別のラベルとして使用される。任意の文字列が利用できる。
param2 : [<AVG|MAX|MIN|PP|RMS|INTEG> <expr>
param2はexprで指定する対象のAvg(平均値)、MAX(最大値)、MIN(最小値)、PP(波形のピークtoピーク値)、RMS(実効値)、Integrate(積分値)が測定されます。
トリガの設定 :
TRIG <lhs1> [[VAL]=]<rhs1>] [TD=<val1>]
+ [<RISE|FALL|CROSS>=<count1>]
+ [TARG <lhs2> [[VAL]=]<rhs2>] [TD=<val2>]
+ [<RISE|FALL|CROSS>=<count2>]
トリガの説明は別の機会に行います。また、Helpにはパラメータの項目の中に説明がないものもあり、これらについては実際に確かめてから整理してご報告します。
上記のフィルタ回路のAC解析でV(in)のピーク値、そのときの周波数などを.measureコマンドで確認します
この条件でAC解析を行った結果のLogファイルのうち、.measureコマンドの結果の部分を抜き出しました。
ans1: MAX(v(in+))=(-9.54244dB,-0.10018ー) FROM 1 TO 1e+006
res2: v(in+)=ans1 AT 1595.73
ans2: v(in+)=(-44.0376dB,88.9201ー) at 10
ans3: INTEG(v(in+))=9609.17 FROM 1 TO 1e+006
ans4: MAX(v(in+))=(-9.54244dB,-0.10018ー) FROM 1 TO 1e+006
ans7: PP(v(in+))=(54.494dB,-89.9922ー) FROM 1 TO 1e+006
V(in+)の最大値を求める
.meas AC ANS1 max v(in+)
結果 ans1: MAX(v(in+))=(-9.54244dB,-0.10018ー) FROM 1 TO 1e+006
AC解析で、V(in+)の最大値をANS1に求めています。結果は、電圧値は-9.54244dBで位相は-0.10018度となっています。
V(in+)が最大値の時の周波数
.meas AC res2 when V(in+)=ANS1
結果 res2: v(in+)=ans1 AT 1595.73
AC解析でV(in+)がANS1で求めた最大値になるときの周波数(水平軸の値)を求めています。結果は1595.73Hzと得られました。.Measureコマンドで得られた結果から新たな値を求めました。
周波数が10Hzの時のV(in+)の値を求める
.meas AC ANS2 FIND v(in+) at=10Hz
結果 ans2: v(in+)=(-44.0376dB,88.9201ー) at 10
掃引周波数が10Hzのときの電圧、位相が求められました。グラフからも値の妥当性が確認できます。
integの確認
.meas AC ANS3 integ V(in+)
結果 ans3: INTEG(v(in+))=9609.17 FROM 1 TO 1e+006
周波数 1から1000kHzの間の積分を行っています。今回は積分値については特別な意味はありませんがコマンドの確認のため行いました。
ACを省略して最大値を求める
.meas ANS4 max v(in+)
結果 ans4: MAX(v(in+))=(-9.54244dB,-0.10018ー) FROM 1 TO 1e+006
ACを省略してもACを指定したANS1と同じ値になっています。
ピークto ピーク(PP)の値を求める
.meas ANS7 pp v(in+)
ans7: PP(v(in+))=(54.494dB,-89.9922ー) FROM 1 TO 1e+006
AC解析の場合は、PPの値は意味あるものにはなりません。過渡解析のTRANを指定していないのでAC解析でも処理されています。
.Mesureコマンドの精度
.Measureコマンドはシミュレーション計算結果により算出します。そのため、シミュレーションの計算ポイントの数を多くするとよりよい精度が得られます。上記のシミュレーションは、
ac oct 100 1 1000k
とオクターブあたり100ポイントとなっています。これを
1000ポイントにして、次の条件で再度シミュレーションしてみました。
ac oct 1000 1 1000k
新たな、シミュレーションの結果のlogファイルの内容です。
ans1: MAX(v(in+))=(-9.54243dB,0.0057255ー) FROM 1 TO 1e+006
res2: v(in+)=ans1 AT 1591.31
ans2: v(in+)=(-44.0376dB,88.9201ー) at 10
ans3: INTEG(v(in+))=9609.12 FROM 1 TO 1e+006
ans4: MAX(v(in+))=(-9.54243dB,0.0057255ー) FROM 1 TO 1e+006
ans7: PP(v(in+))=(54.494dB,-89.8863ー) FROM 1 TO 1e+006
ans1の結果に示すように、位相は前回の結果よりより一層0に近づいています。精密な結果が必要な場合は注意する必要があります。
過渡解析(TRAN)の場合
過渡解析を選択してシミュレーションを実行すると、次の結果が得られます。
このときのlogファイルの該当する部分は次のようになります。
ans4: MAX(v(in+))=0.317093 FROM 0 TO 0.01
ans6: RMS(v(in+))=0.221643 FROM 0 TO 0.01
ans7: PP(v(in+))=0.647965 FROM 0 TO 0.01
最大値を求める
.meas ANS4 max v(in+)
結果 ans4: MAX(v(in+))=0.317093 FROM 0 TO 0.01
AC、TRANなどの指定がないのでAC解析、過渡解析共に算出されているが、この場合はシミュレーション周波数における波形の最大値が得られます。
実効値を求める
.meas TRAN ANS6 rms v(in+)
結果 ans6: RMS(v(in+))=0.221643 FROM 0 TO 0.01
ピークto ピーク(PP)の値を求める
.meas ANS7 pp v(in+)
;結果 ans7: PP(v(in+))=0.647965 FROM 0 TO 0.01
実効値、PP共に、0秒から0.01秒(10ms)までの計算結果です。そのため、初期の不安定な部分を除いて計算する必要がある場合、次のように対象範囲を設定します。
.meas TRAN ANS6 rms v(in+) from 1m to 3m
.meas ANS7 pp v(in+) from 1m to 3m
DC解析は、この回路では意味ある結果は得られませんので、別の機会に取り上げます。
