(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-05
(45)【発行日】2024-09-13
(54)【発明の名称】バタフライ演算回路
(51)【国際特許分類】
G06F 17/14 20060101AFI20240906BHJP
G06J 1/00 20060101ALI20240906BHJP
【FI】
G06F17/14 510
G06J1/00 650
(21)【出願番号】P 2021066960
(22)【出願日】2021-04-12
【審査請求日】2023-12-11
(73)【特許権者】
【識別番号】591036457
【氏名又は名称】三菱電機エンジニアリング株式会社
(74)【代理人】
【識別番号】100110423
【氏名又は名称】曾我 道治
(74)【代理人】
【識別番号】100111648
【氏名又は名称】梶並 順
(74)【代理人】
【識別番号】100147566
【氏名又は名称】上田 俊一
(74)【代理人】
【識別番号】100161171
【氏名又は名称】吉田 潤一郎
(74)【代理人】
【識別番号】100188514
【氏名又は名称】松岡 隆裕
(72)【発明者】
【氏名】永田 力也
(72)【発明者】
【氏名】高見 和弘
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2013/042249(WO,A1)
【文献】特開昭61-056823(JP,A)
【文献】米国特許出願公開第2003/0212721(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/14
G06J 1/00
(57)【特許請求の範囲】
【請求項1】
N点高速フーリエ変換に用いられるバタフライ演算回路であって、
第1信号入力部、第2信号入力部、第1信号出力部、第2信号出力部、係数入力部、加算器、減算器、及び乗算器を有し、前記第1信号入力部に入力される第1入力値と、前記第2信号入力部に入力される第2入力値と、前記係数入力部に入力される係数との間で行われるバタフライ演算の演算結果を前記第1信号出力部及び前記第2信号出力部から出力する演算ユニットと、
取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、前記第1信号入力部に、前記N/2個の入力信号を時分割多重化した多重信号を入力する第1シフトレジスタと、
前記取込トリガ信号により、N/2個の入力信号を並列に取り込み、前記シフトトリガ信号により、前記第2信号入力部に、前記N/2個の入力信号を時分割多重化した多重信号を入力する第2シフトレジスタと、
前記シフトトリガ信号により、前記係数入力部に前記係数を入力する第3シフトレジスタと、
前記取込トリガ信号により、前記第1信号出力部からの出力信号及び前記第2信号出力部からの出力信号を格納するM組の格納レジスタと、
前記取込トリガ信号により、前記第1信号出力部からの出力信号及び前記第2信号出力部からの出力信号を前記N点高速フーリエ変換の結果として外部に出力する出力レジスタと、
前記第1シフトレジスタ及び前記第2シフトレジスタに対して、前記シフトトリガ信号及び前記取込トリガ信号を出力し、前記第3シフトレジスタに対して、前記シフトトリガ信号を出力し、前記M組の格納レジスタに対して、前記取込トリガ信号をそれぞれ出力し、前記出力レジスタに対して、前記取込トリガ信号を出力するタイミング制御部と
を備え、
前記Mは非負の整数であり、前記Nは2以上の自然数であり、
前記M組の格納レジスタは、N/2個の出力信号をそれぞれ格納する一対の格納レジスタを有し、
前記第1シフトレジスタ及び前記第2シフトレジスタは、前記N点高速フーリエ変換に対するN個の入力信号をそれぞれN/2個ずつ取り込んだ後、前記M組の格納レジスタにおける前記一対の格納レジスタにそれぞれ格納されたN/2個の信号について、第1組の格納レジスタに格納された信号から第M組の格納レジスタに格納された信号までを順に取り込む
バタフライ演算回路。
【請求項2】
前記Mと前記Nとの間には、
M=log
2N-1
の関係がある
請求項1に記載のバタフライ演算回路。
【請求項3】
N点高速フーリエ変換に用いられるバタフライ演算回路であって、
第1信号入力部、第2信号入力部、第1信号出力部、第2信号出力部、係数入力部、加算器、減算器、及び乗算器を有し、前記第1信号入力部に入力される第1入力値と、前記第2信号入力部に入力される第2入力値と、前記係数入力部に入力される係数との間で行われるバタフライ演算の演算結果を前記第1信号出力部及び前記第2信号出力部から出力する演算ユニットと、
取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、前記第1信号入力部に、前記N/2個の入力信号を時分割多重化した多重信号を入力する第1シフトレジスタと、
前記取込トリガ信号により、N/2個の入力信号を並列に取り込み、前記シフトトリガ信号により、前記第2信号入力部に、前記N/2個の入力信号を時分割多重化した多重信号を入力する第2シフトレジスタと、
前記シフトトリガ信号により、複数の前記係数入力部に前記係数を入力する第3シフトレジスタと
を有するL組の演算セットと、
前記取込トリガ信号により、L組目の前記演算セットの中の前記演算ユニットの前記第1信号出力部からの出力信号及び前記第2信号出力部からの出力信号を前記N点高速フーリエ変換の結果として出力する出力レジスタと、
前記複数の第1シフトレジスタ及び前記複数の第2シフトレジスタに対して、前記シフトトリガ信号及び前記取込トリガ信号をそれぞれ出力し、前記複数の第3シフトレジスタに対して、前記シフトトリガ信号をそれぞれ出力し、前記出力レジスタに対して、前記取込トリガ信号を出力するタイミング制御部と
を備え、
前記Lは自然数であり、前記Nは2以上の自然数であり、
前記L組の演算セットが直列に接続されている
バタフライ演算回路。
【請求項4】
前記Lと前記Nとの間には、
L=log
2N
の関係がある
請求項3に記載のバタフライ演算回路。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、バタフライ演算回路に関する。
【背景技術】
【0002】
従来の乗算装置では、乗算器の前段に時分割回路が配置され、単位演算時間内に乗算器へ入力される信号が切り替えられる。これにより、1つの乗算器において、単位演算時間内に複数回の演算が実施される(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような従来の乗算装置では、単位演算時間内の演算回数を増加させることにより乗算器の個数を減らすことができる一方で、時分割回路の規模が増大してしまい、結果的にハードウェアリソースを大きく削減することができないという問題があった。
【0005】
本開示は、上記のような課題を解決するために為されたものであり、ハードウェアリソースをより削減することができるバタフライ演算回路を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示に係るバタフライ演算回路は、N点高速フーリエ変換に用いられるバタフライ演算回路であって、第1信号入力部、第2信号入力部、第1信号出力部、第2信号出力部、係数入力部、加算器、減算器、及び乗算器を有し、第1信号入力部に入力される第1入力値と、第2信号入力部に入力される第2入力値と、係数入力部に入力される係数との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する演算ユニットと、取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、第1信号入力部に、N/2個の入力信号を時分割多重化した多重信号を入力する第1シフトレジスタと、取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、第2信号入力部に、N/2個の入力信号を時分割多重化した多重信号を入力する第2シフトレジスタと、シフトトリガ信号により、係数入力部に係数を入力する第3シフトレジスタと、取込トリガ信号により、第1信号出力部からの出力信号及び第2信号出力部からの出力信号を格納するM組の格納レジスタと、取込トリガ信号により、第1信号出力部からの出力信号及び第2信号出力部からの出力信号をN点高速フーリエ変換の結果として外部に出力する出力レジスタと、第1シフトレジスタ及び第2シフトレジスタに対して、シフトトリガ信号及び取込トリガ信号を出力し、第3シフトレジスタに対して、シフトトリガ信号を出力し、M組の格納レジスタに対して、取込トリガ信号をそれぞれ出力し、出力レジスタに対して、取込トリガ信号を出力するタイミング制御部とを備え、Mは非負の整数であり、Nは2以上の自然数であり、M組の格納レジスタは、N/2個の出力信号をそれぞれ格納する一対の格納レジスタを有し、第1シフトレジスタ及び第2シフトレジスタは、N点高速フーリエ変換に対するN個の入力信号をそれぞれN/2個ずつ取り込んだ後、M組の格納レジスタにおける一対の格納レジスタにそれぞれ格納されたN/2個の信号について、第1組の格納レジスタに格納された信号から第M組の格納レジスタに格納された信号までを順に取り込む。
【0007】
また、本開示に係るバタフライ演算回路は、N点高速フーリエ変換に用いられるバタフライ演算回路であって、第1信号入力部、第2信号入力部、第1信号出力部、第2信号出力部、係数入力部、加算器、減算器、及び乗算器を有し、第1信号入力部に入力される第1入力値と、第2信号入力部に入力される第2入力値と、係数入力部に入力される係数との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する演算ユニットと、取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、第1信号入力部に、N/2個の入力信号を時分割多重化した多重信号を入力する第1シフトレジスタと、取込トリガ信号により、N/2個の入力信号を並列に取り込み、シフトトリガ信号により、第2信号入力部に、N/2個の入力信号を時分割多重化した多重信号を入力する第2シフトレジスタと、シフトトリガ信号により、複数の係数入力部に係数を入力する第3シフトレジスタとを有するL組の演算セットと、取込トリガ信号により、L組目の演算セットの中の演算ユニットの第1信号出力部からの出力信号及び第2信号出力部からの出力信号をN点高速フーリエ変換の結果として出力する出力レジスタと、複数の第1シフトレジスタ及び複数の第2シフトレジスタに対して、シフトトリガ信号及び取込トリガ信号をそれぞれ出力し、複数の第3シフトレジスタに対して、シフトトリガ信号をそれぞれ出力し、出力レジスタに対して、取込トリガ信号を出力するタイミング制御部とを備え、Lは自然数であり、Nは2以上の自然数であり、L組の演算セットが直列に接続されている。
【発明の効果】
【0008】
本開示に係るバタフライ演算回路によれば、ハードウェアリソースをより削減することができる。
【図面の簡単な説明】
【0009】
【
図1】実施の形態1に係るバタフライ演算回路を示す回路図である。
【
図3】一般的な8点高速フーリエ変換回路を示す回路図である。
【
図4】実施の形態2に係るバタフライ演算回路を示す回路図である。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して説明する。
実施の形態1.
図1は、実施の形態1に係るバタフライ演算回路を示す回路図である。実施の形態1に係るバタフライ演算回路10は、3組の演算セット11、12、及び13と、出力レジスタ40と、タイミング制御部50とを備えている。
【0011】
1組目の演算セット11は、第1シフトレジスタ21と、第2シフトレジスタ22と、第3シフトレジスタ31と、演算ユニット100とを有している。
【0012】
第1シフトレジスタ21は、4段のシフトレジスタである。第1シフトレジスタ21は、4つのFF(Flip-Flop)21a、21b、21c、及び21dを有している。FF21aのデータ入力端子には、信号Point_0が入力される。FF21bのデータ入力端子には、信号Point_1が入力される。FF21cのデータ入力端子には、信号Point_2が入力される。FF21dのデータ入力端子には、信号Point_3が入力される。
【0013】
FF21a~21dの各ロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-DLが入力される。第1シフトレジスタ21のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S1が入力される。
【0014】
入力された信号Point_0~Point_3は、取込トリガ信号TRG-DLの立上りエッジのタイミングで、並列に第1シフトレジスタ21に取り込まれる。取り込まれた4ビットの信号は、シフトトリガ信号TRG-S1の立上りエッジのタイミングで、1ビットずつ順次出力される。これにより、第1シフトレジスタ21からは、4つの信号を時分割多重化した多重信号が出力される。
【0015】
第2シフトレジスタ22は、第1シフトレジスタ21と同様に、4段のシフトレジスタである。第2シフトレジスタ22は、4つのFF22a、22b、22c、及び22dを有している。FF22aのデータ入力端子には、信号Point_4が入力される。FF22bのデータ入力端子には、信号Point_5が入力される。FF22cのデータ入力端子には、信号Point_6が入力される。FF22dのデータ入力端子には、信号Point_7が入力される。
【0016】
FF22a~22dの各ロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-DLが入力される。第2シフトレジスタ22のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S1が入力される。
【0017】
入力された信号Point_4~Point_7は、取込トリガ信号TRG-DLの立上りエッジのタイミングで、並列に第2シフトレジスタ22に取り込まれる。取り込まれた4つの信号は、シフトトリガ信号TRG-S1の立上りエッジのタイミングで、1つずつ順次出力される。これにより、第2シフトレジスタ22からは、4つの信号を時分割多重化した多重信号が出力される。
【0018】
第3シフトレジスタ31は、演算ユニット100におけるバタフライ演算に用いられる係数を格納している。この係数は、回転因子とも呼ばれている。第3シフトレジスタ31のシフトトリガ入力端子Shiftには、シフトトリガ信号TRG-S2が入力される。第3シフトレジスタ31は、シフトトリガ信号TRG-S2の立上りエッジのタイミングで、係数W8(k)を順に出力する。シフトトリガ信号TRG-S2の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0019】
図2は、
図1の演算ユニット100を示す回路図である。演算ユニット100は、第1信号入力部、第2信号入力部、第1信号出力部、第2信号出力部、係数入力部、加算器200、減算器300、及び乗算器400を有している。
【0020】
演算ユニット100は、第1信号入力部に入力される第1入力値と、第2信号入力部に入力される第2入力値と、係数入力部に入力される係数との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する。
【0021】
より具体的に述べると、第1信号入力部への第1入力値をa、第2信号入力部への第2入力値をb、第1信号出力部からの第1出力値をA、第2信号出力部からの第2出力値をB、係数をW8(k)とすると、演算ユニット100では、以下の(1)式の演算が行われる。なお、実施の形態1に係るバタフライ演算回路10では、所謂周波数間引き法が採用されている。
【0022】
A=a+b,B=(a-b)×W8(k) ・・・(1)
【0023】
第1信号入力部には、第1シフトレジスタ21から信号が入力される。第2信号入力部には、第2シフトレジスタ22から信号が入力される。係数入力部には、第3シフトレジスタ31から係数W8(k)が入力される。
【0024】
2組目の演算セット12は、第1シフトレジスタ23と、第2シフトレジスタ24と、第3シフトレジスタ32と、演算ユニット101とを有している。
【0025】
第1シフトレジスタ23は、第1シフトレジスタ21と同様に、4つのFF23a、23b、23c、及び23dを有している。
【0026】
FF23aのデータ入力端子及びFF23bのデータ入力端子は、1組目の演算セット11における演算ユニット100の第1信号出力部と接続されている。FF23cのデータ入力端子及びFF23dのデータ入力端子は、演算ユニット100の第2信号出力部と接続されている。FF23aのロード端子Load及びFF23cのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L01が入力される。FF23bのロード端子Load及びFF23dのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L02が入力される。
【0027】
第1シフトレジスタ23のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S3が入力される。シフトトリガ信号TRG-S3の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0028】
第2シフトレジスタ24は、第1シフトレジスタ23と同様に、4つのFF24a、24b、24c、及び24dを有している。
【0029】
FF24aのデータ入力端子及びFF24bのデータ入力端子は、1組目の演算セット11における演算ユニット100の第1信号出力部と接続されている。FF24cのデータ入力端子及びFF24dのデータ入力端子は、演算ユニット100の第2信号出力部と接続されている。FF24aのロード端子Load及びFF24cのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L03が入力される。FF24bのロード端子Load及びFF24dのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L04が入力される。
【0030】
第2シフトレジスタ24のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S3が入力される。
【0031】
第3シフトレジスタ32は、第3シフトレジスタ31と同様に、バタフライ演算に用いられる係数を格納している。第3シフトレジスタ32が格納している係数の組み合わせは、第3シフトレジスタ31が格納している係数の組み合わせとは異なっている。第3シフトレジスタ32のシフトトリガ入力端子Shiftには、タイミング制御部50から、シフトトリガ信号TRG-S4が入力される。シフトトリガ信号TRG-S4の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0032】
演算ユニット101は、第1信号入力部に入力される第1入力値aと、第2信号入力部に入力される第2入力値bと、係数入力端子に入力される係数W8(k)との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する。演算ユニット101の構成は、演算ユニット100の構成と同様であるため、詳細な説明は省略される。
【0033】
3組目の演算セット13は、第1シフトレジスタ25と、第2シフトレジスタ26と、第3シフトレジスタ33と、演算ユニット102とを有している。
【0034】
第1シフトレジスタ25は、第1シフトレジスタ21と同様に、4つのFF25a、25b、25c、及び25dを有している。
【0035】
FF25aのデータ入力端子及びFF25cのデータ入力端子は、2組目の演算セット12における演算ユニット101の第1信号出力部と接続されている。FF25bのデータ入力端子及びFF25dのデータ入力端子は、演算ユニット101の第2信号出力部と接続されている。FF25aのロード端子Load及びFF25bのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L05が入力される。FF25cのロード端子Load及びFF25dのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L07が入力される。
【0036】
第1シフトレジスタ25のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S5が入力される。シフトトリガ信号TRG-S5の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0037】
第2シフトレジスタ26は、第1シフトレジスタ25と同様に、4つのFF26a、26b、26c、及び26dを有している。
【0038】
FF26aのデータ入力端子及びFF26cのデータ入力端子は、2組目の演算セット12における演算ユニット101の第1信号出力部と接続されている。FF26bのデータ入力端子及びFF26dのデータ入力端子は、演算ユニット101の第2信号出力部と接続されている。FF26aのロード端子Load及びFF26bのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L06が入力される。FF26cのロード端子Load及びFF26dのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L08が入力される。
【0039】
第2シフトレジスタ26のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S5が入力される。
【0040】
第3シフトレジスタ33は、第3シフトレジスタ31及び第3シフトレジスタ32と同様に、バタフライ演算に用いられる係数を格納している。第3シフトレジスタ33が格納している係数の組み合わせは、第3シフトレジスタ31が格納している係数の組み合わせ及び第3シフトレジスタ32が格納している係数の組み合わせとは異なっている。第3シフトレジスタ33のシフトトリガ入力端子Shiftには、タイミング制御部50から、シフトトリガ信号TRG-S6が入力される。シフトトリガ信号TRG-S6の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0041】
演算ユニット102は、第1信号入力部に入力される第1入力値aと、第2信号入力部に入力される第2入力値bと、係数入力端子に入力される係数W8(k)との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する。演算ユニット102の構成は、演算ユニット100の構成と同様であるため、詳細な説明は省略される。
【0042】
出力レジスタ40は、8個のFF40a~40hを有している。FF40aのデータ入力端子、FF40cのデータ入力端子、FF40eのデータ入力端子、及びFF40gのデータ入力端子は、演算ユニット102の第1信号出力部に接続されている。FF40bのデータ入力端子、FF40dのデータ入力端子、FF40fのデータ入力端子、及びFF40hのデータ入力端子は、演算ユニット102の第2信号出力部に接続されている。
【0043】
FF40aのロード端子Load及びFF40bのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L09が入力される。FF40cのロード端子Load及びFF40dのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L10が入力される。FF40eのロード端子Load及びFF40fのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L11が入力される。FF40gのロード端子Load及びFF40hのロード端子Loadには、タイミング制御部50から取込トリガ信号TRG-L12が入力される。
【0044】
FF40aのデータ出力端子からは、信号Point_0が出力される。FF40bのデータ出力端子からは、信号Point_4が出力される。FF40cのデータ出力端子からは、信号Point_2が出力される。FF40dのデータ出力端子からは、信号Point_6が出力される。FF40eのデータ出力端子からは、信号Point_1が出力される。FF40fのデータ出力端子からは、信号Point_5が出力される。FF40gのデータ出力端子からは、信号Point_3が出力される。FF40hのデータ出力端子からは、信号Point_7が出力される。
【0045】
タイミング制御部50は、取込トリガ信号TRG-DL、取込トリガ信号TRG-L01~TRG-L12、及びシフトトリガ信号TRG-S1~TRG-S6の各出力タイミングを制御する。
【0046】
次に、
図1のバタフライ演算回路10の動作を説明する。まず、取込トリガ信号TRG-DLにより、8ビットの信号Point_0~Point_7が1組目の第1シフトレジスタ21及び第2シフトレジスタ22に取り込まれる。
【0047】
取り込まれた信号Point_0~Point_7は、第1シフトレジスタ21及び第2シフトレジスタ22において、それぞれ4ビットずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット100に入力される。
【0048】
演算ユニット100には、まず、FF21aに取り込まれたデータP0と、FF22aに取り込まれたデータP4と、係数W8(0)とが入力され、演算ユニット100において、式(1)に従って、1回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L01により、FF23aに1回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF23cに1回目のバタフライ演算による第2出力値Bが取り込まれる。
【0049】
次いで、演算ユニット100には、FF21bに取り込まれたデータP1と、FF22bに取り込まれたデータP5と、係数W8(1)とが入力され、演算ユニット100において、2回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L02により、FF23bに2回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF23dに2回目のバタフライ演算による第2出力値Bが取り込まれる。
【0050】
次いで、演算ユニット100には、FF21cに取り込まれたデータP2と、FF22cに取り込まれたデータP6と、係数W8(2)とが入力され、演算ユニット100において、3回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L03により、FF24aに3回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF24cに3回目のバタフライ演算による第2出力値Bが取り込まれる。
【0051】
次いで、演算ユニット100には、FF21dに取り込まれたデータP3と、FF22dに取り込まれたデータP7と、係数W8(3)とが入力され、演算ユニット100において、4回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L04により、FF24bに4回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF24dに4回目のバタフライ演算による第2出力値Bが取り込まれる。
【0052】
第1シフトレジスタ23及び第2シフトレジスタ24に取り込まれたデータは、第1シフトレジスタ23及び第2シフトレジスタ24において、それぞれ4つずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット101に入力される。
【0053】
演算ユニット101には、FF23aに取り込まれたデータa1と、FF24aに取り込まれたデータa3と、係数W8(0)とが入力され、演算ユニット101において、5回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L05により、FF25aに5回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF25bに5回目のバタフライ演算による第2出力値Bが取り込まれる。
【0054】
次いで、演算ユニット101には、FF23bに取り込まれたデータa2と、FF24bに取り込まれたデータa4と、係数W8(2)とが入力され、演算ユニット101において、6回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L06により、FF26aに6回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF26bに6回目のバタフライ演算による第2出力値Bが取り込まれる。
【0055】
次いで、演算ユニット101には、FF23cに取り込まれたデータb1と、FF24cに取り込まれたデータb3と、係数W8(0)とが入力され、演算ユニット101において、7回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L07により、FF25cに7回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF25dに7回目のバタフライ演算による第2出力値Bが取り込まれる。
【0056】
次いで、演算ユニット101には、FF23dに取り込まれたデータb2と、FF24dに取り込まれたデータb4と、係数W8(2)とが入力され、演算ユニット101において、8回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L08により、FF26cに8回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF26dに8回目のバタフライ演算による第2出力値Bが取り込まれる。
【0057】
第1シフトレジスタ25及び第2シフトレジスタ26に取り込まれたデータは、第1シフトレジスタ25及び第2シフトレジスタ26において、それぞれ4つずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット102に入力される。
【0058】
演算ユニット102には、FF25aに取り込まれたデータa1と、FF26aに取り込まれたデータa2と、係数W8(0)とが入力され、演算ユニット102において、9回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L09により、FF40aに9回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40bに9回目のバタフライ演算による第2出力値Bが取り込まれる。
【0059】
次いで、演算ユニット102には、FF25bに取り込まれたデータb1と、FF26bに取り込まれたデータb2と、係数W8(0)とが入力され、演算ユニット102において、10回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L10により、FF40cに10回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40dに10回目のバタフライ演算による第2出力値Bが取り込まれる。
【0060】
次いで、演算ユニット102には、FF25cに取り込まれたデータa3と、FF26cに取り込まれたデータa4と、係数W8(0)とが入力され、演算ユニット102において、11回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L11により、FF40eに11回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40fに11回目のバタフライ演算による第2出力値Bが取り込まれる。
【0061】
次いで、演算ユニット102には、FF25dに取り込まれたデータb3と、FF26dに取り込まれたデータb4と、係数W8(0)とが入力され、演算ユニット102において、12回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L12により、FF40gに12回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40hに12回目のバタフライ演算による第2出力値Bが取り込まれる。
【0062】
その後、FF40a~FF40hに取り込まれたデータが外部へ出力される。
図1のバタフライ演算回路10がこの一連の動作を繰り返すことにより、8点高速フーリエ変換が実現される。
【0063】
以上のように、実施の形態1に係るバタフライ演算回路10は、3組の演算セット11,12,13と、出力レジスタ40と、タイミング制御部50とを備えている。3組の演算セット11,12,13は、それぞれ、演算ユニット100,101,102と、第1シフトレジスタ21,23,25と、第2シフトレジスタ22,24,26と、第3シフトレジスタ31,32,33とを有している。3組の演算セット11,12,13は、直列に接続されている。
【0064】
このような構成により、8点高速フーリエ変換の演算が実現される。ここで、実施の形態1に係るバタフライ演算回路10と、一般的な8点高速フーリエ変換回路との比較のため、以下、
図3を参照しながら説明する。
【0065】
図3は、一般的な8点高速フーリエ変換回路を示す回路図である。
図3から理解されるように、一般的な8点高速フーリエ変換回路90では、12個の演算ユニットが必要である。
図3において、演算ユニット100a、100b、100c、及び100dが行うバタフライ演算は、
図1の演算ユニット100が行う1回目のバタフライ演算、2回目のバタフライ演算、3回目のバタフライ演算、及び4回目のバタフライ演算にそれぞれ相当する。
【0066】
演算ユニット100e、100f、100g、及び100hが行うバタフライ演算は、
図1の演算ユニット101が行う5回目のバタフライ演算、6回目のバタフライ演算、7回目のバタフライ演算、及び8回目のバタフライ演算にそれぞれ相当する。
【0067】
演算ユニット100i、100j、100k、及び100lが行うバタフライ演算は、
図1の演算ユニット102が行う9回目のバタフライ演算、10回目のバタフライ演算、11回目のバタフライ演算、及び12回目のバタフライ演算にそれぞれ相当する。
【0068】
従って、実施の形態1に係るバタフライ演算回路10によれば、8点高速フーリエ変換の演算を実現するために、従来、12個必要であった演算ユニットを、3個にまで削減することができる。これにより、使用される乗算器の個数を削減することができる。
【0069】
乗算器の個数の削減によるハードウェアリソースの低減効果は高い。従って、1つの乗算器を含んでいる演算ユニットの数を削減することにより、ハードウェアリソースを低減することができる。
【0070】
このように、実施の形態1に係るバタフライ演算回路10によれば、一般的な高速フーリエ変換回路にくらべて演算ユニットの個数を削減できるため、ハードウェアリソースを低減することができる。
【0071】
また、実施の形態1に係るバタフライ演算回路10は、8点高速フーリエ変換に用いられる回路であったが、N点高速フーリエ変換に適用される回路にも拡張可能である。この場合、第1シフトレジスタ及び第2シフトレジスタは、N/2段のシフトレジスタとすればよい。なお、Nは、2以上の自然数である。また、Nとしては、2の冪乗の数が用いられることが多い。
【0072】
また、実施の形態1に係るバタフライ演算回路10は、3組の演算セットを有していたが、N点高速フーリエ変換に適用される回路では、L組の演算セットが用いられればよい。ここで、Lは以下の式(2)により求められる。なお、Lは、自然数である。
【0073】
L=log2N ・・・(2)
【0074】
また、
図3に示した一般的なN点高速フーリエ変換回路の場合、演算ユニットの個数Uは、以下の式(3)により求められる。
【0075】
U=(N/2)×log2N ・・・(3)
【0076】
これに対し、実施の形態1に係るバタフライ演算回路10をN点高速フーリエ変換に適用される回路に拡張した場合、演算ユニットの個数は、演算セットの個数と等しく、L個となる。つまり、一般的なN点高速フーリエ変換回路に比べて、演算ユニットの個数を2/Nにすることができる。従って、Nが大きくなるほど、ハードウェアリソースの低減効果が高くなると考えられる。
【0077】
実施の形態2.
次に、実施の形態2に係るバタフライ演算回路について説明する。
図3は、実施の形態2に係るバタフライ演算回路を示す回路図である。実施の形態2に係るバタフライ演算回路10Aでは、格納レジスタを設けて、演算ユニットによる演算結果を一時格納しておくことにより、演算ユニットを1つまで削減させる点が実施の形態1に係るバタフライ演算回路10と異なる。その他の構成及び機能は、実施の形態1と同様である。
【0078】
実施の形態2に係るバタフライ演算回路10Aは、第1シフトレジスタ27と、第2シフトレジスタ28と、第3シフトレジスタ30と、演算ユニット100と、2組の格納レジスタ60A及び60Bと、出力レジスタ40と、タイミング制御部50Aとを備えている。
【0079】
第1シフトレジスタ27は、4段のシフトレジスタである。第1シフトレジスタ27は、4つのFF27a、27b、27c、及び27dを有している。FF27aの第1データ入力端子LD1には、信号Point_0が入力される。FF27bの第1データ入力端子LD1には、信号Point_1が入力される。FF27cの第1データ入力端子LD1には、信号Point_2が入力される。FF27dの第1データ入力端子LD1には、信号Point_3が入力される。
【0080】
各FF27a~27dの第1ロード端子L1には、タイミング制御部50から取込トリガ信号TRG-DL0がそれぞれ入力される。各FF27a~27dの第2ロード端子L2には、タイミング制御部50から取込トリガ信号TRG-DL1がそれぞれ入力される。各FF27a~27dの第3ロード端子L3には、タイミング制御部50から取込トリガ信号TRG-DL2がそれぞれ入力される。第1シフトレジスタ27のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S1が入力される。
【0081】
第2シフトレジスタ28は、第1シフトレジスタ27と同様に、4段のシフトレジスタである。第2シフトレジスタ28は、4つのFF28a、28b、28c、及び28dを有している。FF28aの第1データ入力端子LD1には、信号Point_4が入力される。FF28bの第1データ入力端子LD1には、信号Point_5が入力される。FF28cの第1データ入力端子LD1には、信号Point_6が入力される。FF28dの第1データ入力端子LD1には、信号Point_7が入力される。
【0082】
各FF28a~28dの各第1ロード端子L1には、タイミング制御部50から取込トリガ信号TRG-DL0が入力される。各FF28a~28dの各第2ロード端子L2には、タイミング制御部50から取込トリガ信号TRG-DL1が入力される。各FF28a~28dの第3ロード端子L3には、タイミング制御部50から取込トリガ信号TRG-DL2がそれぞれ入力される。第1シフトレジスタ27のシフトトリガ入力端子Shiftには、タイミング制御部50からシフトトリガ信号TRG-S1が入力される。
【0083】
第3シフトレジスタ30は、演算ユニット100のバタフライ演算に用いられる係数を格納している。第3シフトレジスタ30のシフトトリガ入力端子Shiftには、シフトトリガ信号TRG-S2が入力される。第3シフトレジスタ30は、シフトトリガ信号TRG-S2の立上りエッジのタイミングで、係数W8(k)を、順次出力する。シフトトリガ信号TRG-S2の速度は、シフトトリガ信号TRG-S1の速度と等しい。
【0084】
演算ユニット100は、
図2を参照しながら説明したように、第1信号入力部に入力される第1入力値aと、第2信号入力部に入力される第2入力値bと、係数入力端子に入力される係数W
8(k)との間で行われるバタフライ演算の演算結果を第1信号出力部及び第2信号出力部から出力する。
【0085】
第1信号入力部には、第1シフトレジスタ27から信号が入力される。第2信号入力部には、第2シフトレジスタ28から信号が入力される。係数入力端子には、第3シフトレジスタ30から係数W8(k)が入力される。
【0086】
1組目の格納レジスタ60Aは、一対の格納レジスタ61及び62を有している。一対の格納レジスタ61及び62は、4段のレジスタである。1組目の格納レジスタ60Aのうち、一方の格納レジスタ61は、4つのFF61a、61b、61c、及び61dを有している。また、他方の格納レジスタ62は、4つのFF62a、62b、62c、及び62dを有している。
【0087】
FF61aのデータ入力端子D、FF61bのデータ入力端子D、FF62aのデータ入力端子D、及びFF62bのデータ入力端子Dは、演算ユニット100の第1信号出力部と接続されている。FF61cのデータ入力端子D、FF61dのデータ入力端子D、FF62cのデータ入力端子D、及びFF62dのデータ入力端子Dは、演算ユニット100の第2信号出力部と接続されている。
【0088】
FF61aのイネーブル端子E及びFF61cのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L01が入力される。FF61bのイネーブル端子E及びFF61dのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L02が入力される。FF62aのイネーブル端子E及びFF62cのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L03が入力される。FF62bのイネーブル端子E及びFF62dのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L04が入力される。
【0089】
FF61aのデータ出力端子は、FF27aの第2データ入力端子LD2に接続されている。FF61bのデータ出力端子は、FF27bの第2データ入力端子LD2に接続されている。FF61cのデータ出力端子は、FF27cの第2データ入力端子LD2に接続されている。FF61dのデータ出力端子は、FF27dの第2データ入力端子LD2に接続されている。
図4において、これらの接続は、破線矢印により表されている。
【0090】
FF62aのデータ出力端子は、FF28aの第2データ入力端子LD2に接続されている。FF62bのデータ出力端子は、FF28bの第2データ入力端子LD2に接続されている。FF62cのデータ出力端子は、FF28cの第2データ入力端子LD2に接続されている。FF62dのデータ出力端子は、FF28dの第2データ入力端子LD2に接続されている。
図4において、これらの接続は、破線矢印により表されている。
【0091】
2組目の格納レジスタ60Bは、一対の格納レジスタ63及び64を有している。一対の格納レジスタ63及び64は、4段のレジスタである。2組目の格納レジスタ60Bのうち、一方の格納レジスタ63は、4つのFF63a、63b、63c、及び63dを有している。また、他方の格納レジスタ64は、4つのFF64a、64b、64c、及び64dを有している。
【0092】
FF63aのデータ入力端子D、FF63cのデータ入力端子D、FF64aのデータ入力端子D、及びFF64cのデータ入力端子Dは、演算ユニット100の第1信号出力部と接続されている。FF63bのデータ入力端子D、FF63dのデータ入力端子D、FF64bのデータ入力端子D、及びFF64dのデータ入力端子Dは、演算ユニット100の第2信号出力部と接続されている。
【0093】
FF63aのイネーブル端子E及びFF63bのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L05が入力される。FF63cのイネーブル端子E及びFF63dのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L07が入力される。FF64aのイネーブル端子E及びFF64bのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L06が入力される。FF64cのイネーブル端子E及びFF64dのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L08が入力される。
【0094】
FF63aのデータ出力端子は、FF27aの第3データ入力端子LD3に接続されている。FF63bのデータ出力端子は、FF27bの第3データ入力端子LD3に接続されている。FF63cのデータ出力端子は、FF27cの第3データ入力端子LD3に接続されている。FF63dのデータ出力端子は、FF27dの第3データ入力端子LD3に接続されている。
図4において、これらの接続は、破線矢印により表されている。
【0095】
FF64aのデータ出力端子は、FF28aの第3データ入力端子LD3に接続されている。FF64bのデータ出力端子は、FF28bの第3データ入力端子LD3に接続されている。FF64cのデータ出力端子は、FF28cの第3データ入力端子LD3に接続されている。FF64dのデータ出力端子は、FF28dの第3データ入力端子LD3に接続されている。
図4において、これらの接続は、破線矢印により表されている。
【0096】
出力レジスタ40は、8個のFF40a~40hを有している。FF40aのデータ入力端子D、FF40cのデータ入力端子D、FF40eのデータ入力端子D、及びFF40gのデータ入力端子Dは、演算ユニット100の第1信号出力部に接続されている。FF40bのデータ入力端子D、FF40dのデータ入力端子D、FF40fのデータ入力端子D、及びFF40hのデータ入力端子Dは、演算ユニット100の第2信号出力部に接続されている。
【0097】
FF40aのイネーブル端子E及びFF40bのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L09が入力される。FF40cのイネーブル端子E及びFF40dのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L10が入力される。FF40eのイネーブル端子E及びFF40fのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L11が入力される。FF40gのイネーブル端子E及びFF40hのイネーブル端子Eには、タイミング制御部50から取込トリガ信号TRG-L12が入力される。
【0098】
FF40aのデータ出力端子からは、信号Point_0が出力される。FF40bのデータ出力端子からは、信号Point_4が出力される。FF40cのデータ出力端子からは、信号Point_2が出力される。FF40dのデータ出力端子からは、信号Point_6が出力される。FF40eのデータ出力端子からは、信号Point_1が出力される。FF40fのデータ出力端子からは、信号Point_5が出力される。FF40eのデータ出力端子からは、信号Point_3が出力される。FF40fのデータ出力端子からは、信号Point_7が出力される。
【0099】
タイミング制御部50Aは、取込トリガ信号TRG-DL0~TRG-DL2、取込トリガ信号TRG-L01~TRG-L12、及びシフトトリガ信号TRG-S1~TRG-S2の各出力タイミングを制御する。
【0100】
次に、
図4のバタフライ演算回路10Aの動作を説明する。まず、取込トリガ信号TRG-DL0により、8ビットの信号Point_0~Point_7が第1シフトレジスタ27及び第2シフトレジスタ28に取り込まれる。
【0101】
取り込まれた信号Point_0~Point_7は、第1シフトレジスタ27及び第2シフトレジスタ28において、それぞれ4つずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット100に入力される。
【0102】
演算ユニット100には、まず、FF27aに取り込まれたデータと、FF28aに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、1回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L01により、FF61aに1回目のバタフライ演算による第1出力値Aが格納されるとともに、FF61cに1回目のバタフライ演算による第2出力値Bが格納される。
【0103】
次いで、演算ユニット100には、FF27bに取り込まれたデータと、FF28bに取り込まれたデータと、係数W8(1)とが入力され、演算ユニット100において、2回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L02により、FF61bに2回目のバタフライ演算による第1出力値Aが格納されるとともに、FF61dに2回目のバタフライ演算による第2出力値Bが格納される。
【0104】
次いで、演算ユニット100には、FF27cに取り込まれたデータと、FF28cに取り込まれたデータと、係数W8(2)とが入力され、演算ユニット100において、3回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L03により、FF62aに3回目のバタフライ演算による第1出力値Aが格納されるとともに、FF62cに3回目のバタフライ演算による第2出力値Bが格納される。
【0105】
次いで、演算ユニット100には、FF27dに取り込まれたデータと、FF28dに取り込まれたデータと、係数W8(3)とが入力され、演算ユニット100において、4回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L04により、FF62bに4回目のバタフライ演算による第1出力値Aが格納されるとともに、FF62dに4回目のバタフライ演算による第2出力値Bが格納される。
【0106】
FF61a、61b、61c、61d、62a、62b、62c、及び62dに格納されたデータは、4回目のバタフライ演算が終了した後、取込トリガ信号TRG-DL1により、第1シフトレジスタ27及び第2シフトレジスタ28に取り込まれる。
【0107】
第1シフトレジスタ27及び第2シフトレジスタ28に取り込まれた各データは、第1シフトレジスタ27及び第2シフトレジスタ28において、それぞれ4つずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット100に入力される。
【0108】
演算ユニット100には、まず、FF27aに取り込まれたデータと、FF28aに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、5回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L05により、FF63aに5回目のバタフライ演算による第1出力値Aが格納されるとともに、FF63bに5回目のバタフライ演算による第2出力値Bが格納される。
【0109】
次いで、演算ユニット100には、FF27bに取り込まれたデータと、FF28bに取り込まれたデータと、係数W8(2)とが入力され、演算ユニット100において、6回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L06により、FF64aに6回目のバタフライ演算による第1出力値Aが格納されるとともに、FF64bに6回目のバタフライ演算による第2出力値Bが格納される。
【0110】
次いで、演算ユニット100には、FF27cに取り込まれたデータと、FF28cに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、7回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L07により、FF63cに7回目のバタフライ演算による第1出力値Aが格納されるとともに、FF63dに7回目のバタフライ演算による第2出力値Bが格納される。
【0111】
次いで、演算ユニット100には、FF27dに取り込まれたデータと、FF28dに取り込まれたデータと、係数W8(2)とが入力され、演算ユニット100において、8回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L08により、FF64cに8回目のバタフライ演算による第1出力値Aが格納されるとともに、FF64dに8回目のバタフライ演算による第2出力値Bが格納される。
【0112】
FF63a、63b、63c、63d、64a、64b、64c、及び64dに格納されたデータは、8回目のバタフライ演算が終了した後、取込トリガ信号TRG-DL2により、第1シフトレジスタ27及び第2シフトレジスタ28に取り込まれる。
【0113】
第1シフトレジスタ27及び第2シフトレジスタ28に取り込まれた各データは、第1シフトレジスタ27及び第2シフトレジスタ28において、それぞれ4つずつ時分割多重化される。時分割多重化された多重信号は、演算ユニット100に入力される。
【0114】
演算ユニット100には、まず、FF27aに取り込まれたデータと、FF28aに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、9回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L09により、FF40aに9回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40bに9回目のバタフライ演算による第2出力値Bが取り込まれる。
【0115】
次いで、演算ユニット100には、FF27bに取り込まれたデータと、FF28bに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、10回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L10により、FF40cに10回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40dに10回目のバタフライ演算による第2出力値Bが取り込まれる。
【0116】
次いで、演算ユニット100には、FF27cに取り込まれたデータと、FF28cに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、11回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L11により、FF40eに11回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40fに11回目のバタフライ演算による第2出力値Bが取り込まれる。
【0117】
次いで、演算ユニット100には、FF27dに取り込まれたデータと、FF28dに取り込まれたデータと、係数W8(0)とが入力され、演算ユニット100において、12回目のバタフライ演算が行われる。このとき、取込トリガ信号TRG-L12により、FF40gに12回目のバタフライ演算による第1出力値Aが取り込まれるとともに、FF40hに12回目のバタフライ演算による第2出力値Bが取り込まれる。
【0118】
その後、FF40aからFF40hに取り込まれたデータが外部へ出力される。
図4のバタフライ演算回路10Aがこの一連の動作を繰り返すことにより、8点高速フーリエ変換が実現される。
【0119】
以上のように、実施の形態2に係るバタフライ演算回路10Aは、演算ユニット100と、第1シフトレジスタ27と、第2シフトレジスタ28と、第3シフトレジスタ30と、2組の格納レジスタ60A,60Bと、出力レジスタ40と、タイミング制御部50Aとを備えている。格納レジスタ60Aは、一対の格納レジスタ61及び62を有している。格納レジスタ60Bは、一対の格納レジスタ63及び64を有している。
【0120】
第1シフトレジスタ27及び第2シフトレジスタ28は、8ビットの入力信号をそれぞれ4ビットずつ取り込む。次に、第1シフトレジスタ27及び第2シフトレジスタ28は、2組の格納レジスタ60A,60Bの一対の格納レジスタに格納された4ビットの信号について、1組目の格納レジスタに格納された信号と、2組目の格納レジスタに格納された信号とを順に取り込む。
【0121】
このような構成により、8点高速フーリエ変換の演算が実現される。実施の形態2に係るバタフライ演算回路10Aによれば、8点高速フーリエ変換の演算を実現するために、従来、12個必要であった演算ユニットを、1個に削減することができる。これにより、使用される乗算器の個数をより削減することができる。
【0122】
従って、実施の形態2に係るバタフライ演算回路によれば、ハードウェアリソースをより低減することができる。
【0123】
また、実施の形態2に係るバタフライ演算回路10Aは、8点高速フーリエ変換に用いられる回路であったが、N点高速フーリエ変換に適用される回路にも拡張可能である。この場合、第1シフトレジスタ及び第2シフトレジスタは、N/2段のシフトレジスタとすればよい。
【0124】
また、実施の形態2に係るバタフライ演算回路10Aは、2組の格納レジスタを有していたが、N点高速フーリエ変換に適用される回路では、M組の格納レジスタが用いられればよい。ここで、Mは以下の式(4)により求められる。なお、Mは、非負の整数である。
【0125】
M=log2N-1 ・・・(4)
【0126】
実施の形態2に係るバタフライ演算回路10AをN点高速フーリエ変換に適用される回路に拡張した場合も、演算ユニットを1個とすることができるので、ハードウェアリソースの低減効果は、より高くなる。
【0127】
なお、実施の形態1,2において、バタフライ演算には、周波数間引き法が用いられていたが、バタフライ演算には、時間間引き法が用いられてもよい。バタフライ演算に時間間引き法を用いた場合、演算ユニットの第1入力値a、第2入力値b、第1出力値A、第2出力値Bとの間には、以下の式(5)の関係が成り立つ。
【0128】
A=a+b×W8(k),B=a-b×W8(k) ・・・(5)
【0129】
なお、時間間引き法を用いた場合、例えば、バタフライ演算回路の取込トリガ信号の配線の順序は、バタフライ演算回路10及び10Aとは異なるが、演算ユニットの個数及びシフトレジスタの個数は、変わらない。
【符号の説明】
【0130】
10,10A バタフライ演算回路、11,12,13 演算セット、21,23,25,27 第1シフトレジスタ、22,24,26,28 第2シフトレジスタ、30,31,32,33 第3シフトレジスタ、40 出力レジスタ、50,50A タイミング制御部、60A,60B,61,62,63,64 格納レジスタ、100,101,102 演算ユニット、200 加算器、300 減算器、400 乗算器。