arm_biquad_cascade_df1_q15関数 |
IIR(Infinite Impulse Response)フィルタを実行する |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\FilteringFunctions\arm_biquad_cascade_df1_q15.c サンプルソース(DFFSKN40基板付属CD-ROMに収録) IARprojects\src\projects\arm_biquaqd_df1 引数と戻り値 説明(イメージ) 使用例(サンプルソースの一部)
係数の並び方に注意。bm0とbm1の間にダミーのゼロが入る。 実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。 @ステレオ2chそれぞれOPアンプで振幅調整・高周波カット。 Aマイコン内蔵のADCで16ビットデジタル化。 Barm_biquad_cascade_df1_q15関数でデジタルフィルタリング。 Cマイコン内蔵のDACでアナログ化。 DOPアンプで振幅調整、その後PCで波形観測。 入力が白色雑音の場合の出力をPCで観測(SoftOscillo2 Standard Edition)。LPFで2kHz以上がカットされている。 まめ知識 高次のIIRフィルタを構成する場合、通常は2次IIRフィルタ(Biquad)を縦続接続する。IIRフィルタの係数は実数で1.0を超えることがよくあるため、通常は係数をすべて1/2倍してから量子化する。出力も1/2になるので、最終的にpostShift(arm_biquad_cascade_df1_init_q15参照)で2倍にして相殺する。 |