(57)【要約】  処理効率の低下を招くことなく回路規模を縮小することを課題とする。本発明にかかる多段フィルタ処理方法は、入力データ又は最終のステージに至る前のステージにおけるフィルタ演算処理により生成される中間データのデータ数をステージ毎に測定する。フィルタ演算処理を実行するに足るデータ数をステージ毎に規定する係数データを保持する。係数データに基づいて、データ数が現在のステージにおけるフィルタ演算処理を実行するに足るデータ数に達するまでの間、入力データ又は現在のステージにおいて生成された中間データをメモリに保持する。データ数がフィルタ演算処理を実行するに足るデータ数に達したときに、保持されていた入力データ又は中間データに対して現在のステージのフィルタ演算処理を実行する。
2013183096.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対して複数のステージからなるフィルタ演算処理を実行することにより出力データを生成する多段フィルタ処理装置であって、
前記各ステージにおける前記フィルタ演算処理を実行するフィルタ演算手段と、
前記入力データ又は最終の前記ステージに至る前の前記ステージにおける前記フィルタ演算処理により生成される中間データを保持する処理データ保持手段と、
前記入力データ又は前記中間データのデータ数を前記ステージ毎に測定するデータ数測定手段と、
前記フィルタ演算処理を実行するに足る前記データ数を前記ステージ毎に規定する係数データを保持する係数データ保持手段と、
前記フィルタ演算処理における前記ステージの切り替えを制御するものであって、前記係数データに基づいて前記データ数が現在の前記ステージにおける前記フィルタ演算処理を実行するに足るデータ数に達するまでの間、前記入力データ又は現在の前記ステージにおいて生成された前記中間データを前記処理データ保持手段に保持させ、前記データ数が前記フィルタ演算処理を実行するに足るデータ数に達したときに、当該処理データ保持手段に保持されていた全入力データ又は全中間データを前記フィルタ演算手段に入力し、現在の前記ステージにおける前記フィルタ演算処理を実行させるステージ切り替え制御手段と、
を備える多段フィルタ処理装置。
【請求項２】
前記処理データ保持手段は、
前記入力データ又は前記中間データを、所定の物理的記憶領域内に所定の周期で循環するように格納する、
請求項１に記載の多段フィルタ処理装置。
【請求項３】
前記処理データ保持手段は、
前記入力データ又は前記中間データを格納するローカルメモリと、
前記ローカルメモリの記憶領域を指定し所定の周期で循環するアドレス信号を前記ステージ毎に生成し、当該アドレス信号に基づいて前記入力データ又は前記中間データを前記ローカルメモリに格納するローカルメモリ書き込み制御手段と、
現在の前記ステージに対応する前記アドレス信号に対応する前記記憶領域に格納された前記入力データ又は前記中間データを読み出し、前記フィルタ演算手段に供給するローカルメモリ読み出し制御手段と、
を備える請求項２に記載の多段フィルタ処理装置。
【請求項４】
前記フィルタ演算手段は、
前記全ステージ分のレジスタを備え、
前記処理データ保持手段から読み出された前記入力データ又は前記中間データと前記係数データとの積和演算結果を、現在の前記ステージに対応する前記レジスタに格納し、
前記入力データ又は前記レジスタに格納されたデータのうちいずれかをアービタにより選択し、
当該選択されたデータと共に当該現在のステージを示すデータを出力する、
請求項１〜３のいずれか１項に記載の多段フィルタ処理装置。
【請求項５】
前記係数データ保持手段は、
前記係数データを格納する係数メモリと、
現在の前記ステージに対応する前記係数データを読み出し、前記フィルタ演算手段に供給する係数メモリ読み出し制御手段と、
を備える請求項１〜４のいずれか１項に記載の多段フィルタ処理装置。
【請求項６】
入力データに対して複数のステージからなるフィルタ演算処理を実行することにより出力データを生成する多段フィルタ処理方法であって、
前記入力データ又は最終の前記ステージに至る前の前記ステージにおける前記フィルタ演算処理により生成される中間データのデータ数を前記ステージ毎に測定するステップと、
前記フィルタ演算処理を実行するに足る前記データ数を前記ステージ毎に規定する係数データを読み出すステップと、
前記係数データに基づいて、前記データ数が現在の前記ステージにおける前記フィルタ演算処理を実行するに足るデータ数に達するまでの間、前記入力データ又は現在の前記ステージにおいて生成された前記中間データをメモリに保持するステップと、
前記データ数が前記フィルタ演算処理を実行するに足るデータ数に達したときに、前記保持されていた全入力データ又は全中間データに対して現在の前記ステージの前記フィルタ演算処理を実行するステップと、
を備える多段フィルタ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データに対して多段のフィルタ演算処理を実行することにより出力データを生成する多段フィルタ処理装置及び方法に関する。
【背景技術】
【０００２】
無線信号処理において、干渉波、スプリアス等の信号に含まれる不要成分の除去のために、フィルタリング処理が用いられている。フィルタリング処理を行う回路として、アナログ回路を用いるアナログフィルタ回路とデジタル回路を用いるデジタルフィルタ回路とがあるが、近年ではデジタルフィルタ回路が多用されるようになっている。ＬＳＩの高速化等により、デジタル回路によって高精度且つ低コストでフィルタリング処理を行うことが可能となったためである。【０００３】
デジタルフィルタの一種としてデジタルレート変換フィルタが存在する。デジタルレート変換フィルタは、デジタル化された中間周波数信号（ＩＦ信号）、ベースバンド信号等のサンプリングレートを調整し、同時にスプリアスの除去、エイリアシング等を防ぐ目的で利用される。デジタルレート変換フィルタのうち、元信号よりサンプリングレートを低くするために用いるものをデシメーションフィルタ、サンプリングレートを高くするために用いるものをインタポレーションフィルタという。【０００４】
このようなデジタルレート変換フィルタにおいては、例えば入力データ及び出力データのレート比が高い場合に、演算量を削減するためにＦＩＲ(Finite Impulse Response)フィルタを直列且つ多段に接続する構成が多く利用されている。【０００５】
例えば、特許文献１には、１／１２のデシメーションフィルタと１／２のデシメーションフィルタを組み合わせて１／２４のデシメーションフィルタを構成する多段フィルタ処理装置が開示されている。また、特許文献２には、１／１６のデシメーションフィルタと１／４のデシメーションフィルタを組み合わせて、１／６４のデシメーションフィルタを構成する多段フィルタ処理装置が開示されている。【０００６】
また、従来の多段フィルタ処理装置を開示するものとして、特許文献３〜６が挙げられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２６９７８５号公報（図８等参照）
【特許文献２】特開２００５−３１８２０４号公報（図３等参照）
【特許文献３】特開２００７−６７６４６号公報
【特許文献４】特開２００６−２６０４１１号公報
【特許文献５】特開２００５−１４９００９号公報
【特許文献６】特開２００５−１２８１７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１４は、一般的な多段フィルタ処理装置の第１の実装例を示している。本例においては、フィルタ演算処理を行う複数（３つ）のＦＩＲフィルタ回路１０１，１０２，１０３が直列に接続されることにより、１／１６のデシメーションフィルタが構成されている。【０００９】
図１５は、一般的な多段フィルタ処理装置の第２の実装例を示している。図１６は、図１５の例における処理の流れを示している。本例においては、１つの入力データに対して１つのＦＩＲフィルタ回路１１１によりフィルタ演算処理を繰り返すことにより、１／１６のデシメーションフィルタが構成されている。即ち、ある段（例えばステージ０）のフィルタ演算処理においてＦＩＲフィルタ回路１１１が一定期間の入力データに対して行った演算結果は、一旦ローカルメモリ１１２に格納される。その後、次段（例えばステージ１）のフィルタ演算処理において、ＦＩＲフィルタ回路１１１は、ローカルメモリ１１２に格納された前段の演算結果に対してフィルタ演算処理を行う。【００１０】
上記図１４に示すような、ＦＩＲフィルタ回路を複数直列に接続する手法においては、連続的にデータ処理を行えるため、レイテンシが小さくなるというメリットがあるが、演算回路が大きくなるというデメリットがある。また、多段のデシメーションフィルタの場合には、後段のフィルタの方が前段のフィルタよりもデータレートが低いため、後段の演算回路の動作率が低くなり、演算効率が低くなるという問題がある。【００１１】
また、上記図１５及び図１６に示すような、１つの回路でフィルタ処理を繰り返し実行する手法では、演算回路が小さくなるというメリットがあるが、レイテンシが大きくなること、ある程度大きな容量を有するローカルメモリ１１２が必要となる等のデメリットがある。【００１２】
そこで、本発明は、多段フィルタ処理装置において処理効率の低下を招くことなく回路規模を縮小することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の態様は、入力データに対して複数のステージからなるフィルタ演算処理を実行することにより出力データを生成する多段フィルタ処理装置であって、前記各ステージにおける前記フィルタ演算処理を実行するフィルタ演算回路と、前記入力データ又は最終の前記ステージに至る前の前記ステージにおける前記フィルタ演算処理により生成される中間データを保持する処理データ保持回路と、前記入力データ又は前記中間データのデータ数を前記ステージ毎に測定するデータ数測定回路と、前記フィルタ演算処理を実行するに足る前記データ数を前記ステージ毎に規定する係数データを保持する係数データ保持回路と、前記フィルタ演算処理における前記ステージの切り替えを制御するものであって、前記係数データに基づいて前記データ数が現在の前記ステージにおける前記フィルタ演算処理を実行するに足るデータ数に達するまでの間、前記入力データ又は現在の前記ステージにおいて生成された前記中間データを前記処理データ保持回路に保持させ、前記データ数が前記フィルタ演算処理を実行するに足るデータ数に達したときに、当該処理データ保持回路に保持されていた全入力データ又は全中間データを前記フィルタ演算回路に入力し、現在の前記ステージにおける前記フィルタ演算処理を実行させるステージ切り替え制御回路とを備えるものである。【００１４】
本発明の第２の態様は、入力データに対して複数のステージからなるフィルタ演算処理を実行することにより出力データを生成する多段フィルタ処理方法であって、前記入力データ又は最終の前記ステージに至る前の前記ステージにおける前記フィルタ演算処理により生成される中間データのデータ数を前記ステージ毎に測定するステップと、前記フィルタ演算処理を実行するに足る前記データ数を前記ステージ毎に規定する係数データを読み出すステップと、前記係数データに基づいて、前記データ数が現在の前記ステージにおける前記フィルタ演算処理を実行するに足るデータ数に達するまでの間、前記入力データ又は現在の前記ステージにおいて生成された前記中間データをメモリに保持するステップと、前記データ数が前記フィルタ演算処理を実行するに足るデータ数に達したときに、前記保持されていた全入力データ又は全中間データに対して現在の前記ステージの前記フィルタ演算処理を実行するステップとを備えるものである。
【発明の効果】
【００１５】
本発明によれば、多段フィルタ処理装置において処理効率の低下を招くことなく回路規模を縮小することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態１に係る多段フィルタ処理装置の構成を示す図である。
【図２】実施の形態１に係る多段フィルタ処理装置におけるフィルタ演算回路の具体的構成を例示する図である。
【図３】実施の形態１に係る多段フィルタ処理装置におけるデータ数測定回路の具体的構成を例示する図である。
【図４】実施の形態１に係る多段フィルタ処理装置における係数メモリ読み出し制御回路の具体的構成を例示する図である。
【図５】実施の形態１に係る多段フィルタ処理装置におけるローカルメモリ書き込み制御回路の具体的構成を例示する図である。
【図６】実施の形態１に係る多段フィルタ処理装置におけるローカルメモリ読み出し制御回路の具体的構成を例示する図である。
【図７】実施の形態１に係る多段フィルタ処理装置におけるローカルメモリ読み出し制御回路から生成されるローカルメモリ読み出しアドレス信号を例示する図である。
【図８】実施の形態１に係る多段フィルタ処理装置におけるデータの流れの例示する図である。
【図９】ＩＩＲフィルタの一般的な構成を例示する図である。
【図１０】ＩＩＲフィルタの一般的な構成を例示する図である。
【図１１】ＩＩＲフィルタにおける一般的なデータの流れを例示する図である。
【図１２】ＩＩＲフィルタにおける一般的なデータの流れを例示する図である。
【図１３】実施の形態１に係る多段フィルタ装置を用いたときのＩＩＲフィルタにおけるデータの流れを例示する図である。
【図１４】一般的な多段フィルタ処理装置の第１の実装例を示す図である。
【図１５】一般的な多段フィルタ処理装置の第２の実装例を示す図である。
【図１６】図１５の例における処理の流れを示す図である。
【発明を実施するための形態】
【００１７】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態に係る多段フィルタ処理装置１の構成を示している。多段フィルタ処理装置１は、入力データに対して複数のステージからなる多段のフィルタ演算処理を実行することにより、出力データを生成するものである。多段フィルタ処理装置１は、フィルタ演算回路２、処理データ保持回路３、データ数測定回路４、係数データ保持回路５、及びステージ切り替え制御回路６を有する。
【００１８】
フィルタ演算回路２は、各ステージにおいてフィルタ演算処理を実行する。フィルタ演算回路２は、外部からの入力データ、処理データ保持回路３からの読み出しデータ、読み出しデータのステージ番号、及び係数データ保持回路５からの係数データを入力し、入力データ、中間データ、ステージ番号、及び出力データを出力する。入力データは、フィルタ演算回路２によるフィルタ演算処理が施される前のデータである。中間データは、最終のステージに至る前の各ステージにおけるフィルタ演算処理により生成されるデータである。出力データは、最終のステージにおけるフィルタ演算処理により生成されるデータである。
【００１９】
処理データ保持回路３は、入力データ又は中間データを保持する。本実施の形態に係る処理データ保持回路３は、ローカルメモリ１１、ローカルメモリ書き込み制御回路１２、及びローカルメモリ読み出し制御回路１３を有する。ローカルメモリ１１は、入力データ又は中間データを格納する。ローカルメモリ書き込み制御回路１２は、ローカルメモリ１１の記憶領域を指定し所定の周期で循環するアドレス信号をステージ毎に生成し、当該アドレス信号に基づいて入力データ又は中間データをローカルメモリ１１に格納する。ローカルメモリ読み出し制御回路１３は、現在のステージに対応するアドレス信号に対応する記憶領域に格納された入力データ又は中間データを読み出し、フィルタ演算回路２に出力する。
【００２０】
データ数測定回路４は、入力データ又は中間データのデータ数をステージ毎に測定する。本実施の形態に係るデータ数測定回路４は、処理データ保持回路３から供給されるデータ数測定要求信号に基づいて、入力データ又は中間データのデータ数が現在のステージにおけるフィルタ演算処理を実行するに足るデータ数に達したか否かを判定し、達した場合にはステージ切り替え制御回路６にステージ切り替え要求信号を出力する。
【００２１】
係数データ保持回路５は、フィルタ演算処理を実行するに足るデータ数（以降、規定データ数と略記する）をステージ毎に規定する係数データを保持する。本実施の形態に係る係数データ保持回路５は、係数データを格納する係数メモリ１４、及び現在のステージに対応する係数データを読み出し、フィルタ演算回路２に出力する係数メモリ読み出し制御回路１５を有する。
【００２２】
ステージ切り替え制御回路６は、フィルタ演算回路２によるフィルタ演算処理のステージを切り替えるものである。ステージ切り替え制御回路６は、データ数測定回路４により測定されたデータ数が現在のステージにおける規定データ数に達するまでの間、入力データ又は中間データを処理データ保持回路３に保持させ、当該データ数が現在のステージの規定データ数に達したときに、当該保持されていた入力データ又は中間データをフィルタ演算回路２に入力し、フィルタ演算回路２に現在のステージのフィルタ演算処理を実行させる。
【００２３】
先ず、外部から供給された入力データは、フィルタ演算回路２を通してローカルメモリ書き込み制御回路１２に入力され、ローカルメモリ１１に書き込まれる。このとき、入力データは、ステージ０用の入力データとして書き込まれる。
【００２４】
その後、上記書き込まれたステージ０用の入力データは、ローカルメモリ読み出し制御回路１３により読み出され、フィルタ演算回路２に出力される。これと同時に、係数メモリ読み出し制御回路１５により係数メモリ１４から読み出されたステージ０用の係数データがフィルタ演算回路２に供給される。フィルタ演算回路２は、ステージ０におけるフィルタ演算処理として、これらステージ０用の入力データ及び係数データに対して積和演算を実行し、その演算結果を内部のレジスタに格納する。
【００２５】
ステージ０において、上記積和処理が所定の回数繰り返された結果として得られる最終的な積和演算結果は、ステージ１のフィルタ演算処理の対象となる中間データとして、ローカルメモリ書き込み制御回路１２に入力され、ローカルメモリ１１に書き込まれる。このとき、このステージ１の中間データは、ステージ０の入力データとは別のアドレス範囲へ循環的に書き込まれる。
【００２６】
その後、ステージ１のフィルタ演算処理がステージ０と同様に行われ、その最終的な積和演算結果がステージ２のフィルタ演算処理の対象となる中間データとしてローカルメモリ１１に書き込まれる。
【００２７】
このような処理がステージの段数分行われ、最終的なフィルタ演算処理の結果が出力データとして多段フィルタ処理装置１の外部に出力される。
【００２８】
ステージ０におけるフィルタ演算処理は、当該処理を実行するに足る入力データがローカルメモリ１１に蓄積された時点、即ち入力データのデータ数がステージ０について設定された規定データ数に到達した時点で実行される。当該データ数のカウントは、データ数測定回路４により行われ、データ数が規定データ数に到達すると、その旨がステージ切り替え制御回路６に伝達される。これと同様に、ステージ１のフィルタ演算処理は、当該処理を実行するに足る中間データがローカルメモリ１１に蓄積された時点で実行される。後段のステージにおける処理も同様に行われる。
【００２９】
上記構成により、共有される演算回路及び小規模なメモリによって各段のフィルタ演算処理を最適なタイミングで実行することが可能となる。これにより、処理効率を向上させ、回路規模を小さくすることが可能となる。
【００３０】
図２は、フィルタ演算回路２の具体的な構成を例示している。本例に係るフィルタ演算回路２は、演算結果レジスタ２１、乗算器２２、加算器２３、セレクタ２４，２５，２７、インクリメンタ２６、フィルタ演算制御回路２８等を有する。
【００３１】
演算結果レジスタ２１は、多段フィルタ処理のステージ分だけ用意されている。書き込み・読み出しの対象となる演算結果レジスタ２１は、フィルタ演算制御回路２８により選択される。
【００３２】
読み出しデータ及び係数データは、乗算器２２により乗算された後、加算器２３により、０又は現在のステージに対応する演算結果レジスタ２１が保持する値が加算される。当該積和演算結果は、演算結果レジスタ２１に格納される。このようにして、連続して入力される読み出しデータ及び係数データの積和演算結果が演算結果レジスタ２１に順次格納され、この値がＦＩＲフィルタ演算の演算結果となる。
【００３３】
ＦＩＲフィルタ演算の演算結果と入力データとは調停され、セレクタ２０５によって選択され、入力データ、中間データ、又は出力データとして出力される。このとき、セレクタ２７から出力される書き込みデータのステージ番号には、入力データが出力されるときには０が設定され、ＦＩＲフィルタ演算結果（中間データ又は出力データ）が出力されるときには現在ステージ番号に１を加算した値が設定される。
【００３４】
図３は、データ数測定回路４の具体的な構成を例示している。データ数測定回路４は、データ数カウントレジスタ３１、繰り返し数保存レジスタ３２、比較器３５、加算器３３、セレクタ３４、データ数測定制御回路３６等を有する。
【００３５】
データ数カウントレジスタ３１及び繰り返し数保存レジスタ３２は、多段フィルタ処理のステージ分だけ用意されている。書き込み・読み出しの対象となるレジスタ３１，３２は、データ数測定制御回路３６により選択される。
【００３６】
データ数測定要求信号によりデータ数のカウントアップが指示されると、現在実行中のステージに対応するデータ数カウントレジスタ３１の値に１が加算され、この加算された値がデータ数カウントレジスタ３１に書き戻される。
【００３７】
繰り返し数保存レジスタ３２には、フィルタ演算処理の実行に必要なステージ毎に設定されたデータ数（規定データ数）が格納されている。比較器３５は、現在のステージのデータ数カウントレジスタ３１の値と、繰り返し数保存レジスタ３２の値とを比較し、結果が一致する場合にステージ切り替え要求信号を出力する。
【００３８】
図４は、係数メモリ読み出し制御回路１５の具体的な構成を例示している。係数メモリ読み出し制御回路１５は、係数カウントレジスタ４１、係数開始アドレスレジスタ４２、タップ数保存レジスタ４３、インクリメンタ４４、セレクタ４５、比較器４６、加算器４７、係数アドレス生成制御回路４９、ＦＩＦＯ回路４８等を有する。
【００３９】
係数カウントレジスタ４１、係数開始アドレスレジスタ４２、及びタップ数保存レジスタ４３は、多段フィルタ処理のステージ分だけ用意されている。書き込み・読み出しの対象となるレジスタ４１，４２，４３は、アドレス生成制御回路４９により選択される。
【００４０】
係数開始アドレスレジスタ４２には、各ステージにおける係数メモリ１４の開始アドレスが格納されている。タップ数保存レジスタ４３には、各ステージにおける規定データ数に対応するタップ数から１を引いた値が格納されている。係数カウントレジスタ４１の値と係数開始アドレスレジスタ４２の値とが加算されることにより、係数メモリアドレス信号が生成される。ここで、タップ数とは、１回のフィルタ演算処理における繰り返し回数である。１回のフィルタ演算処理におけるタップ数と規定データ数とは、通常一致するが、例えば下記式（１）のＦＩＲフィルタを実行する場合、規定データ数はタップ数の２倍となる。
【数１】
2013183096.tif 000003
ｘi：入力信号、ｙj：出力信号、ｃi：フィルタ係数、Ｎ：タップ数
【００４１】
先ず、係数カウントレジスタ４１に０が書き込まれ、アドレス生成が開始される。次に、インクリメンタ４４が係数カウントレジスタ４１に格納されている値に１を加算し、その加算結果が係数カウントレジスタ４１に格納される。比較器４６は、係数カウントレジスタ４１の値とタップ数保存レジスタ４３の値とを比較し、一致する場合には、係数カウントレジスタ４１に再び０がロードされる。このような構成により、ステージ毎に設定されたアドレス範囲を循環するようなリングバッファを形成することが可能になる。
【００４２】
係数メモリ１４から読み出された係数データ入力信号は、ＦＩＦＯ回路４８に一旦蓄えられ、係数データ出力信号として出力される。係数アドレス生成制御回路４９は、ＦＩＦＯ回路４８がオーバーフローしないようにアドレスの生成を制御する。
【００４３】
図５は、ローカルメモリ書き込み制御回路１２の具体的な構成を例示している。ローカルメモリ書き込み制御回路１２は、書き込みデータカウントレジスタ５１、書き込み開始アドレスレジスタ５２、バッファ長保存レジスタ５３、インクリメンタ５４、セレクタ５５、比較器５６、加算器５７、書き込みアドレス生成制御回路５９、ＦＩＦＯ回路５８等を有する。
【００４４】
書き込みデータカウントレジスタ５１、書き込み開始アドレスレジスタ５２、及びバッファ長保存レジスタ５３は、多段フィルタ処理のステージ分だけ用意されている。書き込み・読み出しの対象となるレジスタ５１，５２，５３は、アドレス生成制御回路５９により選択される。
【００４５】
書き込み開始アドレスレジスタ５２には、各ステージにおける書き込みメモリの開始アドレスが格納されている。バッファ長保存レジスタ５３には、各ステージにおけるローカルメモリのバッファ長から１を引いた値が格納されている。
【００４６】
書き込みカウントレジスタ５１の値と書き込み開始アドレスレジスタ５２の値とが加算されることにより、ローカルメモリ書き込みアドレス信号が生成される。
【００４７】
先ず、書き込みデータカウントレジスタ５１に０が書き込まれ、アドレス生成が開始される。次に、インクリメンタ５４が書き込みデータカウントレジスタ５１に格納されている値に１を加算し、その加算結果が書き込みデータカウントレジスタ５１に格納される。比較器５６は、書き込みデータカウントレジスタ５１の値とバッファ長保存レジスタ５３の値とを比較し、一致する場合には、書き込みデータカウントレジスタ５１に再び０がロードされる。このような構成により、ステージ毎に設定されたアドレス範囲を循環するようなリングバッファを形成することが可能になる。
【００４８】
フィルタ演算回路２から出力された入力データ又は中間データは、ＦＩＦＯ回路５８に一旦蓄えられ、ローカルメモリ書き込みアドレス信号と同期して、ローカルメモリ１１に出力される。書き込みアドレス生成制御回路５９は、ＦＩＦＯ回路５８がオーバーフローしないようにアドレスの生成を制御する。
【００４９】
ローカルメモリ１１からのデータの読み出しにおいては、１回のフィルタ演算毎に読み出すデータを少しずつずらしながら、同じデータを繰り返し読み出す必要がある。そのために、ローカルメモリ読み出し制御回路１３は、係数メモリ読み出し制御回路１５及びローカルメモリ書き込み制御回路１２よりも若干複雑な構成となる。
【００５０】
図７は、ローカルメモリ読み出し制御回路１３から生成されるローカルメモリ読み出しアドレス信号を例示している。本例に係るローカルメモリ読み出しアドレス信号は、レート変換率が１／２のデシメーションフィルタの場合であって、フィルタ演算処理の規定データ数が１２、ローカルメモリのバッファ長が１６と設定された場合のものである。ローカルメモリ１１のバッファ長は、常に規定データ数と同じか、それ以上でなければならない。
【００５１】
最初のフィルタ演算処理においては、０，１，２，３，〜１０，１１という１２個のアドレスに格納されたデータを読み出して演算を行う。次のフィルタ演算処理においては、レート変換率が１／２であるため、読み出しアドレスを２つずらし、２，３，４，５，〜１２，１３という１２個のアドレスに格納されたデータを読み出して演算を行う。次のフィルタ演算処理においては、４，５，６，７，〜１４，１５となり、その次のフィルタ演算処理においては、バッファ長が１６であるので、アドレスが１６で剰余した値となり、６，７，８，９，〜１５，０，１となる。
【００５２】
図６は、ローカルメモリ読み出し制御回路１３の具体的な構成例を示す。ローカルメモリ読み出し制御回路１３は、読み出しデータカウントレジスタ６１、タップ数保存レジスタ６２、通常ステップレジスタ６３、最終ステップレジスタ６４、バッファ長保存レジスタ６５、読み出しアドレスレジスタ６６、読み出し開始アドレスレジスタ６７、インクリメンタ６８、セレクタ６９，７１、比較器７０、加算器７２，７４、剰余演算回路７３、ＦＩＦＯ回路７５、読み出しアドレス生成制御回路７６等を有する。
【００５３】
読み出しデータカウントレジスタ６１、タップ数保存レジスタ６２、通常ステップレジスタ６３、最終ステップレジスタ６４、バッファ長保存レジスタ６５、読み出しアドレスレジスタ６６、及び読み出し開始アドレスレジスタ６７は、多段フィルタ処理のステージ分だけ用意されている。書き込み・読み出しの対象となるレジスタ６１，６２，６３，６４，６５，６６、６７は、読み出しアドレス生成制御回路７６により選択される。
【００５４】
読み出し開始アドレスレジスタ６７には、各ステージにおける読み出しメモリの開始アドレスが格納されており、図７の例では０となる。バッファ長保存レジスタ６５には、各ステージにおけるフィルタ演算のバッファ長が格納されており、図７の例では１６となる。タップ数保存レジスタ６２には、各ステージにおける規定データ数に対応するタップ数から１を引いた値が格納されており、図７の例では１１となる。通常ステップレジスタ６３には、通常時の読み出しアドレスの差が格納されており、図７の例では１となる。最終ステップレジスタ６４には、フィルタ演算終了時の読み出しアドレスの差にバッファ長を加算してバッファ長で剰余演算を行った値が格納されており、図７の例では、７となる。
【００５５】
読み出しアドレスレジスタ６６の値と読み出し開始アドレスレジスタ６７の値とが加算されることにより、ローカルメモリ読み出しアドレス信号が生成される。
【００５６】
先ず、読み出しデータカウントレジスタ６１及び読み出しアドレスレジスタ６６に０が書き込まれ、アドレス生成が開始される。読み出しデータカウントレジスタ６１及び読み出しアドレスレジスタ６６の更新は同時に行われる。
【００５７】
読み出しデータカウントレジスタ６１は、インクリメンタ６８によってインクリメントされ、タップ数保存レジスタ６２に格納された値と一致すると０にクリアされる。つまり、タップ数周期で同じ値を繰り返すカウンタとなっている。
【００５８】
通常は、読み出しアドレスレジスタ６６の値に通常ステップレジスタ６３の値を加算し、剰余演算回路７３によりバッファ長保存レジスタ６５に格納された値で剰余演算し、その結果により読み出しアドレスレジスタ６６の値が更新される。しかし、読み出しデータカウントレジスタ６１の値とタップ数保存レジスタ６２の値とが一致するときは、通常ステップレジスタ６３の値を用いずに、最終ステップレジスタ６４の値が用いられる。
【００５９】
このような構成にすることによって、ステージ毎に設定されたアドレス範囲を循環し、且つフィルタ演算処理毎に値をずらすようなアドレス生成が可能となる。
【００６０】
ローカルメモリ１１から読み出された読み出しデータは、ＦＩＦＯ回路７５に一旦蓄えられ、フィルタ演算回路２に出力される。このとき、ＦＩＦＯ回路７５がオーバーフローしないようにアドレス生成が制御される。
【００６１】
以下に、多段フィルタ処理装置１の詳細な動作を例示する。フィルタ演算回路２では、連続する読み出しデータ及び係数データを用いてＦＩＲフィルタ演算が行われ、その演算結果は、当該読み出しデータのステージ番号に相当する演算結果レジスタ２１に格納される。演算結果レジスタ２１に格納されたＦＩＲフィルタ演算結果と、入力データ又は中間データとは、フィルタ演算回路２内にあるアービタで調停され、入力データ、中間データ、又は出力データとして出力される。このとき、調停の結果、入力データがそのまま入力データとして出力されるときは、ステージ番号には０が設定される。一方、演算結果レジスタの値が中間データとして出力されるときは、読み出しデータステージ番号の値に１を加算した値がデータステージ番号として設定される。
【００６２】
ローカルメモリ書き込み制御回路１２では、複数のパラメータレジスタのうちステージ番号に対応するパラメータレジスタを選択し、そのパラメータの値に従って、フィルタ演算回路２から供給された入力データ又は中間データをローカルメモリ１１に格納する。このとき、ローカルメモリ１１の一定のアドレス範囲に循環的にデータが格納される。同時に、ローカルメモリ書き込み制御回路１２から、ローカルメモリ１１に書き込まれたデータ数をステージ番号毎に測定するためのデータ数測定要求信号がデータ数測定回路４に出力される。
【００６３】
データ数測定回路４では、ステージ番号毎に、ローカルメモリ１１に格納された入力データ又は中間データのデータ数が測定される。そして、当該データ数がそのステージにおいてフィルタ演算処理を実行するために必要な数（規定データ数）に到達したことが検出されると、ステージ切り替え要求信号が出力される。
【００６４】
ステージ切り替え制御回路６は、ステージ切り替え要求信号を入力すると、ローカルメモリ読み出し制御回路１３及び係数メモリ読み出し制御回路１５に対して、ステージ切り替え制御信号を出力する。
【００６５】
ローカルメモリ読み出し制御回路１３は、入力されるステージ切り替え制御信号が指定するステージに対応するパラメータを用いて、ローカルメモリ１１から連続的に入力データ又は中間データを読み出し、これらの読み出しデータ及びステージ番号をフィルタ演算回路２に出力する。
【００６６】
係数メモリ読み出し制御回路１５は、ステージ番号に対応するパラメータを用いて係数メモリ１４から連続的に係数データを読み出し、フィルタ演算回路２に出力する。
【００６７】
次に、全体的なデータの流れを具体的に例示する。先ず、入力データに対してステージ０のフィルタ演算処理が行われる。多段フィルタ処理回路１に入力された入力データは、フィルタ演算回路２を通じてローカルメモリ書き込み制御回路１２に入力される。
【００６８】
ローカルメモリ書き込み制御回路１２は、入力データをステージ０用のパラメータを用いてローカルメモリ１１に書き込むと同時に、ステージ０用のデータ数測定要求信号を出力する。
【００６９】
データ数測定回路４は、ステージ０用のデータ数カウントレジスタ３１をインクリメントし、当該インクリメントされる値が予め指定されたデータ数（規定データ数）と一致するときは、ステージ切り替え要求信号を出力する。
【００７０】
ステージ切り替え制御回路６は、ステージ切り替え要求信号を入力すると、ステージ０用のステージ切り替え制御信号をローカルメモリ読み出し制御回路１３及び係数メモリ読み出し制御回路１５に出力する。
【００７１】
ローカルメモリ読み出し制御回路１３は、ステージ０用のパラメータレジスタを用いて、ローカルメモリ１１からデータを読み出し、この読み出しデータをフィルタ演算回路２に出力する。これと同時に、読み出しデータのステージ番号として０を出力する。
【００７２】
係数メモリ読み出し制御回路１５は、ステージ０用のパラメータレジスタを用いて、係数メモリ１４から係数データを読み出し、フィルタ演算回路２に出力する。
【００７３】
フィルタ演算回路２は、入力された読み出しデータ及び係数データを用いてＦＩＲフィルタ演算を行い、ステージ０用の演算結果レジスタ２１にその演算結果を格納する。ＦＩＲフィルタ演算が終了すると、その演算結果を中間データとして、ローカルメモリ書き込み制御回路１２に出力する。これと同時に、現在のステージ番号に１を加算した値である１が出力される。
【００７４】
ローカルメモリ書き込み制御回路１２は、上記演算結果を、ステージ１用のパラメータを用いてローカルメモリ１１に書き込むと同時に、ステージ１用のデータ数測定要求信号を出力する。
【００７５】
データ数測定回路４は、ステージ１用のデータ数カウントレジスタ３１をインクリメントし、このインクリメントされた値が予め指定されたデータ数（規定データ数）と一致するときは、ステージ切り替え要求信号を発行する。
【００７６】
ステージ切り替え制御回路６は、ステージ切り替え要求信号を入力すると、ステージ１用のステージ切り替え制御信号をローカルメモリ読み出し制御回路１３及び係数メモリ読み出し制御回路１５に発行する。
【００７７】
ローカルメモリ読み出し制御回路１３は、ステージ１用のパラメータレジスタを用いて、ローカルメモリ１１からデータを読み出し、この読み出しデータをフィルタ演算回路２に出力する。これと同時に、読み出しデータのステージ番号として１を出力する。
【００７８】
係数メモリ読み出し制御回路１５は、ステージ１用のパラメータレジスタを用いて、係数メモリ１４から係数データを読み出し、フィルタ演算回路２に出力する。
【００７９】
フィルタ演算回路２は、入力された読み出しデータ及び係数データを用いて、ＦＩＲフィルタを行い、ステージ１用の演算結果レジスタ２１にその演算結果を格納する。ＦＩＲフィルタ演算が終了すると、その演算結果を中間データとして、ローカルメモリ書き込み制御回路１２に出力する。これと同時に、現在のステージ番号に１を加算した値である２が出力される。
【００８０】
以後同様の処理を繰り返すことにより、各ステージのＦＩＲフィルタ演算が行われる。フィルタ演算回路２において、最終段のＦＩＲフィルタ演算が終了すると、その演算結果が出力データとして外部に出力される。
【００８１】
上記構成によれば、ローカルメモリ１１の記憶領域は、次段のフィルタ演算処理に必要な分だけ残されていればよい。そのため、所定の記憶領域内に上記入力データ又は中間データを循環させて格納するようにローカルメモリ１１を実装することにより、ローカルメモリ１１の回路規模を最小限に抑えることが可能になる。
【００８２】
図８は、上記多段フィルタ処理装置１におけるデータの流れの例示している。本例においては、ステージ０の演算結果が４つたまったらステージ１のフィルタ処理を実行し、ステージ１の演算結果が２つたまったらステージ２の処理を実行する。
【００８３】
このような構成とし、且つローカルメモリ１１に格納するデータを一定のアドレス範囲に循環的に格納することにより、ローカルメモリ１１に保存されるデータ量を最小にすることが可能となり、ローカルメモリ１１のサイズを最小化できる。また、ステージ０、ステージ１、ステージ２のフィルタ処理を順次行うことにより、繰り返し処理を行う場合に比べレイテンシを最小化することができる。
【００８４】
また、本発明の他の応用例として、ＩＩＲフィルタの処理の効率化がある。図９及び図１０は、ＩＩＲフィルタの一般的な構成を例示している。このＩＩＲフィルタは、図１０に示すように、前段と後段の処理に分解することができ、これにより多段フィルタとすることができる。このようなＩＩＲフィルタにおいては、通常のＦＩＲフィルタと異なり、演算結果を次のフィルタ演算処理に用いるため、フィルタの演算がパイプライン処理されていると、どうしてもレイテンシが発生し、次段のフィルタ演算処理を実行するまでに空き時間が必要となる。
【００８５】
図１１及び図１２は、ＩＩＲフィルタにおける一般的なデータの流れを例示している。図１１は、前段及び後段の両方に演算回路を持ち、演算をパラレルに実行する場合を示している。図１２は、前段及び後段で演算回路を共有し、演算をシリアルに行う場合を示している。これらの場合、ＩＩＲフィルタの演算処理時においてパイプライン処理に伴う一定の空き時間が発生し、処理効率が低下する。
【００８６】
図１３は、本実施の形態に係る多段フィルタ装置１を用いたときのＩＩＲフィルタにおけるデータの流れを例示している。この場合、ＩＩＲフィルタの前段処理を行い、その空き時間に後段処理を行うことができるので、処理効率の低下を防ぐことができる。このように、本実施の形態によれば、多段フィルタ処理の効率を向上させると共に、回路規模の削減、省面積化等を実現することができる。
【００８７】
尚、本発明は上記実施の形態に限られるものではなく、趣旨を逸脱しない範囲で適宜変更することが可能なものである。
【００８８】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００８９】
この出願は、２０１２年６月８日に出願された日本出願特願２０１２−１３１２７０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９０】
１  多段フィルタ処理装置
２  フィルタ演算回路
３  処理データ保持回路
４  データ数測定回路
５  係数データ保持回路
６  ステージ切り替え制御回路
１１  ローカルメモリ
１２  ローカルメモリ書き込み制御回路
１３  ローカルメモリ読み出し制御回路
１４  係数メモリ
１５  係数メモリ読み出し制御回路
２１  演算結果レジスタ
２２  乗算器
２３，３３，４７，５７，７２，７４  加算器
２４，２５，２７，３４，４５，５５，６９，７１  セレクタ
２６，４４，５４，６８  インクリメンタ
２８  フィルタ演算制御回路
３１  データ数カウントレジスタ
３２  繰り返し数保存レジスタ
３５，４６，５６，７０  比較器
３６  データ数測定制御回路
４１  係数カウントレジスタ
４２  係数開始アドレスレジスタ
４３  タップ数保存レジスタ
４８，５８，７５  ＦＩＦＯ
４９  係数アドレス生成制御回路
５１  書き込みデータカウントレジスタ
５２  書き込み開始アドレスレジスタ
５３  バッファ長保存レジスタ
５９  書き込みアドレス生成制御回路
６１  読み出しデータカウントレジスタ
６２  タップ数保存レジスタ
６３  通常ステップレジスタ
６４  最終ステップレジスタ
６５  バッファ長保存レジスタ
６６  読み出しアドレスレジスタ
６７  読み出し開始アドレスレジスタ
７３  剰余演算回路
７６  読み出しアドレス生成制御回路
【図１】
2013183096.tif 000004
【図２】
2013183096.tif 000005
【図３】
2013183096.tif 000006
【図４】
2013183096.tif 000007
【図５】
2013183096.tif 000008
【図６】
2013183096.tif 000009
【図７】
2013183096.tif 000010
【図８】
2013183096.tif 000011
【図９】
2013183096.tif 000012
【図１０】
2013183096.tif 000013
【図１１】
2013183096.tif 000014
【図１２】
2013183096.tif 000015
【図１３】
2013183096.tif 000016
【図１４】
2013183096.tif 000017
【図１５】
2013183096.tif 000018
【図１６】
2013183096.tif 000019
【国際調査報告】
2013183096.tif 000020
2013183096.tif 000021
2013183096.tif 000022