今日出来ることは今日やる、の今日。
寒いけどエアコンを使わないことにした。だから
早めに寝るのだ。厚い布団に入ればそれほど寒さを
気にする必要はないのだ。節電、節電。
夜間でも節電すれば、その分夜間の発電で揚水モーター
回して、必要な時間に発電に回せるだろうと。
あとは相変わらずFFTプログラムのデバッグ。この間の
http://brown.ap.teacup.com/nekosan0/1252.html
Vフラグの件、よく考えたらVフラグは単なる桁あふれ
であって、2の補数表示用のキャリーフラグに相当するのは
Sフラグだな。
オイラSフラグって、Nフラグを反転させただけだと
思っていたけど、2の補数で加減算した際の、一桁上の
ビットに相当するのがSフラグなのね。
で、1/2を計算するためにはこのSフラグをキャリーフラグ
に移してからシフト命令でキャリーごと右シフトすれば
加減算結果をそのまま1/2に出来るというわけ。
Sフラグ使うのは、生まれて初めてだ…
チョイチョイとソースを直し、シミュレータで色々な
波形データを流してみる。
…大体良い感じ。表計算ソフトの計算内容と計算途中も
計算結果も合う。三角波、ノコギリ波、ワンショットパルス…
ところが、一つだけうまく動かない波形が有るのを発見。
どうやら、64点分で一波形となる矩形波がおかしい。
シミュレータの出力と表計算の結果を眺めてみると、
どうやらバタフライ演算処理の中で桁あふれしている
と判明。
バタフライの上半分は問題ないんだけど、下半分
がちょっとおかしい。
矩形波のように、半周期ずれた点を扱う時、丁度正負
が逆の値になって引き算(下半分側)で悪さするみたい。
sin、cosとの積を出すときに、折角のSフラグをうまく
扱えてない… 書いたロジックの問題だな。
どんな修正すれば良いかは、もうちょっと慎重に
見直さないと。
そのほかは、表計算でバッチリ動かしたときと誤差が
ほぼ1前後だから、切り捨て誤差レベルと考えてよい
でしょう。
見えてきた…。
|
|
|