「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



相変わらず、フルアセンブラFFT計算の調べ物の続き。

バタフライ演算→ビット入れ替え、と来たら次は
自乗和の平方根。

平方根を如何に手を抜きながら高速で処理するか。
しかもアセンブラで、というお話。

以前目論んでいたのは、平方根、つまり」0.5乗
の計算をうまい具合に分解して簡単かつ高速な処理
にすること。
…悪くは無いんだけど、一部でちょっと面倒な計算が。


ってことで別の方法が無いかな…と思って探したところ、
よくよく考えてみるとオーソドックスな二分法なら
意外に処理時間も早そう。2進数の8ビット精度で
求めればいいってことは8回ループ計算でok。
しかも結構単純な計算式。

さて、8回ループの整数演算でどの程度の精度が
出せるのか?と思って、表計算ソフトで実験をば。

やってみたのがこれ。
sqrt_nibunhou2.xls

橙色のセルに1から65535までの数字を入れると
水色のセルに平方根が求まるって仕掛け。
ちなみにざっくり269まで1個1個計算してみたところ
目論見どおりピッタンコ。

ただし、求まる値は「小数点以下切捨て」。
四捨五入になると良かったんだけど、そこまでやると
ちょっとめんどくさそう。

まぁそこまで厳密なことをやりたいんじゃぁ無くて、
まっとうな計算ができればいいって程度なので、
これで方向性は決まったかな…。

平方計算はMEGAシリーズのハードウェア乗算器で
2クロックを8回分。そのほか周辺処理などを加味して
ざっくり100クロック前後でなんとかなりそう。

あとは少しずつアセンブリ言語でゴリゴリ書いていく
だけだよな。ガンバロウ。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする