本格ディジタル信号処理マシン

短期集中連載
ダウンロード・データあります
84MHz 動作 Cortex-M4 マイコンで DSP 並みフィルタ& FFT
激安! 1500円mbed Nucleoで作る
本格ディジタル信号処理マシン
第
4回
処理時間は FIR の 1/40! リアルタイム処理向け IIR フィルタを試す
三上 直樹
500Hz以上を
カットする
IIRローパス・
フィルタ
今回は使わない
マイク
より
音源
ライン
出力
より
マイク・
アンプ回路
バッファ・
アンプ回路
いろいろな周波数の正弦波を入力
USB
ケーブル
アナログ信号
LPF回路
A0
アンチエイ
リアシング
A-DコンバータはMCUに内蔵のものを使用
本稿で紹介したプログラムは
インターネット
mbedのWebサイトで公開して
(mbed.orgへ)
います.
http://developer.mbed.
org/users/CQpub0Mikami/
パソコン
SPI
Nucleo
F401RE
D-AコンバータIC
MCP4922
5V
LPF回路
アクティブ・
スピーカ,
オシロスコープ
などへ
アパーチャ効果補正および平滑化用
レギュレータ
XC6202P332
3.3V マイク・アンプ,バッファ・アンプ,
D-Aコンバータ,LPF へ
図 1 実験のハードウェア構成…音声入力にディジタル IIR フィルタをかけて出力してみる
信号処理の 2 大フィルタは FIR と IIR です.前回
は,500Hz 以上をカットするローパス・フィルタを
FIRフィルタで作成して試しました.今回は,IIRフィ
ルタを作り,FIRフィルタの処理時間と比較してみま
す.IIRフィルタは安定性を考慮して設計しないとい
けませんが,FIRに比べて計算量が少ないため,処理
時間を短くできます.
(編集部)
● IIR フィルタの基礎
IIR フィルタは FIR フィルタ同様,いろいろな実現
方法があります.一番基本的な IIR フィルタは,入力
信号を x[n]
,出力信号を y[n]
,フィルタの係数を ak
および bk とすると,入出力信号の関係は次の差分方程
式のようになります.
● 実験の構成
今回の実験で使うハードウェアの構成を図 1 に示し
ます.
500Hz 以上の周波数成分をカットできるローパス・
フィルタを IIR フィルタで作ります.
開発環境などの準備について知りたい場合は,第 1
回,第 2 回を参照できます.
u[n]
[
x n]
z−1
a1
b0
b1
z−1
a2
u[n−2]
図 2 縦続形 IIR フィルタの構成ブロック
156
おさらい…IIR フィルタ
b2
[
y n]
M
y[n] =
∑a
K
k
y[n − k] +
k=1
∑b
k
x[n − k] … ………………(1)
k=0
この式のまま計算するものを直接形といいます.
しかし,FIR フィルタの場合と違って IIR フィルタで
は,直接形のフィルタを使った場合,演算誤差の影響
が大きく現れることが知られています.そこで,ここ
では演算誤差の影響が少ないものの中で,よく使われ
ている縦続形の IIR フィルタのプログラムを作ります.
縦続形の場合,図 2 に示すブロックを組み合わせて
作ります.このブロックの入出力信号の関係は次の差
分方程式のようになります.
u [n] = x [n] + a 1 u [n − 1] + a 2 u [n − 2 ]
… …………(2)

 y [n] = b 0 u [n] + b 1 u [n − 1] + b 2 u [n − 2 ]
縦続形 IIR フィルタの全体の構成は,図 2 のブロッ
クを組み合わせますが,ここでは少しでも演算量を減
らすため,b0 = 1 とします.そうすると,全体の利得
が変わるので,各ブロックの b0 に相当する係数を全
第 1 回 メイン回路の構成(2014 年 10 月号)
第 2 回 D-A コンバータ / フィルタ / マイク・アンプ…音声信号処理実験の準備(2014 年 11 月号)
第 3 回 音声入力に定番 FIR フィルタをかける(2014 年 12 月号)
2015 年 2 月号