(57)【要約】【課題】多段のフィルタを効率的に構成する。【解決手段】データバッファ３０に最新および過去の各段の出力データを記憶しておく。一方、係数バッファ３２には、各段のフィルタで必要な係数をすべて記憶しておく。１回目は入力データに対し、データバッファ３０および係数バッファ３２から必要なデータを読み出し、積和演算を行い、次段からは前段で得られた出力を入力として、データバッファ３０および係数バッファ３２から必要なデータを読み出し、積和演算を行う。これによって、最終的なフィルタの出力が得られる。【選択図】図２
2007267204.tif 000002
【特許請求の範囲】
【請求項１】
複数回のフィルタ処理を順次行うフィルタ装置であって、
係数が変更可能であって、入力側信号、遅延入力側信号、出力側信号、遅延出力側信号について設定された係数を乗算して積和演算を行いフィルタ処理を行う１段分のフィルタ手段と、
複数のフィルタ処理における係数を記憶する係数記憶手段と、
前記フィルタ手段における出力を複数記憶しておく出力記憶手段と、
を有し、
上記出力記憶手段から入力側信号、遅延入力側信号、遅延出力側信号を供給し、前記係数記憶手段から対応する係数を供給することで、前記フィルタ手段において、各段のフィルタ処理を順次行うことを特徴とするフィルタ装置。
【請求項２】
請求項１に記載のフィルタ装置において、
前記係数記憶手段および前記出力記憶手段は、バレルシフタで構成され、１セットの出力が前記フィルタ手段に順次供給されることを特徴とするフィルタ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力信号に対し、複数回のフィルタ処理を行うフィルタ装置に関する。
【背景技術】
【０００２】
従来より、各種のフィルタが知られており、各種の回路において利用されている。例えば、オーディオ装置においては周波数帯域毎の強度を調整するイコライザなどが搭載されており、音声信号を周波数帯域毎に異なる特性のフィルタによってフィルタ処理することによって所望の周波数特性の音声信号を得ている。
【０００３】
現在主流となっているデジタルオーディオ信号に対して従来のアナログ処理を行なうにはDACが必要になるため、回路規模が増大する。従って、デジタルオーディオデータに対してはデジタルフィルタを用いたデジタル信号処理で対応する場合が多い。
【０００４】
なお、デジタルフィルタを利用した音声処理については、特許文献１などに示されている。
【０００５】
【特許文献１】特開２００３−１７９４６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ここで、上述のイコライザなどでは、周波数帯域を細かく分ける場合も多く、例えば８分割であれば、８つのフィルタ回路が必要になり、回路規模が大きくなってしまうという問題がある。DSPを用いたソフト処理を行なう場合でもDSPを内蔵する必要がありその回路規模が大きくなってしまうという問題がある。
【課題を解決するための手段】
【０００７】
本発明は、複数回のフィルタ処理を順次行うフィルタ装置であって、係数が変更可能であって、入力側信号、遅延入力側信号、出力側信号、遅延出力側信号について設定された係数を乗算して積和演算を行いフィルタ処理を行う１段分のフィルタ手段と、複数のフィルタ処理における係数を記憶する係数記憶手段と、前記フィルタ手段における出力を複数記憶しておく出力記憶手段と、を有し、上記出力記憶手段から入力側信号、遅延入力側信号、遅延出力側信号を供給し、前記係数記憶手段から対応する係数を供給することで、前記フィルタ手段において、各段のフィルタ処理を順次行うことを特徴とする。
【０００８】
また、前記係数記憶手段および前記出力記憶手段は、バレルシフタで構成され、１セットの出力が前記フィルタ手段に順次供給されることが好適である。
【発明の効果】
【０００９】
本発明によれば、１段分のフィルタ手段を用意しておき、係数などを切り換えて利用することで、多段のフィルタを形成することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について、図面に基づいて説明する。
【００１１】
図１は、実施形態に係るフィルタ装置の構成を示す図である。図１には、本実施形態に係るイコライザの処理についての等価回路を示す。
【００１２】
入力信号ＤＩＮ（例えば、ＰＣＭ信号）は、乗算器１０−１において係数ａ０１を乗算されて加算器１２−１に入力される。また、入力信号ＤＩＮは、遅延回路１４−１において１クロック遅れて前回のものが記憶される（Ｚ１０−１）。さらに、遅延回路１４の出力は遅延回路１６−１においてもう１クロック遅れて前々回のものが記憶される（Ｚ２０−１）。そして、遅延回路１４−１、１６−１の出力はそれぞれ乗算器１８−１、２０−１において係数ａ１１、ａ２１が乗算されて加算器１２−１に供給される。従って、遅延回路１４−１の出力Ｚ１０−１は前回の入力側信号、遅延回路１６−１の出力Ｚ２０−１は前々回の入力側信号となる。
【００１３】
加算器１２−１からの出力は、遅延回路２２−１において１クロック遅れて前回の加算器１２−１の出力が記憶される（Ｚ１１−１）。さらに、遅延回路２２−１の出力は遅延回路２４−１においてもう１クロック遅れて前々回の加算器１２−１の出力が記憶される（Ｚ２１−１）。そして、遅延回路２２−１、２４−１の出力はそれぞれ乗算器２６−１，２８−１において係数ａ１２、ａ２２が乗算されて加算器１２−１に供給される。従って、遅延回路２２−１の出力Ｚ１１−１は前回の加算器１２−１の出力信号、遅延回路２４−１の出力Ｚ２１−１は前々回の加算器１２−１の出力信号となる。
【００１４】
このような処理によって、加算器１２−１から１段目のイコライザＥＱ１からの出力信号が得られ、これが２段目のイコライザＥＱ２への入力信号になる。
【００１５】
次段からの処理も、基本的に同じであり、入力信号が前段の加算器１２−ｎ（ｎはイコライザＥＱの番号）からの出力信号になる。すなわち、入力信号は、前段の出力信号ＤＯＵＴＥＱｎであり、イコライザＥＱｎには、その回の前段出力であるＤＯＵＴＥＱｎ−１（０）が入力され、前段の出力側の遅延回路である遅延回路２２−（ｎ−１）、２４−（ｎ−１）には、前回、前々回の入力信号であるＤＯＵＴＥＱｎ−１（−１）、ＤＯＵＴＥＱｎ−１（−２）がセットされ、遅延回路２２−ｎ、２４−ｎには、前回、前々回の出力信号であるＤＯＵＴＥＱｎ（−１）、ＤＯＵＴＥＱｎ（−２）がセットされる。
【００１６】
そして、図に示す４段の処理によって、次のような演算が行われる。
【００１７】
（１段目イコライザ）
ＤＯＵＴＥＱ１＝（ＤＩＮ・ａ０１）＋（Ｚ１０−１・ａ１１）＋（Ｚ２０−１・ａ２１）＋（Ｚ１１−１・ｂ１１）＋（Ｚ２１−１・ｂ２１）
ここで、Ｚ１０−１は、前回のＤＩＮであり、Ｚ２０−１は前々回のＤＩＮであり、Ｚ１１−１は前回のＤＯＵＴＥＱ１、Ｚ２１−１は前々回のＤＯＵＴＥＱ１である。
【００１８】
（２段目イコライザ）
ＤＯＵＴＥＱ２＝（ＤＯＵＴＥＱ１・ａ０２）＋（Ｚ１１−１・ａ１２）＋（Ｚ２１−１・ａ２２）＋（Ｚ１２−１・ｂ１２）＋（Ｚ２２−１・ｂ２２）
ここで、Ｚ１１−１は、前回のＤＯＵＴＥＱ１であり、Ｚ２１−１は前々回のＤＯＵＴＥＱ１であり、Ｚ１２−１は前回のＤＯＵＴＥＱ２、Ｚ２２−１は前々回のＤＯＵＴＥＱ２である。
【００１９】
（３段目イコライザ）
ＤＯＵＴＥＱ３＝（ＤＯＵＴＥＱ２・ａ０３）＋（Ｚ１２−１・ａ１３）＋（Ｚ２２−１・ａ２３）＋（Ｚ１３−１・ｂ１３）＋（Ｚ２３−１・ｂ２３）
ここで、Ｚ１２−１は、前回のＤＯＵＴＥＱ２であり、Ｚ２２−１は前々回のＤＯＵＴＥＱ２であり、Ｚ１３−１は前回のＤＯＵＴＥＱ３、Ｚ２３−１は前々回のＤＯＵＴＥＱ３である。
【００２０】
（４段目イコライザ）
ＤＯＵＴＥＱ４＝（ＤＯＵＴＥＱ３・ａ０４）＋（Ｚ１３−１・ａ１４）＋（Ｚ２３−１・ａ２４）＋（Ｚ１４−１・ｂ１４）＋（Ｚ２４−１・ｂ２４）
ここで、Ｚ１３−１は、前回のＤＯＵＴＥＱ３であり、Ｚ２３−１は前々回のＤＯＵＴＥＱ３であり、Ｚ１４−１は前回のＤＯＵＴＥＱ４、Ｚ２４−１は前々回のＤＯＵＴＥＱ４である。
【００２１】
ここで、図１の回路をそのまま構成することができるが、本実施形態では、各段のイコライザを１つのイコライザで順次行うことで達成する。図２には、そのための回路が示されており、入力信号ＤＩＮは、データバッファ３０に入力される。データバッファ３０は、前回の処理の際の入力データ、出力データ、遅延回路において記憶されている前回の入力データおよび出力データを記憶している。
【００２２】
例えば、１段目の処理の際には、ＤＩＮ，Ｚ１０−１，Ｚ２０−１，Ｚ１１−１，Ｚ２１−１が必要であり、今回のＤＩＮをＤＩＮ（０）、ＤＯＵＴＥＱ１（０）とすれば、入力されてくるＤＩＮ（０）の他に，ＤＩＮ（−１），ＤＩＮ（−２），ＤＯＵＴＥＱ１（−１），ＤＯＵＴＥＱ１（−２）の４つを記憶していれば、ＤＯＵＴＥＱ１（０）を算出することができる。そこで、このデータバッファ３０は、各段のイコライザについて、その時と前回の入力信号および出力信号を記憶しておくことで、その段のイコライザにおけるＺ１０−１，Ｚ２０−１，Ｚ１１−１，Ｚ２１−１を記憶することができる。
【００２３】
また、係数バッファ３２には、各段のイコライザにおいて用いる係数ａ０ｎ，ａ１ｎ，ａ２ｎ，ｂ１ｎ，ｂ２ｎ（この例ではｎ＝１〜４）が記憶されている。
【００２４】
そして、データバッファ３０および係数バッファ３２からの出力は乗算器３４に供給される。例えば、最初には、データバッファ３０からＤＩＮが、係数バッファ３２からは係数ａ０１が出力され、乗算器３４からは（ＤＩＮ・ａ０１）が出力される。乗算器３４の出力はクロックＣＬＫに基づいて入力を取り込むフリップフロップ３６に供給される。
【００２５】
フリップフロップ３６の出力は、加算器３８に供給される。加算器３８の出力は、マルチプレクサ４０、クロックＣＬＫに基づいて入力を取り込むフリップフロップ４２を介し、加算器３８に供給される。なお、マルチプレクサ４０は、加算器入力制御信号に応じて”０”または加算器３８の出力を選択する。従って、マルチプレクサ４０が加算器３８の出力を選択することで、加算器３８の出力に新しい乗算器３４出力を順次加算する累積演算が行われる。そこで、データバッファ３０からＤＩＮ，Ｚ１０−１，Ｚ２０−１，Ｚ１１−１，Ｚ２１−１、係数バッファ３２からａ０１，ａ１１，ａ２１，ｂ１１，ｂ２１を順次出力することで、下記のような乗算と加算が順次行われ、４回目の出力の際に加算器３８の出力にＤＯＵＴＥＱ１＝（ＤＩＮ・ａ０１）＋（Ｚ１０−１・ａ１１）＋（Ｚ２０−１・ａ２１）＋（Ｚ１１−１・ｂ１１）＋（Ｚ２１−１・ｂ２１）を得ることができる。
【００２６】
このようにして、１つのイコライザについての演算が終了した場合には、得られたＤＯＵＴＥＱ１がデータバッファ３０に供給され、２回目のフィルタ処理であるＤＯＵＴＥＱ２の算出が行われる。すなわち、データバッファ３０からＤＯＵＴＥＱ１，Ｚ１１−１，Ｚ２１−１，Ｚ１２−１，Ｚ２２−１、係数バッファ３２からａ０２，ａ１２，ａ２２，ｂ１２，ｂ２２を順次出力することで、下記のような乗算と加算が順次行われ、加算器３８の出力にＤＯＵＴＥＱ２＝（ＤＯＵＴＥＱ１・ａ０２）＋（Ｚ１１−１・ａ１２）＋（Ｚ２１−１・ａ２２）＋（Ｚ１２−１・ｂ１２）＋（Ｚ２２−１・ｂ２２）を得ることができ、ＤＯＵＴＥＱ２がデータバッファ３０に格納される。さらに、３回目のフィルタ演算では、ＤＯＵＴＥＱ３＝（ＤＯＵＴＥＱ２・ａ０３）＋（Ｚ１２−１・ａ１３）＋（Ｚ２２−１・ａ２３）＋（Ｚ１３−１・ｂ１３）＋（Ｚ２３−１・ｂ２３）が行われ、ＤＯＵＴＥＱ３がデータバッファ３０に格納される。そして、３回目のフィルタ演算では、ＤＯＵＴＥＱ４＝（ＤＯＵＴＥＱ３・ａ０４）＋（Ｚ１３−１・ａ１４）＋（Ｚ２３−１・ａ２４）＋（Ｚ１４−１・ｂ１４）＋（Ｚ２４−１・ｂ２４）が行われ、ＤＯＵＴＥＱ４がデータバッファ３０に格納されると共に、このＤＯＵＴＥＱ４がフィルタから出力される。
【００２７】
加算器３８の出力は、マルチプレクサ４４を介しクロックＣＬＫに基づき入力を取り込むフリップフロップ４６に入力しても良い。マルチプレクサ４４は、データ出力制御信号に応じて加算器３８の出力またはフリップフロップ４６の出力のいずれかを選択する。データ出力制御信号は、加算器３８の出力が上述の４つのフィルタ処理を終了した時点でマルチプレクサ４４が加算器３８の出力を選択するように制御する。従って、フリップフロップ４４の出力は、４回のフィルタ処理が終わったＤＯＵＴＥＱ４のみとなり、これが順次新しいものに切り換えられる。
【００２８】
図３には、１回分のフィルタ処理のための要素をハードウェアとして用意した場合の構成を示してあり、この構成は図１と同様である。
【００２９】
この構成では、データＤＩＮは、マルチプレクサ５０に入力される。このマルチプレクサ５０には加算器１２の出力も入力されており、最初のフィルタ処理（ｎ＝１）のときにはＤＩＮが選択され、ｎ＞１の場合には加算器１２からの出力である、ＤＯＵＴＥＱ１，ＤＯＵＴＥＱ２，ＤＯＵＴＥＱ３，ＤＯＵＴＥＱ４が選択される。また、加算器１２の出力はゲート５２を介し出力されるようになっており、このゲートはｎ＝１のときのみ開く。このため、４段のフィルタ処理を行った結果である、ＤＯＵＴＥＱ４のみがゲート５２から出力される。必要に応じて、ＤＯＵＴＥＱ１，またはＤＯＵＴＥＱ２，またはＤＯＵＴＥＱ３を出力するようにゲートを制御しても良い。
【００３０】
そして、遅延回路１４，１６，２２，２４については、その値がシフトされるようになっている。すなわち、遅延回路１４，２２は、１回目のフィルタ処理の場合には、Ｚ１０−１，Ｚ１１−１であるが、２回目のフィルタ処理の場合にはＺ１１−１，Ｚ１２−１、３回目はＺ１２−１，Ｚ１３−１、４回目はＺ１３−１，Ｚ１４−１である。そこで、図に示すように、Ｚ１０−１，Ｚ１１−１，Ｚ１２−１，Ｚ１３−１，Ｚ１４−１を用意しておき、これらをバレルシフタで構成して順次シフトして供給する。また、遅延回路１６，２４は、１回目のフィルタ処理の場合には、Ｚ２０−１，Ｚ２１−１であるが、２回目のフィルタ処理の場合にはＺ２１−１，Ｚ２２−１、３回目はＺ２２−１，Ｚ２３−１、４回目はＺ２３−１，Ｚ２４−１である。そこで、図に示すように、Ｚ２０−１，Ｚ２１−１，Ｚ２２−１，Ｚ２３−１，Ｚ２４−１を用意しておき、順次シフトして供給する。なお、Ｚ１０−１，Ｚ１１−１，Ｚ１２−１，Ｚ１３−１，Ｚ１４−１は、前回の処理における入力データＤＩＮ（−１）、１段目イコライザ出力ＤＯＵＴＥＱ１（−１）、２段目イコライザ出力ＤＯＵＴＥＱ２（−１）、３段目イコライザ出力ＤＯＵＴＥＱ３（−１）、４段目イコライザ出力ＤＯＵＴＥＱ４（−１）であり、Ｚ２０−１，Ｚ２１−１，Ｚ２２−１，Ｚ２３−１，Ｚ２４−１は前々回の処理における入力データＤＩＮ（−２）、１段目イコライザ出力ＤＯＵＴＥＱ１（−２）、２段目イコライザ出力ＤＯＵＴＥＱ２（−２）、３段目イコライザ出力ＤＯＵＴＥＱ３（−２）、４段目イコライザ出力ＤＯＵＴＥＱ４（−２）である。また、乗算器１８，２０，２６，２８において乗算する係数は、順次切り替えられる。なお、４回のフィルタ処理を行ったとき後には、２回分のシフトをして、遅延回路の内容を元に戻した後図における縦方向のシフトを行うとよい。
【００３１】
このように、４段のフィルタ演算に必要なのは、その時の入力信号ＤＩＮと、前回および前々回の入力信号と、前回および前々回の演算において計算された各段の出力ＤＯＵＴＥＱｎであり、これをバレルシフタに記憶しておき、１段ごとのフィルタ演算において、値をシフトすることで、各段のフィルタ演算を行うことができる。また、４段のフィルタ処理を行い、１回分の多段フィルタ処理が終わった場合には、今回の入力データおよび各段出力をＺ１０−１，Ｚ１１−１，Ｚ１２−１，Ｚ１３−１，Ｚ１４−１に入力し、そこに記憶されていた値をＺ２０−１，Ｚ２１−１，Ｚ２２−１，Ｚ２３−１，Ｚ２４−１にシフトすればよい。
【００３２】
図４は、図３と同様の処理を行なうことが出来るものの図３とは異なる構成例であり、ここでも１段分のイコライザの他の構成を示している。この構成では、入力側信号はまず加算器６０に入力され、この加算器６０の出力は乗算器６２において所定の係数が乗算された後に加算器６４に入力され、ここからフィルタ後の出力が得られる。加算器６０の出力は、遅延回路６６に入力され、この遅延回路６６の出力がもう１つの遅延回路６８に入力される。そして、遅延回路６６の出力が乗算器７０を介し加算器６０に、乗算器７４を介し、加算器６４に供給され、遅延回路６８の出力が乗算器７２を介し加算器６０に、乗算器７６を介し、加算器６４に供給される。
【００３３】
このような回路によっても上述と同様のフィルタ処理を行うことができ、加算器６４からの出力を次段のフィルタ処理のときの入力とすることで、各段のフィルタ処理を順次行うことができる。なお、各段のフィルタ処理の際に、遅延回路６６，６８、乗算器７０，７２，７４，７６の係数を順次変更する。なお、図４において、係数、データなどを選択信号ＳＥＬによって選択するように記載してある。
【図面の簡単な説明】
【００３４】
【図１】実施形態の基本的構成を示す図である。
【図２】実施形態の構成を示す図である。
【図３】他の構成を示す図である。
【図４】１段のイコライザの他の構成を示す図である。
【符号の説明】
【００３５】
１０，１８，２０，２６，２８，３４，６２，７０，７２，７４，７６  乗算器、１２，３８，６０，６４  加算器、１４，１６，２２，２４，６６，６８  遅延回路、３０  データバッファ、３２  係数バッファ、３６，４２，４６  フリップフロップ、４０，４４，５０  マルチプレクサ、５２  ゲート。
【図１】
2007267204.tif 000003
【図２】
2007267204.tif 000004
【図３】
2007267204.tif 000005
【図４】
2007267204.tif 000006