土曜日にSignalbottomの呑み会がありました。今回も大変刺激的なプレゼンを聞くことができ、励みになりました。みなさん、ありがとうございます。
さて、VHDLで書いたSinCosのCORDICですが、再度評価プログラムのバグが見つかり、かなり大きいとため息をついていた誤差がぐっと小さくなりました。
一方で、まだ結構大きめな雑音があります。CORDICは1ステージ増やす度に1bit誤差が小さくなるアルゴリズムなのですが、一方でLSBから累積されていく丸め誤差の総和は増えていきます。ここは理屈の上では1ステージあたり0.5LSBの誤差なのですが、実際にはシフト部での丸めとあらかじめ計算している進角の持つ0.5LSBの誤差が両方効いてきます。N回誤差の蓄積は一般に√N倍になるわけですが、統計的に見てみれば、N倍のピークがあっても不思議ではありません。
あらかじめ必要なビット精度を定めた後、丸めで汚染されるビットを切り捨てるために事前シミュレーションが必要なようです。
精度はもう少し評価してみます。