CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

FFT処理組込み

かなり放置していたdsPIC基板をひさしぶりに触ってみました
元々の目的どおりFFT処理を組み込んでみます。
 
12ビットA/D変換の取り込み動作が正常に動くことは確認できているので
これをタイマ0割込みで周期的に起動させることにします。サンプリング周波数は16kHzです。するとアンチエイリアスフィルタのcutoffは半分の8kHzとなるので
SCFに与えるその100倍の800kHzのクロックをタイマ3で生成します
サンプリング個数はRAMの空き容量の制限で64点となりました。
 
あとはdsPIC30用のDSPライブラリを呼ぶだけでとても簡単にできてしまいます。
 
イメージ 4
 
1kHz、振幅0.5Vの矩形波を入力したところです。
左半分がスパン8kHzのFFT表示、右半分が生波形を描画しています
(入力結合のコンデンサと急峻なLPFの影響で矩形波に見えませんが・・)
 
FFTが出力した複素ベクトルの絶対値を自乗しただけなのでパワースペクトラムになります
 
イメージ 1
 
 
各要素を開平してベクトルの長さにすると振幅のスペクトラムになり、教科書どおり奇数次の高調波が見えてきます
 
イメージ 2
 
縦軸を対数スケールにしたところです。自乗分はlogの前に出て係数になるので当然パワーでも振幅でも同じですね。DCオフセットがかなり目立っています
 
イメージ 3