CPU実験室

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

FIRフィルタ

 
DSPボードでFIRデジタルフィルタを実行してみました
A/Dコンバータから取り込んだ値を時系列で入力バッファXnに格納し、それぞれにフィルタ係数h[n]を掛け合わせ総和したものをD/Aコンバータに送る処理になりますが
これらをサンプリング間隔の1スロット間で行わなければなりません。
処理全体をA/Dコンバータの受信割り込みルーチンに記述しました
 
イメージ 1
 
 
 
フィルタ係数はフリーの設計プログラムをつかいインパルス応答から算出しています。
ここでは
 フィルタの形式:ローパスフィルタ
 フィルタの次数:50次
 カットオフ周波数:サンプリング周波数×0.04=1kHz
 阻止域減衰量:-60dB
としてみました
 
イメージ 2
 
 
出力された実数配列にEXCEL上で32768を掛けHEX表示にして固定小数点Q15フォーマットに変換します
 
イメージ 3
 
 
これをソースコードに埋め込みアセンブルし、実行したのが次の結果です。
きれいに1kHzですっぱり遮断されました。
入力ソース信号はサウンドボードだとやはり高域での歪が激しいので外置きのDDSファンクションジェネレータの出力を使っています。
そのため阻止域のリップルのわりときちんと捉えられています
 
 
イメージ 4