ADuC7026でFFT
の実験をしてみました。
DWM3月号のおまけ基板に、LM358で作った入力バッファと、DAC0及びDAC1の出力に簡単なRCフィルタを通して、オシロ(XYモード)に接続しただけの構成(^_^;)。
実験プログラムは、開発が楽なKEIL評価版上で作成することにし、とりあえずうまくいくかどうか確認するために、実験パラメータもすごく粗っぽいです。
<実験パラメータ>
・サンプリング周波数 fs = 約32kHz (スペクトラム表示範囲 ~16KHz)
・FFTサンプル数 256 (有効サンプル数 128)
・周波数分解能 125Hz
・窓関数 ハニング窓
で、横着にもアンチ・エイリアシング・フィルタも省略してしまったので、モジュラーシンセにあるVCFで帯域制限をした信号を入力して実験。
ちょっと粗っぽく、帰線の処理等もしてませんが、こんな感じで、ほぼリアルタイムに表示ができました(^O^)
入力信号のサンプリング及びFFTタイミングとオシロへの表示タイミングの兼ね合いが難しいところです…
FFTは手持ちのCコードを適当に直して使ったので全くチューニングしてませんが、ARMプロセッサの乗算や積和演算命令を上手に生かせるようなコーディングをすれば、性能的にまだまだ行けそうな気がします。
あ゛っ、dBスケールになってない…
<追記>
入力バッファはLM358とかではなく、Rail to Railなタイプにしましょう。
| 固定リンク
この記事へのコメントは終了しました。


コメント
おーすごい。
パソコンのソフトでは20kまでしか見られないので、100kぐらいまで見られるのがあったらいいなあ、とかとか。40kでもいいけど。むずいんでしょーね。
投稿: takeda | 2006/02/27 21:24
シンセ実験用に手軽なオーディオスペアナが欲しくて実験してみました。
A/Dは1MSPSなので結構早いのですが、その後の処理時間などを考えると、MAX64~80kHzサンプリング位がいいところかも?
また内蔵RAMが8KBしかないので、float演算だと256サンプルが限界です。(無理矢理16bit固定でやる手もありますが…)
投稿: RJB | 2006/02/27 23:32
すごいですねぇ。
バッファの一番はしに最大スケールのデータを無理やりうめておくと、同期信号として使えますよ。
投稿: 酔漢 | 2006/02/28 00:25
>同期信号として使えますよ
おっ、その手がありましたね!!
初期のDSPぐらいのパワーがあるので、いろいろ遊べそうなチップです。
投稿: RJB | 2006/02/28 08:15