マイコン工作実験日記

Microcontroller を用いての工作、実験記録

スペアナに挑戦する -- PurePath Studio編

2011-03-17 22:12:47 | Weblog
テレビを見ていると、繰り返し同じ映像やニュースを見聞きしていても、そのまま釘付けになってしまいそうです。半ば思考停止になるんじゃないでしょうか。自分がやりたいことを、自分で考えて行動することにしましょう。計画停電に伴い行動時間も制約されるので、逆に自宅で作業できる時間は増えてきています。そんなこともあり、工作実験作業を継続することにします。

SPI LCDがつながったので、いよいよこれを使ってやりたかったことに取り組んでいます。もちろん、A2DPで再生する曲名をAVRCPで取得/表示したりといったことにも挑戦したいのですが、CODECがらみでより興味を引かれたことがあります。それは、次のようなスペアナの表示です。




これまた、TLV320AIC3253の評価ボード用のデモソフトの画面です。こちらはminiDSPのデモになっており、再生される音のスペクトラムを左右独立に表示することができます。このデモと同じことを、SPI LCDに表示してみようというわけです。やっぱ、音に合わせて動きのある画面って魅力的じゃあないですか。PurePath Studio(PPS)を使って、miniDSPをプログラムすれば良いわけですが、このデモソフトにはPPSのソースに対応するフローファイルが含まれていません。そのため、自分でPPSを使って同じ機能を提供するフロー定義を作成し、それをビルドすることでダウンロードすべきminiDSPへの命令と係数を生成する必要があります。

以前にも書きましたが、PurePath Studioについては詳細を公開することができないので、以下概要だけを書いておきます。

PurePath Studio(PPS)には、もともと最大8バンドのスペクトラムアナライザが部品として用意されていますので、これを使えば実現できることは容易に察しがつきました。その部品のヘルプを参照することで、バンドパスフィルタを各チャンネルの前に配置することで、設定した範囲の周波数成分のエネルギーを求められることもわかりました。「これは簡単じゃん」というわけでデモ画面と同じように左右それぞれ20バンド分のフィルタと、スペアナ部品を3つ使うことで 8 + 8 + 4 = 20バンドの周波数成分を求めるフローを作成してみました。ところが、実際にこれをビルドしようとするとエラーになってしまいます。どうやらバンドパスフィルタを合計40個も定義するために、DAC miniDSPの係数バッファの資源が足りなくなってしまうようです。

デモでは20バンド処理できているようなので、これを実現する方法があるはずなのですが、どうすればいいのかわかりません。フローの構成をちょっと変更してみたりしましたが、どうしても資源不足になってしまい20バンドを処理するフローが組めません。結局、左右16バンドならなんとか組めたので、それで我慢することにします。

このようにしてminiDSPを使うことで、各周波数帯域のエネルギーを求めることができます。こうして求めた値は、AIC3253の係数レジスタに保持されます。ホスト側のマイコンはI2Cでアクセスすることで、これらの係数レジスタの値を読み出して、それをグラフ表示してやればいいのです。