DDSデータキャプチャとFFT表示
前回、ADCキャプチャのためのFPGAとLinux周りの準備を行いました。
まだ実際のADC基板は完成してきていないので、FPGAにてDDS(Direct Digital Synthesizer: デジタル的に正弦波を生成する仕組み)を使用して、仮想的なデータを作ってみました。
具体的には、FPGAにDDS Compilerをインスタンシエートして、 PCのソフトウェアにてキャプチャ&FFTを実行しました。
DDS Compilerにて作成するIPは、3MHzの正弦波としました。
12bit出力ですが、AXI Streamポートは16bit幅となっています。どうやら16bitの内、下位12bitにデータが入っている様子でした。符号付きデータです。
この12bitを5データ集めて、かつ4bitのダミービットを付加して64bitとし、前回のAXI DMA IPにてDDRに転送します。 PC側のソフトウェアは、手っ取り早くC#で作成しました。
いろいろ細かいデバッグを行って、現状次のような表示になっています。
画面上部にキャプチャした波形そのものを少し表示しています。横軸はサンプル番号です。 マイナスからプラスの範囲でしっかりフルスケールの正弦波となっている様子がわかります。 画面下部はキャプチャしたデータをFFTしてdB表示しています。 どうも使用しているFFTライブラリの正規化の挙動が不明で、0dBを超えてしまっています… 3MHzにびしっと信号があることを確認できます。
FFTライブラリには、C#でマイク音声をFFTするを参考に、 Math.NET NumericsをNugetにてインストールして使用しました。
これで基板が来るまでの準備は大体満足するところまで作成できました。