FM復調のFPGA実装(4)
前回までに、FM復調処理全体のFPGA実装が完了しました。
今回は、製作した基板上に実装されているオーディオDAC NAU8822 を動作させ、リアルタイムにヘッドフォン端子から音声出力が得られるところまで確認しました。
これで、ひとまずFMラジオの完成です。以下がFM信号をFFTした画面です。
やっとリアルタイムで音が聞けるようになったので、アンテナの向きを変えたり、基板上の部品を触ってみたりして、 ノイズがどう変化するかを確認できました。
FPGA基板に載っている大きいインダクタを触るとかなりノイズが乗る。また、 デバッグのために接続しているUSBケーブル、LANケーブルを抜くとノイズが減る。 余計なケーブル類を除いてアンテナの向きを最適化すると、自分の耳ではノイズが聞こえないくらいのレベルでは 音声が聞けるようになりました。
基板が到着してから暇を見つけて少しずつ進めてきました。 結局、ここまで来るのに、1カ月ちょっとかかりました。 ADC動作のために修正が必要な基板のミスは無くて、半田コテを一切使用せずここまで来ることができました。 また、デバッグにあたりショートチェックと電圧測定のためにマルチメータは使いましたが、 DSOは使用しないで済みました。
最後に少し苦戦したのは、DACのレジスタ設定でした。なかなか音が鳴らなくて、 いよいよオシロが必要かと思いましたが、たった1bitを変えるだけで音が出るようになりました。 やれやれ。
ここまでできたので、ひとまず満足です。まだソフトウェアの作りこみは甘いので、 FPGAで動作するファームウェアやPCのソフトウェアの使い勝手をもう少し向上させたいと思います。 また、現状JTAGケーブル、LANケーブルも接続してNFSマウントでデバッグしています。 これを一旦は単独動作するようにまとめたいとも思っています。
ラジオ機能としては、あとはステレオ再生の実装でしょうか。
参考にしたページ:
- I2Cデバイスの扱い方
- LinuxのアプリケーションからDACのレジスタの読み書きを行うのに参考になりました。
- #20 Digital Audioの伝送について(I2S編)
- I2S転送モジュールを作成するのにあたり、こちらを参考にしました。
現状上記の状態ですが、本基板を試してみたい、というご要望がありましたらtwitterでお知らせください。 件名に"[ADC基板]“と入れていただけると助かります。 利用するには、最低限Z-turn boardとACアダプタ、SMAメスに接続できるFMアンテナが必要です。
また、「自分の持っているXXX FPGA基板でも動作させてみたい」というような要望につきましても、 ひょっとしたら対応可能かもしれません(基板書き換えで)ので、お知らせください。
以下は備忘録
アンテナを装着しないでFM側入力をキャプチャしてFFTしたもの。
同様に、アンテナを装着しないで(かつアンプも通さず)AM側入力をキャプチャしてFFTしたもの(こちらはシングルエンド入力でADCを使用)。
次に、アンテナを装着しないで、アンプを通したAM側入力をキャプチャしてFFTしたもの。