秋月ファンクラブ掲示板 過去ログ

デジタル信号の差分演算 - ok-909

2014/08/03 (Sun) 13:36

添付のような波形で、s1信号とs2信号は10usの遅れがあります。演算式でs1-s2とするとs2信号の立ち上がりが常に一定ではなく、s1-s2の計算結果が周期的にかわります。
本来なら演算結果は一定であるはずです。

上記内容の改善でよい方法はありますか?

Re: デジタル信号の差分演算 - inara1

2014/08/03 (Sun) 17:17

添付図はこちらで実行した結果ですが、s1-s2はV1の周期で変化します。

s1はV1をサンプル&ホールドした値、s2はs1を遅延した信号なので、添付図の波形のように、V(s1)の波形はV1の内側に接する階段状になり、V(s2)の波形はV(s1)より遅れたものになります。したがって、V(s2)-V(s1)は、ホールドする時間間隔でのV1の変化分になります。V1が正弦波なら、一定間隔でサンプル&ホールドしたときの変化分は一定でなく、波の山と谷に近いほど変化が少なくなるので、s1-s2はV1の周期で変化するはずです。

ご質問の図ではサンプリング信号(V2)の周期が分かりませんが、これがT[s]のとき、n番目のサンプリング時のs1の電圧は、V1の周波数をf[Hz]としたとき
V(s1)=sin(2*π*f*n*T)
1つ前のV(s1)の値なので
V(s2)=sin{2*π*f+(n-1)*T}
となって、V(s2)-V(s1)は一定値にはなりません。

なお、サンプリング信号(V2)を矩形波としたとき、波形のTrase(立上がり時間)とTfall(立下り時間)の欄に0と書いても、LTspiceでは0ではない適当な値に変えてシミュレーションしてしまいます。そのため、矩形波の立上がりと立下り時間は周期の1/1000など、0でない値を書き込んだほうがいいです。

また、LTspiceの波形描画は、データを適当に間引いて表示するので、細かい波形が表示されないときがあります。その場合は、オプションコマンドで
.options plotwinsize=0
というのを追加すれば、省略しない波形を得ることができます。

Re: デジタル信号の差分演算 - ok-909

2014/08/03 (Sun) 19:05

いつも解答ありがとうございます。

サンプリング周期は100kHzです。

.options plotwinsize=0を追加しましたが、改善しませんでした。

波形を添付します。
階段状の波形が一部傾斜のあるような波形になっていしまいます。
maximum timestep=1nにしてみましたが改善しませんでした。



Re: デジタル信号の差分演算 - inara1

2014/08/05 (Tue) 05:38

サンプリング周波数を大きくすると同じ症状が出ました。

コントロールパネル(メニューのTools→Control Panel)のSPICEタブの Reltol(相対誤差の許容値)をデフォルトの0.001から0.0001に変更すると、その症状はなくなりました。

コントロールパネルの設定を変更せず、オプションコマンドで
.options reltol=0.0001
と書いてもいいです。

Re: デジタル信号の差分演算 - ok-909

2014/08/06 (Wed) 21:40

どうしても質問した動作がよくならず質問しました。

inara1さんの解答通りよくなりました。
いつも解答ありがとうございます。

解答の的確さ、速さにいつも感心します。
大変助かりました。