(57)【要約】  フィルタ性能を維持しつつ、回路規模や消費電力を小さくするために、所定の周波数範囲のデータに対して第１変換処理を実行する第１変換回路と、第１変換回路によって第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行するフィルタ処理回路と、フィルタ処理回路によってフィルタ処理がなされたデータに対して第２変換処理を実行する第２変換回路とを備えるデジタルフィルタ装置とする。
2017183563.tif 000002
【特許請求の範囲】
【請求項１】
所定の周波数範囲のデータに対して第１変換処理を実行する第１変換回路と、
前記第１変換回路によって前記第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行するフィルタ処理回路と、
前記フィルタ処理回路によって前記フィルタ処理がなされたデータに対して第２変換処理を実行する第２変換回路とを備えるデジタルフィルタ装置。
【請求項２】
前記フィルタ処理回路は、
演算ビット幅を変更しても所望のフィルタ特性が得られる周波数成分のデータが前記第１の周波数成分のデータに設定される演算回路を含む請求項１に記載のデジタルフィルタ装置。
【請求項３】
前記フィルタ処理回路は、
前記第１の周波数成分のデータの演算ビット幅を縮小して前記フィルタ処理を実行する請求項２に記載のデジタルフィルタ装置。
【請求項４】
前記フィルタ処理回路は、
前記第１の周波数成分のデータの演算ビット幅が、前記他の周波数範囲のデータの演算ビット幅と比べて小さいビット幅に設定される前記演算回路を含む請求項３に記載のデジタルフィルタ装置。
【請求項５】
前記第１変換回路は、
高速フーリエ変換処理および逆フーリエ変換処理のいずれかを実行し、
前記第２変換回路は、
前記第１変換回路が高速フーリエ変換処理を実行した場合には逆フーリエ変換処理を実行し、前記第１変換回路が逆高速フーリエ変換処理を実行した場合にはフーリエ変換処理を実行する請求項１乃至４のいずれか一項に記載のデジタルフィルタ装置。
【請求項６】
前記第１変換回路は、
第１および第２の順序のいずれかで第１のデータを入力し、入力した前記第１のデータに対して前記第１変換処理を実行することで生成した第２のデータを前記第２の順序で出力し、
前記フィルタ処理回路は、
前記第２の順序で前記第２のデータを入力し、入力した前記第２のデータに対して前記フィルタ処理を実行することで生成した第３のデータを前記第２の順序で出力し、
前記第２変換回路は、
前記第２の順序で前記第３のデータを入力し、入力した前記第３のデータに対して前記第２変換処理を実行することで生成した第４のデータを前記第１および第２の順序のいずれかで出力する請求項１乃至５のいずれか一項に記載のデジタルフィルタ装置。
【請求項７】
前記フィルタ処理回路は、
前記第２のデータを入力とし、入力した前記第２のデータのうちいずれかのデータのビット幅を縮小する第１ビット幅縮小回路と、
前記フィルタ処理を実行するためのフィルタ係数データを入力とし、前記第１ビット幅縮小回路によってビット幅が縮小されたデータに対応するフィルタ係数のビット幅を縮小する第２ビット幅縮小回路と、
前記第１ビット幅縮小回路によってビット幅を縮小されたデータを含む前記第２のデータと、前記第２ビット幅縮小回路によってビット幅を縮小されたフィルタ係数を含む前記フィルタ係数データとを用いて演算を実行する演算回路と、
前記第１ビット幅縮小回路によってビット幅を縮小されたデータのうち前記フィルタ処理回路によって前記フィルタ処理がなされたデータのビット幅を拡張するビット幅拡張回路とを有する請求項６に記載のデジタルフィルタ装置。
【請求項８】
前記第１ビット幅縮小回路は、切り捨て処理および丸め処理のいずれかを用いてデータのビット幅を縮小し、
前記第２ビット幅縮小回路は、切り捨て処理および丸め処理のいずれかを用いてフィルタ係数のビット幅を縮小する請求項７に記載のデジタルフィルタ装置。
【請求項９】
所定の周波数範囲のデータに対して第１変換処理を実行し、
前記第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行し、
前記フィルタ処理がなされたデータに対して第２変換処理を実行するデジタルフィルタ処理方法。
【請求項１０】
所定の周波数範囲のデータに対して第１変換処理を実行する処理と、
前記第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行する処理と、
前記フィルタ処理がなされたデータに対して第２変換処理を実行する処理とをコンピュータに実行させるデジタルフィルタ処理プログラムを記録するプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理を行うデジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム記録媒体に関する。
【背景技術】
【０００２】
高速フーリエ変換（以下、ＦＦＴ：Fast Fourier Transform）処理は、デジタル信号処理における重要な処理の１つである。例えば、ＦＦＴは、伝送中の信号の波形歪みを補償するための周波数領域等化に用いられる。周波数領域等化では、時間領域上の信号データをＦＦＴによって周波数領域上のデータに変換した後に、等化のためのフィルタ処理を行う。そして、フィルタ処理後のデータを逆高速フーリエ変換（以下、ＩＦＦＴ：Inverse FFT）によって時間領域上の信号データに再変換し、元の時間領域上における信号の波形歪みが補償される。これ以降、ＦＦＴとＩＦＦＴとを区別しないときは、「ＦＦＴ／ＩＦＦＴ」と表記する。【０００３】
一般に、ＦＦＴ／ＩＦＦＴ処理では、「バタフライ演算」が用いられる（例えば、特許文献１（第３−５頁、第２５図）参照）。また、非特許文献１には、効率的なＦＦＴ／ＩＦＦＴ処理方式であるＣｏｏｌｅｙ−Ｔｕｋｅｙによるバタフライ演算について開示されている。ところで、Ｃｏｏｌｅｙ−Ｔｕｋｅｙによるバタフライ演算には、ポイント数が大きい場合、ＦＦＴ／ＩＦＦＴの回路が複雑になるという問題点がある。それに対し、非特許文献２には、ポイント数の大きな演算を２つの小さなＦＦＴ／ＩＦＦＴに分解するＰｒｉｍｅ  Ｆａｃｔｏｒ法について開示されている。【０００４】
バタフライ演算では、逐次的な順序に並べられたデータが所定の規則に従った順序で読み出されて処理されるため、データの並べ替えが必要である（例えば、特許文献２（第５頁、第２図および第３図）、特許文献３（第５頁、第１図）参照）。一般に、データの並べ替えには、ＲＡＭ（Random Access Memory）やレジスタ等の記憶手段が用いられる（例えば、特許文献３（第５頁、第１図）、特許文献４（第９−１０頁、第３図）参照）。【０００５】
一般的なデジタル信号処理においては、浮動小数点や固定小数点、ブロック浮動小数点による演算が用いられる。浮動小数点による演算は、扱う信号データの値の範囲が広い場合でも高い精度で演算できるという利点がある一方で、複雑な回路が必要になるために回路規模や消費電力が大きいという問題がある。また、固定小数点による演算は、回路が単純であるために回路規模や消費電力が小さいという利点がある一方で、演算精度が低いという問題がある。これに対し、ブロック浮動小数点による演算は、浮動小数点と固定小数点の双方の利点を兼ね備える。ブロック浮動小数点による演算では、複数の信号データを１つのブロックとしてまとめ、各ブロック単位で共通の指数をもつようにブロック全体で正規化する。【０００６】
浮動小数点や固定小数点、ブロック浮動小数点を用いたいずれの演算方式においても、信号データを表現するビット幅が大きいほど、演算精度が高くなる一方で、回路規模や消費電力が大きくなる。すなわち、いずれの演算方式においても、信号データを表現するビット幅に関して、演算精度と、回路規模や消費電力とはトレードオフの関係にある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−１３７８３２号公報
【特許文献２】特開２００５−１０１６９５号公報
【特許文献３】特開２００１−５６８０６号公報
【特許文献４】国際公開第２０１３／０５７８５５号
【非特許文献】
【０００８】
【非特許文献１】J.W.Cooley, J.W.Tukey, “An Algorithm for the Machine Calculation of Complex Fourier Series,” Mathematics of Computation, US, American Mathematical Society, Apr. 1965, Vol.19, No.90, pp.297-301
【非特許文献２】D.P.Kolba, “A Prime Factor FFT Algorithm Using High-Speed Convolution,” IEEE Trans. on Acoustics, US, IEEE Signal Processing Society, Aug. 1977, Vol.29, No.4, pp.281-294
【発明の概要】
【発明が解決しようとする課題】
【０００９】
フィルタ処理においては、演算精度を高くするために信号データのビット幅を大きくすると回路規模や消費電力が増大する一方、回路規模や消費電力を低減するために信号データのビット幅を小さくすると演算精度が低下してしまう。そのため、フィルタ処理における回路規模や消費電力を削減するためには、フィルタ処理回路を構成する部分回路について最適化することが望ましい。すなわち、演算精度が低下してもフィルタ性能への影響が少ない部分回路について、演算精度の低下によるフィルタ性能の劣化が許容できる範囲内で信号データのビット幅を必要十分な大きさに最適化することが望ましい。【００１０】
ところで、演算精度が低下してもフィルタ性能への影響が少ない部分回路が存在しない場合がある。また、演算精度が低下してもフィルタ性能への影響が少ない部分回路が存在する場合であっても、フィルタ処理回路を構成する部分回路が膨大な場合、その部分回路を見つけるのが困難である。すなわち、演算精度が低下してもフィルタ性能への影響が少ない部分回路が見つからない場合、信号データのビット幅を必要十分な大きさに最適化することができず、フィルタ処理における回路規模や消費電力を削減できないという問題がある。【００１１】
特許文献４によれば、時間領域の信号に対する適応等化処理を時間領域ではなく周波数領域で行うことによって、回路規模の増大および動作クロック周波数の増加を抑えることができる。ところで、特許文献４においては、フィルタ処理を実行する乗算器で使用する適応等化器係数の一部をゼロにすることによって、複数のタップ係数のうち、所望の処理を実現するためには不要な一部のタップ係数を構成する全てのビットを０にする。そのため、特許文献４には、所望のタップ係数以外をゼロにすることによって、フィルタ性能が低下するという問題点があった。【００１２】
本発明の目的は、上述した課題を解決するため、フィルタ性能を維持しつつ、回路規模や消費電力を小さくすることができるデジタルフィルタ装置を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の一態様において、デジタルフィルタ装置は、所定の周波数範囲のデータに対して第１変換処理を実行する第１変換回路と、第１変換回路によって第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行するフィルタ処理回路と、フィルタ処理回路によってフィルタ処理がなされたデータに対して第２変換処理を実行する第２変換回路とを備える。【００１４】
本発明の一態様において、デジタルフィルタ処理方法においては、所定の周波数範囲のデータに対して第１変換処理を実行し、第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行し、フィルタ処理がなされたデータに対して第２変換処理を実行する。【００１５】
本発明の一態様において、プログラム記録媒体は、所定の周波数範囲のデータに対して第１変換処理を実行する処理と、第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行する処理と、フィルタ処理がなされたデータに対して第２変換処理を実行する処理とをコンピュータに実行させるデジタルフィルタ処理プログラムを記録する。
【発明の効果】
【００１６】
本発明によれば、フィルタ性能を維持しつつ、回路規模や消費電力を小さくすることができるデジタルフィルタ装置を提供することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係るデジタルフィルタ装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るデジタルフィルタ装置が実行する２段階のバタフライ演算を用いる６４ポイントＦＦＴ処理のデータフローを示す概念図である。
【図３】本発明の第１の実施形態に係るデジタルフィルタ装置のＦＦＴ回路の構成を示すブロック図である。
【図４】本発明の第１の実施形態に係るデジタルフィルタ装置が演算に用いるデータ組の配列の一つである逐次順序について説明するための図である。
【図５】発明の第１の実施形態に係るデジタルフィルタ装置が演算に用いるデータ組の配列の一つであるビットリバース順序について説明するための図である。
【図６】本発明の第１の実施形態に係るデジタルフィルタ装置のデータ並べ替え回路の構成例を示すブロック図である。
【図７】本発明の第１の実施形態に係るデジタルフィルタ装置のフィルタ処理回路の構成例を示すブロック図である。
【図８】本発明の第１の実施形態に係るデジタルフィルタ装置のＩＦＦＴ回路の構成を示すブロック図である。
【図９】本発明の第２の実施形態に係るデジタルフィルタ装置の構成を示すブロック図である。
【図１０】本発明の第２の実施形態に係るデジタルフィルタ装置のフィルタ処理回路の構成例を示すブロック図である。
【図１１】本発明の第３の実施形態に係るデジタルフィルタ装置の構成を示すブロック図である。
【図１２】本発明の第３の実施形態に係るデジタルフィルタ装置のフィルタ処理回路の構成を示すブロック図である。
【図１３】本発明の各実施形態に係るデジタルフィルタ装置を実現するためのハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００１９】
（第１の実施形態）
まず、本発明の第１の実施形態に係るデジタルフィルタ装置について図面を参照しながら説明する。以下において、高速フーリエ変換のことをＦＦＴ（Fast Fourier Transform）、逆高速フーリエ変換のことをＩＦＦＴ（Inverse FFT）と記載する。
【００２０】
図１は、本実施形態のデジタルフィルタ装置１１の構成を示すブロック図である。デジタルフィルタ装置１１は、ＦＦＴ回路２１、フィルタ処理回路３１およびＩＦＦＴ回路４１を備える。
【００２１】
ＦＦＴ回路２１は、時間領域における複素数信号ｘ（ｎ）を入力する。ｎは、時間領域上の信号サンプル番号を示す０≦ｎ≦Ｎ−１の整数であり、ＮはＦＦＴの変換サンプル数（ＦＦＴブロックサイズ）を示す自然数である。複素数信号ｘ（ｎ）は、実部ｒ（ｎ）、虚部ｓ（ｎ）および虚数単位ｊを用いて、以下の式１のように表される。
ｘ（ｎ）＝ｒ（ｎ）＋ｊｓ（ｎ）・・・（１）
ＦＦＴ回路２１は、入力された複素数信号ｘ（ｎ）を、ＦＦＴによって周波数領域の複素数信号Ｘ（ｋ）に変換する。ｋは、周波数領域上の周波数番号を示す０≦ｋ≦Ｎ−１の整数である。複素数信号Ｘ（ｋ）は、実部Ａ（ｋ）、虚部Ｂ（ｋ）および虚数単位ｊを用いて、以下の式２のように表される。
Ｘ（ｋ）＝Ａ（ｋ）＋ｊＢ（ｋ）・・・（２）
ＦＦＴ回路２１は、複素数信号Ｘ（ｋ）をフィルタ処理回路３１に出力する。
【００２２】
フィルタ処理回路３１は、ＦＦＴ回路２１から入力される複素数信号Ｘ（ｋ）に対して、フィルタ係数Ｃ（ｋ）を用いて複素数乗算による複素数フィルタ処理を実行し、複素数信号Ｘ’（ｋ）を算出する。複素数信号Ｘ’（ｋ）は、以下の式３によって算出される。
Ｘ’（ｋ）＝Ｘ（ｋ）×Ｃ（ｋ）・・・（３）
フィルタ処理回路３１は、算出した複素数信号Ｘ’（ｋ）をＩＦＦＴ回路４１に出力する。
【００２３】
ＩＦＦＴ回路４１は、入力された複素数信号Ｘ’（ｋ）に対して、ＩＦＦＴによって時間領域の複素数信号ｘ’’（ｎ）を生成する。ＩＦＦＴ回路４１は、生成した複素数信号ｘ’’（ｎ）を出力する。
【００２４】
〔データフロー〕
ここで、図２を用いて、２段階の基数８のバタフライ演算処理に分解された６４ポイントＦＦＴをＰｒｉｍｅ  Ｆａｃｔｏｒ法によって実行するデータフロー１００を示す。
【００２５】
図２のデータフロー１００は、データ並べ替え処理１０１、バタフライ演算処理１０２、バタフライ演算処理１０３およびひねり乗算処理１０４を含む。バタフライ演算処理１０２およびバタフライ演算処理１０３においては、延べ１６回の基数８のバタフライ演算処理が実行される。
【００２６】
図２のデータフロー１００において、入力された時間領域のデータｘ（ｎ）は、ＦＦＴ処理によって周波数領域の信号Ｘ（ｋ）にフーリエ変換される（ｎ＝０、１、・・・、６３；ｋ＝０、１、・・・、６３）。図２のデータフロー１００は、ＩＦＦＴ処理を行う場合についても、基本構成は同じである。
【００２７】
ＦＦＴのポイント数が大きい場合、図２のデータフロー１００の全てを実現するためには、膨大な規模の回路を要する。そのため、ＦＦＴのポイント数が大きい場合、データフロー１００の全ての処理に対応させて回路を構成させるのではなく、データフロー１００の一部の処理をいずれかの回路に負わせる。すなわち、必要な処理性能に応じて、データフロー１００の一部分の処理を実現する回路を繰り返し使用することによって、ＦＦＴ処理の全体を実現すればよい。
【００２８】
例えば、図２のデータフロー１００において、８個のデータに対して並列にＦＦＴ処理を行うＦＦＴ回路２１を物理的な回路として作成した場合、合計８回の繰り返し処理により６４ポイントＦＦＴ処理を実現することができる。これ以降、「８個のデータに対して並列で」ということを「８データ並列で」と記載する。
【００２９】
８回の繰り返し処理では、８個のデータに対して行われる部分データフロー１０５ａ〜１０５ｈのそれぞれに相当する処理を順に行う。なお、図２においては、部分データフロー１０５ｃ、部分データフロー１０５ｄ、部分データフロー１０５ｅ、部分データフロー１０５ｆ、部分データフロー１０５ｇを省略している。
【００３０】
具体的には、１回目には部分データフロー１０５ａに相当する処理を行い、２回目には部分データフロー１０５ｂに相当する処理を行う。以下同様に、３回目には部分データフロー１０５ｃ、４回目には部分データフロー１０５ｄ、５回目には部分データフロー１０５ｅ、６回目には部分データフロー１０５ｆ、７回目には部分データフロー１０５ｇに相当する処理を順次行う。そして、８回目には、部分データフロー１０５ｈに相当する処理を行う。以上の一連の処理により、６４ポイントＦＦＴ処理を実現できる。
【００３１】
続いて、デジタルフィルタ装置１１の構成要素の詳細について説明する。まず、ＦＦＴ回路２１の構成例について説明する。
【００３２】
〔ＦＦＴ回路〕
図３は、ＦＦＴ回路２１の構成例を示すブロック図である。図３のように、ＦＦＴ回路２１は、第１データ並べ替え処理回路２１１、第１バタフライ演算処理回路２１２、第２データ並べ替え処理回路２１３、ひねり乗算処理回路２１４および第２バタフライ演算処理回路２１５を備える。ＦＦＴ回路２１は、図３の各構成要素を用いて、図２のデータフロー１００のように、第１のデータ並べ替え処理、第１のバタフライ演算処理、第２のデータ並べ替え処理、ひねり乗算処理および第２のバタフライ演算処理を含むパイプライン処理を実行する。
【００３３】
第１データ並べ替え処理回路２１１は、データを並べ替えるためのバッファ回路である。第１データ並べ替え処理回路２１１は、ＦＦＴ処理におけるアルゴリズム上のデータの依存関係に基づいてデータシーケンスの並べ替えを行う。第１データ並べ替え処理回路２１１は、並べ替えたデータを第１バタフライ演算処理回路２１２に出力する。
【００３４】
具体的には、第１データ並べ替え処理回路２１１は、入力データｘ（ｎ）を逐次順序（図４）からビットリバース順序（図５）に並べ替える。すなわち、第１データ並べ替え処理回路２１１は、入力順序である逐次順序（図４）から、第１バタフライ演算処理回路２１２への出力順序であるビットリバース順序（図５）に入力データｘ（ｎ）を並び替える。
【００３５】
図４における各行ｐｓ（ｉ）および図５における各行ｑｓ（ｉ）は、それぞれ、次段のｉ番目に入力されるデータを示す。各データ組に含まれる８個の数字は、ＦＦＴのポイントのうち１つを一意に特定するための識別情報であり、具体的には、ｘ（ｎ）の添え字ｎの値である。
【００３６】
図５に示すビットリバース順序は、図２に示すデータフロー１００における１段目の基数８のバタフライ演算処理１０２への入力データ組に対応する。具体的には、１サイクル目には、データ組Ｑ１を構成するｘ（０）、ｘ（８）、・・・、ｘ（５６）の８個のデータを入力する。そして、２サイクル目には、データ組Ｑ２を構成するｘ（１）、ｘ（９）、・・・、ｘ（５７）の８個のデータを入力する。以降、３サイクル目から８サイクル目まで同様にして、データ組Ｑ３〜Ｑ８を構成する８個のデータを入力する。
【００３７】
第１バタフライ演算処理回路２１２は、図２のデータフロー１００において２回行われる基数８のバタフライ演算処理のうち、１回目のバタフライ演算処理１０２（第１のバタフライ演算処理）を実行するバタフライ回路である。第１バタフライ演算処理回路２１２は、第１データ並べ替え処理回路２１１によって並べ替えられたデータについてバタフライ演算処理を実行する。第１バタフライ演算処理回路２１２は、バタフライ演算処理の結果をデータｙ（ｎ）として逐次順序で出力する（ｎ＝０、１、・・・、６３）。
【００３８】
第２データ並べ替え処理回路２１３は、データ並べ替えのためのバッファ回路である。第２データ並べ替え処理回路２１３は、第１バタフライ演算処理回路２１２によるバタフライ演算の後で、ＦＦＴ処理におけるアルゴリズム上のデータの依存関係に基づいたデータシーケンスの並べ替えを行う。第２データ並べ替え処理回路２１３は、第１バタフライ演算処理回路２１２によって逐次順序で出力されたデータｙ（ｎ）を、第２バタフライ演算処理回路２１５に入力するためのビットリバース順序に並べ替える。第２データ並べ替え処理回路２１３は、並べ替えたデータをひねり乗算処理回路２１４に出力する。
【００３９】
ひねり乗算処理回路２１４は、第１のバタフライ演算処理後に、ＦＦＴ演算における複素平面上の複素回転を処理する回路である。ひねり乗算処理回路２１４は、図２のデータフロー１００におけるひねり乗算処理１０４に対応するひねり乗算処理を実行する。ひねり乗算処理回路２１４は、ひねり乗算処理を加えたデータｙ’（ｎ）を第２バタフライ演算処理回路２１５に出力する。なお、ひねり乗算処理回路２１４は、ひねり乗算処理においてデータの並べ替えを行わない。
【００４０】
第２バタフライ演算処理回路２１５は、図２のデータフロー１００における２回目の基数８のバタフライ演算処理１０３（第２のバタフライ演算処理）を実行するバタフライ回路である。第２バタフライ演算処理回路２１５は、ひねり乗算処理回路２１４からビットリバース順序で入力されるデータｙ’（ｎ）に対してバタフライ演算処理を行う（ｎ＝０、１、・・・、６３）。第２バタフライ演算処理回路２１５は、バタフライ演算処理の結果のデータＸ（ｋ）をビットリバース順序で出力する（ｋ＝０、１、・・・、６３）。
【００４１】
ここで、「逐次順序」および「ビットリバース順序」について、具体的に説明する。
【００４２】
「逐次順序」とは、図４に示すように、８個のデータ組Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順序をいう。処理のサイクルの順番をｓとすると、データ組Ｐｓ（ｉ）は、それぞれｐｓ（０）からｐｓ（７）までの８個のデータを含む（ｉは自然数、ｓ＝１、・・・、８）。なお、Ｐｓ（ｉ）は、以下の式４で表される。
ｐｓ（ｉ）＝８（ｓ−１）＋ｉ・・・（４）
そして、各データ組は、処理のサイクルの進行に対応して、Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順に並べられている。つまり、逐次順序とは、ｉ×ｓ個のデータを先頭のデータからｉ個ずつデータ順に並べたデータ組をｓ個作成し、それらのデータ組をサイクル順に並べたものである。
【００４３】
「ビットリバース順序」とは、図５に示すように、８個のデータ組Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順序をいう。データ組Ｑｓは、それぞれ、ｑｓ（０）からｑｓ（７）までの８個のデータを含む。なお、ｑｓ（ｉ）は、以下の式５で表される。
ｑｓ（ｉ）＝（ｓ−１）＋８ｉ・・・（５）
そして、各データ組は、処理のサイクルの進行に対応して、Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順に並べられている。つまり、ビットリバース順序とは、逐次順序で入力されたｉ×ｓ個のデータを、先頭のデータからｓ個ずつサイクル順に並べ、同じサイクルのｉ個のデータを１つの組としてデータ順に並べたものである。
【００４４】
以上のように、ビットリバース順序の各データ組は、逐次順序の各組が設定されれば一意に定まる。ビットリバース順序の各データ組Ｑｓ（ｓ＝１、・・・、８）を構成するデータのｉ番目のデータ組Ｑｓ（ｉ）は、逐次順序に従ったサイクルｉにおけるｓ番目のデータである。すなわち、Ｑｓ（ｉ）は、以下の式６で表される。
Ｑｓ（ｉ）＝Ｐｉ（ｓ）・・・（６）
このように、Ｑｓ（ｉ）とＰｉ（ｓ）とは、各データ組を構成するデータについて、サイクルの進行に対する順序と、データ位置に対する順序とが入れ替えられた関係にある。したがって、ビットリバース順序で入力されたデータを、ビットリバース順序に従って並べ替えると逐次順序になる。
【００４５】
なお、逐次順序およびビットリバース順序は、図４および図５に例示したものに限定されない。すなわち、逐次順序の各データ組は、上記のように、ＦＦＴのポイント数、サイクル数および並列に処理するデータ数に応じて、データを順番に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータについて、サイクルの進行に対する順序とデータ位置に対する順序とを入れ替えて作成すればよい。
【００４６】
以上が、「逐次順序」および「ビットリバース順序」についての具体的な説明である。
【００４７】
例えば、ＦＦＴ回路２１は、２段階の基数８のバタフライ演算処理に分解された６４ポイントＦＦＴをパイプライン回路方式によって処理する。なお、ＦＦＴ回路２１は、８データ並列で６４ポイントＦＦＴ処理を行うものとする。
【００４８】
ＦＦＴ回路２１には、図４に示す逐次順序で、８データずつ８サイクルの期間に、合計で６４個の入力データｘ（ｎ）が入力される。なお、入力データｘ（ｎ）の括弧内のｎには、図４の表に示す０から６３までの数字が対応する。
【００４９】
具体的には、１サイクル目には、データ組Ｐ１を構成するｘ（０）、ｘ（１）、・・・、ｘ（７）の８個のデータがＦＦＴ回路２１に入力される。そして、２サイクル目には、データ組Ｐ２を構成するｘ（８）、ｘ（９）、・・・、ｘ（１５）の８個のデータがＦＦＴ回路２１に入力される。以下同様に、３サイクル目から８サイクル目にかけては、データ組Ｐ３〜Ｐ８を構成するデータが８個ずつＦＦＴ回路２１に順次入力される。
【００５０】
同様に、図４に示す順序で、８データずつ８サイクルの期間に、合計で６４個の出力データＸ（ｋ）がＦＦＴ回路２１から出力される。なお、出力データＸ（ｋ）の括弧内のｋには、図４の表に示す０から６３までの数字が対応する。
【００５１】
具体的には、１サイクル目には、データ組Ｐ１を構成するＸ（０）、Ｘ（１）、・・・、Ｘ（７）の８個のデータがＦＦＴ回路２１から出力される。そして、２サイクル目には、データ組Ｐ２を構成するＸ（８）、Ｘ（９）、・・・、Ｘ（１５）の８個のデータがＦＦＴ回路２１から出力される。以下同様に、３サイクル目から８サイクル目にかけては、データ組Ｐ３〜Ｐ８を構成するデータが８個ずつＦＦＴ回路２１から出力される。
【００５２】
第１データ並べ替え処理回路２１１および第２データ並べ替え処理回路２１３は、入力されたデータを一旦記憶し、記憶したデータの選択および出力を制御し、逐次順序（図４）およびビットリバース順序（図５）のそれぞれに従ったデータの並べ替え処理を実現する。
【００５３】
第１データ並べ替え処理回路２１１および第２データ並べ替え処理回路２１３は、例えば図６に示すデータ並べ替え処理回路２００で実現できる。
【００５４】
データ並べ替え処理回路２００は、８個のデータからなるデータ組Ｄ１〜Ｄ８（入力情報２０３）を先入れ先出しバッファ（以下、ＦＩＦＯバッファ：First In First Out Buffer）における先入れ順序で入力する。そして、データ並べ替え処理回路２００は、データ記憶位置２０１ａ〜２０１ｈにデータを書き込んで記憶させる。具体的には、データ並べ替え処理回路２００は、データ記憶位置２０１ａ〜２０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８を記憶する。
【００５５】
次に、データ並べ替え処理回路２００は、ＦＩＦＯバッファにおける先出し順序で、記憶しているデータを出力する。具体的には、データ並べ替え処理回路２００は、データ読み出し位置２０２ａ〜２０２ｈのそれぞれから読み出した８個のデータを１つのデータ組とし、８つのデータ組Ｄ１’〜Ｄ８’（出力情報２０４）を出力する。すなわち、データ組Ｄ１’〜Ｄ８’は、サイクル順に並べられたデータ組Ｄ１〜Ｄ８に含まれるデータを、データ位置の順に並べ替えて１つの組としたものである。
【００５６】
以上説明したように、ＦＦＴ回路２１において、第１データ並べ替え処理回路２１１および第２データ並べ替え処理回路２１３によって、逐次順序（図４）およびビットリバース順序（図５）のそれぞれに従った並べ替え処理が必要となる。なぜならば、ＦＦＴ回路２１は、８データ並列で６４ポイントＦＦＴ処理を行うため、ＦＦＴ処理に８サイクルが必要であり、サイクル間をまたがったデータの並べ替えが必要となるからである。
【００５７】
〔フィルタ処理回路〕
図７は、本実施形態のフィルタ処理回路３１の構成例を示すブロック図である。フィルタ処理回路３１は、ビット幅縮小回路３１０〜３１７、ビット幅縮小回路３２０〜３２７、複素乗算器３３０〜３３７およびビット幅拡張回路３４０〜３４７を備える。
【００５８】
以下において、フィルタ処理回路３１は、ＦＦＴ回路２１と同様に、８データ並列でフィルタ演算処理を行うものとする。この場合、フィルタ処理回路３１には、ＦＦＴ回路２１がビットリバース順序で出力する周波数領域のデータＸ（ｋ）が入力される。
【００５９】
具体的には、入力データＸ（ｋ）として、８データずつ８サイクルの期間に、図５に示すビットリバース順序で６４データが入力される。なお、Ｘ（ｋ）のカッコ内のｋは、図５中の０から６３までの数字を意味する。すなわち、１サイクル目には、データ組Ｑ１を構成するＸ（０）、Ｘ（１）、・・・、Ｘ（７）の８データがフィルタ処理回路３１に入力される。２サイクル目には、データ組Ｑ２を構成するＸ（８）、Ｘ（９）、・・・、Ｘ（１５）の８データがフィルタ処理回路３１に入力される。以下同様に、３サイクル目から８サイクル目にかけては、データ組Ｑ３〜Ｑ８を構成するデータがフィルタ処理回路３１に入力される。同様に、フィルタ処理回路３１には、８データずつ８サイクルの期間に、ビットリバース順序で６４データのフィルタ係数Ｃ（ｋ）が入力される。
【００６０】
次に、フィルタ処理回路３１のビット幅縮小回路３１０〜３１７は、８データずつ入力されるデータＸ（ｋ）についてビット幅の縮小を行う。ビット幅縮小回路３１０〜３１７は、ビット幅を縮小したデータを複素乗算器３３０〜３３７に出力する。
【００６１】
具体的には、ビット幅縮小回路３１０は、入力ｐｘ（０）から入力されるＸ（ｋ）のビット幅を縮小したデータＸ’（ｋ）を生成する。同様に、ビット幅縮小回路３１１は、入力ｐｘ（１）から入力されるＸ（ｋ）のビット幅を縮小したデータＸ’（ｋ）を生成する。以下同様に、ビット幅縮小回路３１２〜３１７のそれぞれは、入力ｐｘ（２）〜ｐｘ（７）から入力されるＸ（ｋ）のビット幅を縮小したＸ’（ｋ）を生成する。ビット幅の縮小は、切り捨て処理または丸め処理によって実現できる。なお、ビット幅縮小回路３１０〜３１７が行うビット幅の縮小量は、それぞれの回路で同一であってもよいし、それぞれの回路で異なっていてもよい。
【００６２】
同様に、フィルタ処理回路３１のビット幅縮小回路３２０〜３２７は、８データずつ入力されるフィルタ係数Ｃ（ｋ）についてビット幅の縮小を行う。ビット幅縮小回路３２０〜３２７は、ビット幅を縮小したデータを複素乗算器３３０〜３３７に出力する。
【００６３】
具体的には、ビット幅縮小回路３２０は、入力ｐｃ（０）から入力されるＣ（ｋ）のビット幅を縮小したＣ’（ｋ）を生成する。同様に、ビット幅縮小回路３２１は、入力ｐｃ（１）から入力されるＣ（ｋ）のビット幅を縮小したＣ’（ｋ）を生成する。以下同様に、ビット幅縮小回路３２１〜３２７のそれぞれは、入力ｐｃ（２）〜ｐｃ（７）から入力されるＣ（ｋ）のビット幅を縮小したＣ’（ｋ）を生成する。ビット幅の縮小は、切り捨て処理または丸め処理より実現できる。なお、ビット幅縮小回路３２０〜３２７が行うビット幅の縮小量は、それぞれの回路で同一であってもよいし、それぞれの回路で異なっていてもよい。
【００６４】
次に、フィルタ処理回路３１の複素乗算器３３０〜３３７は、ビット幅を縮小したデータＸ’（ｋ）とフィルタ係数Ｃ’（ｋ）とを用いて、８データ並列で複素数乗算を実行する複素数フィルタ処理を行う。
【００６５】
具体的には、複素乗算器３３０は、１サイクル目においては、入力ｐｘ（０）から入力されビット幅を縮小したＸ’（０）と、入力ｐｃ（０）から入力されビット幅を縮小したＣ’（０）と用いて複素数乗算を実行する。このとき、複素乗算器３３０は、Ｙ（０）＝Ｘ’（０）×Ｃ’（０）を計算し、算出したＹ（０）を出力する。
【００６６】
同様に、複素乗算器３３１は、入力ｐｘ（１）から入力されビット幅を縮小したＸ’（８）と、入力ｐｃ（１）から入力されビット幅を縮小したＣ’（８）とを用いて複素数乗算を実行する。このとき、複素乗算器３３１は、Ｙ（８）＝Ｘ’（８）×Ｃ’（８）を計算し、算出したＹ（８）を出力する。
【００６７】
同様に、複素乗算器３３２は、入力ｐｘ（２）から入力されビット幅を縮小したＸ’（１６）と、入力ｐｃ（２）から入力されビット幅を縮小したＣ’（１６）とを用いて、複素数乗算を実行する。このとき、複素乗算器３３２は、Ｙ（１６）＝Ｘ’（１６）×Ｃ’（１６）を計算し、算出したＹ（１６）を出力する。
【００６８】
以下同様に、複素乗算器３３３〜３３７は、入力ｐｘ（ｋ）から入力されビット幅を縮小したＸ’（ｊ）と、入力ｐｃ（ｋ）から入力されビット幅を縮小したＣ’（ｊ）とを用いて複素数乗算を実行する（ただし、３≦ｋ≦７、ｊ＝ｋ×８）。このとき、複素乗算器３３２〜３３７は、Ｙ（ｊ）＝Ｘ’（ｊ）×Ｃ’（ｊ）を計算し、算出したＹ（ｊ）を出力する。なお、ｐｘ（ｋ）やｐｃ（ｋ）、Ｘ’（ｊ）、Ｃ’（ｊ）、Ｙ（ｊ）のカッコ内のｋやｊのことを周波数番号とも呼ぶ。
【００６９】
次に、フィルタ処理回路３１の複素乗算器３３１は、２サイクル目においては、入力ｐｘ（０）から入力されビット幅を縮小したＸ’（１）と、入力ｐｃ（０）から入力されビット幅を縮小したＣ’（１）と用いて複素数乗算を実行する。このとき、複素乗算器３３１は、Ｙ（１）＝Ｘ’（１）×Ｃ’（１）を計算し、算出したＹ（１）を出力する。
【００７０】
同様に、複素乗算器３３２は、入力ｐｘ（１）から入力されビット幅を縮小したＸ’（９）と、入力ｐｃ（１）から入力されビット幅を縮小したＣ’（９）と用いて複素数乗算を実行する。このとき、複素乗算器３３２は、Ｙ（９）＝Ｘ’（９）×Ｃ’（９）を計算し、算出したＹ（９）を出力する。
【００７１】
同様に、複素乗算器３３２は、入力ｐｘ（２）から入力されビット幅を縮小したＸ’（１７）と、入力ｐｃ（２）から入力されビット幅を縮小したＣ’（１７）とを用いて、複素数乗算を実行する。このとき、複素乗算器３３２は、Ｙ（１７）＝Ｘ’（１７）×Ｃ’（１７）を計算し、算出したＹ（１７）を出力する。
【００７２】
以下同様に、複素乗算器３３３〜３３７は、入力ｐｘ（ｋ）から入力されビット幅を縮小したＸ’（ｊ＋１）と、入力ｐｃ（ｋ）から入力されビット幅を縮小したＣ’（ｊ＋１）とを用いて複素数乗算を実行する（ただし、３≦ｋ≦７、ｊ＝ｋ×８）。このとき、複素乗算器３３２〜３３７は、Ｙ（ｊ＋１）＝Ｘ’（ｊ＋１）×Ｃ’（ｊ＋１）を計算し、算出したＹ（ｊ＋１）を出力する。
【００７３】
さらに、複素乗算器３３０〜３３７は、３サイクル目以降のｎ番目（３≦ｎ≦７）のサイクルにおいても同様に、複素数乗算を実行する。すなわち、複素乗算器３３０〜３３７は、入力ｐｘ（ｋ）から入力されビット幅を縮小したＸ’（ｊ＋ｎ）と、入力ｐｃ（ｋ）から入力されるビット幅を縮小したＣ’（ｊ＋ｎ）とを用いて複素数乗算を実行する（ただし、０≦ｋ≦７、ｊ＝ｋ×８）。このとき、複素乗算器３３０〜３３７は、Ｙ（ｊ＋ｎ）＝Ｘ’（ｊ＋ｎ）×Ｃ’（ｊ＋ｎ）を計算し、算出したＹ（ｊ＋ｎ）を出力する。
【００７４】
すなわち、複素乗算器３３０は、Ｘ’（０）、Ｘ’（１）、・・・、Ｘ’（７）の８データと、Ｃ’（０）、Ｃ’（１）、・・・、Ｃ’（７）の８データとを入力し、Ｙ（０）、Ｙ（１）、・・・、Ｙ（７）の８データを演算して出力する。
【００７５】
同様に、複素乗算器３３１は、Ｘ’（８）、Ｘ’（９）、・・・、Ｘ’（１５）の８データと、Ｃ’（８）、Ｃ’（９）、・・・、Ｃ’（１５）の８データとを入力し、Ｙ（８）、Ｙ（９）、・・・、Ｙ（１５）の８データを演算して出力する。
【００７６】
同様に、複素乗算器３３２は、Ｘ’（１６）、Ｘ’（１７）、・・・、Ｘ’（２３）の８データと、Ｃ’（１６）、Ｃ’（１７）、・・・、Ｃ’（２３）の８データとを入力し、Ｙ（１６）、Ｙ（１７）、・・・、Ｙ（２３）の８データを演算して出力する。
【００７７】
同様に、複素乗算器３３３は、Ｘ’（２４）〜Ｘ’（３１）の８データと、Ｃ’（２４）〜Ｃ’（３１）の８データとを入力し、Ｙ（２４）〜Ｙ（３１）の８データを演算して出力する。
【００７８】
同様に、複素乗算器３３４は、Ｘ’（３２）〜Ｘ’（３９）の８データと、Ｃ’（３２）〜Ｃ’（３９）の８データとを入力し、Ｙ（３２）〜Ｙ（３９）の８データを演算して出力する。
【００７９】
同様に、複素乗算器３３５は、Ｘ’（４０）〜Ｘ’（４７）の８データと、Ｃ’（４０）〜Ｃ’（４７）の８データとを入力し、Ｙ（４０）〜Ｙ（４７）の８データを演算して出力する。
【００８０】
同様に、複素乗算器３３６は、Ｘ’（４８）〜Ｘ’（５５）の８データと、Ｃ’（４８）〜Ｃ’（５５）の８データとを入力し、Ｙ（４８）〜Ｙ（５５）の８データを演算して出力する。
【００８１】
同様に、複素乗算器３３７は、Ｘ’（５６）〜Ｘ’（６３）の８データと、Ｃ’（５６）〜Ｃ’（６３）の８データとを入力し、Ｙ（５６）〜Ｙ（６３）の８データを演算して出力する。
【００８２】
以上のように、複素乗算器３３０〜３３７のそれぞれは、周波数番号の隣接するデータを入力とし、周波数番号の隣接するデータを演算して出力する。ここで、ビット幅縮小回路３１０〜３１７やビット幅縮小回路３２０〜３２７が行うビット幅の縮小量は異なっていてもよい。すなわち、複素乗算器３３０〜３３７のそれぞれにおける演算ビット幅が異なってもよい。したがって、複素乗算器３３０〜３３７の出力のビット幅が異なっていてもよい。
【００８３】
次に、ビット幅拡張回路３４０〜３４７は、複素乗算器３３０〜３３７が演算して出力するＹ（ｋ）についてビット幅の拡張を行い、ビット幅を拡張したデータを出力ｐｙ（０）〜ｐｙ（７）に出力する。ビット幅の拡張は、例えば、データの最下位ビットに値０を必要数だけ追加することで拡張することができる。
【００８４】
具体的には、ビット幅拡張回路３４０は、複素乗算器３３０から入力されるＹ（ｋ）のビット幅に応じて、出力ｐｙ（０）〜ｐｙ（７）で同一のビット幅となるようにビット幅を拡張し、ビット幅を拡張したデータを出力ｐｙ（０）に出力する。同様に、ビット幅拡張回路３４１は、複素乗算器３３１から入力されるＹ（ｋ）のビット幅に応じて、出力ｐｙ（０）〜ｐｙ（７）で同一のビット幅となるようにビット幅を拡張し、ビット幅を拡張したデータを出力ｐｙ（１）に出力する。以下同様に、ビット幅拡張回路３４２〜３４７のそれぞれは、複素乗算器３３２〜３３７から入力されるＹ（ｋ）のビット幅に応じて、出力ｐｙ（０）〜ｐｙ（７）で同一のビット幅となるようにビット幅を拡張する。そして、ビット幅拡張回路３４２〜３４７のそれぞれは、ビット幅を拡張したデータを出力ｐｙ（２）〜ｐｙ（７）に出力する。
【００８５】
デジタルフィルタ装置１１が行うフィルタ処理に関しては、ある周波数範囲におけるフィルタ処理が、他の周波数範囲のフィルタ処理と比べて重要ではない場合がある。このような場合、重要ではない周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅を、他の周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅よりも小さくしても、フィルタ性能への影響が小さい。すなわち、重要ではない周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅を小さくしても、フィルタ性能が低下しないか、フィルタ性能が低下しても所望のフィルタ特性が得られる場合がある。このような場合、重要ではない周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅を、他の周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅よりも小さくすることができる。
【００８６】
言い換えると、本実施形態のフィルタ処理回路３１は、フィルタ処理の対象となる周波数範囲の重要度に応じて、フィルタ処理を行う複数の複素乗算器の演算ビット幅を設定する。すなわち、フィルタ処理回路３１は、重要度が低い周波数範囲のデータのフィルタ処理を実行する複素乗算器における演算ビット幅を縮小する。なお、重要度が低い周波数範囲とは、その周波数範囲のデータのビット幅を縮小しても、所望のフィルタ特性が得られる周波数成分を含む範囲である。
【００８７】
例えば、周波数が高い領域のフィルタ処理が、他の周波数領域のフィルタ処理よりも重要ではない場合がある。このような場合、周波数が高い領域のフィルタ処理を行う複素乗算器の演算ビット幅を、他の複素乗算器の演算ビット幅よりも小さくすることができる。
【００８８】
また、例えば、周波数が低い領域のフィルタ処理が、他の周波数領域のフィルタ処理よりも重要ではない場合がある。このような場合、周波数が低い領域のフィルタ処理を行う複素乗算器の演算ビット幅を、他の複素乗算器の演算ビット幅よりも小さくすることができる。
【００８９】
さらに、例えば、特定の周波数領域のフィルタ処理が、他の周波数領域のフィルタ処理よりも重要ではない場合がある。このような場合、特定の周波数領域のフィルタ処理を行う複素乗算器の演算ビット幅を、他の複素乗算器の演算ビット幅よりも小さくすることができる。
【００９０】
すなわち、フィルタ処理回路３１は、ＦＦＴ回路２１よって変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータよりも小さいビット幅に設定してフィルタ処理を実行する。なお、予め設定した第１の周波数成分とは、その周波数成分のデータのビット幅を変更しても、所望のフィルタ特性が得られる成分である。
【００９１】
〔ＩＦＦＴ回路〕
図８は、本実施形態のＩＦＦＴ回路４１の構成例を示すブロック図である。ＩＦＦＴ回路４１は、図２に示すＦＦＴのデータフロー１００と同様のデータフローで、２段階の基数８のバタフライ演算処理に分解された６４ポイントＩＦＦＴをパイプライン回路方式によって処理する。
【００９２】
ＩＦＦＴ回路４１は、ＦＦＴ回路２１によってフーリエ変換され、フィルタ処理回路３１によってフィルタ処理された周波数領域の信号Ｘ（ｋ）を入力とする（ｋ＝０、１、・・・、Ｎ−１）。なお、Ｎは、ＩＦＦＴブロックサイズを表す正整数である。ＩＦＦＴ回路４１は、入力されたＸ（ｋ）をフーリエ逆変換して時間領域のデータｙ（ｎ）を生成し、生成したデータｙ（ｎ）を出力する（ｎ＝０、１、・・・、Ｎ−１）。
【００９３】
ＩＦＦＴ回路４１は、８データ並列で６４ポイントＩＦＦＴ処理を行う。ＩＦＦＴ回路４１は、ＦＦＴ回路２１およびフィルタ処理回路３１の出力と同様に、図５に示すビットリバース順序でデータＸ（ｋ）を入力する。そして、ＩＦＦＴ回路４１は、図４に示す逐次順序でデータｙ（ｎ）を出力する。
【００９４】
ＩＦＦＴ回路４１は、第１バタフライ演算処理回路４１１、第１データ並べ替え処理回路４１２、ひねり乗算処理回路４１３、第２バタフライ演算処理回路４１４および第２データ並べ替え処理回路４１５を備える。ＩＦＦＴ回路４１は、図８の各構成要素を用いて、第１のバタフライ演算処理、第１のデータ並べ替え処理、ひねり乗算処理、第２のバタフライ演算処理、および第２のデータ並べ替え処理を含むパイプライン処理を実行する。
【００９５】
第１バタフライ演算処理回路４１１は、図２のデータフロー１００において２回行われる基数８のバタフライ演算処理のうち、１回目のバタフライ演算処理１０２（第１のバタフライ演算処理）を実行するバタフライ回路である。第１バタフライ演算処理回路４１１は、入力されたデータＸ（ｋ）をバタフライ演算処理した結果を、データｙ（ｎ）として逐次順序（図４）で出力する（ｎ＝０、１、・・・、６３）。
【００９６】
第１データ並べ替え処理回路４１２は、データを並べ替えるためのバッファ回路である。例えば、第１データ並べ替え処理回路４１２は、図６に示すデータ並べ替え処理回路２００で実現できる。
【００９７】
第１データ並べ替え処理回路４１２は、ＩＦＦＴ処理におけるアルゴリズム上のデータの依存関係に基づいてデータシーケンスの並べ替えを行う。具体的には、第１データ並べ替え処理回路４１２は、第１バタフライ演算処理回路４１１が逐次順序で出力したデータｙ（ｎ）を、ひねり乗算処理回路４１３に入力するために、ビットリバース順序（図５）に並べ替える。
【００９８】
ひねり乗算処理回路４１３は、第１のバタフライ演算処理後に、ＩＦＦＴ演算における複素平面上の複素回転を処理する回路である。ひねり乗算処理回路４１３は、図２のデータフロー１００におけるひねり乗算処理１０４に対応するひねり乗算処理を実行する。ひねり乗算処理回路４１３は、ひねり乗算処理を加えたデータｙ’（ｎ）を第２バタフライ演算処理回路４１４に出力する。なお、ひねり乗算処理回路４１３は、ひねり乗算処理においてデータの並べ替えを行わない。
【００９９】
第２バタフライ演算処理回路４１４は、図２のデータフロー１００における２回目の基数８のバタフライ演算処理１０３（第２のバタフライ演算処理）を実行するバタフライ回路である。第２バタフライ演算処理回路４１４は、ひねり乗算処理回路４１３からビットリバース順序で入力されるデータｙ’（ｎ）に対してバタフライ演算処理を行う（ｎ＝０、１、・・・、６３）。第２バタフライ演算処理回路４１４は、バタフライ演算処理の結果のデータＸ（ｋ）をビットリバース順序で出力する（ｋ＝０、１、・・・、６３）。
【０１００】
第２データ並べ替え処理回路４１５は、データを並べ替えるためのバッファ回路である。例えば、第２データ並べ替え処理回路４１５は、図６に示すデータ並べ替え処理回路２００で実現できる。
【０１０１】
第２データ並べ替え処理回路４１５は、ＩＦＦＴ処理におけるアルゴリズム上のデータの依存関係に基づいてデータシーケンスの並べ替えを行う。具体的には、第２データ並べ替え処理回路４１５は、第２バタフライ演算処理回路４１４がビットリバース順序で出力したデータＸ（ｋ）を逐次順序（図４）に並べ替える。そして、ＩＦＦＴ回路４１は、ＩＦＦＴ処理の最終結果を逐次順序で出力する。
【０１０２】
〔効果〕
以上のように、本実施形態においては、重要ではない周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅を、他の周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅よりも小さくする。その結果、本実施形態においては、所望の周波数範囲の他処理に関しては十分なフィルタ性能が得られ、重要ではない周波数範囲のフィルタ処理を行う複素乗算器に関しては簡略化できる。すなわち、本実施形態によれば、フィルタ性能を低下させずに、回路規模や消費電力を低減することができる。
【０１０３】
（第２の実施形態）
次に、本発明の第２の実施形態に係るデジタルフィルタ装置について図面を参照しながら説明する。本実施形態のデジタルフィルタ装置は、フィルタ処理回路の構成が第１の実施形態とは異なる。なお、本実施形態のデジタルフィルタ装置のＦＦＴ回路およびＩＦＦＴ回路の構成は、第１の実施形態と同様であるため、詳細な説明は省略する。
【０１０４】
図９は、本実施形態のデジタルフィルタ装置１２の構成を示すブロック図である。デジタルフィルタ装置１２は、ＦＦＴ回路２２、フィルタ処理回路３２およびＩＦＦＴ回路４２を備える。なお、本実施形態のＦＦＴ回路２２およびＩＦＦＴ回路４２は、第１の実施形態のＦＦＴ回路２１およびＩＦＦＴ回路４１と同様の構成であるために詳細な説明は省略する。
【０１０５】
図１０は、本実施形態のフィルタ処理回路３２の構成例を示すブロック図である。図１０のように、フィルタ処理回路３２は、ビット幅縮小回路３１３および３１４、ビット幅縮小回路３２３および３２４、複素乗算器３３３および３３４、ビット幅拡張回路３４３および３４４を備える。すなわち、フィルタ処理回路３２は、図７のフィルタ処理回路３１から、ビット幅縮小回路３１３および３１４、ビット幅縮小回路３２３および３２４、複素乗算器３３３および３３４、ビット幅拡張回路３４３および３４４以外の構成を省略したものである。
【０１０６】
フィルタ処理回路３２は、高い周波数範囲のフィルタ処理を行う複素乗算器３３３および３３４の演算ビット幅のみを小さくした構成を有する。フィルタ処理回路３２は、他の周波数範囲のフィルタ処理を行う複素乗算器３３０〜３３２、３３５〜３３７の演算ビット幅は縮小しない。なお、本実施形態においては、高い周波数範囲の重要度が低いものとする。
【０１０７】
本実施形態のフィルタ処理回路３２においても、ＦＦＴ回路２１がビットリバース順序で出力する周波数領域のデータＸ（ｋ）が入力される。具体的には、フィルタ処理回路３２は、８データずつ８サイクルの期間に、ビットリバース順序（図６）で６４データの入力データＸ（ｋ）を入力とする。したがって、複素乗算器３３０〜３３７のそれぞれは、周波数番号の隣接するデータを入力とし、周波数番号の隣接するデータを演算して出力する。複素乗算器３３３および複素乗算器３３４には、高い周波数の範囲のデータが入力され、高い周波数の範囲のデータについてフィルタ演算を行う。
【０１０８】
例えば、本実施形態のデジタルフィルタ装置を光ファイバ通信における歪み補償に適用する場合、高い周波数範囲のフィルタ処理は、他の周波数範囲のフィルタ処理よりも重要でない場合がある。このとき、本実施形態のフィルタ処理回路は、高い周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅を、他の周波数範囲のフィルタ処理を行う複素乗算器の演算ビット幅よりも小さくすることができる。その結果、本実施形態によれば、フィルタ性能を低下させずに、回路規模や消費電力を低減することができる。
【０１０９】
（第３の実施形態）
次に、本発明の第３の実施形態に係るデジタルフィルタ装置について図面を参照しながら説明する。本実施形態は、第１および第２の実施形態を上位概念化した構成である。
【０１１０】
図１１は、本実施形態のデジタルフィルタ装置１０の構成を示すブロック図である。デジタルフィルタ装置１０は、第１変換回路２０、フィルタ処理回路３０および第２変換回路４０を備える。
【０１１１】
第１変換回路２０は、複数のデータを入力とし、入力された複数のデータｘ（ｎ）に対して第１変換処理を実行する。第１変換回路２０は、ＦＦＴ変換処理またはＩＦＦＴ変換処理を第１変換処理として実行する。
【０１１２】
フィルタ処理回路３０は、第１変換回路２０によって第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行する。予め設定した第１の周波数成分とは、その周波数成分のデータのビット幅を変更しても、所望のフィルタ特性が得られる周波数成分である。例えば、フィルタ処理回路３０は、演算ビット幅を変更しても所望のフィルタ特性が得られる周波数成分のデータが前記第１の周波数成分のデータに設定される演算回路を含む。
【０１１３】
例えば、フィルタ処理回路３０は、第１の周波数成分のデータの演算ビット幅を縮小してフィルタ処理を実行する。例えば、フィルタ処理回路３０は、第１の周波数成分のデータの演算ビット幅が、他の周波数範囲のデータの演算ビット幅と比べて小さいビット幅に設定される演算回路を含む。例えば、フィルタ処理回路３０は、複数のデータの中で重要度の低いデータの演算ビット幅を縮小する。
【０１１４】
フィルタ処理回路３０は、ビット幅が縮小されたデータを含む複数のデータと、別途入力されるフィルタ係数との間で演算処理を行う。フィルタ処理回路３０は、演算処理を行ったデータに含まれるビット幅が小さいデータのビット幅を、他のデータと同じビット数に拡大させてから出力する。
【０１１５】
第２変換回路４０は、フィルタ処理回路３０から出力された複数のデータＸ（ｎ）に対して第２変換処理を実行する。第２変換回路４０は、ＦＦＴ変換処理またはＩＦＦＴ変換処理を第２変換処理として実行する。例えば、第２変換回路４０は、第１変換回路２０が高速フーリエ変換処理を実行した場合には逆フーリエ変換処理を実行し、第１変換回路２０が逆高速フーリエ変換処理を実行した場合にはフーリエ変換処理を実行する。
【０１１６】
また、フィルタ処理回路３０が処理するデータやデータの配列に関しては、下記のように表現することもできる。
【０１１７】
第１変換回路２０は、第１および第２の順序のいずれかで第１のデータを入力し、入力した第１のデータに対して第１変換処理を実行することで生成した第２のデータを第２の順序で出力する。
【０１１８】
フィルタ処理回路３０は、第２の順序で第２のデータを入力し、入力した第２のデータに対してフィルタ処理を実行することで生成した第３のデータを第２の順序で出力する。
【０１１９】
第２変換回路４０は、第２の順序で第３のデータを入力し、入力した第３のデータに対して第２変換処理を実行することで生成した第４のデータを第１および第２の順序のいずれかで出力する。
【０１２０】
上記において、第１の順序とは逐次順序であり、第２の順序とはビットリバース順序である。また、第１のデータとは第１変換回路２０への入力データであり、第２のデータとは第１変換回路２０からの出力データであり、第３のデータとはフィルタ処理回路３０からの出力データであり、第４のデータとは第２変換回路４０からの出力である。すなわち、第１のデータとはデジタルフィルタ装置１０への入力データであり、第４のデータとはデジタルフィルタ装置１０からの出力データである。
【０１２１】
〔フィルタ処理回路〕
ここで、フィルタ処理回路３０の構成について図面を参照しながら説明する。図１２は、本実施形態のフィルタ処理回路３０の構成を示すブロック図である。図１２のように、フィルタ処理回路３０は、第１ビット幅縮小回路３０１、第２ビット幅縮小回路３０２、演算回路３０３およびビット幅拡張回路３０４を含む。
【０１２２】
第１ビット幅縮小回路３０１は、第１変換回路２０によって変換されたデータを入力とし、入力されたデータのうち第１の周波数成分のデータのビット幅を変更する。例えば、第１ビット幅縮小回路３０１は、第１の周波数成分のデータのビット幅を縮小する。例えば、第１ビット幅縮小回路３０１は、切り捨て処理および丸め処理のいずれかを用いてデータのビット幅を縮小する。第１ビット幅縮小回路３０１は、第１および第２の実施形態のビット幅縮小回路３１０〜３１７を含む構成に相当する。
【０１２３】
すなわち、第１ビット幅縮小回路３０１は、第２のデータを入力とし、入力した第２のデータのうちいずれかのデータのビット幅を縮小する。
【０１２４】
第２ビット幅縮小回路３０２は、第１ビット幅縮小回路３０１においてビット幅を縮小されたデータに対してフィルタ処理を実行するためのフィルタ係数に関して、ビット幅を縮小する。例えば、第２ビット幅縮小回路３０２は、切り捨て処理および丸め処理のいずれかを用いてフィルタ係数のビット幅を縮小する。第２ビット幅縮小回路３０２は、第１および第２の実施形態のビット幅縮小回路３２０〜３２７を含む構成に相当する。
【０１２５】
すなわち、第２ビット幅縮小回路３０２は、フィルタ処理を実行するためのフィルタ係数データを入力とし、第１ビット幅縮小回路３０１によってビット幅が縮小されたデータに対応するフィルタ係数のビット幅を縮小する。
【０１２６】
演算回路３０３は、第１ビット幅縮小回路３０１においてビット幅を縮小されたデータを含む複数のデータのそれぞれに対して演算処理を実行する。演算回路３０３は、複数の演算器を含み、ビット幅を縮小したデータに関しては、ビット幅を縮小したフィルタ係数を用いて演算を実行する。演算回路３０３は、第１および第２の実施形態の複素乗算器３３０〜３３７を含む構成に相当する。
【０１２７】
すなわち、演算回路３０３は、第１ビット幅縮小回路３０１によってビット幅を縮小されたデータを含む第２のデータと、第２ビット幅縮小回路３０２によってビット幅を縮小されたフィルタ係数を含むフィルタ係数データとを用いて演算を実行する。
【０１２８】
ビット幅拡張回路３０４は、演算回路３０３から出力される複数のデータのビット幅を揃える。すなわち、ビット幅拡張回路３０４は、第１ビット幅縮小回路３０１においてビット幅を縮小されたデータについて、末尾に０を挿入するなどして、他のデータと同じビット幅に揃える。ビット幅拡張回路３０４は、第１および第２の実施形態のビット幅拡張回路３４０〜３４７を含む構成に相当する。
【０１２９】
すなわち、ビット幅拡張回路３０４は、第１ビット幅縮小回路３０１によってビット幅を縮小されたデータのうち演算回路３０３によってフィルタ処理がなされたデータのビット幅を拡張する。
【０１３０】
以上のように、本実施形態に係るデジタルフィルタ装置によれば、フィルタ性能を低下させずに、回路規模や消費電力を低減することができる。
【０１３１】
（ハードウェア）
ここで、図１３を用いて、本実施形態に係るデジタルフィルタ装置を実現するハードウェア９０について説明する。なお、ハードウェア９０は、本実施形態のデジタルフィルタ装置を実現するための一例であって、本発明の範囲を限定するものではない。
【０１３２】
図１３のように、ハードウェア９０は、プロセッサ９１、主記憶装置９２、補助記憶装置９３、入出力インターフェース９５およびネットワークアダプター９６を備える。プロセッサ９１、主記憶装置９２、補助記憶装置９３、入出力インターフェース９５およびネットワークアダプター９６は、バス９９を介して互いに接続される。また、プロセッサ９１、主記憶装置９２、補助記憶装置９３および入出力インターフェース９５は、ネットワークアダプター９６を介して、イントラネットやインターネットなどのネットワークに接続される。ハードウェア９０は、ネットワークを介して、別のシステムや装置に接続される。なお、ハードウェア９０の構成要素のそれぞれは、単一であってもよいし、複数であってもよい。
【０１３３】
プロセッサ９１は、補助記憶装置９３等に格納されたプログラムを主記憶装置９２に展開し、展開されたプログラムを実行する中央演算装置である。本実施形態においては、ハードウェア９０にインストールされたソフトウェアプログラムを用いる構成とすればよい。プロセッサ９１は、種々の演算処理や制御処理を実行する。
【０１３４】
主記憶装置９２は、プログラムが展開される領域を有する。主記憶装置９２は、例えばＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリとすればよい。また、ＭＲＡＭ（Magnetoresistive Random Access Memory）などの不揮発性メモリを主記憶装置９２として構成・追加してもよい。
【０１３５】
補助記憶装置９３は、種々のデータを記憶させる手段である。補助記憶装置９３は、ハードディスクやフラッシュメモリなどのローカルディスクとして構成される。なお、主記憶装置９２にデータを記憶させる構成とし、補助記憶装置９３を省略してもよい。
【０１３６】
入出力インターフェース９５は、ハードウェア９０と周辺機器とを接続規格に基づいて接続するインターフェース（Ｉ／Ｆ：Interface）である。
【０１３７】
ハードウェア９０には、必要に応じて、キーボードやマウス、タッチパネルなどの入力機器を接続してもよい。それらの入力機器は、情報や設定の入力に使用される。なお、タッチパネルを入力機器として用いる場合は、表示機器の表示画面が入力機器のインターフェースを兼ねるタッチパネルディスプレイとすればよい。プロセッサ９１と入力機器との間のデータ授受は、入出力インターフェース９５に仲介させればよい。
【０１３８】
ネットワークアダプター９６は、規格や仕様に基づいて、インターネットやイントラネットなどのネットワークに接続するためのインターフェースである。入出力インターフェース９５およびネットワークアダプター９６は、外部機器と接続するインターフェースとして共通化してもよい。
【０１３９】
また、ハードウェア９０には、必要に応じて、リーダライタを備え付けてもよい。リーダライタは、バス９９に接続され、プロセッサ９１と図示しない記録媒体（プログラム記録媒体）との間で、記録媒体からのデータ・プログラムの読み出し、ハードウェア９０の処理結果の記録媒体への書き込みなどを仲介する。記録媒体は、例えばＳＤ（Secure Digital）カードやＵＳＢ（Universal Serial Bus）メモリなどの半導体記録媒体などで実現できる。また、記録媒体は、フレキシブルディスクなどの磁気記録媒体、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光学記録媒体やその他の記録媒体によって実現してもよい。
【０１４０】
以上が、本発明の実施形態に係るデジタルフィルタ装置を可能とするためのハードウェア構成の一例である。なお、図１３のハードウェア構成は、本実施形態に係るデジタルフィルタ装置を可能とするためのハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、本実施形態に係るデジタルフィルタ装置による処理をコンピュータに実行させる処理プログラムも本発明の範囲に含まれる。さらに、本発明の実施形態に係る処理プログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。
【０１４１】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１４２】
この出願は、２０１６年４月１９日に出願された日本出願特願２０１６−８３３３６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１４３】
１０、１１、１２    デジタルフィルタ装置
２０    第１変換回路
２１、２２    ＦＦＴ回路
３０、３１、３２    フィルタ処理回路
４０    第２変換回路
４１、４２    ＩＦＦＴ回路
２１１    第１データ並べ替え処理回路
２１２    第１バタフライ演算処理回路
２１３    第２データ並べ替え処理回路
２１４    ひねり乗算処理回路
２１５    第２バタフライ演算処理回路
３０１    第１ビット幅縮小回路
３０２    第２ビット幅縮小回路
３０３    乗算回路
３０４    ビット幅拡張回路
３１０、３１１、３１２、３１３、３１４、３１５、３１６、３１７    ビット幅縮小回路
３２０、３２１、３２２、３２３、３２４、３２５、３２６、３２７    ビット幅縮小回路
３３０、３３１、３３２、３３３、３３４、３３５、３３６、３３７    複素乗算器
３４０、３４１、３４２、３４３、３４４、３４５、３４６、３４７    ビット幅拡張回路
４１１    第１バタフライ演算処理回路
４１２    第１データ並べ替え処理回路
４１３    ひねり乗算処理回路
４１４    第２バタフライ演算処理回路
４１５    第２データ並べ替え処理回路
【図１】
2017183563.tif 000003
【図２】
2017183563.tif 000004
【図３】
2017183563.tif 000005
【図４】
2017183563.tif 000006
【図５】
2017183563.tif 000007
【図６】
2017183563.tif 000008
【図７】
2017183563.tif 000009
【図８】
2017183563.tif 000010
【図９】
2017183563.tif 000011
【図１０】
2017183563.tif 000012
【図１１】
2017183563.tif 000013
【図１２】
2017183563.tif 000014
【図１３】
2017183563.tif 000015
【手続補正書】
【提出日】平成30年9月19日(2018.9.19)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
所定の周波数範囲のデータに対して第１変換処理を実行する処理と、
前記第１変換処理がなされたデータのうち予め設定した第１の周波数成分のデータの演算ビット幅を他の周波数成分のデータとは異なるビット幅に設定してフィルタ処理を実行する処理と、
前記フィルタ処理がなされたデータに対して第２変換処理を実行する処理とをコンピュータに実行させるデジタルフィルタ処理プログラム。
【国際調査報告】
2017183563.tif 000016
2017183563.tif 000017