(57)【要約】【課題】多くの演算装置を必要とせずに、フィルタ特性の優れたデシメーションフィルタを提供する。【解決手段】第１信号を入力し、選択的に出力するバッファメモリと、リングバッファ形式でフィルタ係数を出力する係数メモリと、バッファメモリが出力したデータと係数メモリが出力したフィルタ係数とを用いてフィルタ演算を行なう演算装置とを有する初段の演算ユニットと、前段のバッファメモリが出力したデータを遅延して出力するバッファメモリと、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力する係数バッファメモリと、自段のバッファメモリが出力したデータと自段の係数バッファメモリが出力したフィルタ係数を用いてフィルタ演算を行なう演算装置とを有する２段目以降の演算ユニットとを備えたデシメーションフィルタ。【選択図】図１
2012227594.tif 000002
【特許請求の範囲】
【請求項１】
第１サンプリング周波数でサンプリングされた第１信号を、前記第１サンプリング周波数より低い第２サンプリング周波数の第２信号に変換するためのデシメーションフィルタであって、
前記第１信号を入力し、選択的に出力するバッファメモリと、リングバッファ形式でフィルタ係数を出力する係数メモリと、前記バッファメモリが出力したデータと前記係数メモリが出力したフィルタ係数とを用いてフィルタ演算を行なう演算装置とを有する初段の演算ユニットと、
前段の演算ユニットのバッファメモリが出力したデータを遅延して出力するバッファメモリと、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力する係数バッファメモリと、自段のバッファメモリが出力したデータと自段の係数バッファメモリが出力したフィルタ係数を用いてフィルタ演算を行なう演算装置とを有する、１または複数個の２段目以降の演算ユニットとを備えたことを特徴とするデシメーションフィルタ。
【請求項２】
前記初段の演算ユニットのバッファメモリは、
前記第１信号として入力されるｄ０、ｄ１、ｄ２…に対して、開始データｓｄとしてｄ０を設定し、開始データｓｄから前記フィルタ演算のタップ数＋デシメーション比×（演算ユニット段数−１）個のデータを出力した後、（開始データｓｄからデシメーション比×演算ユニット段数）番目のデータに戻って、そのデータを開始データｓｄと設定して、開始データｓｄから前記フィルタ演算のタップ数＋デシメーション比×（演算ユニット段数−１）個のデータを出力する動作を繰り返すことを特徴とする請求項１に記載のデシメーションフィルタ。
【請求項３】
前記係数メモリは、
前記フィルタ演算のタップ数分のフィルタ係数の後にデシメーション比×（演算ユニット段数−１）個のダミーデータＤＤを付加したものを前記フィルタ係数としてリングバッファ形式で出力することを特徴とする請求項１または２に記載のデシメーションフィルタ。
【請求項４】
前記２段目以降の演算ユニットのバッファメモリは、
前記第１サンプリング周波数と、前記バッファメモリの読み出しクロック周波数との比をクロック比と称した場合、前段の演算ユニットのバッファメモリが出力したデータを、（デシメーション比×クロック比−デシメーション比）分遅延して出力することを特徴とする請求項１〜３のいずれか１項に記載のデシメーションフィルタ。
【請求項５】
前記係数バッファメモリは、
前記第１サンプリング周波数と、前記バッファメモリの読み出しクロック周波数との比をクロック比と称した場合、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を、（デシメーション比×クロック比）分遅延して出力することを特徴とする請求項１〜４のいずれか１項に記載のデシメーションフィルタ。
【請求項６】
第１サンプリング周波数でサンプリングされた第１信号を、前記第１サンプリング周波数より低い第２サンプリング周波数の第２信号に変換するためのデシメーションフィルタであって、
前記第１信号を入力し、選択的に出力するバッファメモリと、リングバッファ形式でフィルタ係数を出力する係数メモリと、前記バッファメモリが出力したデータと前記係数メモリが出力したフィルタ係数とを用いてフィルタ演算を行なう演算装置とを有する初段の演算ユニットと、
前記第１信号を入力し、段数に応じた遅延量で選択的に出力するバッファメモリと、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力する係数バッファメモリと、自段のバッファメモリが出力したデータと自段の係数バッファメモリが出力したフィルタ係数を用いてフィルタ演算を行なう演算装置とを有する、１または複数個の２段目以降の演算ユニットとを備えたことを特徴とするデシメーションフィルタ。
【請求項７】
前記各段の演算ユニットのバッファメモリは、
前記第１信号として入力されるｄ０、ｄ１、ｄ２…に対して、開始データｓｄとしてｄ０を設定し、開始データｓｄから少なくとも前記フィルタ演算のタップ数個のデータを出力した後、（開始データｓｄからデシメーション比×演算ユニット段数）番目のデータに戻って、そのデータを開始データｓｄと設定して、開始データｓｄから少なくとも前記フィルタ演算のタップ数個のデータを出力する動作を繰り返すことを特徴とする請求項６に記載のデシメーションフィルタ。
【請求項８】
前記２段目以降の演算ユニットにおいて、
前記係数バッファメモリに代えて、リングバッファ形式でフィルタ係数を出力する係数メモリを備え、
前記演算装置は、自段のバッファメモリが出力したデータと自段の係数メモリが出力したフィルタ係数を用いてフィルタ演算を行なうことを特徴とする請求項１〜７のいずれか１項に記載のデシメーションフィルタ。
【請求項９】
前記２段目以降の演算ユニットにおいて、
前記係数バッファメモリを省き、
前記演算装置は、自段のバッファメモリが出力したデータと前記初段の演算ユニットが備える係数メモリが出力したフィルタ係数を用いてフィルタ演算を行なうことを特徴とする請求項６または７に記載のデシメーションフィルタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、必要とする演算装置の数が少なく、特性の優れたデシメーションフィルタに関する。
【背景技術】
【０００２】
第１サンプリング周波数でサンプリングされたディジタル信号を、第１サンプリング周波数よりも低い第２サンプリング周波数のディジタル信号に変換する際に、デシメータ（間引き器：decimator）が用いられる。
【０００３】
デシメータでは、入力データに対してフィルタリング処理を行なった後、データを間引く処理を行なう。フィルタリング処理は、第２サンプリング周波数にダウンサンプリングする際に、第２サンプリング周波数の１／２の周波数（ナイキスト周波数）よりも高い成分が含まれていると、エイリアシングと呼ばれる折り返し歪みが生じてしまうことから、周波数帯域をナイキスト周波数以下に制限するために行なうものである。このフィルタリング処理に用いるフィルタは、デシメーションフィルタと呼ばれる。
【０００４】
例えば、特許文献１には、図５に示すような構成のデシメータ３００が記載されている。本図において、デシメータ３００は、第１サンプリング周波数の信号Ｓ１を入力し、バッファメモリ３１１に一時的に格納する。演算装置３１３は、タイミング制御回路３１４によるタイミング制御の下で、バッファメモリ３１１からデータを読み出し、係数メモリ３１２に格納されたフィルタ係数を用いた所定の演算を行なうことで帯域制限を施す。すなわち、バッファメモリ３１１、係数メモリ３１２、演算装置３１３、タイミング制御回路３１４でデシメーションフィルタ３１０を構成している。
【０００５】
そして、デシメータ３００は、デシメーションフィルタによって帯域制限が施されたデータをスイッチ回路３２０で第２サンプリング周波数にサブサンプリングすることで、第２サンプリング周波数の信号Ｓ２を出力する。デシメーションフィルタ３１０は、オーディオ帯の信号等の比較的低いサンプリング周波数に適している。
【０００６】
また、特許文献２には、図６に示すような構成のデシメータ４００が記載されている。本図において、デシメータ４００は、デシメーションフィルタ４１０を構成するＮ段連結された係数メモリ４１１と演算装置４１２とを備えている。１段目の係数メモリ４１１には、フィルタ係数が格納されており、２段目以降の係数メモリ４１１は、シフトレジスタとなっている。また、演算装置４１２は、乗算器とアキュムレータと備えている。
【０００７】
第１サンプリング周波数の信号Ｓ１を第２サンプリング周波数の信号Ｓ２に変換する場合、デシメーション比をＤＲとすると、それぞれの係数メモリ４１１からＤＲ段ずつずれたフィルタ係数を読み出して、それぞれの演算装置４１２が所定の演算を行なうことで帯域制限を施す。そして、スイッチ回路４２０で第２サンプリング周波数にサブサンプリングすることで、第２サンプリング周波数の信号Ｓ２を出力する。デシメーションフィルタ４１０は、比較的高いサンプリング周波数に適している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２１９５６０号公報
【特許文献２】特開２００８−１２４５９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
第１サンプリング周波数と第２サンプリング周波数との比であるデシメーション比が大きい場合には、複数個のデシメータを多段に接続することが行なわれている。例えば、２段のデシメータを接続する場合、図７に示すように、第１サンプリング周波数を、１段目の比較的高いサンプリング周波数に適したデシメータ４００（図６）で中間のサンプリング周波数に落としてから、２段目の比較的低いサンプリング周波数に適したデシメータ３００（図５）で第２サンプリング周波数に変換する。これにより、高速で動作させる必要のある１段目のデシメータ４００のフィルタの特性の要求性能（カットオフ特性）を緩和し、２段目のデシメータ３００で必要な帯域特性を実現することができる。
【００１０】
しかしながら、２段目のデシメータ３００で行なうべきデシメーション比が小さい場合には、必要な帯域特性を実現するための十分なフィルタ演算のタップ数を確保することができなくなる。
【００１１】
例えば、第１サンプリング周波数を１００ＭＨｚとし、１段目のデシメータでサンプリング周波数を１／４にデシメートする場合を想定する。この場合、２段目のデシメータには２５ＭＨｚのサンプリング周波数が入力されることになる。
【００１２】
２段目のデシメータに、比較的低いサンプリング周波数に適したデシメータ３００を用いる構成とすると、例えば、２段目のデシメーション比が１：３で３サンプル毎にフィルタ演算を完了する必要がある場合、フィルタの動作クロック周波数が１段目と同じ１００ＭＨｚであれば、１２タップのフィルタ演算しか実現できない。このタップ数のフィルタ演算では、必要な帯域制限をかけることは極めて困難である。
【００１３】
したがって、必要な帯域特性を実現するために、２段目にも比較的高いサンプリング周波数に適したデシメータ４００を用いなければならないが、必要となる演算装置数が多くなってしまい、回路的な負担が大きくなり、消費電力も増大するという問題があった。
【００１４】
そこで、本発明は、多くの演算装置を必要とせずに、フィルタ特性の優れたデシメーションフィルタを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明の第１の態様であるデシメーションフィルタは、第１サンプリング周波数でサンプリングされた第１信号を、前記第１サンプリング周波数より低い第２サンプリング周波数の第２信号に変換するためのデシメーションフィルタであって、前記第１信号を入力し、選択的に出力するバッファメモリと、リングバッファ形式でフィルタ係数を出力する係数メモリと、前記バッファメモリが出力したデータと前記係数メモリが出力したフィルタ係数とを用いてフィルタ演算を行なう演算装置とを有する初段の演算ユニットと、前段の演算ユニットのバッファメモリが出力したデータを遅延して出力するバッファメモリと、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力する係数バッファメモリと、自段のバッファメモリが出力したデータと自段の係数バッファメモリが出力したフィルタ係数を用いてフィルタ演算を行なう演算装置とを有する、１または複数個の２段目以降の演算ユニットとを備えたことを特徴とする。
【００１６】
ここで、前記初段の演算ユニットのバッファメモリは、前記第１信号として入力されるｄ０、ｄ１、ｄ２…に対して、開始データｓｄとしてｄ０を設定し、開始データｓｄから前記フィルタ演算のタップ数＋デシメーション比×（演算ユニット段数−１）個のデータを出力した後、（開始データｓｄからデシメーション比×演算ユニット段数）番目のデータに戻って、そのデータを開始データｓｄと設定して、開始データｓｄから前記フィルタ演算のタップ数＋デシメーション比×（演算ユニット段数−１）個のデータを出力する動作を繰り返すことができる。
【００１７】
また、前記係数メモリは、前記フィルタ演算のタップ数分のフィルタ係数の後にデシメーション比×（演算ユニット段数−１）個のダミーデータＤＤを付加したものを前記フィルタ係数としてリングバッファ形式で出力することができる。
【００１８】
また、前記２段目以降の演算ユニットのバッファメモリは、前記第１サンプリング周波数と、前記バッファメモリの読み出しクロック周波数との比をクロック比と称した場合、前段の演算ユニットのバッファメモリが出力したデータを、（デシメーション比×クロック比−デシメーション比）分遅延して出力することができる。
【００１９】
また、前記係数バッファメモリは、前記第１サンプリング周波数と、前記バッファメモリの読み出しクロック周波数との比をクロック比と称した場合、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を、（デシメーション比×クロック比）分遅延して出力することができる。
【００２０】
上記課題を解決するため、本発明の第２の態様であるデシメーションフィルタは、第１サンプリング周波数でサンプリングされた第１信号を、前記第１サンプリング周波数より低い第２サンプリング周波数の第２信号に変換するためのデシメーションフィルタであって、前記第１信号を入力し、選択的に出力するバッファメモリと、リングバッファ形式でフィルタ係数を出力する係数メモリと、前記バッファメモリが出力したデータと前記係数メモリが出力したフィルタ係数とを用いてフィルタ演算を行なう演算装置とを有する初段の演算ユニットと、前記第１信号を入力し、段数に応じた遅延量で選択的に出力するバッファメモリと、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力する係数バッファメモリと、自段のバッファメモリが出力したデータと自段の係数バッファメモリが出力したフィルタ係数を用いてフィルタ演算を行なう演算装置とを有する、１または複数個の２段目以降の演算ユニットとを備えたことを特徴とする。
【００２１】
ここで、前記各段の演算ユニットのバッファメモリは、前記第１信号として入力されるｄ０、ｄ１、ｄ２…に対して、開始データｓｄとしてｄ０を設定し、開始データｓｄから少なくとも前記フィルタ演算のタップ数個のデータを出力した後、（開始データｓｄからデシメーション比×演算ユニット段数）番目のデータに戻って、そのデータを開始データｓｄと設定して、開始データｓｄから少なくとも前記フィルタ演算のタップ数個のデータを出力する動作を繰り返すことができる。
【００２２】
いずれの態様においても、前記２段目以降の演算ユニットにおいて、前記係数バッファメモリに代えて、リングバッファ形式でフィルタ係数を出力する係数メモリを備え、前記演算装置は、自段のバッファメモリが出力したデータと自段の係数メモリが出力したフィルタ係数を用いてフィルタ演算を行なうようにしてもよい。
【００２３】
さらに、第２の態様では、前記２段目以降の演算ユニットにおいて、前記係数バッファメモリを省き、前記演算装置は、自段のバッファメモリが出力したデータと前記初段の演算ユニットが備える係数メモリが出力したフィルタ係数を用いてフィルタ演算を行なうようにしてもよい。
【発明の効果】
【００２４】
本発明によれば、多くの演算装置を必要とせずに、フィルタ特性の優れたデシメーションフィルタが提供される。
【図面の簡単な説明】
【００２５】
【図１】本実施形態に係るデシメータの構成を示すブロック図である。
【図２】デシメーションフィルタの動作について説明するタイミングチャートである。
【図３】デシメーション比毎のフィルタリング処理後のデータが順次生成されている様子を模式的に示した図である。
【図４】２段目以降のバッファメモリを初段のバッファメモリと並列に接続した場合の構成例を示すブロック図である。
【図５】従来のデシメータの第１の構成例を示すブロック図である。
【図６】従来のデシメータの第２の構成例を示すブロック図である。
【図７】２段のデシメータ
【発明を実施するための形態】
【００２６】
本発明の実施の形態について図面を参照して説明する。図１は、本実施形態に係るデシメータの構成を示すブロック図である。本図に示すようにデシメータ１０は、第１サンプリング周波数でサンプリングされたディジタル入力信号Ｓ１を入力し、第１サンプリング周波数よりも低い第２サンプリング周波数のディジタル信号Ｓ２に変換して出力する。また、デシメータ１０には、第１サンプリング周波数のクロックＣＫ１と、第１サンプリング周波数よりも十分高く、動作クロックとなるクロックＣＫ２とが入力される。
【００２７】
本実施形態では、クロックＣＫ１とクロックＣＫ２との比は、１：４（＝４）であるとする。すなわち、第１サンプリング周波数が、例えば、２５ＭＨｚであれば、動作クロックＣＫ２は、１００ＭＨｚとなる。以下では、クロックＣＫ１とクロックＣＫ２との比をクロック比ＣＲと称する。
【００２８】
デシメータ１０は、帯域制限を行なうデシメーションフィルタ１００と、第２サンプリング周波数にサブサンプリングして、信号Ｓ２として出力するスイッチ回路１５０とを備えている。
【００２９】
デシメーションフィルタ１００は、フィルタ演算を行なう多段の演算ユニットを備えて構成されている。初段の演算ユニットは、バッファメモリ１１１と演算装置１１２と係数メモリ１１３とメモリコントローラ１１４を備えており、２段目以降の演算ユニットは、バッファメモリ１２１、演算装置１２２、係数バッファメモリ１２３を備えている。
【００３０】
本実施形態では、デシメーションフィルタ１００は、４段の演算ユニットを備えているものとする。各演算ユニットの出力は、デシメーション比に応じてスイッチ回路１５０で切り替えられ、第２サンプリング周波数のディジタル信号Ｓ２として出力される。
【００３１】
以下では、演算ユニットの段数をＳＮと称し、デシメーション比をＤＲと称し、フィルタ演算のタップ数をＴＮと称する。なお、図１中において２段目以降の演算ユニットの各ブロックの符号には、２段目について「ａ」、３段目について「ｂ」、４段目について「ｃ」の識別子を付しているが、特に区別する必要がない場合は、識別子を省略して説明する。
【００３２】
初段の演算ユニットにおいて、バッファメモリ１１１には、入力信号Ｓ１と、クロックＣＫ１と、クロックＣＫ２とが入力される。バッファメモリ１１１は、クロックＣＫ１に同期して入力された入力信号Ｓ１を一時的に格納した後、クロックＣＫ２に同期して選択的にＤ１として出力する。このため、バッファメモリ１１１は、デュアルポートメモリを用いることが好ましい。以下では、入力信号Ｓ１をｄ０、ｄ１、ｄ２…で表わすものとする。
【００３３】
バッファメモリ１１１が選択的に出力するデータＤ１は、メモリコントローラ１１４により制御される。なお、メモリコントローラ１１４は、バッファメモリ１１１に内蔵させてもよい。バッファメモリ１１１の出力Ｄ１は、初段の演算装置１１２に入力されるとともに、２段目の演算ユニットのバッファメモリ１２１ａに入力される。
【００３４】
メモリコントローラ１１４は、バッファメモリ１１１に対して以下のような制御を行なう。すなわち、入力信号Ｓ１として入力されるｄ０、ｄ１、ｄ２…に対して、まず、開始データｓｄとしてｄ０を設定し、開始データｓｄからタップ数ＴＮ＋デシメーション比ＤＲ×（演算ユニット段数ＳＮ−１）個のデータをＣＫ２に同期して連続的にデータＤ１として出力させる。このため、データＤ１の出力は、バッファメモリ１１１に、タップ数ＴＮ＋デシメーション比ＤＲ×（演算ユニット段数ＳＮ−１）個分のデータが溜まってから開始することが望ましい。
【００３５】
初段の演算ユニットでは、ｄ０〜ｄ３８までしか使用しないが、次段以降の演算ユニットでｄ４７まで使用するために、データＤ１としてｄ０〜ｄ４７まで連続的に出力する。
【００３６】
その後は、開始データｓｄからデシメーション比ＤＲ×演算ユニット段数ＳＮ個番目のデータに戻って、そのデータを開始データｓｄと設定して、開始データｓｄからタップ数ＴＮ＋デシメーション比ＤＲ×（演算ユニット段数ＳＮ−１）個のデータをＣＫ２に同期して連続的にデータＤ１として出力する動作を繰り返させる。これは、最後段まで順次フィルタ演算を行なった後に、初段に戻ってフィルタ演算を行なうためである。
【００３７】
例えば、演算ユニット段数ＳＮを４とし、デシメーション比ＤＲを３、タップ数ＴＮを３９とした場合、図２に示すように、バッファメモリ１１１にｄ０からｄ４７まで蓄積されるのを待ってから、まず、ｄ０からｄ４７までのデータをＣＫ２に同期して連続的に出力する（時刻ｔ０〜時刻ｔ４）。
【００３８】
そして、ｄ０から１２個番目のｄ１２からｄ５９までのデータをＣＫ２に同期して連続的に出力する（時刻ｔ４〜）。以降は、ｄ２４からｄ７１、ｄ３６からｄ８３…というようにバッファメモリ１１１からデータＤ１として出力させる。
【００３９】
図１の説明に戻って、初段の演算ユニットにおいて、係数メモリ１１３には、フィルタ演算のためのフィルタ係数が格納される。ここで、格納されるフィルタ係数は、タップ数ＴＮ個のフィルタ係数の後にデシメーション比ＤＲ×（演算ユニット段数ＳＮ−１）個のダミーデータＤＤが付加されたものである。ダミーデータＤＤは、最後段のフィルタ演算を行なった後、初段に戻ったときのフィルタ係数開始位置を合わせるために用いるものであり、フィルタ演算には使用しないため、例えば、０とすることができる。ダミーデータＤＤが付加されたフィルタ係数は、リングバッファ形式で係数メモリ１１３に格納される。
【００４０】
係数メモリ１１３に格納されたフィルタ係数は、クロックＣＫ２に同期してフィルタ係数Ｃ１として読み出され、初段の演算装置１１２に入力されるとともに、２段目の係数バッファメモリ１２３ａに入力される。
【００４１】
本実施形態では、フィルタ演算のタップ数ＴＮを３９としているため、図２に示すように、係数メモリ１１３からは、フィルタ係数Ｃ１としてｃ０〜ｃ３８がクロックＣＫ２に同期して順次出力され（時刻ｔ０〜時刻ｔ３）、その後、９個のダミーデータＤＤが出力されることになる（時刻ｔ３〜時刻ｔ４）。
【００４２】
係数メモリ１１３は、リングバッファ形式でフィルタ係数を格納するため、以降は、フィルタ係数Ｃ１として、ｃ０〜ｃ３８の出力と、９個のダミーデータＤＤの出力とが繰り返される（時刻ｔ４〜）。
【００４３】
図１の説明に戻って、初段の演算ユニットにおいて、演算装置１１２は、バッファメモリ１１１から出力されたデータＤ１と、係数メモリ１１３から出力されたフィルタ係数Ｃ１とを用いてフィルタ演算を行ない、演算結果をスイッチ回路１５０に出力する。
【００４４】
本実施形態では、図２に示すように、時刻ｔ０から時刻ｔ３において、ｄ０×ｃ０＋ｄ１×ｃ１＋ｄ２×ｃ２…＋ｄ３７×ｃ３７＋ｄ３８×ｃ３８のフィルタ演算が行なわれ、ｄ０〜ｄ３８に対するタップ数ＴＮ３９のフィルタリング処理後のデータｆＤ０が算出される。
【００４５】
時刻ｔ３から時刻ｔ４は、ダミーデータＤＤであるため、フィルタ演算結果には影響を与えない。時刻ｔ４からは、ｄ１２×ｃ０＋ｄ１３×ｃ１＋ｄ１４×ｃ２…＋ｄ４９×ｃ３７＋ｄ５０×ｃ３８のフィルタ演算が行なわれ、ｄ１２〜ｄ５０に対するタップ数ＴＮ３９のフィルタリング処理後のデータｆＤ１２が算出される。
【００４６】
図１の説明に戻って、２段目以降の演算ユニットｎにおいて、バッファメモリ１２１には、初段のバッファメモリ１１１あるいは前段のバッファメモリ１２１から読み出されたデータＤ（ｎ−１）とクロックＣＫ２とが入力される。バッファメモリ１２１は、クロックＣＫ２に同期して入力されたデータＤ（ｎ−１）を、一時的に格納した後、クロックＣＫ２に同期して、データＤｎとして同段の演算装置１２２に出力するとともに、次段の演算ユニットのバッファメモリ１２１に出力する。
【００４７】
バッファメモリ１２１は、例えば、ＦＩＦＯメモリで構成することができる。バッファメモリ１２１の遅延量ＤＢは、
遅延量ＤＢ＝デシメーション比ＤＲ×クロック比ＣＲ−デシメーション比ＤＲ
と設定する。
【００４８】
例えば、デシメーション比ＤＲを３とした場合、クロック比ＣＲが４であれば、バッファメモリ１２１の遅延量ＤＢは、クロックＣＫ２で３×４−３＝９クロック分と定められる。また、デシメーション比ＤＲを１０とした場合、クロック比ＣＲが８であれば、バッファメモリ１２１の遅延量ＤＢは、１０×８−１０＝７０クロック分と定められる。
【００４９】
本実施形態では、２段目以降のバッファメモリ１２１の遅延量ＤＢは９となるため、図２に示すように２段目のバッファメモリ１２１ａの出力Ｄ２は、初段のバッファメモリ１２１の出力Ｄ１から９クロック遅れて出力される（時刻ｔ１）。
【００５０】
図１の説明に戻って、２段目以降の演算ユニットｎにおいて、係数バッファメモリ１２３は、初段の係数メモリ１１３あるいは前段の係数バッファメモリ１２３から読み出されたフィルタ係数Ｃ（ｎ−１）とクロックＣＫ２とが入力される。係数バッファメモリ１２３は、クロックＣＫ２に同期して入力されたフィルタ係数Ｃ（ｎ−１）を、一時的に格納した後、クロックＣＫ２に同期して、フィルタ係数Ｃｎとして同段の演算装置１２２に出力するとともに、次段の演算ユニットの係数バッファメモリ１２３に出力する。
【００５１】
係数バッファメモリ１２３は、例えば、ＦＩＦＯメモリで構成することができる。係数バッファメモリ１２３の遅延量ＤＣは、
遅延量ＤＣ＝デシメーション比ＤＲ×クロック比ＣＲ
と設定する。
【００５２】
本実施形態では、２段目以降の係数バッファメモリ１２３の遅延量は、１２となるため、図２に示すように２段目の係数バッファメモリ１２３ａの出力Ｃ２は、１段目の係数メモリ１１３の出力Ｃ１から１２クロック遅れて出力される（時刻ｔ２）。
【００５３】
図１の説明に戻って、２段目以降の演算ユニットｎにおいて演算装置１２２は、バッファメモリ１２１から出力されたデータＤｎと、係数バッファメモリ１２３から出力されたフィルタ係数Ｃｎとを用いてフィルタ演算を行ない、演算結果をスイッチ回路１５０に出力する。
【００５４】
本実施形態では、２段目の演算装置１２２ａは、図２に示すように、時刻ｔ２から時刻ｔ５において、ｄ３×ｃ０＋ｄ４×ｃ１＋ｄ５×ｃ２…＋ｄ４０×ｃ３７＋ｄ４１×ｃ３８のフィルタ演算が行なわれ、ｄ３〜ｄ４１に対するタップ数ＴＮ３９のフィルタリング処理後のデータｆＤ３が算出される。時刻ｔ１から時刻ｔ２は、データＤ２としてｄ０、ｄ１、ｄ２が入力されるが、２段目の演算装置１２２ａが時刻ｔ２から演算を開始することで、フィルタ演算結果には影響を与えないようになっている。
【００５５】
同様に、３段目の演算装置１２２ｂでは、ｄ６〜ｄ４４に対するフィルタリング処理後のデータｆＤ６が算出され、４段目の演算装置１２２ｃでは、ｄ９〜ｄ４７に対するフィルタリング処理後のデータｆＤ９が順次算出される。
【００５６】
その後は、１段目の演算装置１１２で、ｄ１２〜ｄ５１に対するフィルタリング処理後のデータｆＤ１２が算出され、２段目の演算装置１２２ａで、ｄ１５〜ｄ５４に対するフィルタリング処理後のデータｆＤ１５が算出されていく。図３（ａ）は、デシメーション比毎のフィルタリング処理後のデータが順次生成されている様子を模式的に示している。
【００５７】
これらのフィルタリング処理後のデータｆＤ０、ｆＤ３、ｆＤ６、ｆＤ９、ｆＤ１２、ｆＤ１５…を、スイッチ回路１５０が第２サンプリング周波数で順次出力することで、第１サンプリング周波数の入力信号Ｓ１が、デシメーション比ＤＲが３である第２サンプリング周波数の信号Ｓ２に変換されることになる。
【００５８】
このように、本実施形態のデシメーションフィルタ１００では、バッファメモリと演算装置とを備えた演算ユニットを複数段連結し、デシメーション比の個数分入力データをずらしたフィルタ演算を行なうようにすることで、少ない演算装置で多くのタップ数のフィルタ演算を行なえるようにし、優れたフィルタ特性を得るようにしている。
【００５９】
図１の例では、４個の演算装置で３９タップのフィルタ演算を実現しており、少ない演算装置では、同条件で１２タップ程度しか実現できなかった従来のデシメーションフィルタと比較して大幅にフィルタ特性が改善されている。もちろん、演算装置の数は４個に限られず、タップ数やデシメーション比等の条件によって２個で十分の場合もあれば、８個必要となる場合もあり得る。
【００６０】
本実施形態のデシメーションフィルタ１００では、演算ユニットを増やすことで、容易にフィルタ演算のタップ数を増やすことが可能であり、十分な帯域特性を有するデシメーションフィルタを、多量の演算装置を用いることなく実現することができ、回路コストや消費電力を削減することができる。
【００６１】
また、タップ数やデシメーション比等に応じて複数備えた演算装置の一部を用いてデシメーションフィルタを構成してもよく、この場合、消費電力を一層削減することができる。なお、クロック比ＣＲを高くすれば、演算ユニットの数をさらに少なくすることができる。
【００６２】
なお、上述の例では、２段目以降のバッファメモリ２２１に、デシメーション比ＤＲとクロック比ＣＲとで定められる遅延量ＤＢを与えていたが、これらのバッファメモリを初段のバッファメモリ１１１と並列に接続して、それぞれのバッファメモリから初段のバッファメモリ１１１と同様の読み出し出し順で、タイミングをずらしてそれぞれの演算装置にデータＤｎを出力するようにしてもよい。
【００６３】
図４は、２段目以降のバッファメモリを初段のバッファメモリ１１１と並列に接続した場合の構成例を示すブロック図である。図１の構成と同じブロックについては同じ符号を付して、説明を省略する。
【００６４】
本図に示すように、２段目以降のバッファメモリ２２１には、入力信号Ｓ１と、クロックＣＫ１と、クロックＣＫ２とが入力される。バッファメモリ２２１は、クロックＣＫ１に同期して入力された入力信号Ｓ１を一時的に格納した後、クロックＣＫ２に同期して選択的にＤ２、Ｄ３、Ｄ４として出力する。このため、バッファメモリ２２１は、デュアルポートメモリを用いることが好ましい。
【００６５】
バッファメモリ１１１とバッファメモリ２２１とが選択的に出力するデータＤ１、Ｄ２、Ｄ３、Ｄ４は、メモリコントローラ２１４により制御される。
【００６６】
メモリコントローラ２１４は、バッファメモリ２２１に対してバッファメモリ１１１と同じ読み出し出し順でデータＤ２を出力させるが、２段目のバッファメモリ２２１ａは、初段のバッファメモリ１１１よりも、デシメーション比ＤＲ×クロック比ＣＲ−デシメーション比ＤＲクロック分タイミングを遅らせる。
【００６７】
３段目以降のバッファメモリ２２１についても、バッファメモリ１１１と同じ読み出し出し順でデータＤｎを出力させるが、前段のバッファメモリ２２１よりも、デシメーション比ＤＲ×クロック比ＣＲ−デシメーション比ＤＲクロック分タイミングを遅らせる。このような制御を行なうことにより、図２に示したタイミングと同様のタイミングでデータＤｎを出力することができるようになる。
【００６８】
さらに、図４に示した構成では、バッファメモリ１１１とバッファメモリ２２１は、次段以降で用いるデータを出力せずに、自段の演算ユニットで用いるデータのみを出力すればよいため、図３（ｂ）に示すようなタイミングでフィルタ演算を行なうことができる。係数メモリ１１３のダミーデータＤＤも不要である。
【００６９】
このとき、上述の例とは逆に、１段目のバッファメモリ１１１のデータ出力および２段目、３段目のバッファメモリ２２１の出力を、４段目のバッファメモリ２２１ｃのデータ出力タイミングに揃えるように遅らせるようにしてもよい。この場合、係数メモリｃ１１３から出力されるフィルタ係数Ｃｎを同じタイミングで共通に使用することができるため、係数バッファメモリ１２３ａ、１２３ｂ、１２３ｃを省くことができる。
【００７０】
また、上述の例では、２段目以降の演算ユニットに、係数バッファメモリ１２３を備えさせ、前段の係数メモリあるいは係数バッファメモリが出力したフィルタ係数を遅延して出力するようにしていたが、係数バッファメモリ１２３に代えて、初段と同様の係数メモリ１１３を備えさせるようにしてもよい。
【００７１】
この場合、図４に示したメモリコントローラ２１４がそれぞれの係数メモリ１１３に対して、図２あるいは図３（ｂ）に示すようなタイミングで、各バッファメモリ１１１、１２１、２２１の出力データに対応するフィルタ係数Ｃｎを出力するように制御すればよい。あるいは、出力を開始するフィルタ係数を各段の係数メモリ１１３毎にずらすようにしてもよい。
【符号の説明】
【００７２】
１０…デシメータ、１００…デシメーションフィルタ、１１１…バッファメモリ、１１２…演算装置、１１３…係数メモリ、１１４…メモリコントローラ、１２１…バッファメモリ、１２２…演算装置、１２３…係数バッファメモリ、１５０…スイッチ回路、２１４…メモリコントローラ、２２１…バッファメモリ、３００…デシメータ、３１０…デシメーションフィルタ、３１１…バッファメモリ、３１２…係数メモリ、３１３…演算装置、３１４…タイミング制御回路、３２０…スイッチ回路、４００…デシメータ、４１０…デシメーションフィルタ、４１１…係数メモリ、４１２…演算装置、４２０…スイッチ回路
【図１】
2012227594.tif 000003
【図２】
2012227594.tif 000004
【図３】
2012227594.tif 000005
【図４】
2012227594.tif 000006
【図５】
2012227594.tif 000007
【図６】
2012227594.tif 000008
【図７】
2012227594.tif 000009