ハードウェアFFTマシンの納入
今日は、Cosmo-Zで作ったハードウェアFFTマシンを納入しに、母校、東工大へ行ってきました。なにやら学位授与式をやっているみたいで、晴れ着姿やスーツ姿の若い人がたくさんいます。ほほえましいですね。
さて、Cosmo-Z上のZYNQのPLで、65536ポイントのFFTを行う回路が、ようやく動いたのです。徹夜でした。
このFPGAは、ハードウェアでリアルタイムに窓関数を掛けて、
それをリアルタイムにFFTしてくれます。
下のほうが荒いように思えますが、それは16bit固定小数点だからです。実数部・虚数部ともに0x0000~0xFFFFまでの16bitの値なので、どうしても-80dB以下の部分は荒くなります。
でも、65536ポイントで2ch分のFFTを7.2ms実行できるので、5MHzのADCから入ってきたデータを切れ目なくFFTできるようになっています。
もし、浮動小数点にするならば、メモリアクセスの時間が2倍になるので、速度が半分になるでしょう。とりあえずこれでも毎秒百数十回できます。
比べてみたら、ZYNQのPSで行うソフトウェアFFTよりも断然高速でした。
![]()
やっぱり気になるのは計算の精度の問題。
下の図は、ファンクションジェネレータで作った100kHzの正弦波を65536ポイントのハードウェアFFTしたものです。窓関数はナットール窓。
下の図は、同じものをZYNQ上のソフトウェアでFFTしたものです。

同じものを見ているのですが、-100dBまで見えています。だいたい-80dBくらいのところに計算精度によるノイズの壁(床?)があるのがわかります。
![]()
下の図は、CH1を指で触って、ノイズをFFTした結果です。
時間軸で見ると、このように

フルスケールに対してものすごく小さな信号を見ているわけなのですが・・
まずはハードウェアFFTの結果。数本のスペクトラムのピークが見えます。
より小さなピークまで、はっきりと見えています。
小さな信号を見る場合には、断然、浮動小数点のほうがよいですね。
固定小数点は、やはり粗いです。
これらの結果を踏まえて、今後、どうするかを考えていきたいと思います。
| 固定リンク







コメント