JP2005094378A - Iirフィルタ装置 - Google Patents
Iirフィルタ装置 Download PDFInfo
- Publication number
- JP2005094378A JP2005094378A JP2003325307A JP2003325307A JP2005094378A JP 2005094378 A JP2005094378 A JP 2005094378A JP 2003325307 A JP2003325307 A JP 2003325307A JP 2003325307 A JP2003325307 A JP 2003325307A JP 2005094378 A JP2005094378 A JP 2005094378A
- Authority
- JP
- Japan
- Prior art keywords
- data
- product
- filter device
- small
- coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
【課題】 積和演算するx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)の値が小さい時のみ定数をかけて積和演算することにより、規模の小さなハードウェアにおいて丸め込みによる誤差を小さくすることができるIIRフィルタ装置を提供する。
【解決手段】 ローパス特性を得るIIRフィルタ装置において、帰還データのデータ幅は、出力データのデータ幅より広くし、入力データおよび帰還データの値が小さい時は、係数を乗じて積和演算し、積和演算後に係数で除して出力データを得る。
【選択図】 図1
【解決手段】 ローパス特性を得るIIRフィルタ装置において、帰還データのデータ幅は、出力データのデータ幅より広くし、入力データおよび帰還データの値が小さい時は、係数を乗じて積和演算し、積和演算後に係数で除して出力データを得る。
【選択図】 図1
Description
本発明は、デジタル信号処理に用いるIIRフィルタ装置に関する。
従来より、デジタル信号処理のローパスフィルタとして、IIR(Infinite Impulse Response)フィルタが良く用いられている。このフィルタをハードウェアで構成すると、回路規模を小さく出来る固定小数点フォーマットをデータに使用する場合がある(例えば、特許文献1参照。)。このとき、データのサンプリング周波数に対し、ローパスフィルタの遮断周波数を小さく取ると、係数が小さくなり、入力値が小さい時は出力が0になってしまう問題がある。
ここで、2次のIIRフィルタの例を示す(図4参照)。
y(n)=b0/x(n)+b1/x(n−1)+b2/x(n−2)+a1/y(n−1)+a2/y(n−2)
x(n):入力データ
y(n):出力データ
標本化周波数:100kHz、遮断周波数:1kHzの場合の係数データ
a1=1.84951160
a2=−0.86165817
b0=0.00300188
b1=0.00600377
b2=0.00300188
入力データが16bitなので、積和演算器に16bit×16bitの乗算器を用いると、あらかじめ215を乗じた係数データを用いて積和演算し、積和演算結果を215で除してy(n)を求めると桁数をもっとも有効に用いることが出来る。すなわち、係数用メモリに入れておく値は次のようになる。
215・a1=60604
215・a2=−28234
215・b0=98
215・b1=196
215・b2=98
実開平05−009031号公報
ここで、2次のIIRフィルタの例を示す(図4参照)。
y(n)=b0/x(n)+b1/x(n−1)+b2/x(n−2)+a1/y(n−1)+a2/y(n−2)
x(n):入力データ
y(n):出力データ
標本化周波数:100kHz、遮断周波数:1kHzの場合の係数データ
a1=1.84951160
a2=−0.86165817
b0=0.00300188
b1=0.00600377
b2=0.00300188
入力データが16bitなので、積和演算器に16bit×16bitの乗算器を用いると、あらかじめ215を乗じた係数データを用いて積和演算し、積和演算結果を215で除してy(n)を求めると桁数をもっとも有効に用いることが出来る。すなわち、係数用メモリに入れておく値は次のようになる。
215・a1=60604
215・a2=−28234
215・b0=98
215・b1=196
215・b2=98
しかし、入力データが83以下の状態が続き、x(n−1)とx(n−2)も83以下になると、
{215・b0・x(n)+215・b1・x(n−1)+215・b2・x(n−2)}/215<1
となってしまい、丸め込みがおきて入力データが0であることと同じになってしまい、y(n)の値に誤差が出るという問題が生じる。入力データをN倍して用いることにより、上記の丸め込み問題が発生する入力データは83/Nに低下するが、それに応じて、積和演算器のbit数も大きくする必要があり、ハードウェアの規模が大きくなってしまうという問題がある。
そこで、本発明は、上述した実情を考慮してなされたもので、積和演算するx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)の値が小さい時のみ定数をかけて積和演算することにより、規模の小さなハードウェアにおいて丸め込みによる誤差を小さくすることができるIIRフィルタ装置を提供することを目的とする。
{215・b0・x(n)+215・b1・x(n−1)+215・b2・x(n−2)}/215<1
となってしまい、丸め込みがおきて入力データが0であることと同じになってしまい、y(n)の値に誤差が出るという問題が生じる。入力データをN倍して用いることにより、上記の丸め込み問題が発生する入力データは83/Nに低下するが、それに応じて、積和演算器のbit数も大きくする必要があり、ハードウェアの規模が大きくなってしまうという問題がある。
そこで、本発明は、上述した実情を考慮してなされたもので、積和演算するx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)の値が小さい時のみ定数をかけて積和演算することにより、規模の小さなハードウェアにおいて丸め込みによる誤差を小さくすることができるIIRフィルタ装置を提供することを目的とする。
上記の課題を解決するために、請求項1に記載の発明は、ローパス特性を得るIIRフィルタ装置において、帰還データのデータ幅は、出力データのデータ幅より広くし、入力データおよび帰還データの値が小さい時は、該データに係数を乗じて積和演算し、積和演算後に係数で除して出力データを得るIIRフィルタ装置を最も主要な特徴とする。
本発明によれば、積和演算するx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)の値が小さい時のみ定数をかけて積和演算することにより、規模の小さなハードウェアにおいて丸め込みによる誤差を小さくすることができる。
以下、図面を参照して、本発明の実施形態を詳細に説明する。図1は本発明の実施の形態であるIIRフィルタ装置100のブロック図であり、図2はIIRフィルタ装置を使用したデジタル信号処理システムの概略構成図であり、図3は図1のモードコントローラの詳細図である。
図1に示すように、本実施の形態におけるIIRフィルタ装置100はモードコントローラ10、x(n−1)レジスタ11、x(n−2)レジスタ12、25・y(n−1)レジスタ13と25・y(n−2)レジスタ14、2to1セレクタ15〜21、5to1セレクタ22,23、積和演算器24、係数用メモリ25を備えている。
入力データx(n)は、16bitデータであり、図2に示すセンサ30の信号をADコンバータ31でデジタル化した信号で、ADコンバータ31の1/標本化周波数の周期で送られてくる。出力データy(n)も16bitデータで、図2に示すように、CPU32に送られ、センサ値を読み取っている。
IIRフィルタ装置では、ハードウェアを小さくするために、y(n)の演算は単一の積和演算器24を用い、2つの5to1セレクタ22,23を使って、係数とx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)を切り替えている。
x(n−1)、x(n−2)の値を保存しておくレジスタは、それぞれx(n)と同じ16bitデータ幅のレジスタである。y(n−1)、y(n−2)の値は、1つ前や2つ前のy(n)の値そのままではなく、25を乗じた値を保存している。その為に21bit幅(帰還データのデータ幅)のレジスタになっている。また、積和演算器24の出力y’(n)は、31bitデータ幅の出力なので、25・y(n−1)と25・y(n−2)の値を求める時は、y’(n)を除する値をy(n)を求める時の除数より25小さくして丸め込みの誤差が出ないようにしている。
モードコントローラ10はx(n)の上位6bitとx(n−1)、x(n−2)、y(n−1)、y(n−2)の上位5bitを監視し(図3参照)、すべてのbitが0の時はSEL信号を1にして、25倍モードに切り替える。それ以外のときはSEL信号を0にして通常モードにする。x(n)のみ上位6bit監視するのは、x(n)が一定でもフィルタのリップルにより、y(n−1)とy(n−2)はある程度変動してしまい、x(n)も上位5bitしか監視しないと、下位11bitが全部1の状態が連続して続くとリプルでy(n−1)とy(n−2)の上位から5bit目が1になったり0になったりを繰り返し、モードが一定にならないのを避けるためである。
図1に示すように、本実施の形態におけるIIRフィルタ装置100はモードコントローラ10、x(n−1)レジスタ11、x(n−2)レジスタ12、25・y(n−1)レジスタ13と25・y(n−2)レジスタ14、2to1セレクタ15〜21、5to1セレクタ22,23、積和演算器24、係数用メモリ25を備えている。
入力データx(n)は、16bitデータであり、図2に示すセンサ30の信号をADコンバータ31でデジタル化した信号で、ADコンバータ31の1/標本化周波数の周期で送られてくる。出力データy(n)も16bitデータで、図2に示すように、CPU32に送られ、センサ値を読み取っている。
IIRフィルタ装置では、ハードウェアを小さくするために、y(n)の演算は単一の積和演算器24を用い、2つの5to1セレクタ22,23を使って、係数とx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)を切り替えている。
x(n−1)、x(n−2)の値を保存しておくレジスタは、それぞれx(n)と同じ16bitデータ幅のレジスタである。y(n−1)、y(n−2)の値は、1つ前や2つ前のy(n)の値そのままではなく、25を乗じた値を保存している。その為に21bit幅(帰還データのデータ幅)のレジスタになっている。また、積和演算器24の出力y’(n)は、31bitデータ幅の出力なので、25・y(n−1)と25・y(n−2)の値を求める時は、y’(n)を除する値をy(n)を求める時の除数より25小さくして丸め込みの誤差が出ないようにしている。
モードコントローラ10はx(n)の上位6bitとx(n−1)、x(n−2)、y(n−1)、y(n−2)の上位5bitを監視し(図3参照)、すべてのbitが0の時はSEL信号を1にして、25倍モードに切り替える。それ以外のときはSEL信号を0にして通常モードにする。x(n)のみ上位6bit監視するのは、x(n)が一定でもフィルタのリップルにより、y(n−1)とy(n−2)はある程度変動してしまい、x(n)も上位5bitしか監視しないと、下位11bitが全部1の状態が連続して続くとリプルでy(n−1)とy(n−2)の上位から5bit目が1になったり0になったりを繰り返し、モードが一定にならないのを避けるためである。
通常モード(SEL=0)の時は、各2to1セレクタは、a入力を選択する。すなわち、5to1セレクタへの入力は、x(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)となる。y(n−1)とy(n−2)は25・y(n−1)レジスタ13と25・y(n−2)レジスタ14の値から25を除した値になる。25を除するのには除算器を用いる必要はなく、bitのつなぎを替えるだけで出来る。すなわち、25・y(n−1)[20]をy’(n−1)[15]というように接続すれば良い。y(n)の値は、あらかじめ係数に乗じてあった215をy’(n)から除した値となる。
25倍モード(SEL=1)の時は、各2to1セレクタは、b入力を選択する。すなわち、5to1セレクタ1への入力は、25・x(n)、25・x(n−1)、25・x(n−2)、25・y(n−1)、25・y(n−2)となる。積和演算器24が16bitデータ幅なので、上位5bitのデータが積和演算器24へ送られないが、モードコントローラで上位5bitの値は0であることを確認しているので問題ない。
x(n)、x(n−1)、x(n−2)は、入力データとx(n−1)レジスタ11、x(n−2)レジスタ12に25を乗じた値になる。25を乗じるのには除算器を用いる必要はなく、bitのつなぎを替えるだけで出来る。すなわち、x(n)[10]をx’(n)[15]というように接続し、x’(n)[4:0]には0を接続すれば良い。
y(n)の値は、あらかじめ係数に乗じてあった215とx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)に乗じていた25の両方をy’(n)から除した値となる。x(n)、x(n−1)、x(n−2)に25を乗じたため、
{215・b0・25・x(n)+215・b1・25・x(n−1)+215・b2・25・x(n−2)}/215<1
となるのは、x(n)、x(n−1)、x(n−2)が2以下の時だけである。
このように、本実施の形態のIIRフィルタ装置100では、y(n−1)、y(n−2)の値は、1つ前や2つ前のy(n)の値そのままではなく、25を乗じた値を保存していることと、積和演算器24への入力データの上位5bitが0の時は、25・x(n)、25・x(n−1)、25・x(n−2)、25・y(n−1)、25・y(n−2)に25を乗じた値を積和演算器24に入力することにより、小さなハードウェアで入力データ値が小さい時の丸め込みによる誤差を少なくすることができる。
x(n)、x(n−1)、x(n−2)は、入力データとx(n−1)レジスタ11、x(n−2)レジスタ12に25を乗じた値になる。25を乗じるのには除算器を用いる必要はなく、bitのつなぎを替えるだけで出来る。すなわち、x(n)[10]をx’(n)[15]というように接続し、x’(n)[4:0]には0を接続すれば良い。
y(n)の値は、あらかじめ係数に乗じてあった215とx(n)、x(n−1)、x(n−2)、y(n−1)、y(n−2)に乗じていた25の両方をy’(n)から除した値となる。x(n)、x(n−1)、x(n−2)に25を乗じたため、
{215・b0・25・x(n)+215・b1・25・x(n−1)+215・b2・25・x(n−2)}/215<1
となるのは、x(n)、x(n−1)、x(n−2)が2以下の時だけである。
このように、本実施の形態のIIRフィルタ装置100では、y(n−1)、y(n−2)の値は、1つ前や2つ前のy(n)の値そのままではなく、25を乗じた値を保存していることと、積和演算器24への入力データの上位5bitが0の時は、25・x(n)、25・x(n−1)、25・x(n−2)、25・y(n−1)、25・y(n−2)に25を乗じた値を積和演算器24に入力することにより、小さなハードウェアで入力データ値が小さい時の丸め込みによる誤差を少なくすることができる。
10 モードコントローラ
11 x(n−1)レジスタ
12 x(n−2)レジスタ
13 25・y(n−1)レジスタ
14 25・y(n−2)レジスタ
15〜21 2to1セレクタ
22,23 5to1セレクタ
24 積和演算器
25 係数用メモリ
30 センサ
31 ADコンバータ
32 CPU
100 IIRフィルタ装置
11 x(n−1)レジスタ
12 x(n−2)レジスタ
13 25・y(n−1)レジスタ
14 25・y(n−2)レジスタ
15〜21 2to1セレクタ
22,23 5to1セレクタ
24 積和演算器
25 係数用メモリ
30 センサ
31 ADコンバータ
32 CPU
100 IIRフィルタ装置
Claims (1)
- ローパス特性を得るIIRフィルタ装置において、
帰還データのデータ幅は、出力データのデータ幅より広くし、入力データおよび前記帰還データの値が小さい時は、該データに係数を乗じて積和演算し、積和演算後に前記係数で除して出力データを得ることを特徴とするIIRフィルタ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003325307A JP2005094378A (ja) | 2003-09-17 | 2003-09-17 | Iirフィルタ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003325307A JP2005094378A (ja) | 2003-09-17 | 2003-09-17 | Iirフィルタ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005094378A true JP2005094378A (ja) | 2005-04-07 |
Family
ID=34455783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003325307A Pending JP2005094378A (ja) | 2003-09-17 | 2003-09-17 | Iirフィルタ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005094378A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448390A (zh) * | 2022-04-02 | 2022-05-06 | 浙江芯昇电子技术有限公司 | 一种Biquad数字滤波器装置及实现方法 |
-
2003
- 2003-09-17 JP JP2003325307A patent/JP2005094378A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448390A (zh) * | 2022-04-02 | 2022-05-06 | 浙江芯昇电子技术有限公司 | 一种Biquad数字滤波器装置及实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH06348455A (ja) | 乗算における丸め込み方法及び乗算回路 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
JPH0612229A (ja) | 乗累算回路 | |
JP5640081B2 (ja) | 飽和を伴う整数乗算および乗算加算演算 | |
CN101051261B (zh) | 舍入运算方法及其运算装置 | |
JPS62183611A (ja) | デイジタル正弦波発生器 | |
Brisebarre et al. | A lattice basis reduction approach for the design of finite wordlength FIR filters | |
JPWO2008018197A1 (ja) | デジタルフィルタ、その合成装置、合成プログラム、及び合成プログラム記録媒体 | |
JPH09325955A (ja) | 二乗和の平方根演算回路 | |
JP2005094378A (ja) | Iirフィルタ装置 | |
JPH07109974B2 (ja) | ディジタルフィルタ処理装置 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
JP4696920B2 (ja) | Dds信号発生装置 | |
US20210064340A1 (en) | Arithmetic circuit | |
JPH0127463B2 (ja) | ||
JP2009065515A (ja) | デジタルフィルタ | |
JPH02205923A (ja) | 演算プロセッサ | |
JP2508286B2 (ja) | 平方根演算装置 | |
JP5305392B2 (ja) | Iqデータの二乗和ルート計算手段 | |
JP2550597B2 (ja) | 2乗器 | |
JP5687010B2 (ja) | 丸め処理方法及びプログラム | |
JP3210356B2 (ja) | データのゼロ判定装置 | |
WO2021035715A1 (zh) | 数据处理方法和装置 | |
JPH0628153A (ja) | 低誤差計算処理装置 |