(57)【特許請求の範囲】
【請求項１】
複数のポートに対してデータ並べ替えに必要な処理サイクルのカウント値毎に入力される並列データの各データに、前記処理サイクルのカウント値毎かつポート毎に設定される第１の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力する第１の可変遅延手段と、
前記第１の可変遅延手段が各ポートに同一タイミングで出力するデータを入力し、前記処理サイクルのカウント値毎かつポート毎に設定されるシャッフル情報に基づいて、ポート間で前記データを入れ替えて出力するシャッフル手段と、
前記シャッフル手段が複数のポートへ前記処理サイクルのカウント値毎に出力した各データに、前記処理サイクルのカウント値毎かつポート毎に設定される第２の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力する第２の可変遅延手段と、
前記第１の遅延サイクル数、前記シャッフル情報および前記第２の遅延サイクル数を前記処理サイクルのカウント値毎かつポート毎に設定した制御情報を、前記処理サイクルが異なるデータ並べ替え方法と対応して備えて出力する制御情報供給手段と、
を有するデータ並べ替え回路。
【請求項２】
前記処理サイクルのカウント値をカウントするカウント手段を更に有し、
前記制御情報供給手段は、前記カウント手段のカウント値と、前記データ並べ替え方法を表す演算モードとを入力として前記制御情報を出力する、
請求項１に記載のデータ並べ替え回路。
【請求項３】
前記制御情報供給手段から出力された前記制御情報を、第１の可変遅延手段の各ポートに入力するデータに結合する結合手段を更に有し、
前記第１の可変遅延手段は、各ポートに入力したデータに結合された前記制御情報のうちの前記第１の遅延サイクル数を取得する第１の遅延量取出器を有し、
前記シャッフル手段は、前記第１の可変遅延手段から各ポートに入力したデータに結合された前記制御情報のうちの前記シャッフル情報を取得する制御情報取出器を有し、
前記第２の可変遅延手段は、前記シャッフル手段から各ポートに入力したデータに結合された前記制御情報のうちの前記第２の遅延サイクル数を取得する第２の遅延量取出器を有する、
請求項１または２に記載のデータ並べ替え回路。
【請求項４】
複数のポートに対してデータ並べ替えに必要な処理サイクルのカウント値毎に入力される並列データの各データに、前記処理サイクルのカウント値毎かつポート毎に設定される第１の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力する第１の可変遅延回路と、
前記第１の可変遅延回路が各ポートに同一タイミングで出力するデータを入力し、前記処理サイクルのカウント値毎かつポート毎に設定されるシャッフル情報に基づいて、ポート間で前記データを入れ替えて出力するシャッフル手段と、
前記シャッフル手段が複数のポートへ前記処理サイクルのカウント値毎に出力した各データに、前記処理サイクルのカウント値毎かつポート毎に設定される第２の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力する第２の可変遅延回路と、
前記第２の可変遅延回路からの出力を入力として、高速フーリエ変換のバタフライ演算を行うバタフライ演算回路と、
を有する高速フーリエ変換回路。
【請求項５】
複数のポートに対してデータ並べ替えに必要な処理サイクルのカウント値毎に入力される並列データの各データを入れ替えて出力するデータ並べ替え方法であって、
前記処理サイクルのカウント値毎かつポート毎に設定される第１の遅延サイクル数と、前記処理サイクルのカウント値毎かつポート毎に設定されるシャッフル情報と、前記処理サイクルのカウント値毎かつポート毎に設定される第２の遅延サイクル数と、を含む制御情報を生成することと、
前記複数のポートに対してデータ並べ替えに必要な処理サイクルのカウント値毎に入力される並列データの各データに、第１の可変遅延回路において前記第１の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力することと、
前記第１の可変遅延回路が各ポートに同一タイミングで出力するデータを入力し、前記シャッフル情報に基づいて、シャッフル回路においてポート間で前記データを入れ替えて出力することと、
複数のポートへ前記処理サイクルのカウント値毎に前記シャッフル回路が出力した各データに、第２の可変遅延回路において前記第２の遅延サイクル数の遅延を与えることにより、少なくとも一つのポート内で異なるタイミングで入力するデータの順序を入れ替え、前記並列データとしては当該並列データに所定の遅延で出力することと、
を有するデータ並べ替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の連なるデータの順番を並べ替える処理を行う演算回路に関する。
【背景技術】
【０００２】
携帯電話システムの基地局装置やディジタル放送の放送装置などでは、ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）処理が行われる。そして、それらの装置では、高いスループットで効率的にＦＦＴを実行することが求められる。【０００３】
高スループットでＦＦＴを実行するための手法として、基数２や基数４のバタフライ演算器を用いてバタフライ演算を高速に行う手法が知られている。【０００４】
図１は、バタフライ演算器を用いた１６点ＦＦＴの処理構成を示す図である。図１に示すように、１６点ＦＦＴは、基数４のバタフライ演算が２段で実現できる。図２は、バタフライ演算器を用いた３２点ＦＦＴの処理構成を示す図である。図２に示すように、３２点ＦＦＴは、基数４のバタフライ演算が２段と、基数２のバタフライ演算が１段で実現できる。なお、図１、２においては、２本の線が交差した記号は基数２のバタフライ演算を表し、４本の線が○（白丸印）で交差する記号は基数４のバタフライ演算を表している。【０００５】
以降では、図１と図２のそれぞれの段のバタフライ演算は、図の上にあるバタフライ演算から順に処理することを考える。【０００６】
ＦＦＴのスループットをできるだけ高めるには、できるだけ途切れないように毎サイクル、バタフライ演算器にデータを供給することにより、バタフライ演算器を効率よく利用するのが好ましい。複数個のデータを行データとして扱い、１サイクルに１つの行データを読み書きできるメモリに、入出力データあるいは中間データである行データを読み書きしながら、バタフライ演算器へデータを供給するのが有効である。例えば、４並列でＦＦＴ処理を行う場合、４つのデータを行データとして扱い、アドレスｋに対してｄ（４ｋ）、ｄ（４ｋ＋１）、ｄ（４ｋ＋２）、ｄ（４ｋ＋３）という４つのデータを格納するメモリを用いることが有効である。【０００７】
しかしながら、ＦＦＴの性質として、前段の複数のバタフライ演算から出力を集めて次段のバタフライ演算の入力としたり、また前段のバタフライ演算からの出力を次段の複数のバタフライ演算の入力としたりする。したがって、ＦＦＴでは不連続なインデックスのデータを入出力としてバタフライ演算を行う必要がある。そのため、行データ方式のメモリだけでは十分な性能を出せないことが多い。【０００８】
例えば、図１に示した１６点ＦＦＴにおいて、１段目の最初のバタフライ演算（１段目の１番上の○）の出力は、２段目の４つすべてのバタフライ演算の入力となる。また、２段目の最初のバタフライ演算の入力は、１段目の４つの全てのバタフライ演算の出力からなる。【０００９】
このようなバタフライ演算を効率的に行うには、複数の行データ中のデータの順番を効率良く並べ替えることが要求される。複数の行データ中のデータを並べ替える方法として、メモリ入出力の際に転置処理を行う方法がある。【００１０】
特許文献１には、転置メモリを用いてデータ並べ替えを行う技術が開示されている。特許文献１では、転置メモリにより、異なる行データ中のデータを１つの行データに集めたり、１つの行データ中のデータを異なる行データに分配したりすることができる。【００１１】
具体的な例として、以下に示すように４サイクル分の行データの転置を行うことができる。【００１２】
まず、［１］に示す４サイクル分の行データを蓄積する。【００１３】
[数１]
（４ｈ、４ｈ＋１、４ｈ＋２、４ｈ＋３）、
（４ｉ、４ｉ＋１、４ｉ＋２、４ｉ＋３）、
（４ｊ、４ｊ＋１、４ｊ＋２、４ｊ＋３）、
（４ｋ、４ｋ＋１、４ｋ＋２、４ｋ＋３）
・・・・［１］
次に、［１］の行データを転置することにより、［２］に示す行データに変換する。【００１４】
[数２]
（４ｈ、４ｉ、４ｊ、４ｋ）、
（４ｈ＋１、４ｉ＋１、４ｊ＋１、４ｋ＋１）、
（４ｈ＋２、４ｉ＋２、４ｊ＋２、４ｋ＋２）、
（４ｈ＋３、４ｉ＋３、４ｊ＋３、４ｋ＋３）
・・・・［２］
これを図１の１６点ＦＦＴに用いる場合を考える。一般に、メモリ中の入力データは、ｘ０、ｘ１、ｘ３・・・というように番号順に並んでいる。このように入力データが蓄積されたメモリから読み込んだ［３］に示す行データが、［４］に示す転置される。そして、［４］の行データが１段目のバタフライ演算の入力となる。【００１５】
[数３]
（ｘ０、ｘ１、ｘ２、ｘ３）、
（ｘ４、ｘ５、ｘ６、ｘ７）、
（ｘ８、ｘ９、ｘ１０、ｘ１１）、
（ｘ１２、ｘ１３、ｘ１４、ｘ１５）
・・・・（３）【００１６】
[数４]
（ｘ０、ｘ４、ｘ８、ｘ１２）、
（ｘ１、ｘ５、ｘ９、ｘ１３）、
（ｘ２、ｘ６、ｘ１０、ｘ１４）、
（ｘ３、ｘ７、ｘ１１、ｘ１５）
・・・・（４）
１段目のバタフライ演算の出力に対しても同様の転置を行うことにより、２段目のバタフライ演算の入力が得られる。【００１７】
特許文献２には、中間バッファへのデータのマッピング方法を改善することで行データ間の並べ替えを効率的に行う技術が開示されている。これも、２×２などの小さいデータ単位で転置を行う技術である。【００１８】
しかし、既存のデータ並べ替え方法では、点数が異なる複数のＦＦＴが混在する場合に効率的に並べ替えを行うことができない場合があった。具体的には、ある行データのデータ並べ替えと次の行データのデータ並べ替えとの間に、データの衝突を避けるための期間を空ける必要がある場合があった。【００１９】
例えば、図２に示した３２点ＦＦＴの２段目の処理を、基数４のバタフライ演算で行う場合、データの並べ替えにかかる時間は６サイクルである。なおデータの並べ替えの具体的な動作は後述する。一方、図１に示した１６点ＦＦＴの２段目の処理を、基数４のバタフライ演算で行う場合、データの並べ替えにかかる時間は３サイクルである。なおデータの並べ替えの具体的な動作は後述する。【００２０】
データの並べ替えにかかる時間が異なる、３２点ＦＦＴの次に１６点ＦＦＴを行う場合、データの衝突を避けるために、切り替えのために、データ並べ替え回路へのデータ入力を３サイクル以上空ける必要がある。そのため、点数が異なる複数のＦＦＴが混在する場合、データが途切れることによりスループットが低下していた。【００２１】
特許文献３には、既存のデータ並べ替え回路の構成および動作が開示されている。特許文献３に開示された技術では、データ並べ替え回路は遅延回路とスイッチ回路（シャッフル回路）を用いてデータの並べ替えを行う。図３は、特許文献２に開示されたデータ並べ替え回路の模式図である。なお、特許文献４および特許文献５にも同様に遅延回路とシャッフル回路を用いたデータ並べ替え回路の構成および動作が開示されている。【００２２】
図３を参照すると、入力データの一部が直接、シャッフル回路に入力され、残りの入力データが１段目の遅延回路を介してシャッフル回路に入力されている。シャッフル回路の出力の一部が直接、出力データとなり、残りの出力データが２段目の遅延回路を介して出力データとなっている。【００２３】
特許文献３のデータ並べ替え回路は、２並列ないし４並列でデータの並べ替えを行うものであり、演算モードを切り替えることにより、処理する点数に応じた並べ替えを行うことができる。特許文献３では、同一の演算モードにおける各遅延回路の遅延量は一定である。また、ＦＦＴの点数の切り替え時について言及はないが、演算モードの切り替えは、データ並べ替え回路の出力データの衝突を避けるように行う必要がある。そのため、ＦＦＴの点数が切り替わるときには、切り替える後のデータ並べ替えへの入力データを待ち合わせる必要があり、スループットを上げることができなかった。【００２４】
図４は、４並列のデータを並べ替える回路を用いた、一般的なＦＦＴ処理用データ並べ替えの様子を示すタイムチャートである。一般的なＦＦＴ処理用データ並べ替えの回路は、一例として図３に示した構成である。図４の例では、最初に３２点ＦＦＴの２段目のバタフライ演算へ入力するデータを得るための並べ替えが行われている。そして、次に、１６点ＦＦＴの２段目のバタフライ演算へ入力するデータを得るための並べ替えが行われている。【００２５】
図４では、図３の回路における１段目の遅延回路への入力、シャッフル回路への入力、２段目の遅延回路への入力、および２段目の遅延回路の出力が示されている。各部の入出力ポートは＃０〜＃３の４つである。また、３２点ＦＦＴ用入力データをＡ０〜Ａ３１というデータ名で表し、１６点ＦＦＴ用入力データをＢ０〜Ｂ１５というデータ名で表している。【００２６】
なお、データ並べ替え回路への入力は［５］および［６］に示される行データを、４サイクル毎の転置したものである。【００２７】
[数５]
（Ａ０、Ａ１、Ａ２、Ａ３）、
（Ａ８、Ａ９、Ａ１０、Ａ１１）、
（Ａ１６、Ａ１７、Ａ１８、Ａ１９）、
（Ａ２４、Ａ２５、Ａ２６、Ａ２７）、
（Ａ４、Ａ５、Ａ６、Ａ７）、
（Ａ１２、Ａ１３、Ａ１４、Ａ１５）、
（Ａ２０、Ａ２１、Ａ２２、Ａ２３）、
（Ａ２８、Ａ２９、Ａ３０、Ａ３１）、
・・・・［５］【００２８】
[数６]
（Ｂ０、Ｂ１、Ｂ２、Ｂ３）、
（Ｂ４、Ｂ５、Ｂ６、Ｂ７）、
（Ｂ８、Ｂ９、Ｂ１０、Ｂ１１）、
（Ｂ１２、Ｂ１３、Ｂ１４、Ｂ１５）
・・・・［６］
図４の前半に示された、３２点ＦＦＴ用のデータ並べ替えでは、１段目の遅延回路では、＃０、＃１、＃２、＃３の各ポートの入力に対し、それぞれ０，２，４，６サイクルの遅延が与えられる。そして、１段目の遅延回路の出力は、シャッフル回路に入力される。シャッフル回路では、同一のサイクル内でポート間のデータの入れ替えが行われ、その出力が２段目の遅延回路に入力される。２段目の遅延回路では、＃０、＃１、＃２、＃３の各ポートの入力に対し、それぞれ６，４，２，０サイクルの遅延が与えられる。【００２９】
また、図４の後半に示された、１６点ＦＦＴ用のデータ並べ替えでは、１段目の遅延では、＃０、＃１、＃２、＃３の各ポートの入力に対し、それぞれ０，１，２，３サイクルの遅延が与えられる。そして、シャッフル回路では、同一のサイクル内でポート間のデータの入れ替えが行われる。２段目の遅延回路では、＃０、＃１、＃２、＃３の各ポートの入力に対し、それぞれ３，２，１，０サイクルの遅延が与えられる。【００３０】
この並べ替えにより、３２点ＦＦＴの２段目の入力のためのデータ並べ替えと、１６点ＦＦＴの２段目の入力のためのデータ並べ替えが実現される。例えば、サイクル６で出力される（Ａ０、Ａ２、Ａ４、Ａ６）は、図２に示した２段目の１番上のバタフライ演算の入力となる。【００３１】
しかしながら、上述したように、３２点ＦＦＴ用のデータ並べ替えと、１６点ＦＦＴ用のデータ並べ替えでは遅延が異なる。そのため、データ並べ替え回路に３２点ＦＦＴ用データの後に１６点ＦＦＴ用データを続けて入力することができない。データの衝突を避けるために、図４の１段目遅延入力のサイクル８〜１０のように３サイクルの間はデータを入力することができず、その結果、ＦＦＴ処理のスループットが低下する。このようなスループットの低下は、異なる点数のＦＦＴへの切り替えが頻繁に発生するような状況で、より顕著となる。【００３２】
また、特許文献６には、リング・バッファを用いてデータの並べ替えを行う技術が開示されている。しかし、特許文献６は並べ替え及びバタフライ演算をソフトウェアで実現する手法であり、ハードウェアで効率的に並べ替える手法については記載がない。特許文献６では、１系列の入力データをリング・バッファに順に格納し、出力データをソフトウェアで制御して出力することで並べ替えを行う。これによりデータの時間的順序を入れ替えることができるが、これをハードウェアで並列実装するとハードウェア量が大きくなるため現実的ではない。また、特許文献６ではＦＦＴの点数と同じサイズのリング・バッファと演算対象データバッファ２面を用いることで、並べ替えとＦＦＴの実行順序に自由度を持たせている。しかしながら、これら合計３面のバッファをハードウェアで実現すると、やはりハードウェア量が大きくなるため現実的ではない。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特表２００８−５３７６５５号公報
【特許文献２】特開２００３−１５０５７６号公報
【特許文献３】特開平１０−２８３３４１号公報
【特許文献４】特開平０６−３４２４４９号公報
【特許文献５】特表２００２−５０４２５０号公報
【特許文献６】特開２００５−２３５０４５号公報
【発明の概要】
【００３４】
上述したように、データ並べ替え回路において並べ替え方法が変化するときに、データの入力を待ち合わることによってスループットの低下が生じていた。例えば、ＦＦＴを点数の異なるＦＦＴに切り替えるとき、データ並べ替え回路で連続的にデータの並べ替えを行うことができなかった。また、ＦＦＴに限らず、同様なデータ並べ替え回路を用いる装置において連続的なデータの並べ替えが実現できなかった。
【００３５】
本発明の目的は、並べ替え方法が変化しても連続的にデータを入力することが可能なデータ並べ替え回路および方法を提供することである。
【００３６】
上記目的を達成するために、本発明のデータ並べ替え回路は、
複数のポートへ複数のサイクルに入力されたデータ群の各データに入力サイクル毎かつポート毎に異なる遅延サイクル数の遅延を与えることにより、同一ポート内でデータの順序を入れ替え、該データ群として所定の遅延で出力する可変遅延手段と、
前記可変遅延手段において用いる前記遅延サイクル数を含む制御情報を出力する制御手段と、
を有している。
【００３７】
本発明のデータ並べ替え方法は、
複数のポートへ複数のサイクルに入力されるデータ群の各データに対して、同一ポート内でデータの順序を入れ替え、該データ群として所定の遅延となるように定めた、入力サイクル毎かつポート毎に異なる遅延サイクル数を含む制御情報を生成し、
前記制御情報に基づいて、入力データに入力サイクル毎かつポート毎に異なる遅延サイクル数の遅延を与えて出力する、
ものである。
【図面の簡単な説明】
【００３８】
【図１】１６点ＦＦＴの構成図である。
【図２】３２点ＦＦＴの構成図である。
【図３】データ並べ替え回路の構成例を示す図である。
【図４】データ並べ替え回路を用いた３２点ＦＦＴと１６点ＦＦＴの入力データ並べ替え例を示す図である。
【図５】実施形態にかかるデータ並べ替え回路の構成を示すブロック図である。
【図６】実施形態における可変遅延回路の構成を示すブロック図である。
【図７】実施形態における可変遅延回路の他の構成を示すブロック図である。
【図８】実施形態におけるシャッフル回路の構成を示すブロック図である。
【図９】実施形態における可変遅延回路によるデータ並べ替えの様子の一例を示す図である。
【図１０】実施形態におけるデータ並べ替え回路によるデータ並べ替えの一例を示すタイミングチャートである。
【図１１】実施形態におけるデータ並べ替え回路に用いる制御情報テーブルの例を示す図である。
【図１２】実施例におけるＦＦＴ演算器の構成を示すブロック図である。
【図１３】実施形態にかかるデータ並べ替え回路によって３２点ＦＦＴと１６点ＦＦＴの入力データを並べ替える様子の一例を示す図である。
【図１４】本実施形態にかかるデータ並べ替え回路を用いた３２点ＦＦＴと１６点ＦＦＴの入力データ並べ替え例を示す詳細なタイミング図である。
【発明を実施するための形態】
【００３９】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００４０】
以降の説明では、４つの並列データを並べ替えるデータ並べ替え回路を例として説明するが、３以下あるいは５以上の並列データを扱うように構成することもできる。
【００４１】
図５を参照すると、本発明の実施形態に係るデータ並べ替え回路１は、１段目の可変遅延回路２０〜２３、シャッフル回路３、２段目の可変遅延回路２４〜２７、制御情報テーブル４、制御情報結合器４１〜４４、制御情報削除器４５〜４８、およびカウンタ５から構成されている。データ並べ替え回路１には入力データとモード信号とカウンタリセット信号が入力され、出力データが出力される。
【００４２】
ここで、モード信号は、６４点ＦＦＴ用並べ替えや３２点ＦＦＴ用並べ替えなどの、並べ替えパターンの種類（演算モード）を指定するための信号である。カウンタリセット信号は並べ替えパターンの開始時刻を指定するための信号である。カウンタ５は、カウンタリセット信号によりリセットされ、その後、遅延量の単位である１サイクル毎にカウントアップする。
【００４３】
制御情報テーブル４内には、カウンタ５の示すカウント値とモード信号の示す演算モードとの組み合わせに対応する制御情報が格納されている。制御情報には、１段目の可変遅延回路２０〜２３の遅延量と、シャッフル回路３の制御情報と、２段目の可変遅延回路２４〜２７の遅延量とが含まれる。
【００４４】
制御情報テーブル４から出力された制御情報は、制御情報結合器４１〜４４において入力データと結合されて１段目の可変遅延回路２０〜２３へ入力される。また、制御情報は、制御情報削除器４５〜４８において、２段目の可変遅延回路２４〜２７から出力された結合データから取り除かれる。結合データから制御情報を取り除いたデータがデータ並べ替え回路１の出力データとなる。
【００４５】
図６に可変遅延回路２の構成を示す。１段目の可変遅延回路２０〜２３と２段目の可変遅延回路２４〜２７は同じ構成である。図６には、それらに共通する構成が示されている。
【００４６】
図６を参照すると、可変遅延回路２には、複数個の記憶要素２３０〜２３３と、記憶要素に記憶させるデータの選択器２２０〜２２３と、書き込み制御回路２４１と、遅延量取出器２５１が含まれる。
【００４７】
記憶要素２３０〜２３３は、選択器２２０〜２２３を介して、直列に接続されており、１サイクルに１段ずつデータを図中の右方向に受け渡す。
選択器２２０〜２２３は、書き込み制御回路２４１からの制御信号に従って２つの入力から１つを選択し、選択した方のデータを出力する。選択器２２０〜２２３は、制御信号が１であれば遅延量取出器２５１からの入力データを出力し、制御信号が０であれば接続された記憶要素２３０〜２３３からの入力データを出力する。
【００４８】
遅延量取出器２５１は、入力データから可変遅延回路２の遅延量を取り出し、書き込み制御回路２４１に与える。上述したように、入力データには１段目および２段目の可変遅延回路の遅延量が含まれている。遅延量取出器２５１は、自装置が１段目の可変遅延回路であれば１段目の可変遅延回路の遅延量を取出し、自装置が２段目の可変遅延回路であれば２段目の可変遅延回路の遅延量を取出す。
【００４９】
書き込み制御回路２４１は、与えられた遅延量に従って、それぞれの選択器に制御信号を与える。これにより、入力データは、遅延量に対応する記憶要素に格納される。例えば、遅延量が１の場合、右から２番目の選択器２２１のみ制御信号を１とする。これにより、一番右の記憶要素２３０に入力データが格納され、他の記憶要素２３１〜２３３は、それぞれの１つ左側の記憶要素の値を受け取ることができる。出力データには、入力データの遅延量が０以外の場合には一番右の記憶要素２３０の出力が、入力データの遅延量が０の場合には入力データが出力される。
【００５０】
なお、可変遅延回路２は、図６のような構成ではなく、書き込み位置と読み込み位置を個別に制御可能な記憶要素群を用いたリング・バッファの構成など他の方式で実現してもよい。図７にリング・バッファの構成を利用した可変遅延回路２の構成を示す。
【００５１】
可変遅延回路２には、複数個の記憶要素２１０〜２１３と、可変遅延回路制御回路２０１と、遅延量取出器２５１と、書込データ選択器２０２と、読込データ選択器２０３が含まれる。ここで、当該サイクルに出力すべき出力データは、可変遅延回路制御回路２０１により、記憶要素群の中から決定される。そして、可変遅延回路制御回路２０１は、読込データ選択器２０３を用いてその記憶要素の値を出力データとして選択する。すなわち、リング・バッファの要領で、すべての記憶要素を巡回するように選択して出力する。
【００５２】
なお、入力データの遅延量が０の場合、当該サイクルの入力データをそのまま出力するようにする。
【００５３】
遅延量取出器２５１は、入力データから可変遅延回路２の遅延量を取り出し、可変遅延回路制御回路２０１に与える。可変遅延回路制御回路２０１は、与えられた遅延量に対して適切な記憶要素を決定し、書込データ選択器２０２を用いてその記憶要素に入力データを記憶させる。例えば、遅延量が３の場合、３サイクル後にデータが出力される記憶要素へ当該サイクルの入力データを書き込むように制御すればよい。
【００５４】
図８にシャッフル回路３の構成を示す。シャッフル回路３には、選択器３１０〜３１３と制御情報取出器３２０〜３２３が含まれる。
【００５５】
制御情報取出器３２０〜３２３は、入力データから、シャッフル回路３の制御信号を取り出し、データ選択器３１０〜３１３に与え、入力データを選択器３１０〜３１３の全てに配る。
【００５６】
データ選択器３１０〜３１３は、全ての制御情報取出器３２０〜３２３からの４つの入力データを入力とし、与えられた制御信号に従って、入力データのうちいずれかを選択して出力する。
【００５７】
なお、ここではシャッフル回路３の構成例として図８の構成を示したが、シャッフル回路３は、出力ポートを交換できるものであれば、他の構成であってもよい。例えば、出力ポートごとにどの入力ポートからのデータを選択するかではなく、入力ポート毎にどの出力ポートに出力するかを選択するような構成であってもよい。
【００５８】
また、可変遅延回路２及びシャッフル回路３はパイプライン・レジスタを用いてパイプライン化されていてもよいし、されていなくてもよい。例えば、パイプライン化されていないシャッフル回路３の場合、あるサイクルに入力されたデータをシャッフルして、そのサイクルに出力する。パイプライン化されたシャッフル回路３の場合、例えば、前のサイクルに入力されたデータをシャッフルして、次のサイクルに出力する。
【００５９】
次に、図５、図９、および図１０を参照して本実施形態の装置全体の動作について詳細に説明する。
【００６０】
図９に、可変遅延回路２を用いたデータの順序並べ替えの例を示す。時刻１から４に、入力データがａ，ｂ，ｃ，ｄの順で入力されるとする。このとき、サイクル数で表した遅延量をそれぞれ４，５，３，４と与えると、出力データはａ，ｃ，ｂ，ｄの順で出力され、データｂとｃの順序を入れ替えることができる。
【００６１】
また、全体では４サイクルの遅延となっているため、これらのデータ群の前後で同様の並べ替えを行ったとしても、データの衝突が起こらない。すなわち、スループットが１データ／サイクルで並べ替えを実行できる。また、図５のデータ並べ替え回路１は、複数個の可変遅延回路２とシャッフル回路３を組み合わせることで実現できる。
【００６２】
図１０に、図５のデータ並べ替え回路１を用いたデータ並べ替えの様子の一例を示す。このときの制御情報テーブル４の内容を図１１に示す。図１１の表における制御情報として、１段目遅延、シャッフル、２段目遅延のそれぞれについて、ポート＃０，＃１，＃２，＃３に対する値が記載されている。
【００６３】
図１０において、最初のサイクル（サイクル０）では、カウントリセット信号が有効であるためカウンタ５がリセットされる。また、最初の４サイクル間はモード信号が００１であるため、最初のサイクルでは、図１１に示す制御情報テーブルの最初の行の制御信号が読み出される。読み出された制御信号は、制御情報結合器４１〜４４において入力データと結合され、１段目の可変遅延回路２０〜２３に入力する。なお、図１０中では、制御情報と結合されたデータを「データ名（１段目遅延量、シャッフル制御信号、２段目遅延量）」という形式で表現する。また、このデータを結合データと呼ぶことにする。
【００６４】
例えば、カウント００００の入力ポート＃０に入力されるデータに対する１段目の遅延量は２であるため、最初のサイクルの入力データＡには２サイクル遅延の制御情報が結合され、サイクル２に１段目の可変遅延回路２０から出力される。同様に、サイクル１に入力されるデータＣには、図１１中カウント０００１の入力ポート＃０に対する１段目の遅延量が４であるため、４サイクル分の遅延を示す制御情報が結合され、サイクル５において１段目の可変遅延回路２０から出力される。なお、結合データ中の制御情報は、結合データ中のデータと共に遅延されたりシャッフルされたりする。
【００６５】
サイクル３にシャッフル回路３の入力＃０に入力される結合データＥは、シャッフル制御情報が１を示す制御情報を含んでいる。このため、サイクル３におけるシャッフル回路３の出力＃０には、シャッフル回路３の入力＃１にある結合データＢが出力される。同様に、シャッフル回路３の出力＃１には、シャッフル回路３の入力＃０にある結合データＥが出力される。
【００６６】
サイクル３に２段目の可変遅延回路の入力＃０に入力される結合データＢは、２段目遅延量として１を含んでいる。このため、結合データＢは次のサイクルであるサイクル４に２段目の可変遅延回路２５から出力される。同様に、サイクル３に２段目の可変遅延回路の入力＃１に入力される結合データＥの２段目遅延量は０であるので、結合データＥは同じサイクルであるサイクル３に２段目の可変遅延回路２５から出力される。
【００６７】
可変遅延回路２を用いることで同じ入力ポートに異なるタイミングで入力されるデータ間の時間的順序を変更することができる。例えば、１段目の可変遅延回路の入力＃０に入力されるＣとＥは、１段目の可変遅延回路の出力＃０では時間的順序が入れ替わっている。また、シャッフル回路３を用いることで異なる入力ポート間でのデータ並べ替えもできる。このため、本実施形態によれば、入力データを時間的にも空間的にも柔軟に並べ替える複雑な並べ替えを実現することができる。
【００６８】
なお、本実施形態にて用いた演算モードの数やカウンタのビット数は一例であり、その他、さまざまな構成が可能である。例えば、モードの数を増やすことにより、色々な点数のＦＦＴやＦＦＴ以外の処理のための並べ替えに対応してもよい。また、カウンタビット数を増やすことにより、大規模なデータの並べ替えに対応してもよい。
【００６９】
また、本実施形態では、カウンタリセット信号によりリセットされたカウンタ５の値をそのまま使って制御情報テーブルを参照する構成を例示したが、他の構成も可能である。例えば、モード毎にカウンタの最大値を設定するように構成し、モード毎のカウンタの最大値でカウンタ５の値を割った剰余を用いて制御情報テーブルを参照したり、モード毎のカウンタの最大値以下に収まるように抽出したカウンタ５のビット列の一部を用いて制御情報テーブルを参照したりするようにしてもよい。これにより、大規模な並べ替えの制御情報テーブルと小規模な並べ替えの制御情報テーブルとを兼用することができ、テーブルのサイズを小さくすることができる。
【００７０】
また、図６あるいは図７に示した遅延量取出器２５１は、結合データから遅延量を取り出したときに、結合データ中に遅延量の情報を残しておいてもよいし、遅延量の情報を削除してもよい。また、制御情報取出器３２０〜３２３も、結合データに制御情報を残しておいてもよいし、削除してしまってもよい。例えば、１段目遅延の遅延量は、１段目の可変遅延回路でしか使われないので、１段目の可変遅延回路が削除してしまってもよい。なお、遅延量取出器２５１と制御情報取出器３２０〜３２３がそれぞれの情報を削除する場合、図５に示したデータ並べ替え回路１の中の制御情報削除器４５〜４８は不要となる。
【００７１】
以上説明したように、本実施形態によれば、データ並べ替え回路は、複数ポートおよび複数サイクルのデータ群にサイクル毎かつポート毎に異なる遅延サイクル数の遅延を与えることにより、同一ポート内でデータの順序を時間的に入れ替え、データ群として固定的な遅延で出力する。そのため、並べ替え方法が変化しても、データ並べ替え回路に連続的にデータを入力することが可能である。
【００７２】
また、本実施形態によれば、データ並べ替え回路は、更に、複数のポートへ複数のサイクルに入力されたデータを、同一のサイクル内で、ポート間で空間的に入れ替えて出力するので、時間的のみでなく空間的な入れ替えを行う場合でも、データ並べ替え回路に連続的にデータを入力することが可能である。
【００７３】
（実施例）
次に、上述した実施形態のより具体的な実施例について説明する。
【００７４】
図１２に示す本実施例に係るＦＦＴ演算器６００は、バタフライ演算回路６０２と、入力側と出力側の２つのデータ並べ替え回路１００、１０１と、メモリ６０１と、制御回路６０４とを含む。メモリ６０１は入力メモリと出力メモリの２つに分けて構成してもよい。また、メモリ６０１の代わりにレジスタあるいはバッファを設けてもよいし、バタフライ演算を行うデータを入出力する入出力ポートを設けてもよい。
【００７５】
なお、図１２に示すＦＦＴ演算器６００は４並列処理を行うが、並列度は４に限るものではなく、２や８であってもよい。
【００７６】
まず、制御回路６０４は、メモリ６０１に読込アドレスを与える。メモリ６０１は、与えられた読み込みアドレスに対応する行データを読み込み、複数個のデータに分解して入力側のデータ並べ替え回路１００に与える。
【００７７】
次に、制御回路６０４はモード信号とカウンタリセット信号を入力側のデータ並べ替え回路１００に与える。入力側のデータ並べ替え回路１００は、与えられた信号に従ってデータの並べ替えを行い、並べ替えたデータをバタフライ演算回路６０２に与える。
【００７８】
次に、制御回路６０４は制御信号をバタフライ演算回路６０２に与え、バタフライ演算を行わせる。バタフライ演算回路６０２がバタフライ演算を行った結果のデータは出力側のデータ並べ替え回路１０１に与えられる。
【００７９】
次に、制御回路６０４は出力側のデータ並べ替え回路１０１にモード信号とカウンタリセット信号を与え、バタフライ演算回路６０２からの出力データの並べ替えを行わせる。
【００８０】
最後に、制御回路６０４は書込アドレスをメモリ６０１に与える。メモリ６０１は、出力側のデータ並べ替え回路１０１から出力された複数個のデータをまとめ、与えられた書込みアドレスに対応する行データとして記憶する。
【００８１】
バタフライ演算回路６０２は、基数４または基数２のバタフライ演算およびそれぞれに対応した回転因子の乗算を行うことができる。これにより、ＦＦＴ演算器６００は、メモリ６０１中のデータに対して基数４または基数２のバタフライ演算を行い、メモリ６０１に書き込む処理を行うことができる。この一連の動作を１ステージ分の処理と呼ぶ。例えば、１６点ＦＦＴは基数４のバタフライ演算を２ステージ繰り返すことで実現することができる。また、３２点ＦＦＴは２ステージの基数４のバタフライ演算と１ステージの基数２のバタフライ演算の合計３ステージで実現することができる。
【００８２】
なお、１つのＦＦＴ演算器の中に２つ以上のバタフライ演算回路を備え、それらバタフライ演算回路の間にデータ並べ替え回路１を設けることもできる。そうすれば、１ステージにおいて、２つ以上のバタフライ演算を行うことができる。複数個のバタフライ演算回路６０２を縦列接続することで、メモリへデータを入出力する処理によるオーバーヘッドを削減し、処理効率を向上させることができる。
【００８３】
次に、本実施例のデータ並べ替え回路によるデータ並べ替えの動作例について説明する。
【００８４】
図１３に、本実施例のデータ並べ替え回路を用いたデータ並べ替えの様子の一例を示す。ここでは、図４に示したデータ並べ替え回路の例と同じく、３２点ＦＦＴの２段目のバタフライ演算への入力データと、１６点ＦＦＴの２段目のバタフライ演算への入力データをそれぞれ並べ替えている。
【００８５】
１段目の遅延の＃１〜＃３及び２段目の遅延の＃１〜＃３の各回路において、データの時間的な順序の入れ替えが行われている。図１３を見て分かるように、１段目の可変遅延回路と２段目の可変遅延回路は、３２点ＦＦＴ用並べ替えと１６点ＦＦＴ用並べ替えとで、データ並べ替えの処理に必要なサイクル数が同じである。そのため、データの衝突を起こさずに入力データを連続的に入力することができ、処理スループットの最大化を実現できる。個々のＦＦＴにおけるデータ並べ替えの処理に必要なサイクル数は、図４に示したデータ並べ替え回路よりも長くなるが、点数が異なるＦＦＴの間で切り替えが頻繁に発生する状況においては、複数のＦＦＴのデータ並べ替え処理の処理時間をトータルで削減することができる。
【００８６】
図１４に、制御情報を含めた更に詳細なタイミングチャートを示す。図１４では、結合データを「データ名（１段目遅延量、シャッフル制御信号、２段目遅延量）」の形式で表現する。図１２に示した制御回路６０４から与えられるモード信号は、最初の８サイクルの間は００１、次の４サイクルの間は０１０である。最初の８サイクルは３２点ＦＦＴに対応し、次の４サイクルは１６点ＦＦＴに対応する。
【００８７】
また、サイクル０とサイクル８にカウントリセット信号がアサートされ、図５に示したカウンタ５がリセットされる。そして、モード信号の示す演算モードおよびカウンタ５が示すカウント値に対応する制御情報が入力データに結合されて、１段目の可変遅延回路２０〜２３に入力される。例えば、データＡ０に対しては（６，０，６）という制御情報が結合される。
【００８８】
図１４に示すように、１段目の可変遅延回路２０〜２３へ入力される結合データには、１段目および２段目の遅延量およびシャッフル回路の制御情報が結合されている。この制御情報のうち１段目の遅延量を用いて可変遅延回路２０〜２３が１段目の遅延処理を行ったのち、データをシャッフル回路３へ入力する。図１４に示すように、１段目の可変遅延回路（２０）の入力ポート＃１にＡ８、Ａ９・・・Ａ１４の順で入力された結合データのうち、Ａ１４とＡ１５（サイクル６と７）がＡ８〜Ａ１３（サイクル８〜１３）より先に出てきており、時間的順序の入れ替えが行われていることがわかる。
【００８９】
シャッフル回路３においては、入力される結合データに含まれる制御情報のうちシャッフル回路への制御情報を用いて、空間的なデータの交換がなされる。図１４のシャッフル回路出力を参照すると、例えばサイクル６の＃１〜＃３においてデータの入れ替えが行われていることがわかる。
【００９０】
２段目の可変遅延回路２４〜２７においては、入力される結合データに含まれる２段目の遅延量を用いて２段目の遅延処理がなされる。例えば、図１４の例では、２段目の可変遅延回路（２７）の入力ポート＃３に入力されたＡ１４（サイクル６）とＡ６（サイクル１２）のうち、２段目の可変遅延回路の出力においてはＡ６（サイクル１２）の方がＡ１４（サイクル１４）より先に出てきており、時間的順序の入れ替えが行われていることがわかる。
【００９１】
なお、以上説明した本発明の実施形態および実施例の可変遅延回路およびデータ並べ替え回路の適用用途はＦＦＴに限るものではない。
【００９２】
以上、実施形態を参照して本発明を説明したが、本発明はこの実施形態に限定されるものではない。クレームに定義された本発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９３】
この出願は、２００９年９月２４日に出願された日本出願特願２００９−２１８９１９を基礎として優先権の利益を主張するものであり、その開示の全てを引用によってここに取り込む。
【図１】
0005601327.tif 000002
【図２】
0005601327.tif 000003
【図３】
0005601327.tif 000004
【図４】
0005601327.tif 000005
【図５】
0005601327.tif 000006
【図６】
0005601327.tif 000007
【図７】
0005601327.tif 000008
【図８】
0005601327.tif 000009
【図９】
0005601327.tif 000010
【図１０】
0005601327.tif 000011
【図１１】
0005601327.tif 000012
【図１２】
0005601327.tif 000013
【図１３】
0005601327.tif 000014
【図１４】
0005601327.tif 000015