(57)【要約】【課題】ハードウェア規模を増加させることなく高い精度でデジタルフィルタ演算を行うことを可能する。【解決手段】ＩＩＲフィルタ演算の処理対象信号に乗算するフィルタ係数またはその実行過程にて発生する信号に乗算するフィルタ係数が１または−１の近傍の値である場合には、１または−１を新たなフィルタ係数としてそのＩＩＲフィルタ演算を行うとともに、前記フィルタ係数と前記新たなフィルタ係数との差分を新たなフィルタ係数としてＩＩＲフィルタ演算を行い、前者の演算結果から後者の演算結果を減算して出力するデジタルフィルタであって、後者の演算では、前記差分にその有効ビット数が少ないほど大きい整数値を乗算して得られる値をフィルタ係数としてフィルタ演算を行った後、さらに当該整数値で除算して演算結果を得ることを特徴とするデジタルフィルタを提供する。【選択図】図４
2011023927.tif 000002
【特許請求の範囲】
【請求項１】
フィルタ処理の処理対象信号に乗算するフィルタ係数または前記フィルタ処理の実行過程にて発生する信号に乗算するフィルタ係数が１または−１の近傍の値である場合に、そのフィルタ係数を１または−１として前記フィルタ処理の演算を行う第１の演算手段と、
前記フィルタ係数と前記第１の演算手段の演算で用いるフィルタ係数との差分をフィルタ係数とした前記フィルタ処理の演算を行う手段であって、前記差分に整数Ｍ（Ｍは２以上）を乗算して得られる値をフィルタ係数として前記フィルタ処理の演算を行った後、その演算結果を当該整数Ｍで除算して出力する第２の演算手段と、
前記第１の演算手段の演算結果から前記第２の演算手段の演算結果を減算して出力する出力手段と、
を有することを特徴とするデジタルフィルタ。
【請求項２】
前記整数Ｍは前記差分の有効ビット数が少ないほど大きな値であることを特徴とする請求項１に記載のデジタルフィルタ。
【請求項３】
前記整数Ｍは２のべき乗値であり、前記第２の演算手段は当該整数値による除算をシフト演算で行うことを特徴とする請求項１または２に記載のデジタルフィルタ。
【請求項４】
前記フィルタ処理の演算にて使用されるフィルタ係数を記憶した手段であって、１または−１の近傍の値であるフィルタ係数については、当該フィルタ係数に換えて前記差分に前記整数Ｍを乗算して得られる値が記憶されている係数記憶手段を有する
ことを特徴とする請求項１から３の何れか１に記載のデジタルフィルタ。
【請求項５】
コンピュータ装置を、
フィルタ処理の処理対象信号に乗算するフィルタ係数または前記フィルタ処理の実行過程にて発生する信号に乗算するフィルタ係数が１または−１の近傍の値である場合に、そのフィルタ係数を１または−１として前記フィルタ処理の演算を行う第１の演算手段と、
前記フィルタ係数と前記第１の演算手段の演算で用いるフィルタ係数との差分をフィルタ係数とした前記フィルタ処理の演算を行う手段であって、前記差分に整数Ｍ（Ｍは２以上）を乗算して得られる値をフィルタ係数として前記フィルタ処理の演算を行った後、その演算結果を当該整数Ｍで除算して出力する第２の演算手段と、
前記第１の演算手段の演算結果から前記第２の演算手段の演算結果を減算して出力する出力手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルフィルタの演算精度を向上させる技術に関する。  
【背景技術】
【０００２】
デジタルフィルタは、集積回路化が可能であり、小型化、低価格化、高信頼化を実現できるとともに、フィルタ特性をソフトウェア処理によって容易に調整することができる等、アナログフィルタに比較して多くの利点を有している。このデジタルフィルタは、例えば所望のフィルタ処理を実行するようにプログラムされたＤＳＰ（Digital Signal Processor：デジタル信号処理装置）により実現される（例えば、特許文献１や特許文献２参照）。そして、最近では、フィルタ処理に用いるフィルタ係数をユーザが自由に書き換えることができるような構成のデジタルフィルタが提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２９３７６１号公報
【特許文献２】特開平８−２３７０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＤＳＰを用いてデジタルフィルタ処理を行う場合、ナイキスト周波数近辺や０Ｈｚ近辺にカットオフ周波数を持つと、非常に高い演算精度を要求されることが一般に知られている。このような場合、一般的にはフィルタ係数や処理対象信号を表すサンプリングデータの語長を増やしたり、固定小数点方式の演算器ではなく浮動小数点方式の演算器を用いるなどの方法がとられていた。しかし、フィルタ係数やデータを格納するためのメモリ容量の増加や浮動小数点方式の演算器を設けることに起因してＤＳＰのハードウェア規模が増大する、といった問題があった。
本発明は、上記課題に鑑みて為されたものであり、ハードウェア規模を増加させることなく高い精度でデジタルフィルタ処理を行うことを可能する技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために本発明は、フィルタ処理の処理対象信号に乗算するフィルタ係数または前記フィルタ処理の実行過程にて発生する信号に乗算するフィルタ係数が１または−１の近傍の値である場合に、そのフィルタ係数を１または−１として前記フィルタ処理の演算を行う第１の演算手段と、前記フィルタ係数と前記第１の演算手段の演算で用いるフィルタ係数との差分をフィルタ係数とした前記フィルタ処理の演算を行う手段であって、前記差分に整数Ｍ（Ｍは２以上）を乗算して得られる値をフィルタ係数として前記フィルタ処理の演算を行った後、その演算結果を当該整数Ｍで除算して出力する第２の演算手段と、前記第１の演算手段の演算結果から前記第２の演算手段の演算結果を減算して出力する出力手段とを有することを特徴とするデジタルフィルタ、およびコンピュータ装置を上記各手段として機能させることを特徴とするプログラム、を提供する。
【０００６】
このようなデジタルフィルタおよびプログラムによれば、フィルタ係数を１または−１とした第１の演算と、そのフィルタ係数と１または−１との差分をフィルタ係数とした第２の演算とが各々別個に行われ、前者の演算結果から後者の演算結果を差し引いたものがフィルタ処理の結果として出力される。後述するように、フィルタ係数が１または−１の近傍の値である場合、上記差分を符号つき固定小数点方式の２進数で表現すると演算精度に寄与する有効ビット数が著しく減少する。これに対して上記第２の演算では、上記差分に整数Ｍを乗算して有効ビット数を増やした値をフィルタ係数として上記フィルタ処理を行った後、その処理結果を上記整数Ｍで除算して演算結果を得ているため、この除算演算により有効ビット数が減少することを差し引いても充分に高い演算精度が得られる。したがって、上記整数Ｍとしては、上記差分の有効ビット数が少ないほど大きな値であることが望ましい。また、上記第１の演算および第２の演算に含まれる加算演算および乗算演算を各々１個ずつの加算器および乗算器を用いて時分割制御により行うようにすれば、デジタルフィルタのハードウェア規模の増大を回避することができる。
【０００７】
より好ましい態様においては、前記整数Ｍは２のべき乗値であり、前記第２の演算手段は当該整数Ｍによる除算をシフト演算で行うことを特徴とする。このような態様においては、一般にシフト演算は除算に比較して高速で行うことができるため、このような態様によればデジタルフィルタの演算精度を向上させつつ、その演算速度が著しく低下することを回避することが可能になる。また、別の好ましい態様においては、前記フィルタ演算にて使用されるフィルタ係数を記憶した手段であって、１または−１の近傍の値であるフィルタ係数については、当該フィルタ係数に換えて前記差分にその有効ビット数が少ないほど大きい整数値を乗算して得られる値が記憶されている係数記憶手段を有することを特徴とする。このような態様によれば、上記第２の演算を行う度に上記差分にその有効ビット数に応じた整数値を乗算する演算を行う必要がなく、高精度演算を高速に行うことが可能になる。
【図面の簡単な説明】
【０００８】
【図１】バタワースハイパスフィルタの振幅特性の一例およびこの振幅特性を実現するためのフィルタ係数の一例を示す図である。
【図２】従来のデジタルフィルタ処理で高い演算精度が得られない理由および本発明の一実施形態に係るデジタルフィルタ処理により演算精度が向上する理由を説明するための図である。
【図３】同デジタルフィルタ処理を実行するデジタルフィルタのハードウェア構成の一例を示す図である。
【図４】同デジタルフィルタにおけるＩＩＲフィルタ処理のシグナルフローを示す図である。
【図５】従来のデジタルフィルタにおけるＩＩＲフィルタ処理のシグナルフローを示す図である。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を実施するための最良の形態を図面を参照しつつ説明する。
（Ａ：本実施形態におけるフィルタ処理の演算）
まず、本発明をＩＩＲ（Infinite Impulse Response）フィルタ処理を行うデジタルフィルタに適用した場合の具体的な演算方法について説明し、この演算方法により演算精度が向上する理由について説明する。
【００１０】
一般的なＩＩＲフィルタ処理の演算は、式（１）の差分方程式で表現することができる。
ｙ（ｎ）＝ｂ１ｘ（ｎ）＋ｂ２ｘ（ｎ−１）−ａ１ｙ（ｎ−１）…（１）
この式（１）において、ｘ（ｎ）は、フィルタ処理の対象となる処理対象信号を所定のサンプリング周期でサンプリングして得られる入力サンプルである。以下、本実施形態では、処理対象信号がオーディオ信号である場合を例にとって説明することとし、上記サンプルを「オーディオサンプル」と呼ぶ。式（１）のｘ（ｎ−１）はｘ（ｎ）を１サンプル周期分だけ遅延させたオーディオサンプルでありフィルタ処理の実行過程で生成される信号を表す。そして、ｙ（ｎ−１）はフィルタ処理済みのオーディオサンプルｙ（ｎ）を１サンプル周期分だけ遅延させたオーディオサンプルであり、ｂ１、ｂ２およびａ１の各々はフィルタ係数である。なお、以下では、各オーディサンプルｘ（ｎ）、ｘ（ｎ−１）、ｙ（ｎ）およびｙ（ｎ−１）の各々や、各フィルタ係数が２４ビットの符号つき固定小数点方式の２進数で表されるデータであるとする。
【００１１】
図５は、式（１）で表されるＩＩＲフィルタ処理のシグナルフローの一例を示す図である。図５の乗算処理５１０は、式（１）の右辺第１項の演算に対応し、乗算処理５２０は、式（１）の右辺第２項の演算に対応する。そして、図５のフィードバック処理５３０は、式（１）の右辺第３項の演算に対応する。このフィードバック処理５３０では、ａ１ｙ（ｎ−１）の算出を、データの上位２３ビットと下位２３ビットとに分けて各々別個に行うことでデータ精度を倍にしている。なお、図５において、Ｓ．２３は符号部１ビット、小数部２３ビットの固定小数点方式の２進数を表し、Ｓ１．４６は符号部１ビット、整数部１ビット、小数部４６ビットの固定小数点方式の２進数を表す。
【００１２】
例えば図１（Ａ）に示すような振幅特性のバタワースハイパスフィルタ（図１（Ａ）ではサンプリング周波数４８ｋＨｚ、カットオフ周波数３．７Ｈｚ）を式（１）に示す演算で実現する場合、フィルタ係数ｂ１、ｂ２およびａ１の各々は、図１（Ｂ）に示すように、その絶対値が１に限りなく近くなる。これらフィルタ係数を２４ビットの符号つき固定小数点方式の２進数で表現すると、図１（Ｂ）に示すように、ｂ１は“７ＦＦ９２３”（図１（Ｂ）にて「２４’ｈ」は２４ビット２進数の１６進表記を意味する接頭辞である）となり、ｂ２は“８００６ＤＣ”、ａ１は“８００ＤＢ９”となる。なお、ｂ１、ｂ２およびａ１を２進数表現した場合の先頭ビットは符号ビット（先頭ビットが“０”であれば正の値、“１”であれば負の値）である。ここで注目すべき点は、図２（Ａ）に示すように、ｂ１における７ＦＦ部分（すなわち、符号ビット（“０”）に後続する“１”が連続する部分）や、ｂ２やａ１における８００部分（すなわち、符号ビット（“１”）に後続する“０”が連続する部分）は、演算精度に全く寄与せず、後半１２ビット（ｂ１における“９２３”やｂ２における“６ＤＣ”、ａ１における“ＤＢ９”）のみが演算精度に寄与する点である。つまり、フィルタ係数の絶対値が１に近い場合、実際に演算精度に寄与するビット数（以下、有効ビット数）が大幅に減少してしまうのである。これがフィルタ係数の絶対値が１に近い場合に高い演算精度が得られない理由である。
【００１３】
これに対して、本実施形態では、上記問題点を解決するため、式（１）を以下のように変形する。まず、各フィルタ係数ｂ１、ｂ２およびａ１の絶対値が１の近傍の値である場合、これらフィルタ係数を以下の式（２−１）から（２−３）のように絶対値が１である整数部と、その整数部と元々のフィルタ係数との差分に書き換える。つまり、式（２−１）から（２−３）において、Ｂ１、Ｂ２およびＡ１の各々は１または−１であり、Δｂ１、Δｂ２およびΔａ１の各々は０に近い値である。
ｂ１＝Ｂ１−Δｂ１…（２−１）
ｂ２＝Ｂ２−Δｂ２…（２−２）
ａ１＝Ａ１−Δａ１…（２−３）
【００１４】
上記式（２−１）から式（２−３）を式（１）に代入して整理すると、以下の式（３）が得られる。
ｙ（ｎ）＝    Ｂ１ｘ（ｎ）＋Ｂ２ｘ（ｎ−１）−Ａ１ｙ（ｎ−１）
−Δｂ１ｘ（ｎ）−Δｂ２ｘ（ｎ−１）＋Δａ１ｙ（ｎ−１）…（３）
前述したように、Δｂ１、Δｂ２、およびΔａ１の各々は０に近い値であるから、これら差分（Δｂ１、Δｂ２やΔａ１）が正の値である場合、これら差分を前述した固定小数点方式の２進数で表現すると、符号ビットを除いてＬＳＢ（右端ビット）に限りなく近いところで初めて１が表れる（なお、上記差分が負の値である場合には、符号ビットを除いてＬＳＢに限りなく近いところで始めて０が表れる）。以下、符号ビットに後続するビットで初めて１（或いは０）が表れるまでのビット数（すなわち、符号ビットの直後から連続して表れる１または０の数）がΔｂ１においてはｍ、Δｂ２においてはｊ、Δａ１においてはｋであり、ｍ＜ｋ＜ｊである場合、Δｂ１、Δｂ２およびΔａ１の各々を以下の式（４−１）から式（４−３）のように置き換える。
Δｂ１＝δｂ１×２−ｍ…（４−１）
Δｂ２＝δｂ２×２−ｍ…（４−２）
Δａ１＝δａ１×２−ｍ…（４−３）
【００１５】
式（４−１）から式（４−３）の両辺に２ｍを乗算すれば明らかように、δｂ１、δｂ２およびδａ１の各々は、Δｂ１、Δｂ２およびΔａ１の各々に２ｍを乗算した値である。例えば、図１（Ｂ）に示すｂ１、ｂ２およびａ１を式（２−１）から（２−３）に示すように書き換えた場合、Δｂ１、Δｂ２およびΔａ１にて符号ビットの直後から連続して表れる０（または１）の数が、夫々１１、１３、１２であるとする。この場合、式（４−１）から（４−３）でｍ＝１１として得られるδｂ１、δｂ２およびδａ１を固定小数点方式の２進数で表すと、図２（Ｂ）に示すようにＬＳＢよりもずっと上のビットで符号ビット以外の０（或いは１）が表れる。つまり、δｂ１、δｂ２およびδａ１においては、２４ビットの固定小数点方式の２進数で表現した場合にその２４ビットの全てが演算精度に寄与するのである。これら式（４−１）から式（４−３）を式（３）に代入して整理すると、以下の式（５）が得られる。
【００１６】
ｙ（ｎ）＝    Ｂ１ｘ（ｎ）＋Ｂ２ｘ（ｎ−１）−Ａ１ｙ（ｎ−１）
−２−ｍ×{δｂ１ｘ（ｎ）＋δｂ２ｘ（ｎ−１）−δａ１ｙ（ｎ−１）}…（５）
本実施形態では、前述した式（１）に代えて式（５）に示す演算でＩＩＲフィル処理を行うことに特徴がある。前述したように、δｂ１、δｂ２およびδａ１は、Δｂ１、Δｂ２およびΔａ１に比較して有効ビット数が多いため、２ｍで除算すること（すなわち、ｍビット分の右シフトを施すこと）により有効ビット数が減少することを差し引いても、式（５）に示す演算のほうが式（１）に示す演算に比較して演算精度が高くなる。例えば、図１（Ｂ）に示す各フィルタ係数をそのまま用いて式（１）の示す演算を行う場合、各フィルタ係数の有効ビット数は１２ビット程度であるが、式（４−１）から（４−３）を満たすδｂ１、δｂ２およびδａ１を用いて式（５）に示す演算を行えば、ｍ＝１１ビットのシフト分も含めて各フィルタ係数の有効ビット数は２４＋１１＝３５ビットと概ね３倍程度になる。
以上が本実施形態により演算精度が向上する理由である。
【００１７】
（Ｂ：構成）
図３は、本発明の一実施形態にかかるデジタルフィルタの構成例を示すブロック図である。このデジタルフィルタは、入力オーディオサンプルｘ（ｎ）に対して前述した式（５）に示す演算によりＩＩＲフィルタ処理を施し、この結果得られるオーディオサンプルｙ（ｎ）を出力するようにプログラムされたＤＳＰである。このデジタルフィルタは、図３に示すように、データパス部１００と、係数記憶部２００と、インタフェース３００と、フィルタ処理制御部４００を有している。
【００１８】
係数記憶部２００は、例えばＥＥＰＲＯＭなどの書き換え可能な不揮発性メモリである。この係数記憶部２００には、フィルタ処理に用いるフィルタ係数（すなわち、処理対象信号を表す入力オーディオサンプルに乗算されるフィルタ係数、またはフィルタ処理の実行過程で発生する信号を表すオーディオサンプルに乗算されるフィルタ係数）が格納されている。ただし、本実施形態では、絶対値が１の近傍の値であるフィルタ係数については、そのフィルタ係数そのものを格納するのではなく、図３に示すように、式（２−１）から（２−３）の整数値Ｂ１、Ｂ２およびＡ１と、式（４−１）から（４−３）のδｂ１、δｂ２、δａ１およびｍの組が格納されている。例えば、図３に示すデジタルフィルタにより、図１（Ａ）に示すバタワースハイパスフィルタの振幅特性を実現する場合には、Ｂ１＝１、Ｂ２＝−１、Ａ１＝−１を係数記憶部２００に格納しておくとともに、δｂ１、δｂ２およびδａ１として図２（Ｂ）に示す各値を係数記憶部２００に格納しておき、さらにｍ＝１１を係数記憶部２００に格納しておけば良い。
【００１９】
データパス部１００は、入力オーディオサンプルｘ（ｎ）に対して、前述した式（５）に示す演算を実行する装置である。図３に示すように、データパス部１００は、フィルタ処理に含まれる係数乗算演算を実行する乗算器１１１と同フィルタ処理に含まれる加算演算を実行する加算器１１２とを各々１個ずつ有する演算器１１０と、同フィルタ処理に含まれる遅延処理などで利用されるワークＲＡＭ１２０とを含んでいる。
【００２０】
インタフェース３００は、デジタルフィルタの外部の装置との間で信号の授受を行う装置である。図３のデジタルフィルタは、このインタフェース３００により、外部から入力オーディオサンプルｘ（ｎ）を取得し、ＩＩＲフィルタ処理により得られる出力オーディオサンプルｙ（ｎ）を外部へ出力する。
【００２１】
フィルタ処理制御部４００は、図１に示すデジタルフィルタ全体の制御を行う手段である。好ましい態様において、フィルタ処理制御部４００は、ＣＰＵと、このＣＰＵにより実行されるプログラムを記憶するＲＯＭと、作業用のＲＡＭとにより構成される。このフィルタ処理制御部４００は、データパス部１００に対する時分割制御により乗算器１１１や加算器１１２を時間を区切って使い回すことにより、式（５）に示すフィルタ処理演算を実現する。
【００２２】
図４は、フィルタ処理制御部４００による制御下でデータパス部１００が実行するフィルタ処理のシグナルフローの一例を示す図である。図４に示すように、データパス部１１０が実行するフィルタ処理は、第１の演算ＳＡ１００、第２の演算ＳＡ２００、および、第１の演算ＳＡ１００の演算結果から第２の演算ＳＡ２００の演算結果を減算して出力する加算処理Ｓ０３０に大別される。
【００２３】
図４の第１の演算ＳＡ１００では、１または−１を新たなフィルタ係数としてＩＩＲフィルタ処理の演算が行われる。より詳細に説明すると、図４の第１の演算ＳＡ１００には、乗算処理ＳＡ１１１、ＳＡ１１２、およびＳＡ１１３と、加算処理ＳＡ１２１とが含まれる。乗算処理ＳＡ１１１は、入力オーディオサンプルｘ（ｎ）に対して係数Ｂ１を乗算する処理である。乗算処理ＳＡ１１２は、入力オーディオサンプルｘ（ｎ）に１サンプル分の遅延処理Ｓ０１０を施して得られるオーディオサンプルｘ（ｎ−１）に対して係数Ｂ２を乗算する処理である。乗算処理ＳＡ１１３は、出力オーディオサンプルｙ（ｎ）に１サンプル分の遅延処理Ｓ０２０を施して得られるオーディオサンプルｙ（ｎ−１）に係数Ａ１を乗算する処理である。加算処理ＳＡ１２１は、乗算処理ＳＡ１１１およびＳＡ１１２の各々の処理結果を加算し、さらに、乗算処理ＳＡ１１３の処理結果を減算して出力する処理である。つまり、第１の演算ＳＡ１００による処理結果は、以下の式（６）で表されることとなる。
Ｂ１ｘ（ｎ）＋Ｂ２ｘ（ｎ−１）−Ａ１ｙ（ｎ−１）…（６）
【００２４】
図４の第２の演算ＳＡ２００では、本来のフィルタ係数と第１の演算ＳＡ１００にて使用する新たなフィルタ係数との差分を新たなフィルタ係数としたＩＩＲフィルタ処理の演算が行われる。より詳細に説明すると、この第２の演算ＳＡ２００では、上記差分にその有効ビット数が少ないほど大きい整数値（本実施形態では、２ｍ）を乗算して得られる値（本実施形態では、係数記憶部２００に格納されているδｂ１、δｂ２およびδａ１）をフィルタ係数としてＩＩＲフィルタ処理の演算を行った後、その演算結果を当該整数値で除算して出力する演算が実行される。この第２の演算ＳＡ２００には、乗算処理ＳＡ２１１、ＳＡ２１２、ＳＡ２１３およびＳＡ２１４と、加算処理ＳＡ２２１およびＳＡ２２２と、シフト演算ＳＡ２３１、ＳＡ２３２およびＳＡ２３３とが含まれる。これら各処理のうち、乗算処理ＳＡ２１３およびＳＡ２１４と、シフト演算ＳＡ２３２およびＳＡ２３３と、加算処理ＳＡ２２２は前述したフィードバック処理（図５参照）を形成する。
【００２５】
図４の乗算処理ＳＡ２１１は、入力オーディオサンプルｘ（ｎ）に係数δｂ１を乗算する処理であり、乗算処理ＳＡ２１２は、オーディオサンプルｘ（ｎ−１）に係数δｂ２を乗算する処理である。そして、図４の加算処理ＳＡ２２１は、乗算処理ＳＡ２１１の処理結果（すなわち、δｂ１ｘ（ｎ））と乗算処理ＳＡ２１２の処理結果（すなわち、δｂ２ｘ（ｎ−１））とを加算し、その加算結果から、上記フィードバック処理の処理結果であるオーディオサンプルδａ１ｙ（ｎ−１）を減算して出力する処理である。図４のシフト演算ＳＡ２３１は、加算処理ＳＡ２２１の処理結果に対してｍビット分の右ビットシフトを施す処理（すなわち、２ｍでの除算）である。つまり、加算処理ＳＡ２２１の処理結果に対してシフト処理ＳＡ２３１を施すことにより、以下の式（７）で表されるオーディオサンプルが生成される。
２−ｍ｛δｂ１ｘ（ｎ）＋δｂ２ｘ（ｎ−１）−δａ１ｙ（ｎ−１）｝…（７）
【００２６】
図４の加算処理Ｓ０３０は、第１の演算ＳＡ１００の演算結果であるオーディオサンプル（すなわち、式（６）で表されるオーディオサンプル）から第２の演算ＳＡ２００の演算結果であるオーディオサンプル（すなわち、式（７）で表されるオーディオサンプル）を減算して出力する処理である。この加算処理Ｓ０３０によって、前述した式（５）で表されるオーディオサンプルｙ（ｎ）が生成されるのである。このようして生成されるオーディオサンプルｙ（ｎ）は、出力値制限処理Ｓ０４０を経てデジタルフィルタの外部へ出力されるとともに、遅延処理Ｓ０２０により１サンプル分の遅延が付与され、オーディオサンプルｙ（ｎ−１）が生成される。このオーディオサンプルｙ（ｎ−１）には、前述した第１の演算ＳＡ１００にて乗算処理ＳＡ１１３が施される一方、前述したフィードバック処理が施されδａ１ｙ（ｎ−１）が生成される。
【００２７】
そして、図４の出力値制限処理Ｓ０４０は、出力オーディオサンプルｙ（ｎ）の値を−１から１の範囲に制限する処理である。具体的には、加算処理Ｓ０３０の処理結果が−１から１の範囲内の値ではない場合に、その処理結果を外部へ出力しないようにすることで、上記制限が実現される。
【００２８】
ここで、図４に示すシグナルフローと図５に示すシグナルフローとを対比すれば明らかように、本実施形態においては、第１の演算ＳＡ１００の分だけ演算量が増加している。しかし、本実施形態では、第１の演算ＳＡ１００に含まれる乗算演算および加算演算は、何れも乗算器１１１および加算器１１２を時分割制御で使用して行われるため、オーディオサンプルやフィルタ係数の語長を増加させる態様や浮動小数点演算器を用いる態様に比較してＤＳＰのハードウェア規模が増加することはない。このように、本実施形態によれば、ＤＳＰのハードウェア規模を増大させることなく、ＩＩＲフィルタ処理の演算精度を向上させることが可能になる、といった効果を奏する。
【００２９】
（Ｃ：変形）
以上、本発明の一実施形態について説明したが、かかる実施形態に以下に述べる変形を加えても勿論良い。
（１）上述した実施形態では、ＩＩＲフィルタ処理を実行するデジタルフィルタに本発明を適用した場合について説明した。これは、ＩＩＲフィルタ処理を実行するデジタルフィルタに本発明を適用した場合にその効果が最も顕著に現れるからである。何故ならば、ＩＩＲフィルタ処理では、フィードバック成分（式（１）におけるａ１ｙ（ｎ−１））を有するため、演算精度が低いと誤差が蓄積し、その影響が顕著に現れるからである。しかし、本発明の適用対象はＩＩＲフィルタ処理を実行するデジタルフィルタに限定されるものではなく、ＦＩＲフィルタ処理を実行するデジタルフィルタに本発明を適用しても勿論良い。要は、式（１）に示すように、フィルタ処理の処理対象信号およびそのフィルタ処理の実行過程で発生させる信号（処理対象信号を遅延させた信号）とフィルタ係数との積和演算で表されるフィルタ処理であれば、本発明を適用することにより演算精度を向上させることが可能である。このようなフィルタ処理において、フィルタ係数が１または−１の近傍の値である場合に従来の演算手法では演算精度が低下することに変りはないからである。
【００３０】
（２）上述した実施形態では、フィルタ処理にて使用するフィルタ係数が係数記憶部２００に予め記憶されているとともに、１または−１の近傍の値のフィルタ係数については、そのフィルタ係数そのものに換えて、１または−１とそのフィルタ係数との差分に当該差分の有効ビット数に応じた整数値を乗算して得られる値（すなわち、式（４−１）から（４−３）の各々を満たすδｂ１、δｂ２およびδａ１）が予め記憶されていた。しかし、フィルタ処理にて使用するフィルタ係数や上記式（４−１）から（４−３）の各々を満たす値を、フィルタ演算を行う毎にインタフェース３００を介してデジタルフィルタに与えても良いことは勿論であり、このような態様であれば係数記憶部２００を設ける必要はない。
【００３１】
（３）上述した実施形態では、上述した実施形態では、図４の第２の演算ＳＡ２００にてオーディオサンプルｘ（ｎ）、ｘ（ｎ−１）およびｙ（ｎ−１）の各々に乗算する係数として、式（４−１）から（４−３）の各々を満たすδｂ１、δｂ２およびδａ１を用いたが、以下の式（８−１）から（８−３）を満たすβ１、β２およびα１を用いても勿論良い。これら式（８−１）から（８−３）における整数値Ｍは、δｂ１、δｂ２およびδａ１の有効ビット数が少ないほど大きな値の整数値であり、β１、β２およびα１の有効ビット数を増加させる役割を担う。なお、式（４−１）から（４−３）の各々を満たすδｂ１、δｂ２およびδａ１に換えて式（８−１）から（８−３）に示すβ１、β２およびα１を用いる場合には、加算処理ＳＡ２２１の処理結果に対してシフト演算ＳＡ２３１に換えて、整数値Ｍでの除算を施す必要がある。
β１＝Δｂ１×Ｍ…（８−１）
β２＝Δｂ２×Ｍ…（８−２）
α１＝Δａ１×Ｍ…（８−３）
【００３２】
（４）上述した実施形態では、本実施形態の特徴を顕著に示すＩＩＲフィルタ演算（すなわち、図４のシグナルフローに則した演算）をデータパス部１００に実行させるプログラムがフィルタ処理制御部４００のＲＯＭに予め書き込まれていたが、例えばＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）に上記プログラムを書き込んで配布するとしても良く、また、インターネットなどの電気通信回線経由のダウンロードにより上記プログラムを配布しても良い。加算器と乗算器とを各々少なくとも１個ずつ備えたＤＳＰを、上記のようにして配布されるプログラムにしたがって作動させることによって、そのＤＳＰを本発明に係るデジタルフィルタとして機能させることが可能になる。
【符号の説明】
【００３３】
１００…データパス部、２００…係数記憶部、３００…インタフェース、４００…制御部。
【図１】
2011023927.tif 000003
【図２】
2011023927.tif 000004
【図３】
2011023927.tif 000005
【図４】
2011023927.tif 000006
【図５】
2011023927.tif 000007