JP3865469B2 - Butterfly calculator - Google Patents

Butterfly calculator Download PDF

Info

Publication number
JP3865469B2
JP3865469B2 JP19265897A JP19265897A JP3865469B2 JP 3865469 B2 JP3865469 B2 JP 3865469B2 JP 19265897 A JP19265897 A JP 19265897A JP 19265897 A JP19265897 A JP 19265897A JP 3865469 B2 JP3865469 B2 JP 3865469B2
Authority
JP
Japan
Prior art keywords
butterfly
data
input
selection circuit
data buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP19265897A
Other languages
Japanese (ja)
Other versions
JPH1139285A (en
Inventor
祐二 中居
暁広 古田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP19265897A priority Critical patent/JP3865469B2/en
Publication of JPH1139285A publication Critical patent/JPH1139285A/en
Application granted granted Critical
Publication of JP3865469B2 publication Critical patent/JP3865469B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明は、高速フーリエ変換等で用いるバタフライ演算装置を構成するバタフライ演算器に関する。
【0002】
【従来の技術】
近年、ディジタル通信技術と半導体集積技術の進歩に伴い、テレビ、ラジオ放送のディジタル化が進められている。地上波を用いたディジタル放送では、多くの場合、変復調方式にOFDM(Orthogonal Frequency Division Multiplex :直交周波数分割多重)が採用されている。OFDMはいくつもの情報を限られた周波数帯域の中で効率よく伝送する方式であり、マルチパスの妨害に強いという地上波放送向けの特徴を持つ。しかし、OFDMでは数千サンプルの大規模な高速フーリエ変換を行う必要があり、その実用化のためには高速フーリエ変換装置の低コスト化が重要な課題となっている。
【0003】
高速フーリエ変換では、バタフライ演算と呼ばれる基本演算と演算データに回転子データを乗じる回転子乗算とを複数回行うことによって、演算を行う。そこで、高速フーリエ変換装置は、バタフライ演算と回転子乗算を行うバタフライ演算装置を備え、このバタフライ演算装置を繰り返し用いて高速フーリエ変換を行う。バタフライ演算として最も一般的なものとして、基数2のバタフライ演算がある。基数2のバタフライ演算を用いてサンプル数N=2^n(nは正の整数、^はべき乗を表す)の高速フーリエ変換を行う場合には、基数2のバタフライ演算をn・2^(n−1)回行う。
【0004】
一方、大規模な高速フーリエ変換では、膨大な演算量を削減するため、基数4などの高基数のバタフライ演算を用いる場合が多い。高基数のバタフライ演算を用いた従来の高速フーリエ変換装置の一例として、基数4のバタフライ演算を用いて高速フーリエ変換を行うものが、A.Delaruelle et al. "A Channel Demodulator IC for Digital Audio Broadcasting"(In IEEE Custom Integrated Circuit Conference, May 1994 )に記載されている。
【0005】
【発明が解決しようとする課題】
しかしながら、従来では、基数4のバタフライ演算を高速フーリエ変換に用いた場合には、高速フーリエ変換装置の回路規模が増大してしまうという問題があった。
【0006】
まず、基数4のバタフライ演算は基数2のバタフライ演算に比べて演算が複雑であるので、その分、バタフライ演算器の回路規模が増大してしまう。
【0007】
また、基数4のバタフライ演算を用いてサンプル数N=2^nの高速フーリエ変換を行う場合には、nの値によっては基数2のバタフライ演算を併せて行う必要が生じる。すなわち、nが偶数のときはn・2^(n−3)回の基数4のバタフライ演算を行えばよいが、nが奇数のときは(n−1)・2^(n−3)回の基数4のバタフライ演算と2^(n−1)回の基数2のバタフライ演算とを行う必要がある。このような動作を実現するためには、バタフライ演算器は基数4と基数2のバタフライ演算の両方を行う機能を備える必要がある。このことは、バタフライ演算器の回路規模の増大につながり、ひいては高速フーリエ変換装置の回路規模の増大を招くことになる。
【0008】
しかも、基数4と基数2のバタフライ演算では演算回数も演算結果データ数も異なるため、単に両方の演算機能を備えただけでは、高速フーリエ変換のための繰り返し演算において、基数4と基数2のバタフライ演算で演算結果が得られるタイミングが異なることになり、このことは、高速フーリエ変換の制御が複雑になるという問題を引き起こす。
【0009】
前記の問題に鑑み、本発明は、基数4のバタフライ演算を行う,回路規模の小さなバタフライ演算器を提供することを目的とする。また、基数4と基数2のバタフライ演算を同じタイミングで実行可能であり、かつ、回路規模が小さなバタフライ演算器を提供することを目的とする。
【0010】
【課題を解決するための手段】
前記の課題を解決するため、本発明は、パイプライン処理によって基数4のバタフライ演算を時分割して行い、演算部の回路規模を削減したものである。また、パイプライン処理における中間データを演算に再帰的に利用することによって、保持する必要があるバタフライ入力の個数を減らして、データバッファのレジスタを削減したものである。さらに、本発明は、1つの基数4バタフライ演算と2つの基数2バタフライ演算とを、共通の演算器を用いて、同一のタイミングで演算結果が得られるように構成したものである。
【0011】
具体的に、請求項1の発明が講じた手段は、基数4のバタフライ演算を下記式
X0=(x0+x2)+(x1+x3)
X1=(x0−x2)+j(x1−x3)
X2=(x0+x2)−(x1+x3)
X3=(x0−x2)−j(x1−x3)
(ただし、x0,x1,x2,x3はバタフライ入力、X0,X1,X2,X3は演算結果データ)
に従ってパイプライン処理によって行うバタフライ演算器として、入力されたバタフライ入力を順に格納する第1のデータバッファと、少なくとも前記第1のデータバッファに格納されたバタフライ入力を基にして、中間データとしてx0+x2、x1+x3、x0−x2、j(x1−x3)をサイクル毎に演算する第1の演算部と、前記第1の演算部によって演算された中間データを順に格納する第2のデータバッファと、少なくとも前記第2のデータバッファに格納された中間データを基にして、演算結果データをサイクル毎に演算する第2の演算部とを備え、前記第1の演算部は、前記第2のデータバッファに格納された中間データを用いて演算を行うものものである。
【0012】
請求項1の発明によると、第1の演算部は少なくとも第1のデータバッファに格納されたバタフライ入力を基にして、サイクル毎に中間データの演算を行い、第2の演算部は少なくとも第2のデータバッファに格納された中間データを基にして、サイクル毎に演算結果データの演算を行う。すなわち、バタフライ演算を時分割してサイクル毎に行うので、演算部の回路規模が削減される。また、第1の演算部は第2のデータバッファに格納された中間データを用いて演算を行うため、バタフライ入力に基づきすでに演算された中間デ ータが新たな中間データの演算に再帰的に利用されることになる。このため、第1のデータバッファに保持する必要のあるバタフライ入力の個数が少なくなり、これにより、第1のデータバッファの回路規模を縮小することができる。
【0013】
そして、請求項2の発明では、前記請求項1のバタフライ演算器において、前記第1のデータバッファはバタフライ入力をサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、前記第2のデータバッファは中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、前記第1の演算部は、当該バタフライ演算器に入力されたバタフライ入力および前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第1の選択回路と、前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力およびこのバタフライ入力に2を乗じたもののいずれか一方を選択出力する第4の選択回路と、前記第1の選択回路の出力データに対して、前記第4の選択回路の出力データの加算または減算を行う第1の加減算器と、前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものとし、前記第2の演算部は、前記第1の演算部から出力された中間データおよび前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第3の選択回路と、前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものとする。
【0014】
請求項2の発明は、請求項1の発明の構成において、第1の演算部に、第1のデータバッファの第2段レジスタに格納されたバタフライ入力およびこのバタフライ入力に2を乗じたもののいずれか一方を選択出力する第4の選択回路を設けるとともに、第1のデータバッファの第4段レジスタに格納されたバタフライ入力の代わりに、第2のデータバッファの第2段レジスタに格納された中間データを第1の選択回路の選択対象データとしたものである。
【0015】
すなわち、請求項2の発明によると、バタフライ入力がx0,x1,x2,x3の順に入力されたとき、第1の演算部はバタフライ入力の入力から2サイクル遅れて4サイクルにわたって演算を行う。前半の2サイクルにおいては、第1の選択回路は当該バタフライ演算器に入力されたバタフライ入力を選択し、第4の選択回路は第1のデータバッファの第2段レジスタに格納されたバタフライ入力を選択し、かつ、第1の加減算器は加算を行い、後半の2サイクルにおいては、第1の選択回路は第2のデータバッファの第2段レジスタに格納された中間データを選択し、第4の選択回路は第1のデータバッファの第2段レジスタに格納されたバタフライ入力に2を乗じたものを選択し、第1の加減算器は減算を行う。また、第2の選択回路は、第1〜第3のサイクルにおいては第1の加減算器の出力データを選択出力する一方、最終サイクルにおいては第1の加減算器の出力データに虚数jを乗じたものを選択出力する。このような動作によって、第1の演算部から、請求項2の発明と同様にx0+x2、x1+x3、x0−x2、j(x1−x3)の順に中間データが出力される。したがって、第1のデータバッファを構成するのに要するレジスタの個数を2に削減することができる。
【0016】
また、請求項3の発明が講じた解決手段は、基数4のバタフライ演算を行う場合には、下記式
X0=(x0+x2)+(x1+x3)
X1=(x0−x2)+j(x1−x3)
X2=(x0+x2)−(x1+x3)
X3=(x0−x2)−j(x1−x3)
(ただし、x0,x1,x2,x3はバタフライ入力、X0,X1,X2,X3は演算結 果データ)
に従ってパイプライン処理によって行うバタフライ演算器として、入力されたバタフライ入力を格納する第1のデータバッファと、少なくとも前記第1のデータバッファに格納されたバタフライ入力を基にして、中間データとしてx0+x2、x1+x3、x0−x2、j(x1−x3)をサイクル毎に演算する第1の演算部と、前記第1の演算部によって演算された中間データを格納する第2のデータバッファと、少なくとも前記第2のデータバッファに格納された中間データを基にして、演算結果データをサイクル毎に演算する第2の演算部とを備え、基数2のバタフライ演算を行う場合には、前記第1の演算部は、中間データとしてx0+x2、x1+x3、x0−x2、x1−x3をサイクル毎に演算可能であり、前記第2の演算部は、0を加算することにより、入力した中間データと同じ値を演算結果データとして出力することにより、当該バタフライ演算器は、2つの基数2のバタフライ演算を、下記式
X0=x0+x2
X1=x1+x3
X2=x0−x2
X3=x1−x3
に従って実行するものである
【0017】
請求項3の発明によると、1つの基数4バタフライ演算および2つの基数2バタフライ演算を、ともに第1および第2の演算部を用いて行うことができ、しかも、基数4と基数2のバタフライ演算の演算タイミングおよび演算結果データの個数を合わせることができる。また、基数2のバタフライ演算では、第1の演算部はj(x1−x3)の代わりにx1−x3を演算すればよく、第2の演算部は入力データをそのまま出力するだけでよいので、基数2のバタフライ演算を実行可能にするための第1および第2の演算部の構成の変更はごくわずかである。
【0018】
そして、請求項4の発明では、前記請求項3のバタフライ演算器において、前記第1のデータバッファはバタフライ入力をサイクル毎に順にシフトする,直列接続された4個のレジスタを備え、前記第2のデータバッファは中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、前記第1の演算部は、当該バタフライ演算器に入力されたバタフライ入力および前記第1のデータバッファの第4段レジスタに格納されたバタフライ入力のいずれか一方を選択出力する第1の選択回路と、前記第1の選択回路の出力データに対して、前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力の加算または減算を行う第1の加減算器と、前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものとし、前記第2の演算部は、前記第1の演算部から出力された中間データ、前記第2のデータバッファの第2段レジスタに格納された中間データ、および論理値“0”のいずれか1つを選択出力する第3の選択回路と、前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものとする。
【0019】
また、請求項5の発明では、前記請求項3のバタフライ演算器において、前記第1のデータバッファはバタフライ入力をサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、前記第2のデータバッファは中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、前記第1の演算部は、当該バタフライ演算器に入力されたバタフライ入力および前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第1の選択回路と、前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力およびこのバタフライ入力に2を乗じたもののいずれか一方を選択出力する第4の選択回路と、前記第1の選択回路の出力データに対して、前記第4の選択回路の出力データの加算または減算を行う第1の加減算器と、前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものとし、前記第2の演算部は、前記第1の演算部から出力された中間データ、前記第2のデータバッファの第2段レジスタに格納された中間データ、および論理値“0”のいずれか1つを選択出力する第3の選択回路と、前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものとする。
【0020】
請求項4および5の発明によると、基数2のバタフライ演算において、第3の選択回路に論理値“0”を選択させることによって、第2の演算部から、入力した中間データをそのまま演算結果データとして出力させることができる。また、第2の選択回路に第1の加減算器の出力データを選択させることによって、第1の演算部から、j(x1−x3)の代わりにx1−x3を出力させることができる。
【0021】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照しながら説明する。
【0022】
(第1の実施形態)
図1は本発明の第1の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。図1に示すバタフライ演算装置は、図10(a)に示すような回転子乗算および基数4バタフライ演算を行うものである。すなわち、図10(a)に示すように、データD0〜D3と回転子データとの回転子乗算を行い、データx0〜x3を算出し、データx0〜x3をバタフライ入力として、次のような式に基づきバタフライ演算を行い、データX0〜X3を算出する。
X0=(x0+x2)+(x1+x3)
X1=(x0−x2)+j(x1−x3)
X2=(x0+x2)−(x1+x3)
X3=(x0−x2)−j(x1−x3)
【0023】
図1において、1はデータx0〜x3をバタフライ入力としてバタフライ演算を行い、演算結果データX0〜X3を出力するバタフライ演算器、5は入力データD0〜D3と回転子データWiとの乗算を行い、データx0〜x3を出力する回転子乗算器、7は回転子乗算器5の出力データx0〜x3を格納するレジスタである。バタフライ演算器1の構成要素として、10はバタフライ入力x0〜x3を順に格納する第1のデータバッファ、20はバタフライ演算器1に入力されたバタフライ入力および第1のデータバッファ10に格納されたバタフライ入力を基にして、中間データの演算を行う第1の演算部、30は第1の演算部20から出力された中間データを順に格納する第2のデータバッファ、40は第1の演算部20から出力された中間データおよび第2のデータバッファ30に格納された中間データを基にして、演算結果データX0〜X3の演算を行う第2の演算部である。
【0024】
第1の演算部20は構成要素として、制御信号SA0に従い加算または減算を行う第1の加減算器21、虚数j(j=−1)を乗じる乗算器22、および制御信号SA0、SS0によりそれぞれ制御される第1および第2の選択回路23,24を備えている。また、第2の演算部40は構成要素として、制御信号SA1に従い加算または減算を行う第2の加減算器41、および制御信号SA1により制御される第3の選択回路42を備えている。また、11〜14および31,32はパイプライン処理におけるサイクルごとに値を更新するレジスタであり、第1のデータバッファ10は直列に接続されたレジスタ11〜14からなり、第2のデータバッファ30は直列に接続されたレジスタ31,32からなる。
【0025】
図2は選択信号の値に応じた各選択回路の出力を示す図である。同図中、(a)は選択信号SA0の値に応じた第1の選択回路23の出力を、(b)は選択信号SS0の値に応じた第2の選択回路24の出力を、(c)は選択信号SA1の値に応じた第3の選択回路42の出力を、それぞれ示している。第1の選択回路23は、図2(a)に示すように、バタフライ演算器1に入力されたバタフライ入力および第1のデータバッファ10のレジスタ14に格納されたバタフライ入力のうち、選択信号SA0が“0”のときはバタフライ演算器1に入力されたバタフライ入力を、選択信号SA0が“1”のときはレジスタ14に格納されたバタフライ入力を、選択出力する。第2の選択回路24は、図2(b)に示すように、第1の加減算器21の出力データおよび乗算器22の出力データ(第1の加減算器21の出力データに虚数jを乗じたもの)のうち、選択信号SS0が“0”のときは第1の加減算器21の出力データを、選択信号SS0が“1”のときは乗算器22の出力データを、選択出力する。第3の選択回路42は、図2(c)に示すように、第2の選択回路24の出力データ(第1の演算部20から出力された中間データ)および第2のデータバッファ30のレジスタ32に格納された中間データのうち、選択信号SA1が“0”のときは第2の選択回路24の出力データを、選択信号SA1が“1”のときはレジスタ32に格納された中間データを、選択出力する。
【0026】
また、第1の加減算器21は選択信号SA0に従って動作し、選択信号SA0が“0”のときは加算を行う一方、“1”のときは減算を行う。第2の加減算器41は選択信号SA1に従って動作し、選択信号SA1が“0”のときは加算を行う一方、“1”のときは減算を行う。
【0027】
ここで、入力データD0〜D3、バタフライ入力x0〜x3、演算結果データX0〜X3、および第1の演算部20が出力する中間データは、それぞれ複素データである。
【0028】
図3は図1に示すバタフライ演算装置の処理タイミングを示す図である。図3に示すように、図1に示すバタフライ演算装置は、入力データD0〜D3をサイクルごとに入力し、入力データD3の入力サイクルの次のサイクルから演算結果データX0〜X3をサイクルごとに出力する。図1に示すバタフライ演算装置における各処理はパイプライン処理であり、演算結果データX0〜X3の出力と次の入力データD0〜D3の入力とをオーバーラップさせて処理することが可能である。図3において、レジスタ出力とあるのは、各レジスタに格納されたデータを示す。
【0029】
入力データD0〜D3は、回転子乗算器5によって回転子データWiを乗じられ、データx0〜x3としてレジスタ7に格納される。レジスタ7の出力データx0〜x3は、バタフライ入力として、第1のデータバッファ10のレジスタ11〜14に順に格納される。
【0030】
第1の演算部20による中間データの演算は、バタフライ入力x0〜x3の入力の開始から2サイクル遅れて開始される。第1の演算部20は、レジスタ7の出力データ(バタフライ演算器1に入力されたバタフライ入力)並びに第1のデータバッファ10の第2段レジスタ12および第4段レジスタ14の出力データを入力として、第1の加減算器21および乗算器22によって、中間データの演算を行う。第1の加減算器21は、レジスタ7の出力データおよび第1のデータバッファ10の第4段レジスタ14の出力データのうち第1の選択回路23によって選択されたものに対して、第1のデータバッファ10の第2段レジスタ12の出力データの加算または減算を行う。乗算器22は第1の加減算器21の出力データに虚数jを乗じ、第2の選択回路24は第1の加減算器21の出力データおよび乗算器22の出力データのいずれか一方を選択し、中間データとして出力する。
【0031】
第1の演算部20による中間データの演算において、選択信号SA0は、前半の2サイクルは“0”になり、後半の2サイクルは“1”になる。したがって、前半の2サイクルでは、第1の選択回路23はバタフライ演算器1に入力されたバタフライ入力を選択出力し、第1の加減算器21は加算を行う一方、後半の2サイクルでは、第1の選択回路23は第1のデータバッファ10の第4段レジスタ14に格納されたバタフライ入力を選択出力し、第1の加減算器21は減算を行う。この結果、第1の加減算器21の各サイクルの出力データは、(x0+x2),(x1+x3),(x0−x2),(x1−x3)となる。
【0032】
また、選択信号SS0は、前半の3サイクルは“0”になり、最終のサイクルのみ“1”になる。したがって、第2の選択回路24は、前半の3サイクルでは第1の加減算器21の出力データを選択出力する一方、最終サイクルでは乗算器22の出力データ(第1の加減算器21の出力データに虚数jを乗じたもの)を選択出力する。この結果、第1の演算部20から中間データとして、(x0+x2),(x1+x3),(x0−x2),j(x1−x3)が順に出力される。第1の演算部20から出力された中間データは、第2のデータバッファ30内のレジスタ31,32に順に格納される。
【0033】
第2の演算部40による演算結果データの演算は、第1の演算部20による中間データの演算から1サイクル遅れて、すなわちバタフライ入力x0〜x3の入力の開始から3サイクル遅れて開始される。第2の演算部40は、第1の演算部20から出力された中間データ並びに第2のデータバッファ30の第1段レジスタ31および第2段レジスタ32に格納された中間データを入力として、第2の加減算器41によって、演算結果データの演算を行う。第2の加減算器41は、第2の選択回路24の出力データおよび第2のデータバッファ30の第2段レジスタ32の出力データのうち第3の選択回路42によって選択されたものに対して、第2のデータバッファ30の第1段レジスタ31の出力データの加算または減算を行う。
【0034】
第2の演算部40による演算結果データの演算において、選択信号SA1は、最初および3番目のサイクルは“0”になり、2番目および最終のサイクルは“1”になる。したがって、最初および3番目のサイクルでは、第3の選択回路42は第2の選択回路24の出力データを選択出力し、第2の加減算器41は加算を行う一方、2番目および最終のサイクルでは、第3の選択回路42は第2のデータバッファ30の第2段レジスタ32の出力データを選択出力し、第2の加減算器41は減算を行う。この結果、第2の演算部40から演算結果データとして、(x0+x2)+(x1+x3)(=X0),(x0+x2)−(x1+x3)(=X1),(x0−x2)+j(x1−x3)(=X2),(x0−x2)−j(x1−x3)(=X3)が出力される。
【0035】
すなわち、入力データがD0,D1,D2,D3の順に入力されるのに対して、演算結果データはX0,X2,X1,X3の順に出力される。演算結果データの出力の順序を、データ入力の順序に合わせるべく、X0,X1,X2,X3とする場合には、演算結果データを格納するアドレスの順序を入れ換えればよい。
【0036】
以上のような処理によって、図1に示すバタフライ演算装置は、入力データD0〜D3に対し、回転子乗算および基数4バタフライ演算を行い、演算結果データX0〜X3を算出する。
【0037】
以上のように、本実施形態によると、バタフライ入力を格納する第1のデータバッファ10と中間データを格納する第2のデータバッファ20とを設け、第1の演算部20および第2の演算部40をパイプライン処理によって1サイクルごとに時分割して用いることによって、基数4のバタフライ演算を行うバタフライ演算器の演算部の回路規模を縮小することができる。
【0038】
(第2の実施形態)
以下、本発明の第2の実施形態について図面を参照しながら説明する。
【0039】
図4は本発明の第2の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。図4に示すバタフライ演算装置は、第1の実施形態と同様に、図10(a)に示すような回転子乗算および基数4バタフライ演算を行うものである。
【0040】
図4において、2はバタフライ入力x0〜x3を基にしてバタフライ演算を行い、演算結果データX0〜X3を出力するバタフライ演算器である。バタフライ演算器2の構成要素として、10Aはバタフライ入力x0〜x3を順に格納する第1のデータバッファ、20Aはバタフライ演算器2に入力されたバタフライ入力および第1のデータバッファ10Aに格納されたバタフライ入力を基にして、中間データの演算を行う第1の演算部、30は第1の演算部20Aから出力された中間データを順に格納する第2のデータバッファ、40は第1の演算部20Aから出力された中間データおよび第2のデータバッファ30に格納された中間データを基にして、演算結果データX0〜X3の演算を行う第2の演算部である。図4において、図1と同一の機能を有するものには同一の符号を付しており、本実施形態ではその詳細な説明を省略する。
【0041】
図4に示すバタフライ演算器2が図1に示すバタフライ演算器1と異なるのは、図1に示すバタフライ演算器1の第1のデータバッファ10が4段のレジスタから構成されていたのに対し、図4に示すバタフライ演算器2の第1のデータバッファ10Aは2段のレジスタから構成されている点である。
【0042】
図4に示すバタフライ演算器2の第1の演算部20Aは、図1に示すバタフライ演算器1の第1の演算部20の各構成要素以外に、入力データに2を乗じる乗算器25および制御信号SB0により制御される第4の選択回路26を備えている。すなわち、第1のデータバッファ10Aを2段のレジスタで構成するため、バタフライ演算器2に入力されたバタフライ入力および第2のデータバッファ30の第2段レジスタ32に格納された中間データのうち第1の選択回路23によって選択出力されたものと、第1のデータバッファ10Aの第2段レジスタ12に格納されたバタフライ入力および乗算器25の出力データ(レジスタ12に格納されたバタフライ入力に2を乗じたもの)のうち第4の選択回路26によって選択されたものとを、第1の加減算器21の入力としている。
【0043】
図5は選択信号の値に応じた各選択回路の出力を示す図である。同図中、(a)は選択信号SA0の値に応じた第1の選択回路23の出力を、(b)は選択信号SB0の値に応じた第4の選択回路26の出力を、それぞれ示している。第1の選択回路23は、図5(a)に示すように、バタフライ演算器2に入力されたバタフライ入力および第2のデータバッファ30のレジスタ32に格納された中間データのうち、選択信号SA0が“0”のときはバタフライ演算器2に入力されたバタフライ入力を、選択信号SA0が“1”のときはレジスタ32に格納された中間データを、選択出力する。第4の選択回路26は、図5(b)に示すように、第1のデータバッファ10Aの第2段レジスタ12に格納されたバタフライ入力および乗算器25の出力データのうち、選択信号SB0が“0”のときはレジスタ12に格納されたバタフライ入力を、選択信号SB0が“1”のときは乗算器25の出力データを、選択出力する。
【0044】
図6は図4に示すバタフライ演算装置の処理タイミングを示す図である。第1の実施形態と同様に、入力データD0〜D3をサイクルごとに入力し、入力データD3の入力サイクルの次のサイクルから演算結果データX0〜X3をサイクルごとに出力する。各処理はパイプライン処理であり、演算結果データX0〜X3の出力と次の入力データD0〜D3の入力とをオーバーラップさせて処理することが可能である。また、第1の実施形態と同様に、第1の演算部20Aによる中間データの演算は、バタフライ入力x0〜x3の入力の開始から2サイクル遅れて開始され、第2の演算部40による演算結果データの演算は、第1の演算部20Aによる中間データの演算から1サイクル遅れて、すなわちバタフライ入力x0〜x3の入力の開始から3サイクル遅れて開始される。
【0045】
バタフライ入力x0〜x3は、第1のデータバッファ10Aのレジスタ11,12に順に格納される。第1の演算部20Aは、バタフライ演算器2に入力されたバタフライ入力、第1のデータバッファ10Aの第2段レジスタ12に格納されたバタフライ入力および第2のデータバッファ30の第2段レジスタ32に格納された中間データを入力として、第1の加減算器21および乗算器22,25によって、中間データの演算を行う。第1の加減算器21は、バタフライ演算器2に入力されたバタフライ入力およびレジスタ32に格納された中間データのうち第1の選択回路23によって選択されたものに対し、レジスタ12に格納されたバタフライ入力および乗算器25の出力データのうち第4の選択回路26によって選択されたものの加算または減算を行う。乗算器22および第2の選択回路24の動作は第1の実施形態と同様である。
【0046】
第1の演算部20Aによる中間データの演算において、選択信号SA0は、前半の2サイクルは“0”になり、後半の2サイクルは“1”になる。したがって、前半の2サイクルでは、第1の選択回路23はバタフライ演算器2に入力されたバタフライ入力を選択出力し、第1の加減算器21は加算を行う一方、後半の2サイクルでは、第1の選択回路23はレジスタ32に格納された中間データを選択出力し、第1の加減算器21は減算を行う。また、選択信号SB0は、前半の2サイクルは“0”になり、後半の2サイクルは“1”になる。したがって、第4の選択回路26は、前半の2サイクルではレジスタ12に格納されたバタフライ入力を選択出力する一方、後半の2サイクルでは乗算器25の出力データを選択出力する。
【0047】
この結果、第1の加減算器21には、各サイクルにおいて、入力Aとしてx2,x3,(x0+x2),(x1+x3)が、入力Bとしてx0,x1,x2・2,x3・2が入力される。したがって、第1の加減算器21の出力データは(x0+x2),(x1+x3),(x0−x2),(x1−x3)となる。
【0048】
第2のデータバッファ30、第2の演算部40の処理は、第1の実施形態と同様である。この結果、第2の演算部40から演算結果データとして、(x0+x2)+(x1+x3)(=X0),(x0+x2)−(x1+x3)(=X2),(x0−x2)+j(x1−x3)(=X1),(x0−x2)−j(x1−x3)(=X3)が出力される。
【0049】
ここで、第1の加減算器21に着目すると、図3および図6に示すように、本実施形態と第1の実施形態とでは同一のデータが出力される。第1の実施形態では、第1の加減算器21は後半の2サイクルにおける出力データ(x0−x2),(x1−x3)を、第1のデータバッファ10の第2段および第4段レジスタ12,14に格納されたバタフライ入力から算出していた。このため、図10(a)に示すバタフライ演算の第1段目の加減算で用いるデータの間隔の2倍に等しい段数のレジスタが、第1のデータバッファ10には必要であった。例えば、(x0−x2)は0番目と2番目のデータを用いた演算であり、データ間隔は2である。また(x1−x3)は1番目と3番目のデータを用いた演算であり、データ間隔は2である。したがって、第1の実施形態では、第1のデータバッファ10に4段のレジスタを必要とする。
【0050】
一方、本実施形態では、第1の加減算器21は後半の2サイクルにおける出力データ(x0−x2),(x1−x3)を、第1のデータバッファ10Aの第2段レジスタ12に格納されたバタフライ入力および第2のデータバッファ30の第2段レジスタ32に格納された中間データから算出する。すなわち、すでに算出した前半の2サイクルにおける中間データ(x0+x2),(x1+x3)が第2のデータバッファ30のレジスタ31,32に格納されることを利用し、それぞれx2,x3に2を乗じた値を減算することによって、後半の2サイクルにおける出力データ(x0−x2),(x1−x3)を算出する。これにより、後半の2サイクルにおける中間データの演算にはバタフライ入力x0,x1は不要になるので、第1のデータバッファ10Aを2段のレジスタのみで構成することが可能になる。
【0051】
以上のように本実施形態によれば、第1の演算部20Aに2を乗じる乗算器25を設け、第2のデータバッファ30に格納された中間データを用いて第1の演算部20Aで演算を行うことにより、第1のデータバッファ10Aのレジスタ段数を削減することができる。
【0052】
(第3の実施形態)
以下、本発明の第3の実施形態について図面を参照しながら説明する。
【0053】
図7は本発明の第3の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。図7に示すバタフライ演算装置は、図10(a)に示すような回転子乗算および基数4バタフライ演算と、図10(b)に示すような回転子乗算および基数2バタフライ演算とを行うものである。
【0054】
基数2バタフライ演算時には2つのバタフライ演算を行う。すなわち、図10(b)に示すように、データD0〜D3と回転子データとの回転子乗算を行い、データx0〜x3を算出し、データx0〜x3をバタフライ入力として、次のような式に基づきバタフライ演算を行い、データX0〜X3を算出する。
<第1の基数2バタフライ演算>
X0=x0+x2、X2=x0−x2
<第2の基数2バタフライ演算>
X1=x1+x3、X3=x1−x3
【0055】
図7において、3はバタフライ入力x0〜x3を基にして基数4または基数2のバタフライ演算を行い、演算結果データX0〜X3を出力するバタフライ演算器である。バタフライ演算器3の構成要素として、10Aはバタフライ入力x0〜x3を順に格納する第1のデータバッファ、20Aはバタフライ演算器3に入力されたバタフライ入力および第1のデータバッファ10Aに格納されたバタフライ入力を基にして、中間データの演算を行う第1の演算部、30は第1の演算部20Aから出力された中間データを順に格納する第2のデータバッファ、40Aは第1の演算部20Aから出力された中間データおよび第2のデータバッファ30に格納された中間データを基にして、演算結果データX0〜X3の演算を行う第2の演算部である。図7において、図4と同一の機能を有するものには同一の符号を付しており、本実施形態ではその詳細な説明を省略する。
【0056】
図7に示すバタフライ演算器3が図4に示すバタフライ演算器2と異なるのは、基数2バタフライ演算を行うために、第2の演算部40Aが、図4に示すバタフライ演算器2の第2の演算部40における第3の選択回路42の代わりに、選択信号SC0に従って動作する第3の選択回路43を備えている点である。
【0057】
第3の選択回路43は選択対象のデータとして論理値“0”が追加されており、図8に示すように、第2の選択回路24の出力データ(第1の演算部20Aから出力された中間データ)、第2のデータバッファ30のレジスタ32に格納された中間データ、および論理値“0”のうち、選択信号SC0が“0”のときは第2の選択回路24の出力データを、選択信号SC0が“1”のときはレジスタ32に格納された中間データを、そして選択信号SC0が“2”のときは論理値“0”を選択出力する。また、第2の加減算器41は、選択信号SC0が“0”または“2”のときは加算を行う一方、“1”のときは減算を行う。
【0058】
バタフライ演算器3が基数4バタフライ演算を行うときは、第2の演算部40Aの第3の選択回路43は論理値“0”を選択せず、第1および第2の実施形態に係る第2の演算部40の第3の選択回路42と同様の動作を行う。一方、基数2バタフライ演算を行うときは、第2の演算部40Aの第3の選択回路43は常に論理値“0”を選択出力する。
【0059】
図9は図7に示すバタフライ演算装置が基数2バタフライ演算を行うときの処理タイミングを示す図である。第1および第2の実施形態と同様に、入力データD0〜D3をサイクルごとに入力し、入力データD3の入力サイクルの次のサイクルから演算結果データX0〜X3をサイクルごとに出力する。各処理はパイプライン処理であり、演算結果データX0〜X3の出力と次の入力データD0〜D3の入力とをオーバーラップさせて処理することが可能である。また、第1および第2の実施形態と同様に、第1の演算部20Aによる中間データの演算は、バタフライ入力x0〜x3の入力の開始から2サイクル遅れて開始され、第2の演算部40Aによる演算結果データの演算は、第1の演算部20Aによる中間データの演算から1サイクル遅れて、すなわちバタフライ入力x0〜x3の入力の開始から3サイクル遅れて開始される。
【0060】
第1のデータバッファ10A、第1の演算部20Aおよび第2のデータバッファ30は、第2の実施形態と同様に動作する。ただし、選択信号SS0は基数2のバタフライ演算において常に“0”に設定され、これにより、第1の演算部20Aから中間データとして第1の加減算器21の出力データに虚数jが乗じられたものが出力されることはなく、第1の演算部20Aは最終サイクルにおいて、中間データとして(x1−x3)を出力する。
【0061】
第2の演算部40Aによる演算結果データの演算において、選択信号SC0は基数2のバタフライ演算において常に“2”になるので、第3の選択回路43は論理値“0”を選択出力するとともに、第2の加減算器41は加算を行う。これにより、第2の演算部40Aから、演算結果データとして、第2のデータバッファ30の第1段レジスタ31に格納された中間データと同じ値が出力される。すなわち、第2の演算部40Aから演算結果データとして、x0+x2(=X0),x1+x3(=X1),x0−x2(=X2),x1−x3(=X3)が出力される。
【0062】
なお、基数4バタフライ演算を行うときは、第2の演算部40Aの第3の選択回路43は第1および第2の実施形態に係る第2の演算部40の第3の選択回路42と同様の動作を行うので、図6と同様の処理タイミングになる。
【0063】
図9に示すように、入力データがD0,D1,D2,D3の順に入力されるのに対して、演算結果データはX0,X1,X2,X3の順に出力される。一方、基数4バタフライ演算では、図6に示すように、演算結果データはX0,X2,X1,X3の順に出力される。演算結果データの出力の順序を基数4バタフライ演算と基数2バタフライ演算とで合わせる場合には、演算結果データを格納するアドレスの順序を入れ換えればよい。
【0064】
以上のような処理によって、図7に示すバタフライ演算装置は、入力データD0〜D3に対し、回転子乗算および1つの基数4バタフライ演算、または回転子乗算および2つの基数2バタフライ演算を行い、演算結果データX0〜X3を算出する。
【0065】
以上のように、本実施形態によれば、第2の演算部40A内の第3の選択回路43に論理値0を選択する機能を設けることによって、1つの基数4バタフライ演算、または2つの基数2バタフライ演算をデータ出力タイミングを合わせて行うことができる。すなわち、基数4バタフライ演算および基数2バタフライ演算の両方を同一タイミングで実行可能なバタフライ演算器を簡易な構成によって実現することができ、しかもその切替は単純な制御によって行うことができる。
【0066】
なお、第1、第2、第3の実施形態において、各レジスタは複素データを格納するレジスタであり、各演算器は複素データに対する演算器であるものとしたが、各レジスタを実数部レジスタと虚数部レジスタとに分けて従属接続し、各演算器において実数部演算および虚数部演算を時分割して行ってもよい。この場合には、第1のデータバッファ10,10Aおよび第2のデータバッファ30のレジスタ段数は前述した実施形態における段数の倍の段数となり、各演算器は前述した実施形態における回路規模の半分の回路規模となる。
【0067】
また、第2および第3の実施形態において、第1の演算部20A内に2を乗じる乗算器25を設けたが、この乗算器25の代わりに入力データを上位側に1ビットシフトする1ビットシフタを設けてもよい。
【0068】
【発明の効果】
以上のように本発明によると、基数4バタフライ演算をパイプライン処理によって行い、演算器を時分割して用いるので、演算器の回路規模が削減される。また、すでに演算された中間データを用いて新たな中間データの演算を行うので、バタフライ入力を保持する第1のデータバッファのレジスタ段数が削減される。さらに、基数4と基数2のバタフライ演算を共通の演算器で実行可能なので、演算器の回路規模の増大が抑制される。したがって、回路規模の小さなバタフライ演算器を実現することができる。
【0069】
また、1つの基数4バタフライ演算および2つの基数2バタフライ演算の演算結果データの出力タイミングを合わせることができるので、本発明に係るバタフライ演算器を用いることによって、高速フーリエ変換装置におけるバタフライ演算の繰り返し演算の制御が容易になる。
【図面の簡単な説明】
【図1】 本発明の第1の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。
【図2】 (a)〜(c)は本発明の第1の実施形態における選択回路の動作を示す図である。
【図3】 本発明の第1の実施形態におけるバタフライ演算装置の処理タイミングを示す図である。
【図4】 本発明の第2の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。
【図5】 (a),(b)は本発明の第2の実施形態における選択回路の動作を示す図である。
【図6】 本発明の第2の実施形態におけるバタフライ演算装置の処理タイミングを示す図である。
【図7】 本発明の第3の実施形態に係るバタフライ演算器を含むバタフライ演算装置の構成図である。
【図8】 本発明の第3の実施形態における選択回路の動作を示す図である。
【図9】 本発明の第3の実施形態におけるバタフライ演算装置の処理タイミングを示す図である。
【図10】 (a),(b)はバタフライ演算装置が実行するバタフライ演算を示す図である。
【符号の説明】
1,2,3 バタフライ演算器
10,10A 第1のデータバッファ
11,12,13,14 レジスタ
20,20A 第1の演算部
21 第1の加減算器
23 第1の選択回路
24 第2の選択回路
26 第4の選択回路
30 第2のデータバッファ
31,32 レジスタ
40,40A 第2の演算部
41 第2の加減算器
42,43 第3の選択回路
[0001]
BACKGROUND OF THE INVENTION
  The present invention relates to a butterfly computing unit constituting a butterfly computing device used in fast Fourier transform or the like.
[0002]
[Prior art]
  In recent years, with the progress of digital communication technology and semiconductor integration technology, digitization of television and radio broadcasting has been promoted. In digital broadcasting using terrestrial waves, OFDM (Orthogonal Frequency Division Multiplex) is often used as a modulation / demodulation method. OFDM is a method for efficiently transmitting a number of information within a limited frequency band, and has a feature for terrestrial broadcasting that is resistant to multipath interference. However, in OFDM, it is necessary to perform a large-scale fast Fourier transform of several thousand samples, and the cost reduction of the fast Fourier transform device is an important issue for practical use.
[0003]
  In the fast Fourier transform, a calculation is performed by performing a basic calculation called a butterfly calculation and a rotor multiplication that multiplies the calculation data by the rotor data a plurality of times. Therefore, the fast Fourier transform device includes a butterfly computation device that performs butterfly computation and rotator multiplication, and performs fast Fourier transform by repeatedly using the butterfly computation device. The most common butterfly operation is a radix-2 butterfly operation. When performing a fast Fourier transform of the number of samples N = 2 ^ n (n represents a positive integer, ^ represents a power) using a radix-2 butterfly operation, the radix-2 butterfly operation is performed by n · 2 ^ (n -1) Repeat.
[0004]
  On the other hand, a large-scale fast Fourier transform often uses a high radix butterfly computation such as radix 4 in order to reduce a huge amount of computation. An example of a conventional fast Fourier transform device using a high radix butterfly operation is one that performs a fast Fourier transform using a radix 4 butterfly operation. A. Delaruelle et al. (In IEEE Custom Integrated Circuit Conference, May 1994).
[0005]
[Problems to be solved by the invention]
  However, conventionally, when the radix-4 butterfly operation is used for the fast Fourier transform, there is a problem that the circuit scale of the fast Fourier transform device increases.
[0006]
  First, since the radix-4 butterfly operation is more complicated than the radix-2 butterfly operation, the circuit scale of the butterfly calculator increases accordingly.
[0007]
  Further, when performing fast Fourier transform of the number of samples N = 2 ^ n using the radix-4 butterfly operation, depending on the value of n, it is necessary to perform the radix-2 butterfly operation together. That is, when n is an even number, radix-4 butterfly operations may be performed n · 2 ^ (n−3) times, but when n is an odd number, (n−1) · 2 ^ (n−3) times. Radix-4 butterfly computation and 2 ^ (n-1) radix-2 butterfly computations. In order to realize such an operation, the butterfly computing unit needs to have a function of performing both radix-4 and radix-2 butterfly computations. This leads to an increase in the circuit scale of the butterfly computing unit, which in turn leads to an increase in the circuit scale of the fast Fourier transform device.
[0008]
  In addition, since the number of calculations and the number of calculation result data are different in the radix-4 and radix-2 butterfly calculations, the radix-4 and radix-2 butterflies are used in the repetitive calculation for the fast Fourier transform only by providing both the calculation functions. The timing at which the calculation result is obtained in the calculation is different, which causes a problem that the control of the fast Fourier transform becomes complicated.
[0009]
  In view of the above problems, an object of the present invention is to provide a butterfly calculator with a small circuit scale that performs radix-4 butterfly calculations. It is another object of the present invention to provide a butterfly calculator that can execute radix-4 and radix-2 butterfly calculations at the same timing and has a small circuit scale.
[0010]
[Means for Solving the Problems]
  In order to solve the above-described problem, the present invention performs radix-4 butterfly computation in a time-sharing manner by pipeline processing to reduce the circuit scale of the computation unit. Further, by recursively using intermediate data in the pipeline processing for calculation, the number of butterfly inputs that need to be held is reduced, and the number of data buffer registers is reduced. Furthermore, the present invention is configured such that one radix-4 butterfly computation and two radix-2 butterfly computations are obtained at the same timing using a common computing unit.
[0011]
  Specifically, the means taken by the invention of claim 1 is that the radix-4 butterfly operation is expressed by the following equation:
  X0 = (x0 + x2) + (x1 + x3)
  X1 = (x0−x2) + j (x1−x3)
  X2 = (x0 + x2)-(x1 + x3)
  X3 = (x0−x2) −j (x1−x3)
(However, x0, x1, x2, and x3 are butterfly inputs, and X0, X1, X2, and X3 are operation result data)
As a butterfly calculator that performs pipeline processing according toIn orderBased on the first data buffer to be stored and at least the butterfly input stored in the first data buffer, x0 + x2, x1 + x3, x0-x2, j (x1-x3) are calculated for each cycle as intermediate data. The first calculation unit and the intermediate data calculated by the first calculation unitIn orderA second data buffer for storing, and a second calculation unit for calculating calculation result data for each cycle based on at least the intermediate data stored in the second data buffer.The first operation unit performs an operation using the intermediate data stored in the second data buffer.Is a thing.
[0012]
  According to the first aspect of the present invention, the first calculation unit calculates intermediate data for each cycle based on at least the butterfly input stored in the first data buffer, and the second calculation unit includes at least the second calculation unit. On the basis of the intermediate data stored in the data buffer, calculation result data is calculated for each cycle. That is, since the butterfly operation is performed in a time-sharing manner for each cycle, the circuit scale of the operation unit is reduced.In addition, since the first calculation unit performs calculation using the intermediate data stored in the second data buffer, the intermediate calculation already calculated based on the butterfly input is performed. The data is recursively used to calculate new intermediate data. For this reason, the number of butterfly inputs that need to be held in the first data buffer is reduced, whereby the circuit scale of the first data buffer can be reduced.
[0013]
  AndClaim 2In the invention ofClaim 1In the butterfly computing unit, the first data buffer includes two registers connected in series that sequentially shift the butterfly input every cycle, and the second data buffer shifts the intermediate data sequentially every cycle. , Two registers connected in series, wherein the first arithmetic unit is one of the butterfly input inputted to the butterfly computing unit and the intermediate data stored in the second stage register of the second data buffer. A first selection circuit that selectively outputs one of the above, a butterfly input stored in the second stage register of the first data buffer, and a fourth that multiplies this butterfly input by 2 A first circuit that adds or subtracts the output data of the fourth selection circuit to the output data of the selection circuit and the first selection circuit; A second selection circuit that selectively outputs, as intermediate data, one of the subtractor and the output data of the first adder / subtractor and the output data multiplied by an imaginary number j; A third selection circuit that selectively outputs one of the intermediate data output from the first calculation unit and the intermediate data stored in the second stage register of the second data buffer; The second selection circuit adds or subtracts the butterfly input stored in the first stage register of the second data buffer to the output data of the third selection circuit, and outputs the addition or subtraction result as operation result data. And an adder / subtractor.
[0014]
  Claim 2The invention ofClaim 1In the configuration of the invention, the first calculation unit selects and outputs either the butterfly input stored in the second stage register of the first data buffer or the butterfly input multiplied by 2 In addition to providing a circuit, instead of the butterfly input stored in the fourth stage register of the first data buffer, the intermediate data stored in the second stage register of the second data buffer is selected by the first selection circuit. It is data.
[0015]
  That is,Claim 2According to the invention, when the butterfly inputs are input in the order of x0, x1, x2, and x3, the first calculation unit performs the calculation over four cycles with a delay of two cycles from the input of the butterfly input. In the first two cycles, the first selection circuit selects the butterfly input input to the butterfly computing unit, and the fourth selection circuit receives the butterfly input stored in the second stage register of the first data buffer. The first adder / subtracter performs addition, and in the latter two cycles, the first selection circuit selects the intermediate data stored in the second stage register of the second data buffer, and the fourth The selection circuit selects the one obtained by multiplying the butterfly input stored in the second stage register of the first data buffer by 2, and the first adder / subtracter performs subtraction. The second selection circuit selectively outputs the output data of the first adder / subtracter in the first to third cycles, while the output data of the first adder / subtracter is multiplied by the imaginary number j in the final cycle. Select and output things. With this operation, intermediate data is output from the first arithmetic unit in the order of x0 + x2, x1 + x3, x0-x2, j (x1-x3), as in the second aspect of the invention. Therefore, the number of registers required for configuring the first data buffer can be reduced to 2.
[0016]
  Also,The solution provided by the invention of claim 3 is that when performing a radix-4 butterfly operation,
    X0 = (x0 + x2) + (x1 + x3)
    X1 = (x0−x2) + j (x1−x3)
    X2 = (x0 + x2)-(x1 + x3)
    X3 = (x0−x2) −j (x1−x3)
(However, x0, x1, x2, and x3 are butterfly inputs, and X0, X1, X2, and X3 are operation results. Fruit data)
As a butterfly computing unit to be executed by pipeline processing according to the above, based on the first data buffer for storing the input butterfly input and at least the butterfly input stored in the first data buffer, intermediate data x0 + x2, x1 + x3 , X0−x2, j (x1−x3) for each cycle, a second data buffer for storing intermediate data calculated by the first calculation unit, and at least the second A second computing unit that computes computation result data for each cycle based on the intermediate data stored in the data buffer, and when performing radix-2 butterfly computation,The first calculation unit can calculate x0 + x2, x1 + x3, x0-x2, x1-x3 as intermediate data for each cycle, and the second calculation unitBy adding 0,Intermediate data enteredSame value asOutput as operation result dataByThe butterfly computing unit performs two radix-2 butterfly computations using the following formula:
    X0 = x0 + x2
    X1 = x1 + x3
    X2 = x0-x2
    X3 = x1-x3
Run according toTo do.
[0017]
  Claim 3According to the invention, one radix-4 butterfly computation and two radix-2 butterfly computations can be performed using the first and second computing units, and the computation timing of the radix-4 and radix-2 butterfly computations. And the number of operation result data can be matched. In the radix-2 butterfly calculation, the first calculation unit only needs to calculate x1-x3 instead of j (x1-x3), and the second calculation unit only needs to output the input data as it is. There is very little change in the configuration of the first and second calculation units to enable execution of the radix-2 butterfly calculation.
[0018]
  AndClaim 4In the invention ofClaim 3In the butterfly computing unit, the first data buffer includes four registers connected in series for sequentially shifting the butterfly input every cycle, and the second data buffer shifts the intermediate data sequentially for each cycle. , Two registers connected in series, and the first arithmetic unit is one of the butterfly input inputted to the butterfly computing unit and the butterfly input stored in the fourth stage register of the first data buffer. A first selection circuit that selectively outputs one of them, and a butterfly input that is stored in the second stage register of the first data buffer is added to or subtracted from the output data of the first selection circuit. 1 of the first adder / subtracter, the output data of the first adder / subtractor, and the output data multiplied by the imaginary number j, A second selection circuit that selectively outputs the intermediate data output from the first calculation unit and the second stage register of the second data buffer. A third selection circuit that selectively outputs any one of the intermediate data and the logical value “0”, and the first stage of the second data buffer for the output data of the third selection circuit A second adder / subtracter that adds or subtracts the butterfly input stored in the register and outputs the addition or subtraction result as operation result data is provided.
[0019]
  Also,Claim 5In the invention ofClaim 3In the butterfly computing unit, the first data buffer includes two registers connected in series that sequentially shift the butterfly input every cycle, and the second data buffer shifts the intermediate data sequentially every cycle. , Two registers connected in series, wherein the first arithmetic unit is one of the butterfly input inputted to the butterfly computing unit and the intermediate data stored in the second stage register of the second data buffer. A first selection circuit that selectively outputs one of the above, a butterfly input stored in the second stage register of the first data buffer, and a fourth that multiplies this butterfly input by 2 A first circuit that adds or subtracts the output data of the fourth selection circuit to the output data of the selection circuit and the first selection circuit; A second selection circuit that selectively outputs, as intermediate data, one of the subtractor and the output data of the first adder / subtractor and the output data multiplied by an imaginary number j; The arithmetic unit selectively outputs any one of the intermediate data output from the first arithmetic unit, the intermediate data stored in the second stage register of the second data buffer, and the logical value “0”. The addition or subtraction of the butterfly input stored in the first stage register of the second data buffer is performed on the output data of the third selection circuit and the third selection circuit, and the addition or subtraction result is obtained. It is assumed that a second adder / subtracter that outputs the calculation result data is provided.
[0020]
  Claims 4 and 5According to the invention, in the radix-2 butterfly calculation, the third selection circuit selects the logical value “0”, so that the intermediate data input from the second calculation unit can be directly output as calculation result data. it can. In addition, by causing the second selection circuit to select the output data of the first adder / subtracter, x1-x3 can be output instead of j (x1-x3) from the first arithmetic unit.
[0021]
DETAILED DESCRIPTION OF THE INVENTION
  Hereinafter, embodiments of the present invention will be described with reference to the drawings.
[0022]
(First embodiment)
  FIG. 1 is a configuration diagram of a butterfly computing device including a butterfly computing unit according to the first embodiment of the present invention. The butterfly computing device shown in FIG. 1 performs rotor multiplication and radix-4 butterfly computation as shown in FIG. That is, as shown in FIG. 10A, data D0 to D3 and rotator data are subjected to rotator multiplication, data x0 to x3 is calculated, and data x0 to x3 is used as a butterfly input. Based on the above, a butterfly operation is performed to calculate data X0 to X3.
  X0 = (x0 + x2) + (x1 + x3)
  X1 = (x0−x2) + j (x1−x3)
  X2 = (x0 + x2)-(x1 + x3)
  X3 = (x0−x2) −j (x1−x3)
[0023]
  In FIG. 1, 1 performs a butterfly operation using data x0 to x3 as butterfly inputs, outputs a computation result data X0 to X3, 5 performs a multiplication of the input data D0 to D3 and the rotor data Wi, A rotator multiplier for outputting data x0 to x3, and a register 7 for storing output data x0 to x3 of the rotator multiplier 5. As constituent elements of the butterfly calculator 1, 10 is a first data buffer for sequentially storing butterfly inputs x0 to x3, 20 is a butterfly input input to the butterfly calculator 1 and a butterfly stored in the first data buffer 10. Based on the input, a first calculation unit that calculates intermediate data, 30 is a second data buffer that sequentially stores the intermediate data output from the first calculation unit 20, and 40 is the first calculation unit 20. 2 is a second arithmetic unit that performs arithmetic operations on the operation result data X0 to X3 based on the intermediate data output from the intermediate data and the intermediate data stored in the second data buffer 30.
[0024]
  The first arithmetic unit 20 includes, as components, a first adder / subtractor 21 that performs addition or subtraction according to the control signal SA0, an imaginary number j (j2= -1) and a first selection circuit 23 and a second selection circuit 24 controlled by control signals SA0 and SS0, respectively. The second arithmetic unit 40 includes, as components, a second adder / subtractor 41 that performs addition or subtraction according to the control signal SA1 and a third selection circuit 42 that is controlled by the control signal SA1. Reference numerals 11 to 14, 31 and 32 are registers for updating values every cycle in the pipeline processing. The first data buffer 10 includes registers 11 to 14 connected in series. Consists of registers 31, 32 connected in series.
[0025]
  FIG. 2 is a diagram showing the output of each selection circuit according to the value of the selection signal. In the figure, (a) shows the output of the first selection circuit 23 according to the value of the selection signal SA0, (b) shows the output of the second selection circuit 24 according to the value of the selection signal SS0, (c ) Shows the output of the third selection circuit 42 in accordance with the value of the selection signal SA1. As shown in FIG. 2A, the first selection circuit 23 selects the selection signal SA0 from the butterfly input input to the butterfly calculator 1 and the butterfly input stored in the register 14 of the first data buffer 10. When “0” is “0”, the butterfly input input to the butterfly computing unit 1 is selected and when the selection signal SA0 is “1”, the butterfly input stored in the register 14 is selectively output. As shown in FIG. 2B, the second selection circuit 24 multiplies the output data of the first adder / subtractor 21 and the output data of the multiplier 22 (the output data of the first adder / subtractor 21 by an imaginary number j). Among them, when the selection signal SS0 is "0", the output data of the first adder / subtractor 21 is selected and when the selection signal SS0 is "1", the output data of the multiplier 22 is selectively output. As shown in FIG. 2C, the third selection circuit 42 is configured to output data from the second selection circuit 24 (intermediate data output from the first arithmetic unit 20) and a register of the second data buffer 30. Among the intermediate data stored in 32, when the selection signal SA1 is “0”, the output data of the second selection circuit 24 is displayed, and when the selection signal SA1 is “1”, the intermediate data stored in the register 32 is stored. Select output.
[0026]
  The first adder / subtracter 21 operates in accordance with the selection signal SA0, and performs addition when the selection signal SA0 is “0”, while performing subtraction when the selection signal SA0 is “1”. The second adder / subtractor 41 operates in accordance with the selection signal SA1, and performs addition when the selection signal SA1 is “0”, while performing subtraction when the selection signal SA1 is “1”.
[0027]
  Here, the input data D0 to D3, the butterfly inputs x0 to x3, the calculation result data X0 to X3, and the intermediate data output by the first calculation unit 20 are complex data.
[0028]
  FIG. 3 is a diagram showing the processing timing of the butterfly arithmetic apparatus shown in FIG. As shown in FIG. 3, the butterfly operation apparatus shown in FIG. 1 inputs input data D0 to D3 every cycle, and outputs operation result data X0 to X3 from the cycle following the input cycle of input data D3. To do. Each process in the butterfly arithmetic apparatus shown in FIG. 1 is a pipeline process, and it is possible to process the output of the operation result data X0 to X3 and the input of the next input data D0 to D3 overlapping each other. In FIG. 3, “register output” indicates data stored in each register.
[0029]
  The input data D0 to D3 are multiplied by the rotor data Wi by the rotor multiplier 5 and stored in the register 7 as data x0 to x3. The output data x0 to x3 of the register 7 are sequentially stored in the registers 11 to 14 of the first data buffer 10 as butterfly inputs.
[0030]
  The calculation of the intermediate data by the first calculation unit 20 is started with a delay of two cycles from the start of the butterfly inputs x0 to x3. The first calculation unit 20 receives the output data of the register 7 (butterfly input input to the butterfly calculator 1) and the output data of the second stage register 12 and the fourth stage register 14 of the first data buffer 10 as inputs. The first adder / subtractor 21 and multiplier 22 calculate intermediate data. The first adder / subtractor 21 outputs the first data for the output data of the register 7 and the output data of the fourth stage register 14 of the first data buffer 10 selected by the first selection circuit 23. The output data of the second stage register 12 of the buffer 10 is added or subtracted. The multiplier 22 multiplies the output data of the first adder / subtractor 21 by an imaginary number j, and the second selection circuit 24 selects either the output data of the first adder / subtractor 21 or the output data of the multiplier 22, Output as intermediate data.
[0031]
  In the calculation of the intermediate data by the first calculation unit 20, the selection signal SA0 is “0” in the first two cycles and “1” in the second two cycles. Accordingly, in the first two cycles, the first selection circuit 23 selects and outputs the butterfly input inputted to the butterfly computing unit 1, and the first adder / subtractor 21 performs addition, while in the second half two cycles, The selection circuit 23 selects and outputs the butterfly input stored in the fourth stage register 14 of the first data buffer 10, and the first adder / subtractor 21 performs subtraction. As a result, the output data of each cycle of the first adder / subtractor 21 is (x0 + x2), (x1 + x3), (x0−x2), and (x1−x3).
[0032]
  Further, the selection signal SS0 becomes “0” in the first three cycles and becomes “1” only in the last cycle. Accordingly, the second selection circuit 24 selects and outputs the output data of the first adder / subtractor 21 in the first three cycles, while the output data of the multiplier 22 (into the output data of the first adder / subtractor 21 in the last cycle). (Multiplied by an imaginary number j) is selected and output. As a result, (x0 + x2), (x1 + x3), (x0−x2), and j (x1−x3) are sequentially output from the first arithmetic unit 20 as intermediate data. The intermediate data output from the first arithmetic unit 20 is sequentially stored in the registers 31 and 32 in the second data buffer 30.
[0033]
  The calculation of the calculation result data by the second calculation unit 40 is delayed by one cycle from the calculation of the intermediate data by the first calculation unit 20, that is, by three cycles after the start of the butterfly inputs x0 to x3. The second arithmetic unit 40 receives the intermediate data output from the first arithmetic unit 20 and the intermediate data stored in the first stage register 31 and the second stage register 32 of the second data buffer 30 as inputs. The calculation result data is calculated by the 2 adder / subtractor 41. The second adder / subtractor 41 selects the output data of the second selection circuit 24 and the output data of the second stage register 32 of the second data buffer 30 selected by the third selection circuit 42. The output data of the first stage register 31 of the second data buffer 30 is added or subtracted.
[0034]
  In the calculation of the calculation result data by the second calculation unit 40, the selection signal SA1 is “0” in the first and third cycles and “1” in the second and final cycles. Therefore, in the first and third cycles, the third selection circuit 42 selects and outputs the output data of the second selection circuit 24, and the second adder / subtractor 41 performs addition, while in the second and final cycles. The third selection circuit 42 selectively outputs the output data of the second stage register 32 of the second data buffer 30, and the second adder / subtractor 41 performs subtraction. As a result, (x0 + x2) + (x1 + x3) (= X0), (x0 + x2) − (x1 + x3) (= X1), (x0−x2) + j (x1−x3) is obtained as calculation result data from the second calculation unit 40. (= X2), (x0-x2) -j (x1-x3) (= X3) are output.
[0035]
  That is, the input data is input in the order of D0, D1, D2, and D3, while the operation result data is output in the order of X0, X2, X1, and X3. When the output order of the operation result data is X0, X1, X2, and X3 so as to match the data input order, the order of the addresses for storing the operation result data may be changed.
[0036]
  Through the processing as described above, the butterfly operation device shown in FIG. 1 performs rotator multiplication and radix-4 butterfly operation on the input data D0 to D3, and calculates operation result data X0 to X3.
[0037]
  As described above, according to this embodiment, the first data buffer 10 that stores the butterfly input and the second data buffer 20 that stores the intermediate data are provided, and the first arithmetic unit 20 and the second arithmetic unit are provided. By using 40 in a time-sharing manner for each cycle by pipeline processing, the circuit scale of the computing unit of the butterfly computing unit that performs the radix-4 butterfly computation can be reduced.
[0038]
(Second Embodiment)
  Hereinafter, a second embodiment of the present invention will be described with reference to the drawings.
[0039]
  FIG. 4 is a block diagram of a butterfly computing device including a butterfly computing unit according to the second embodiment of the present invention. The butterfly operation apparatus shown in FIG. 4 performs the rotor multiplication and the radix-4 butterfly operation as shown in FIG. 10A, as in the first embodiment.
[0040]
  In FIG. 4, reference numeral 2 denotes a butterfly computing unit that performs butterfly computation based on butterfly inputs x0 to x3 and outputs computation result data X0 to X3. As constituent elements of the butterfly computing unit 2, 10A is a first data buffer for sequentially storing butterfly inputs x0 to x3, 20A is a butterfly input inputted to the butterfly computing unit 2, and a butterfly stored in the first data buffer 10A. Based on the input, a first calculation unit that calculates intermediate data, 30 is a second data buffer that sequentially stores the intermediate data output from the first calculation unit 20A, and 40 is the first calculation unit 20A. 2 is a second arithmetic unit that performs arithmetic operations on the operation result data X0 to X3 based on the intermediate data output from the intermediate data and the intermediate data stored in the second data buffer 30. 4, components having the same functions as those in FIG. 1 are denoted by the same reference numerals, and detailed description thereof is omitted in the present embodiment.
[0041]
  The butterfly calculator 2 shown in FIG. 4 is different from the butterfly calculator 1 shown in FIG. 1 in that the first data buffer 10 of the butterfly calculator 1 shown in FIG. 1 is composed of four stages of registers. The first data buffer 10A of the butterfly computing unit 2 shown in FIG. 4 is composed of two-stage registers.
[0042]
  The first computing unit 20A of the butterfly computing unit 2 shown in FIG. 4 includes a multiplier 25 that multiplies input data by 2 and a control in addition to the components of the first computing unit 20 of the butterfly computing unit 1 shown in FIG. A fourth selection circuit 26 controlled by the signal SB0 is provided. That is, since the first data buffer 10A is composed of two stages of registers, the butterfly input input to the butterfly calculator 2 and the intermediate data stored in the second stage register 32 of the second data buffer 30 are the first. 1 is selected and output by the selection circuit 23, butterfly input stored in the second stage register 12 of the first data buffer 10A, and output data of the multiplier 25 (2 is input to the butterfly input stored in the register 12). The product selected by the fourth selection circuit 26 is used as the input to the first adder / subtractor 21.
[0043]
  FIG. 5 is a diagram showing the output of each selection circuit according to the value of the selection signal. In the figure, (a) shows the output of the first selection circuit 23 according to the value of the selection signal SA0, and (b) shows the output of the fourth selection circuit 26 according to the value of the selection signal SB0. ing. As shown in FIG. 5A, the first selection circuit 23 selects the selection signal SA0 from among the butterfly input inputted to the butterfly computing unit 2 and the intermediate data stored in the register 32 of the second data buffer 30. When “0” is “0”, the butterfly input inputted to the butterfly computing unit 2 is selected and when the selection signal SA0 is “1”, the intermediate data stored in the register 32 is selectively outputted. As shown in FIG. 5B, the fourth selection circuit 26 receives the selection signal SB0 out of the butterfly input stored in the second stage register 12 of the first data buffer 10A and the output data of the multiplier 25. When “0”, the butterfly input stored in the register 12 is selected, and when the selection signal SB0 is “1”, the output data of the multiplier 25 is selected and output.
[0044]
  FIG. 6 is a diagram showing the processing timing of the butterfly arithmetic apparatus shown in FIG. As in the first embodiment, the input data D0 to D3 are input for each cycle, and the operation result data X0 to X3 are output for each cycle from the cycle following the input cycle of the input data D3. Each process is a pipeline process, and it is possible to overlap the output of the operation result data X0 to X3 and the input of the next input data D0 to D3. Similarly to the first embodiment, the calculation of the intermediate data by the first calculation unit 20A starts two cycles after the start of the butterfly inputs x0 to x3, and the calculation result by the second calculation unit 40 The data calculation is started one cycle after the intermediate data calculation by the first calculation unit 20A, that is, three cycles after the start of the butterfly inputs x0 to x3.
[0045]
  The butterfly inputs x0 to x3 are sequentially stored in the registers 11 and 12 of the first data buffer 10A. The first arithmetic unit 20A includes a butterfly input input to the butterfly calculator 2, a butterfly input stored in the second stage register 12 of the first data buffer 10A, and a second stage register 32 of the second data buffer 30. The intermediate data stored in is input to the first adder / subtractor 21 and the multipliers 22 and 25. The first adder / subtractor 21 performs the butterfly stored in the register 12 for the butterfly input input to the butterfly calculator 2 and the intermediate data selected by the first selection circuit 23 among the intermediate data stored in the register 32. Of the input data and the output data of the multiplier 25, the data selected by the fourth selection circuit 26 is added or subtracted. The operations of the multiplier 22 and the second selection circuit 24 are the same as those in the first embodiment.
[0046]
  In the intermediate data calculation by the first calculation unit 20A, the selection signal SA0 is “0” in the first two cycles and “1” in the second two cycles. Therefore, in the first two cycles, the first selection circuit 23 selects and outputs the butterfly input inputted to the butterfly calculator 2, and the first adder / subtractor 21 performs addition, while in the second two cycles, the first selection circuit 23 performs first addition. The selection circuit 23 selects and outputs the intermediate data stored in the register 32, and the first adder / subtractor 21 performs subtraction. The selection signal SB0 is “0” in the first two cycles and “1” in the second two cycles. Accordingly, the fourth selection circuit 26 selects and outputs the butterfly input stored in the register 12 in the first two cycles, and selectively outputs the output data of the multiplier 25 in the second two cycles.
[0047]
  As a result, the first adder / subtractor 21 receives x2, x3, (x0 + x2), (x1 + x3) as input A and x0, x1, x2, 2, x3, 2 as input B in each cycle. . Therefore, the output data of the first adder / subtractor 21 is (x0 + x2), (x1 + x3), (x0−x2), (x1−x3).
[0048]
  The processes of the second data buffer 30 and the second arithmetic unit 40 are the same as in the first embodiment. As a result, (x0 + x2) + (x1 + x3) (= X0), (x0 + x2) − (x1 + x3) (= X2), (x0−x2) + j (x1−x3) is obtained as calculation result data from the second calculation unit 40. (= X1), (x0-x2) -j (x1-x3) (= X3) are output.
[0049]
  Here, paying attention to the first adder / subtractor 21, as shown in FIGS. 3 and 6, the same data is output in the present embodiment and the first embodiment. In the first embodiment, the first adder / subtractor 21 outputs the output data (x0−x2) and (x1−x3) in the latter two cycles to the second and fourth stage registers 12 of the first data buffer 10. , 14 from the butterfly input. For this reason, the first data buffer 10 requires a register having the number of stages equal to twice the data interval used in the first stage addition / subtraction of the butterfly operation shown in FIG. For example, (x0−x2) is an operation using 0th and 2nd data, and the data interval is 2. (X1-x3) is an operation using the first and third data, and the data interval is 2. Therefore, in the first embodiment, the first data buffer 10 requires four stages of registers.
[0050]
  On the other hand, in the present embodiment, the first adder / subtractor 21 stores the output data (x0−x2) and (x1−x3) in the latter two cycles in the second stage register 12 of the first data buffer 10A. It is calculated from the butterfly input and the intermediate data stored in the second stage register 32 of the second data buffer 30. That is, using the fact that the intermediate data (x0 + x2) and (x1 + x3) already calculated in the first two cycles are stored in the registers 31 and 32 of the second data buffer 30, values obtained by multiplying x2 and x3 by 2 respectively. Is subtracted to calculate output data (x0-x2) and (x1-x3) in the latter two cycles. As a result, the butterfly inputs x0 and x1 are not required for the calculation of the intermediate data in the latter two cycles, so that the first data buffer 10A can be configured with only two stages of registers.
[0051]
  As described above, according to the present embodiment, the multiplier 25 for multiplying the first arithmetic unit 20A by 2 is provided, and the first arithmetic unit 20A uses the intermediate data stored in the second data buffer 30. As a result, the number of register stages of the first data buffer 10A can be reduced.
[0052]
(Third embodiment)
  Hereinafter, a third embodiment of the present invention will be described with reference to the drawings.
[0053]
  FIG. 7 is a block diagram of a butterfly computing device including a butterfly computing unit according to the third embodiment of the present invention. The butterfly computing device shown in FIG. 7 performs the rotor multiplication and radix-4 butterfly computation as shown in FIG. 10 (a), and the rotor multiplication and radix-2 butterfly computation as shown in FIG. 10 (b). is there.
[0054]
  When performing radix-2 butterfly computation, two butterfly computations are performed. That is, as shown in FIG. 10 (b), rotator multiplication of data D0 to D3 and rotator data is performed to calculate data x0 to x3, and data x0 to x3 is used as a butterfly input. Based on the above, a butterfly operation is performed to calculate data X0 to X3.
<First Radix-2 Butterfly Calculation>
  X0 = x0 + x2, X2 = x0-x2
<Second Radix-2 Butterfly Calculation>
  X1 = x1 + x3, X3 = x1-x3
[0055]
  In FIG. 7, reference numeral 3 denotes a butterfly calculator that performs radix-4 or radix-2 butterfly calculations based on butterfly inputs x0 to x3 and outputs calculation result data X0 to X3. As constituent elements of the butterfly computing unit 3, 10A is a first data buffer for sequentially storing butterfly inputs x0 to x3, 20A is a butterfly input inputted to the butterfly computing unit 3, and a butterfly stored in the first data buffer 10A. A first arithmetic unit that calculates intermediate data based on the input, 30 is a second data buffer that sequentially stores the intermediate data output from the first arithmetic unit 20A, and 40A is the first arithmetic unit 20A. 2 is a second arithmetic unit that performs arithmetic operations on the operation result data X0 to X3 based on the intermediate data output from the intermediate data and the intermediate data stored in the second data buffer 30. 7, components having the same functions as those in FIG. 4 are denoted by the same reference numerals, and detailed description thereof is omitted in the present embodiment.
[0056]
  The butterfly computing unit 3 shown in FIG. 7 is different from the butterfly computing unit 2 shown in FIG. 4 in that the second computing unit 40A performs the radix-2 butterfly computation in the second of the butterfly computing unit 2 shown in FIG. Instead of the third selection circuit 42 in the arithmetic unit 40, a third selection circuit 43 that operates according to the selection signal SC0 is provided.
[0057]
  In the third selection circuit 43, a logical value “0” is added as data to be selected. As shown in FIG. 8, the output data of the second selection circuit 24 (output from the first arithmetic unit 20A). Intermediate data), intermediate data stored in the register 32 of the second data buffer 30, and logical value “0”, when the selection signal SC0 is “0”, the output data of the second selection circuit 24 is When the selection signal SC0 is “1”, the intermediate data stored in the register 32 is selected, and when the selection signal SC0 is “2”, the logical value “0” is selected and output. The second adder / subtractor 41 performs addition when the selection signal SC0 is “0” or “2”, and performs subtraction when the selection signal SC0 is “1”.
[0058]
  When the butterfly calculator 3 performs the radix-4 butterfly calculation, the third selection circuit 43 of the second calculation unit 40A does not select the logical value “0”, and the second and second embodiments according to the first and second embodiments. The same operation as the third selection circuit 42 of the arithmetic unit 40 is performed. On the other hand, when performing radix-2 butterfly computation, the third selection circuit 43 of the second computation unit 40A always selects and outputs the logical value “0”.
[0059]
  FIG. 9 is a diagram showing processing timing when the butterfly computing device shown in FIG. 7 performs radix-2 butterfly computation. As in the first and second embodiments, the input data D0 to D3 are input every cycle, and the operation result data X0 to X3 are output every cycle from the cycle following the input cycle of the input data D3. Each process is a pipeline process, and it is possible to overlap the output of the operation result data X0 to X3 and the input of the next input data D0 to D3. Similarly to the first and second embodiments, the calculation of intermediate data by the first calculation unit 20A is started with a delay of two cycles from the start of the butterfly inputs x0 to x3, and the second calculation unit 40A. The calculation of the calculation result data is started one cycle after the intermediate data calculation by the first calculation unit 20A, that is, three cycles after the start of the butterfly inputs x0 to x3.
[0060]
  The first data buffer 10A, the first arithmetic unit 20A, and the second data buffer 30 operate in the same manner as in the second embodiment. However, the selection signal SS0 is always set to “0” in the radix-2 butterfly computation, and as a result, the output data of the first adder / subtractor 21 is multiplied by the imaginary number j as intermediate data from the first computing unit 20A. Is not output, and the first arithmetic unit 20A outputs (x1-x3) as intermediate data in the final cycle.
[0061]
  In the calculation of the calculation result data by the second calculation unit 40A, the selection signal SC0 is always “2” in the radix-2 butterfly calculation, so that the third selection circuit 43 selectively outputs the logical value “0”. The second adder / subtractor 41 performs addition. As a result, the same value as the intermediate data stored in the first stage register 31 of the second data buffer 30 is output as the operation result data from the second operation unit 40A. That is, x0 + x2 (= X0), x1 + x3 (= X1), x0-x2 (= X2), and x1-x3 (= X3) are output from the second calculation unit 40A as calculation result data.
[0062]
  When performing radix-4 butterfly computation, the third selection circuit 43 of the second computation unit 40A is the same as the third selection circuit 42 of the second computation unit 40 according to the first and second embodiments. Therefore, the processing timing is the same as in FIG.
[0063]
  As shown in FIG. 9, the input data is input in the order of D0, D1, D2, and D3, while the operation result data is output in the order of X0, X1, X2, and X3. On the other hand, in the radix-4 butterfly operation, as shown in FIG. 6, the operation result data is output in the order of X0, X2, X1, and X3. When matching the output order of the operation result data between the radix-4 butterfly operation and the radix-2 butterfly operation, the order of the addresses storing the operation result data may be switched.
[0064]
  Through the processing as described above, the butterfly operation device shown in FIG. 7 performs a rotator multiplication and one radix-4 butterfly operation or a rotator multiplication and two radix-2 butterfly operations on the input data D0 to D3. Result data X0 to X3 are calculated.
[0065]
  As described above, according to the present embodiment, one radix-4 butterfly operation or two radixes are provided by providing the third selection circuit 43 in the second arithmetic unit 40A with a function of selecting a logical value 0. Two butterfly calculations can be performed in accordance with the data output timing. That is, a butterfly calculator capable of executing both radix-4 butterfly computation and radix-2 butterfly computation at the same timing can be realized with a simple configuration, and the switching can be performed by simple control.
[0066]
  In the first, second, and third embodiments, each register is a register that stores complex data, and each arithmetic unit is an arithmetic unit for complex data. However, each register is a real part register. It is possible to divide and connect to the imaginary part register and perform the real part operation and the imaginary part operation in a time division manner in each arithmetic unit. In this case, the number of register stages in the first data buffer 10, 10A and the second data buffer 30 is double the number of stages in the above-described embodiment, and each arithmetic unit is half the circuit scale in the above-described embodiment. Circuit scale.
[0067]
  In the second and third embodiments, the multiplier 25 for multiplying by 2 is provided in the first arithmetic unit 20A. Instead of this multiplier 25, a 1-bit shifter for shifting input data by 1 bit to the upper side. May be provided.
[0068]
【The invention's effect】
  As described above, according to the present invention, since the radix-4 butterfly operation is performed by pipeline processing and the arithmetic unit is used in a time-sharing manner, the circuit scale of the arithmetic unit is reduced. In addition, since new intermediate data is calculated using the already calculated intermediate data, the number of register stages of the first data buffer holding the butterfly input is reduced. Furthermore, since the radix-4 and radix-2 butterfly computations can be executed by a common computing unit, an increase in the circuit scale of the computing unit is suppressed. Therefore, a butterfly computing unit with a small circuit scale can be realized.
[0069]
  In addition, since the output timing of the operation result data of one radix-4 butterfly operation and two radix-2 butterfly operations can be matched, the butterfly operation unit according to the present invention can be used to repeat the butterfly operation in the fast Fourier transform device. Control of calculation becomes easy.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a butterfly computing device including a butterfly computing unit according to a first embodiment of the present invention.
FIGS. 2A to 2C are diagrams illustrating the operation of a selection circuit according to the first embodiment of the present invention.
FIG. 3 is a diagram illustrating processing timing of the butterfly arithmetic device according to the first embodiment of the present invention.
FIG. 4 is a configuration diagram of a butterfly computing device including a butterfly computing unit according to a second embodiment of the present invention.
FIGS. 5A and 5B are diagrams illustrating an operation of a selection circuit according to a second embodiment of the present invention.
FIG. 6 is a diagram showing processing timing of a butterfly arithmetic device according to a second embodiment of the present invention.
FIG. 7 is a configuration diagram of a butterfly computing device including a butterfly computing unit according to a third embodiment of the present invention.
FIG. 8 is a diagram illustrating an operation of a selection circuit according to a third embodiment of the present invention.
FIG. 9 is a diagram illustrating processing timing of the butterfly arithmetic device according to the third embodiment of the present invention.
FIGS. 10A and 10B are diagrams illustrating butterfly computation executed by the butterfly computation device;
[Explanation of symbols]
1,2,3 Butterfly calculator
10, 10A first data buffer
11, 12, 13, 14 registers
20, 20A first calculation unit
21 First adder / subtracter
23 First selection circuit
24 Second selection circuit
26 Fourth selection circuit
30 Second data buffer
31, 32 registers
40, 40A second arithmetic unit
41 Second adder / subtracter
42, 43 Third selection circuit

Claims (5)

基数4のバタフライ演算を、下記式
X0=(x0+x2)+(x1+x3)
X1=(x0−x2)+j(x1−x3)
X2=(x0+x2)−(x1+x3)
X3=(x0−x2)−j(x1−x3)
(ただし、x0,x1,x2,x3はバタフライ入力、X0,X1,X2,X3は演算結果データ)
に従ってパイプライン処理によって行うバタフライ演算器であって、
入力されたバタフライ入力を順に格納する第1のデータバッファと、
少なくとも前記第1のデータバッファに格納されたバタフライ入力を基にして、中間データとしてx0+x2、x1+x3、x0−x2、j(x1−x3)をサイクル毎に演算する第1の演算部と、
前記第1の演算部によって演算された中間データを順に格納する第2のデータバッファと、
少なくとも前記第2のデータバッファに格納された中間データを基にして、演算結果データをサイクル毎に演算する第2の演算部とを備え、
前記第1の演算部は、前記第2のデータバッファに格納された中間データを用いて演算を行うものである
ことを特徴とするバタフライ演算器。
The radix-4 butterfly operation is
X0 = (x0 + x2) + (x1 + x3)
X1 = (x0−x2) + j (x1−x3)
X2 = (x0 + x2)-(x1 + x3)
X3 = (x0−x2) −j (x1−x3)
(However, x0, x1, x2, and x3 are butterfly inputs, and X0, X1, X2, and X3 are operation result data)
A butterfly calculator that performs pipeline processing according to
A first data buffer for sequentially storing input butterfly inputs;
A first calculation unit that calculates x0 + x2, x1 + x3, x0-x2, j (x1-x3) for each cycle based on at least a butterfly input stored in the first data buffer;
A second data buffer for sequentially storing the intermediate data calculated by the first calculation unit;
A second calculation unit that calculates calculation result data for each cycle based on at least the intermediate data stored in the second data buffer;
The butterfly computing unit, wherein the first computing unit performs computation using intermediate data stored in the second data buffer.
請求項1記載のバタフライ演算器において、
前記第1のデータバッファは、バタフライ入力をサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、
前記第2のデータバッファは、中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、
前記第1の演算部は、
当該バタフライ演算器に入力されたバタフライ入力および前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第1の選択回路と、
前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力およびこのバタフライ入力に2を乗じたもののいずれか一方を選択出力する第4の選択回路と、
前記第1の選択回路の出力データに対して、前記第4の選択回路の出力データの加算または減算を行う第1の加減算器と、
前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものであり、
前記第2の演算部は、
前記第1の演算部から出力された中間データおよび前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第3の選択回路と、
前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものである
ことを特徴とするバタフライ演算器。
The butterfly computing unit according to claim 1 .
The first data buffer includes two registers connected in series for sequentially shifting the butterfly input every cycle,
The second data buffer includes two registers connected in series for sequentially shifting the intermediate data every cycle.
The first calculation unit includes:
A first selection circuit that selectively outputs one of the butterfly input input to the butterfly calculator and the intermediate data stored in the second stage register of the second data buffer;
A fourth selection circuit that selectively outputs one of the butterfly input stored in the second stage register of the first data buffer and the butterfly input multiplied by 2;
A first adder / subtractor for adding or subtracting the output data of the fourth selection circuit to the output data of the first selection circuit;
A second selection circuit that selectively outputs one of the output data of the first adder / subtractor and the output data multiplied by an imaginary number j as intermediate data;
The second calculation unit includes:
A third selection circuit that selectively outputs any one of the intermediate data output from the first arithmetic unit and the intermediate data stored in the second stage register of the second data buffer;
The second selection circuit adds or subtracts the butterfly input stored in the first stage register of the second data buffer to the output data of the third selection circuit, and outputs the addition or subtraction result as operation result data. A butterfly arithmetic unit comprising: an adder / subtractor.
基数4のバタフライ演算を行う場合には、下記式
X0=(x0+x2)+(x1+x3)
X1=(x0−x2)+j(x1−x3)
X2=(x0+x2)−(x1+x3)
X3=(x0−x2)−j(x1−x3)
(ただし、x0,x1,x2,x3はバタフライ入力、X0,X1,X2,X3は演算結 果データ)
に従ってパイプライン処理によって行うバタフライ演算器であって、
入力されたバタフライ入力を格納する第1のデータバッファと、
少なくとも前記第1のデータバッファに格納されたバタフライ入力を基にして、中間データとしてx0+x2、x1+x3、x0−x2、j(x1−x3)をサイクル毎に演算する第1の演算部と、
前記第1の演算部によって演算された中間データを格納する第2のデータバッファと、
少なくとも前記第2のデータバッファに格納された中間データを基にして、演算結果データをサイクル毎に演算する第2の演算部とを備え、
基数2のバタフライ演算を行う場合には、前記第1の演算部は、中間データとしてx0+x2、x1+x3、x0−x2、x1−x3をサイクル毎に演算可能であり、
前記第2の演算部は、0を加算することにより、入力した中間データと同じ値を演算結果データとして出力することにより
当該バタフライ演算器は、2つの基数2のバタフライ演算を、下記式
X0=x0+x2
X1=x1+x3
X2=x0−x2
X3=x1−x3
に従って実行する
ことを特徴とするバタフライ演算器。
When performing radix-4 butterfly computation,
X0 = (x0 + x2) + (x1 + x3)
X1 = (x0−x2) + j (x1−x3)
X2 = (x0 + x2)-(x1 + x3)
X3 = (x0−x2) −j (x1−x3)
(However, x0, x1, x2, x3 butterfly input, X0, X1, X2, X3 are the operation result data)
A butterfly calculator that performs pipeline processing according to
A first data buffer for storing the input butterfly input;
A first calculation unit that calculates x0 + x2, x1 + x3, x0-x2, j (x1-x3) for each cycle based on at least a butterfly input stored in the first data buffer;
A second data buffer for storing intermediate data calculated by the first calculation unit;
A second calculation unit that calculates calculation result data for each cycle based on at least the intermediate data stored in the second data buffer;
When performing radix-2 butterfly computation, the first computation unit can compute x0 + x2, x1 + x3, x0-x2, and x1-x3 for each cycle as intermediate data.
The second calculation unit adds 0 and outputs the same value as the input intermediate data as calculation result data.
The butterfly computing unit performs two radix-2 butterfly computations using the following formula: X0 = x0 + x2
X1 = x1 + x3
X2 = x0-x2
X3 = x1-x3
Butterfly operation unit, wherein the <br/> be performed according.
請求項3記載のバタフライ演算器において、
前記第1のデータバッファは、バタフライ入力をサイクル毎に順にシフトする,直列接続された4個のレジスタを備え、
前記第2のデータバッファは、中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、
前記第1の演算部は、
当該バタフライ演算器に入力されたバタフライ入力および前記第1のデータバッファの第4段レジスタに格納されたバタフライ入力のいずれか一方を選択出力する第1の選択回路と、
前記第1の選択回路の出力データに対して、前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力の加算または減算を行う第1の加減算器と、
前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものであり、
前記第2の演算部は、
前記第1の演算部から出力された中間データ、前記第2のデータバッファの第2段レジスタに格納された中間データ、および論理値“0”のいずれか1つを選択出力する第3の選択回路と、
前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものである
ことを特徴とするバタフライ演算器。
The butterfly calculator according to claim 3 ,
The first data buffer comprises four registers connected in series for sequentially shifting the butterfly input every cycle;
The second data buffer includes two registers connected in series for sequentially shifting the intermediate data every cycle.
The first calculation unit includes:
A first selection circuit that selectively outputs one of the butterfly input input to the butterfly computing unit and the butterfly input stored in the fourth stage register of the first data buffer;
A first adder / subtracter for adding or subtracting a butterfly input stored in a second stage register of the first data buffer to the output data of the first selection circuit;
A second selection circuit that selectively outputs one of the output data of the first adder / subtractor and the output data multiplied by an imaginary number j as intermediate data;
The second calculation unit includes:
Third selection for selectively outputting any one of the intermediate data output from the first arithmetic unit, the intermediate data stored in the second stage register of the second data buffer, and the logical value “0” Circuit,
The second selection circuit adds or subtracts the butterfly input stored in the first stage register of the second data buffer to the output data of the third selection circuit, and outputs the addition or subtraction result as operation result data. A butterfly arithmetic unit comprising: an adder / subtractor.
請求項3記載のバタフライ演算器において、
前記第1のデータバッファは、バタフライ入力をサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、
前記第2のデータバッファは、中間データをサイクル毎に順にシフトする,直列接続された2個のレジスタを備え、
前記第1の演算部は、
当該バタフライ演算器に入力されたバタフライ入力および前記第2のデータバッファの第2段レジスタに格納された中間データのいずれか一方を選択出力する第1の選択回路と、
前記第1のデータバッファの第2段レジスタに格納されたバタフライ入力およびこのバタフライ入力に2を乗じたもののいずれか一方を選択出力する第4の選択回路と、
前記第1の選択回路の出力データに対して、前記第4の選択回路の出力データの加算または減算を行う第1の加減算器と、
前記第1の加減算器の出力データおよびこの出力データに虚数jを乗じたもののいずれか一方を、中間データとして選択出力する第2の選択回路とを備えたものであり、
前記第2の演算部は、
前記第1の演算部から出力された中間データ、前記第2のデータバッファの第2段レジスタに格納された中間データ、および論理値“0”のいずれか1つを選択出力する第3の選択回路と、
前記第3の選択回路の出力データに対して、前記第2のデータバッファの第1段レジスタに格納されたバタフライ入力の加算または減算を行い、加算または減算結果を演算結果データとして出力する第2の加減算器とを備えたものである
ことを特徴とするバタフライ演算器。
The butterfly calculator according to claim 3 ,
The first data buffer includes two registers connected in series for sequentially shifting the butterfly input every cycle,
The second data buffer includes two registers connected in series for sequentially shifting the intermediate data every cycle.
The first calculation unit includes:
A first selection circuit that selectively outputs one of the butterfly input input to the butterfly calculator and the intermediate data stored in the second stage register of the second data buffer;
A fourth selection circuit that selectively outputs one of the butterfly input stored in the second stage register of the first data buffer and the butterfly input multiplied by 2;
A first adder / subtractor for adding or subtracting the output data of the fourth selection circuit to the output data of the first selection circuit;
A second selection circuit that selectively outputs one of the output data of the first adder / subtractor and the output data multiplied by an imaginary number j as intermediate data;
The second calculation unit includes:
Third selection for selectively outputting any one of the intermediate data output from the first arithmetic unit, the intermediate data stored in the second stage register of the second data buffer, and the logical value “0” Circuit,
The second selection circuit adds or subtracts the butterfly input stored in the first stage register of the second data buffer to the output data of the third selection circuit, and outputs the addition or subtraction result as operation result data. A butterfly arithmetic unit comprising: an adder / subtractor.
JP19265897A 1997-07-17 1997-07-17 Butterfly calculator Expired - Fee Related JP3865469B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19265897A JP3865469B2 (en) 1997-07-17 1997-07-17 Butterfly calculator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19265897A JP3865469B2 (en) 1997-07-17 1997-07-17 Butterfly calculator

Publications (2)

Publication Number Publication Date
JPH1139285A JPH1139285A (en) 1999-02-12
JP3865469B2 true JP3865469B2 (en) 2007-01-10

Family

ID=16294902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19265897A Expired - Fee Related JP3865469B2 (en) 1997-07-17 1997-07-17 Butterfly calculator

Country Status (1)

Country Link
JP (1) JP3865469B2 (en)

Also Published As

Publication number Publication date
JPH1139285A (en) 1999-02-12

Similar Documents

Publication Publication Date Title
KR100551111B1 (en) Pipelined fast fourier transform processor
US4689762A (en) Dynamically configurable fast Fourier transform butterfly circuit
US6366936B1 (en) Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm
US6317770B1 (en) High speed digital signal processor
US6122653A (en) Block IIR processor utilizing divided ALU operation instructions
JP3668356B2 (en) Fast Fourier transform circuit
CN113556101A (en) IIR filter and data processing method thereof
JP3865469B2 (en) Butterfly calculator
JPH0744530A (en) Arithmetic device
US4020333A (en) Digital filter for filtering complex signals
JP3727406B2 (en) Function conversion operator
Das et al. Hardware implementation of parallel FIR filter using modified distributed arithmetic
JP2885121B2 (en) Digital filter
KR100576520B1 (en) Variable fast fourier transform processor using iteration algorithm
JP3684314B2 (en) Complex multiplier and complex correlator
JP2005020554A (en) Digital filter
JPH0883264A (en) One-dimensional systolic array type arithmetic device and dct/idct arithmetic unit using same
KR100386979B1 (en) Method of paralleling bit serial multiplier for Galois field and a bit serial-parallel multipiler using thereof
JPH06216715A (en) Digital filter
JP4303797B2 (en) Data operation apparatus and method
JPH03196712A (en) Digital arithmetic circuit
JP2002117015A (en) Fast fourier transform circuit
JPH0697969A (en) Digital signal processing type quadrature modulator
JPH0619799B2 (en) High-speed Fourier converter
JPH0773161A (en) Arithmetic unit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060828

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060919

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061003

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091013

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101013

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111013

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121013

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees