JP2007172157A - Fft演算回路 - Google Patents

Fft演算回路 Download PDF

Info

Publication number
JP2007172157A
JP2007172157A JP2005366731A JP2005366731A JP2007172157A JP 2007172157 A JP2007172157 A JP 2007172157A JP 2005366731 A JP2005366731 A JP 2005366731A JP 2005366731 A JP2005366731 A JP 2005366731A JP 2007172157 A JP2007172157 A JP 2007172157A
Authority
JP
Japan
Prior art keywords
unit
complex
fft
output
butterfly
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.)
Granted
Application number
JP2005366731A
Other languages
English (en)
Other versions
JP4791172B2 (ja
Inventor
Yoshio Wada
和田 善生
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to JP2005366731A priority Critical patent/JP4791172B2/ja
Priority to KR1020060101573A priority patent/KR100878765B1/ko
Priority to US11/641,864 priority patent/US7979485B2/en
Publication of JP2007172157A publication Critical patent/JP2007172157A/ja
Application granted granted Critical
Publication of JP4791172B2 publication Critical patent/JP4791172B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】従来のように、基数に対応した複数の演算回路を設けず、複数のFFT長に対応することができ、回路数を削減し、消費電力を低下させることができるFFT演算回路を提供する。
【解決手段】本発明のFFT演算回路は、複数の直列に接続されたバタフライ演算部からなり、演算対象のFFT長を任意に選択して設定するFFT演算器であり、バタフライ演算部が、入力される信号を一旦格納する一時記憶部を備え、バタフライ演算において複素乗算及び複素加減算を行う順番に、順次信号を読み出す信号順変換部と、FFT長に対応して、各信号に複素乗算する複素係数が記憶された係数記憶部と、読み出された前記信号毎に、前記複素係数記憶部から対応する複素係数を順次読み出して複素乗算する複素乗算部と、該複素乗算部から出力される、複素係数が複素乗算された信号に対し、順次複素加減算を行う複素加減算部とを有する。
【選択図】図1

Description

本発明は、データ通信や画像・音声信号のデジタル信号処理に用いられるFFT(Fast Fourier Transform:高速フーリエ変換)演算回路に関する。
FFTは、時間領域における一連の信号データに潜む周波数成分を抽出するのに用いられる手法であり、多数のデータを短時間で処理できるという優れた特徴を有する。また、FFTをハードウェアにより実現する際には、面積の小さい回路が必要とされる。
一方、携帯電話などの無線通信の規格において、様々なCellular方式や無線LAN方式が用いられている。一般の利用者としては、これらの規格の利点を利用して、効率的な無線通信を行えることを望んでいる。
例えば、データ通信の分野においては、FFTのデータ長(FFT長)が用途により異なり、一例として、無線LANの規格の1つであるIEEE802.11aにてデータ長64であり、4G-Mobileの規格の候補の1つが1024である。
そのため、1つの携帯端末に複数の機能を持たせる場合、外部からの設定により、処理するデータ長に対応して上述した2つの演算を切り替え、1つのFFT回路で実現することが必要となってくる。すなわち、複数の規格を1つのハードウェアにより構成するMulti−Mode端末が最近用いられているが、複数のチップセットを用いているため、実装面積を無駄とし、ハードウェアが大型化してしまう欠点がある。したがって、1つのチップセットによって、複数の規格に対応するFFT演算回路が必要となる。
上述した課題に対して、特許文献1に記載されているFFT専用プロセッサは、FFT演算を行う処理回路に、FFT演算を行うFFT長として複数の値に対応させるため、複数の基数に対応した複数の演算回路が設けられており、FFT演算の各ステージにおける基数に対応した演算回路を選択して使用する構成となっている。
特開平08−0300584号公報
しかしながら、上記特許文献1に示すFFT専用プロセッサは、複数のFFT長の種類に対応させるため、基数に対応した複数の演算回路を設けているため、回路規模が大きくなり、消費電力が増大するという欠点がある。
本発明は、このような事情に鑑みてなされたもので、従来のように、基数に対応した複数の演算回路を設けず、複数のFFT長に対応することができ、回路数を削減し、消費電力を低下させることができるFFT演算回路を提供することを目的とする。
本発明のFFT演算回路は、複数の直列に接続されたバタフライ演算部(例えば、実施形態におけるバタフライ演算器11〜15)からなり、演算対象のFFT長を任意に選択して設定するFFT演算器であり、前記バタフライ演算部が、入力される信号を一旦格納する一時記憶部を備え、バタフライ演算において複素乗算及び複素加減算を行う順番に、順次信号を読み出す信号順変換部(例えば、実施形態における入力アドレス生成部23,25と、セレクタ24,28と記憶部22から構成されている)と、FFT長及びバタフライ演算部の段数に対応して、各信号に複素乗算する複素係数が記憶された複素係数記憶部(例えば、実施形態におけるFFT回転因子テーブル)と、読み出された前記信号毎に、前記複素係数記憶部から対応する複素係数を順次読み出して複素乗算する複素乗算部と、該複素乗算部から出力される、複素係数が複素乗算された信号に対し、順次複素加減算を行う複素加減算部とを有することを特徴とする。
上述した構成により、本発明のFFT演算回路は、複数のバタフライ演算部が直列に接続されて形成されているため、FFT長に応じたバタフライ演算の回数に対応したバタフライ演算部から出力を選択することにより、複数のFFT長の種類に対応した演算が行うことができる。
以上説明したように、発明によれば、従来のように、基数に対応した複数の演算回路を設けずに、複数のFFT長に対応したFFT演算を行うことができるため、従来例のように、基数に対応する複数の演算回路を設ける必要がなく、従来例に比較して回路規模を小さくすることができ、消費電力を削減することが可能となる効果が得られる。
以下、本発明の一実施形態によるFFT演算回路を図面を参照して説明する。図1は同実施形態によるFFT演算回路1の構成例を示すブロック図である。
本実施形態においては、基数4を用いたバタフライ演算を例にとり説明するが、基数を2のn乗とした2,4,8,16,…としても同様に回路を構成することができる。また、外部から入力されるFFT演算の対象としてのサンプル(チャンネル)数により、使用されるバタフライ演算器の数が変化する。FFT演算回路1は、基数4にて、FFT長が64,256及び1024各々に対するFFT演算に対応する構成である。
すなわち、本実施形態のFFT演算回路1は、バタフライ演算器11、12,13,14及び15各々がそれぞれの出力端子と次段の入力端子とを接続した直列接続となっている。また、本実施形態のFFT演算回路1は、FFT長が64,256及び1024に対応した構成のため、上記バタフライ演算器13,14及び15のいずれかの出力を、FFT長の情報により選択して、選択された演算結果をFFT演算結果として出力する構成となっている。
本実施形態において、例えば、FFT長が64(4)の場合、4の3乗のため3段目のバタフライ演算器13からFFTの演算結果が出力され、FFT長が256(4)の場合、4の4乗のため4段目のバタフライ演算器14からFFTの演算結果が出力され、FFT長が1024(4)の場合、4の5乗のため5段目のバタフライ演算器15から演算結果が出力される。また、FFT長が256の際、バタフライ演算器13からは中間データとしてのバタフライ演算結果がバタフライ演算器14に出力され、すなわち、FFT長に必要なバタフライ演算器の前段までのバタフライ演算器からは、計算途中のFFT長と同数の中間データが出力される。
バタフライ演算器(11〜15)各々は、後に詳細に述べるが、外部から入力されるFFT長を示すFFT長情報により、外部からまたは前段から入力される信号各々(入力信号)に複素乗算する複素係数のデータ(以下、係数データまたは係数とする)を変化させ、FFT長に対応したバタフライ演算に必要な段の前段まで、上記中間データに対応したバタフライ演算を行い、FFT長に対応したバタフライ演算に必要な段のバタフライ演算器から最終的な演算結果が出力されるように、動作が設定される。ここでの、信号とは、初段のバタフライ演算器11に入力されるサンプル、または後段のバタフライ演算器12〜15に入力される前段からの中間データの双方を含むものとする。例えば、FFT長が256の場合、バタフライ演算器11〜13までは、中間データ生成としての演算を行い、バタフライ演算器14がバタフライ演算器13から出力される中間データから最終的なFFT演算結果を出力信号として出力する。
セレクタ16は、各バタフライ演算器からの出力が入力されており、上記FFT長及びバタフライ演算器の段数(何番目のバタフライ演算器であるか)により、FFT演算結果が出力される段のバタフライ演算器からの出力を選択して、出力信号として出力する。
次に、図2を参照して、図1に示すバタフライ演算器11の説明を行う。図2は、本実施形態におけるFFT演算回路1を構成するバタフライ演算器を代表して、バタフライ演算器11の構成例を説明する。他のバタフライ演算器12,13,14及び15各々の構成は、バタフライ演算器11と同様のバタフライ演算を行う構成となっている。各演算器が異なる点は、次段に対して出力する中間データを演算する際、入力されるデータに対して複素乗算する係数が異なることと、この係数が複素乗算された結果を加減演算する信号(サンプルまたは中間データ)の組合せが異なることにある。
また、バタフライ演算器14はFFT長が256個と1024個の場合のみ、バタフライ演算を行うため、FFT長が64の場合のバタフライ演算に対応する構成を必要とせず、バタフライ演算器15はFFT長が1024個の場合のみ、バタフライ演算を行うため、FFT長が64及び256の場合のバタフライ演算に対応する構成を必要としない。このため、バタフライ演算器14及び15は、バタフライ演算器11〜13と同様の回路構成でも、また必要とする回路のみで構成しても、どちらでも良い。
記憶部22には、外部から時系列に入力される入力信号x(k)、すなわち{x(0),x(1),x(2),…,x(k-1),x(k)}の信号列が、セレクタ24から出力される入力アドレス(下記に説明)に従い、対応する入力アドレス、例えば初段のバタフライ演算器11においては連続したアドレスに順次書き込み、次段以降のバタフライ演算器12〜15においては前段の出力アドレスと同一のアドレスに入力される。
入力アドレス生成部23は、記憶部22に対して、信号を順次書き込むアドレスを生成する。このアドレス生成部23は、FFT長64に対応する入力アドレスを生成する入力アドレス生成64部23Aと,FFT長256に対応する入力アドレスを生成する入力アドレス生成部256部23Bと、FFT長1024に対応する入力アドレスを生成する入力アドレス生成1024部23Cとから構成されている。
セレクタ24は、入力アドレス生成部23より入力される入力アドレスから、入力されるFFT長情報に従い、FFT長に対応する入力アドレスを選択し、入力アドレスとして、記憶部22へ出力する。
上記記憶部22は、読み出しと書き込みとが同一のタイミングで行える、例えばデュアルポートRAM(ランダムアクセスメモリ)で構成され、かつ記憶領域が2つに分割され、ダブルバッファ構造として入力信号x(k)(すなわち入力される信号)を書き込むための記憶領域が第1及び第2の記憶領域として2つある。したがって、本実施形態において、記憶部22は、1024のFFT長に対応した構成となっているため、2048個の信号に対応する容量を有している。
また、記憶部22は、例えば、図3に示すように、上述したアドレス数が2048のメモリ空間を有している。このメモリ空間におけるメモリマップとしては、FFT長が64の場合、使用するアドレス空間がアドレス数が64のため、書き込み及び読み出しを交互に交代させるアドレス空間としてはアドレス数が128となる。記憶部22においては、この128を示すアドレスの最上位ビットが「0」のアドレス空間(第1の記憶領域)と、最上位ビットが「1」のアドレス空間(第2の記憶領域)とで、FFT長64に対する2つのアドレス空間を構成することになる。
また、同様に、記憶部22において、このメモリ空間におけるメモリマップとしては、FFT長が256の場合、使用するアドレス空間がアドレス数が256のため、書き込み及び読み出しを交互に交代させる(切り替える)アドレス空間としてはアドレス数が512となる。記憶部22においては、この512を示すアドレスの最上位ビットが「0」のアドレス空間(第1の記憶領域)と、最上位ビットが「1」のアドレス空間(第2の記憶領域)とで、FFT長256に対する2つのアドレス空間を構成することになる。
また、同様に、記憶部22において、このメモリ空間におけるメモリマップとしては、FFT長が1024の場合、使用するアドレス空間がアドレス数が1024のため、書き込み及び読み出しを交互に交代させるアドレス空間としてはアドレス数が2048となる。記憶部22においては、この2048を示すアドレスの最上位ビットが「0」のアドレス空間(第1の記憶領域)と、最上位ビットが「1」のアドレス空間(第2の記憶領域)とで、FFT長1024に対する2つのアドレス空間を構成することになる。
アドレス生成部23は、入力するFFT長に対応した各入力アドレス生成部が、上述した記憶部22のアドレス空間に対応する記憶部22のアドレスを生成する。
出力アドレス生成部25は、複素複素乗算部26が記憶部22から、信号を順次読み出すアドレスを生成する。この出力アドレス生成部25は、FFT長64に対応する出力アドレスを生成する出力アドレス生成64部25Aと,FFT長256に対応する出力アドレスを生成する出力アドレス生成部256部25Bと、FFT長1024に対応する出力アドレスを生成する出力アドレス生成1024部25Cとから構成されている。
また、出力アドレス生成部25は、上述したFFT長及び、各バタフライ演算器の上記段数により、読み出すための出力アドレスが異なるため、それぞれの場合に対応した出力アドレスを生成する。
上記出力アドレス生成64部25Aは、FFT長が64個の場合において、後述ように複素加減算部27において、複素加減算部27において実行される複素加減算を行う組み合わせの順に、信号のデータが記憶部22から読み出されるように、記憶されている信号のデータを読み出す順に、対応するアドレスとして出力アドレスを順次生成する。すなわち、入力アドレス生成部23,出力アドレス生成部25及び記憶部22は、信号順変換部を構成し、信号が入力された順番のアドレスに対し、後に複素加減算部27にて加減演算を行う信号の組合せ(基数4なので組合せの信号または中間データは4個)が連続して複素複素乗算部26に出力されるように読み出す出力アドレスに変換する。
また、同様に、出力アドレス生成256部25B及び出力アドレス1024部25C各々は、FFT長が256個及び1024個それぞれの場合において、後述ように複素加減算部27において、複素加減算部27において実行される複素加減算を行う信号の組み合わせの順に、信号のデータが記憶部22から読み出されるように、記憶されている信号のデータを読み出す順に、対応するアドレスとして出力アドレスを順次生成する。
例えば、基数4で、FFT長が256の場合を例にとり説明すると、本実施形態における(FFT演算のアルゴリズによって以下の式は異なる)基数4のバタフライ演算が、信号のデータとして、x(k)が0≦k≦255の範囲で入力されてくる。
DFT(離散フーリエ変換)として、
X(n)=Σx(k)W nk …(1)
とする(1/Nを省略)。
上述した式において、信号番号nと周波数を示すインデックスkとは以下のように示される。
n=64n+16n+4n+n;(n,n,n,n=0,1,2,3)
k=64k+16k+4k+k;(k,k,k,k=0,1,2,3)…(2)
DFTは、
X(n,n,n,n
=ΣΣΣΣx(k,k,k,k)W n(64k3+16k2+4k1+k0) …(3)
と示される。このk,k,k,kの各々和において、第1段目のバタフライ演算器11にてkについての和を求め、第2段目のバタフライ演算器12にてkについての和を求め、第3段目のバタフライ演算器13にてkについての和を求め、第4段目のバタフライ演算器14にてkについての和を求めることとなる。
この場合には、上記(3)式が以下の(4)〜(7)を順番に、対応する各バタフライ演算器において演算することにより、バタフライ演算の最終結果であるDFTとしてX(n,n,n,n)が求められる。
(n,k,k,k)=Σx(k,k,k,k)W n0k3 …(4)
(n,n,k,k)=Σx(n,k,k,k)W 16n0k2 n1k2 …(5)
(n,n,n,k)=Σx(n,n,k,k)W 4(4n1+n0)k1 n2k1 …(6)
(n,n,n,n)=Σx(n,n,n,k)W (16n2+4n1+n0)k0 n3k0…(7)
ここで、x(n,n,n,n)がX(n,n,n,n)である。
(4)式が1段目のバタフライ演算器11の出力であり、(5)式が2段目のバタフライ演算器12の出力であり、(6)式が3段目のバタフライ演算器13の出力であり、(7)式が4段目のバタフライ演算器14の出力、すなわちFFT長256におけるDFTである。また、上記x,x,xが、DFT演算における各バタフライ演算器での中間データとなる。
この場合、バタフライ演算器11は、(4)式における、入力される信号への係数「W n0k3」の複素乗算、すなわち「+1」,「−1」,「+j」または「−j」の複素乗算については、複素加減算部27において加算するか減算するかにより設定されているため、特に複素乗算の処理は行われない。複素加減算部27においては、係数「W n0k3」におけるnが0,1,2,3の4つの場合に対応した4つの減算または加算が行われ、4つの中間データが出力される。
同様に、バタフライ演算器12は、(5)式における、入力される信号(中間データ)への係数「W n1k2」の複素乗算、すなわち「+1」,「−1」,「+j」または「−j」の複素乗算については、複素加減算部27において加算するか減算するかにより設定されているため、特に複素乗算の処理は行われない。複素加減算部27においては、係数「W n1k2」におけるnが0,1,2,3の4つの場合に対応した4つの減算または加算が行われ、4つの中間データが出力される。
また、バタフライ演算器13は、(6)式における、入力される信号(中間データ)への係数「W n2k1」の複素乗算、すなわち「+1」,「−1」,「+j」または「−j」の複素乗算については、複素加減算部27において加算するか減算するかにより設定されているため、特に複素乗算の処理は行われない。複素加減算部27においては、係数「W n2k1」におけるnが0,1,2,3の4つの場合に対応した4つの減算または加算が行われ、4つの中間データが出力される。
また、バタフライ演算器12は、(7)式における、入力される信号(中間データ)への係数「W n3k0」の複素乗算、すなわち「+1」,「−1」,「+j」または「−j」の複素乗算については、複素加減算部27において加算するか減算するかにより設定されているため、特に複素乗算の処理は行われない。複素加減算部27においては、係数「W n3k0」におけるnが0,1,2,3の4つの場合に対応した4つの減算または加算が行われ、4つの中間データが出力される。
バタフライ演算器11に対しては、信号x(k)が、すでに述べたようにk=0〜255まで順番に入力され、記憶部22の連続したアドレスに順に書き込まれる。このため、記憶部22からの読み出しとして、以下のような出力アドレスが必要となる。
上記(4)式において、kについての和を求めているため、複素加減算部27においては、信号x(k,k,k,k)の組として、初めの組がx(k,0,0,0)となり、kを0,1,2,3と変化させた信号x(0),x(64),x(128),x(192)の4つを組として所定の複素加減算を行う。
次に、x(k,0,0,1)として、kを0,1,2,3と変化させた信号x(k)が4つの信号の組の信号列として順次読み出される必要がある。
したがって、バタフライ演算器11における出力アドレス生成256部25Bは、記憶部22から信号列を読み出す順番として、kの数値を表現した(2)式における4進数の最も高い桁(64)、すなわちこのバタフライ演算器11にて和をとる番号kの桁を基準とし、他の桁を固定し、基準とした桁を0,1,2,3と変化させて、順次出力アドレスを生成することとなる。
以下、バラフライ演算部12、13,14も同様に、以下の様に求められる。
同様に、(5)式において、kについての和を求めているため、複素加減算部27(バタフライ演算器12)においては、信号x(n,k,k,k)の組として、初めの組がx(0,k,0,0)となり、kを0,1,2,3と変化させた信号x(0),x(16),x(32),x(48)の4つを組として所定の複素加減算を行う。
次に、x(0,k,0,1)として、kを0,1,2,3と変化させた信号x(k)が4つの信号の組の信号列として、順次読み出される必要がある。
したがって、バタフライ演算器12における出力アドレス生成256部25Bは、記憶部22から信号列を読み出す順番として、kの数値を表現した(2)式における4進数の2番目に高い桁(16)、すなわちこのバタフライ演算器12にて和をとる番号kを基準とし、他の桁を固定し、基準とした桁を0,1,2,3と変化させて順次出力アドレスを生成することとなる。
また、(6)式において、kについての和を求めているため、複素加減算部27(バタフライ演算器13)では、信号x(n,n,k,k)の組として、初めの組がx(0,0,k,0)となり、kを0,1,2,3と変化させた信号x(0),x(4),x(8),x(12)の4つを組として所定の複素加減算を行う。
このため、x(0,0,k,1)として、kを0,1,2,3と変化させた信号x(k)が4つの信号の組の信号列として、順次読み出される必要がある。
したがって、バタフライ演算器13における出力アドレス生成256部25Bは、記憶部22から信号列を読み出す順番として、kの数値を表現した(2)式における4進数の3番目に高い桁(4)、すなわちこのバタフライ演算器13にて和をとる番号kを基準とし、他の桁を固定し、基準とした桁を0,1,2,3と変化させて順次出力アドレスを生成することとなる。
同様に、(7)式において、kについての和を求めているため、複素加減算部27(バタフライ演算器14)では、信号x(n,n,n,k)の組として、初めの組がx(0,0,0,k)となり、kを0,1,2,3と変化させた信号x(0),x(1),x(2),x(3)の4つを組として所定の複素加減算を行う。
次に、x(0,0,1,k)として、kを0,1,2,3と変化させた信号x(k)が4つの信号の組を信号列として、順次読み出される必要がある。
したがって、バタフライ演算器14における出力アドレス生成256部25Bは、記憶部22から信号列を読み出す順番として、kの数値を表現した(2)式における4進数の最も低い桁(1)、すなわちこのバタフライ演算器13にて和をとる番号kを基準とし、他の桁を固定し、基準とした桁を0,1,2,3と変化させて順次出力アドレスを生成することとなる。
すなわち、出力アドレス生成部25の各FFT長に対応したアドレス生成部は、対応する各バタフライ演算器における和を求める桁を基準とし、この基準となる桁以外の桁を順次変化させ、この変化させた値毎に、基準となる桁をn進数(基数に対応)で変化、例えば4進数であれば、0,1,2,3と変化させ、複素加減算部27で用いる基数に対応する数の信号列に対する出力アドレスを生成する。
また、出力アドレス生成部25の各アドレス生成部は、基準となる桁以外の桁の変化において、演算のアルゴリズムにより異なるが、例えば、より桁数の小さい桁から順に変化させることとする。
上述したことから、各バタフライ演算器における出力アドレス部25における出力アドレス生成64部25Aは、FFT長64に対応しているため、(2)式の表現が以下の式のようになる。
n=16n+4n+n;(n,n,n=0,1,2,3)
k=16k+4k+k;(k,k,k=0,1,2,3)
同様に、各バタフライ演算器における出力アドレス部25における出力アドレス生成1024部25Cは、FFT長1024に対応しているため、(2)式の表現が以下の式のようになる。
n=256n+64n+16n+4n+n;(n,n,n,n,n=0,1,2,3)
k=256n+64k+16k+4k+k;(k,k,k,k,k=0,1,2,3)
上述したように、(2)式の表現が、FFT長が異なると、読み出される信号のデータの組合せ(信号が入力されて記憶部22に記憶された順番から、記憶部22から複素複素乗算部26に対して読み出す順番の変更)も異なってくるため、出力アドレスの生成は、FFT長(すなわちFFT長情報)に対応して、各出力アドレス生成部(出力アドレス生成64部25A,出力アドレス生成256部25B,出力アドレス生成1024部25C)により、基数とFFT長とから決まる読み出しアドレスの演算式により、順次出力アドレスの演算が行われる。
また、各バタフライ演算器において、(2)式における和をとる桁を最小桁とし、以降は(2)式の桁数の低い方から順に桁上がりをするカウンタを形成して、各出力アドレス生成回路25を構成してもよい。
また、上記各出力アドレス部は、対応するFFT長に対応して、上述した組で信号のデータを読み出す出力アドレスが順番に記憶されたROM(読み出し専用メモリ)から、時系列に順番にこのROMのアドレスをアクセスして、記憶された出力アドレスを読み出し、出力アドレスを生成する構成としてもよい。
セレクタ27は、入力されるFFT長に従い、FFT長に対応する出力アドレスを選択し、出力アドレスとして、記憶部22へ出力する。
複素複素乗算部25は、記憶部22から時系列に入力される信号のデータx(k)に対して、FFT回転因子テーブル部27(請求項における複素係数記憶部に対応)から読み出される係数、例えば、FFT長が256の場合、バタフライ演算器11においては「1」、バタフライ演算器12においては「W 16n0k2」、バタフライ演算器13においては「W 4(4n1+n0)k1」、バタフライ演算器14においてはW (16n2+4n1+n0)k0を順次複素乗算して、複素乗算結果を出力する。
複素係数(または複素回転因子)としての上記各係数各々は、複素乗算する対象の信号毎(すなわち、FFT長及びバタフライ演算器の段数に対応して)に異なるため、図4に示すように、FFT回転因子テーブル部27には、FFT長及びバタフライ演算器の段数各々に対応したテーブルを設けておく。このテーブルはROMに予め記憶させるようにして形成しても良いし、RAMに演算を開始させる前に、外部から読み込んでおくように形成してもよい。
FFT回転因子テーブル部27は、図4に示すように、FFT長毎に対応した係数の記憶領域から構成されており、FFT長が1024個の場合に使用する係数が記憶されている領域D64と、FFT長が256個の場合に使用する係数が記憶されている領域D256と、FFT長が1024個の場合に使用する係数が記憶されている領域D1024とから構成されている。
アドレス生成部28は、領域D64に記憶されている係数を順番に読み出す因子アドレスを生成する因子アドレス生成64部28Aと、領域D256に記憶されている係数を順番に読み出す因子アドレスを生成する因子アドレス生成256部28Bと、領域D1024に記憶されている係数を順番に読み出す因子アドレスを生成する因子アドレス生成1024部28Cとから構成されている。
アドレス生成部28は、FFT長に応じて記憶部22から順次読み出される信号のデータに対して複素乗算する係数を、信号の読み出しに同期して読み出すため、FFT回転因子テーブル27から係数を読み出す因子アドレス順次生成する。
セレクタ29は、入力されるFFT長情報により、因子アドレス生成64部28A,因子アドレス生成256部28B及び因子アドレス生成1024部28C各々が生成して出力する因子アドレスのいずれかを選択し、選択した因子アドレスをFFT回転因子テーブル27へ出力する。
複素複素乗算部26は、記憶部22から時系列に入力される信号のデータ各々に対し、FFT回転因子テーブル27から順番に読み出される各係数を、順次複素乗算してシリアル/パラレル変換部30へ出力する。
パラレル/シリアル変換部30は、係数が複素乗算された、4つの信号のデータの組がシリアルに(直列に)、出力アドレス生成部25から出力されるアドレスに従い、記憶部22から読み出された順に、例えば、{x(0),x(64),x(128),x(192)}、{x(1),x(65),x(129),x(193)}、…の順に入力された時点で、一旦この組の信号のデータを記憶し、これら信号のデータをパラレルに(並列に)、複素加減算部27へ出力する。
また、複素加減算部27は、各バタフライ演算器毎に、対応する上記(4)式から(7)式の加減演算を行い、得られた演算結果をパラレル/シリアル変換器31へ並列に出力する。例えば、バタフライ演算器11における複素加減算部27は、入力される{x(0),x(64),x(128),x(192)}の信号の組に対して所定の複素加減算を行い、演算結果として、中間データ{x(0),x(64),x(128),x(192)}を並列に出力する。
パラレル/シリアル変換器31は、並列に入力される演算結果{x(0),x(64),x(128),x(192)}の並びを、パラレルからシリアルに変換して、x(0),x(64),x(128),x(198)の順で出力する。
タイミング生成部32は、記憶部22に信号のデータが書き込まれるタイミング、入力アドレス生成部23が入力アドレスを生成して出力するタイミング、出力アドレス生成部25が出力アドレスを生成して出力するタイミング、セレクタ24,28,29各々が選択処理を行うタイミング、複素複素乗算部26が複素乗算するタイミング、シリアル/パラレル変換部30がシリアル・パラレル変換処理を行うタイミング、複素加減算部27が複素加減算を行うタイミング及び、パラレル/シリアル変換部27が複素加減算部27の出力をパラレル・シリアル変換を行うタイミング各々を制御する動作クロックを、上記各部に対して出力し、FFT長情報の示すFFT長に応じて各部の動作を制御する。
すなわち、FFT長が64の場合、64個のデータが入力される毎に、またFFT長が256の場合、256個のデータが入力される毎に、またFFT長が1024の場合、1024個のデータが入力される毎に、下記に説明するFFT演算を周期的に行う。
また、記憶部22におけるダブルバッファとしての、第1及び第2の記憶領域は上記周期毎に、書き込みが行われる領域と、読み出しが行われる領域とに、セレクタ24及びセレクタ28それぞれにより順次切り替えて使用される。
次に、図1及び図2を参照して、本願発明のFFT演算回路1の動作の説明を行う。ここで、入力されるFFT長が256である場合を説明する。
FFT演算回路1には、入力信号x(k),0≦k≦255として、すなわち{x(0),x(1),x(2),x(3),…,x(254),x(255)}の信号列が入力される。また、FFT演算回路1には、FFT長が256であることを示すFFT長情報が入力される。
上記信号列は、直列にバタフライ演算器11へ入力される。バタフライ演算器11において、FFT長が256個であることを示すFFT長情報がセレクタ24へ入力されているため、セレクタ24は入力アドレス生成256部23Bから入力される入力アドレスを記憶部22に対し出力する。
そして、記憶部22には、入力される上記入力アドレスに対応して、最上位ビットとして「0」を加えたアドレス(第1の記憶領域)に、順次、入力される信号列{x(0),x(1),x(2),x(3),…,x(254),x(255)}の信号を、記憶部22の第1の記憶領域に対して連続した入力アドレスによって書き込む。
ここで、入力アドレス生成256部23Bは、0〜255番目までの信号列に対する入力アドレスの生成及び出力を終了すると、次のFFT演算の周期における0〜255番目までの信号列に対する入力アドレスの出力を開始する。
これにより、記憶部22には、次に入力される信号列を、入力アドレスに対して、最上位ビットとして「1」を加えたアドレス(第2の記憶領域)に、順次、入力される信号列{x(0),x(1),x(2),x(3),…,x(254),x(255)}の信号の書き込み処理が開始される。
また、FFT長が256個であることを示すFFT長情報がセレクタ28へ入力されているため、セレクタ28は出力アドレス生成256部28Bから入力される出力アドレスを記憶部22に対し順次出力、すなわち入力アドレスに対して読み出しの順番が変換された出力アドレスを順次出力する。
このとき、セレクタ28は、出力アドレスの最上位ビットが、FFT長に対応した256個の信号に対応する出力アドレスの出力を終了する毎に、出力アドレスの最上位ビットを「0」と「1」との間で順番に切り替えるように構成されている。このとき、出力アドレス生成256部28Bが出力する出力アドレスに対し、最上位ビットとして「0」を加えたアドレスを、順次、記憶部22に対して出力する。
ここで、出力アドレス生成256部28Bは、加減演算で行う演算処理に対応した信号の順番として、上記(4)式の演算が複素加減算部27で行われるとした場合、セレクタ28は、出力アドレス生成256部28Bが出力する出力アドレスを順に時系列に出力する。この出力アドレスが入力されることにより、記憶部22から{x(0),x(64),x(128),x(192),x(1),x(65),x(129),x(193)…,x(63),x(127),x(191),x(255)}の信号が順に読み出されて、複素演算部26へ入力される。
このとき、FFT長が256個であることを示すFFT長情報がセレクタ29へ入力されているため、セレクタ29は因子アドレス生成256部29Bから入力される因子アドレスをFFT回転因子テーブル27へ順次出力する。
これにより、FFT回転因子テーブル27は、{x(0),x(64),x(128),x(192),x(1),x(65),x(129),x(193)…,x(63),x(127),x(191),x(255)}の信号各々に複素乗算する256個の係数を順次、因子アドレス生成256部28Aの出力するアドレスに従って出力する。
しかしながら、(4)式から判るように、本実施形態の場合、バタフライ演算器11においては、各信号に複素乗算する係数は整数「1」(複素数の実数部分のみ)である。しかしながら、演算アルゴリズムによっては、対応する係数が複素乗算されるため、対応した係数がFFT回転因子テーブルから読み出され、複素複素乗算部26において対応する信号に複素乗算される。
したがって、複素演算部26は、{x(0),x(64),x(128),x(192),…,x(63),x(127),x(191),x(255)}各々に、それぞれ係数「1」を複素乗算し、{x(0),x(64),x(128),x(192),…,x(63),x(127),x(191),x(255)}として、順次、シリアル/パラレル変換部30へ出力する。
上記出力される演算結果に対して、シリアル/パラレル変換部30は、入力される係数が複素乗算された信号が4個ずつの組、例えば{x(0),x(64),x(128),x(192)}が直列に入力された時点において、これらの信号を並列に並べ直して、複素加減算部27へ出力する。
これにより、複素加減算部27は、上記{x(0),x(64),x(128),x(192)}の各データを用い、上記(4)式における係数「W n0k3」に対応した加減演算を行い、演算結果として{x(0),x(64),x(128),x(192)}を並列に出力する。
そして、パラレル/シリアル変換部31は、これら複素加減算結果{x(0),x(64),x(128),x(192)}を、x(0)→x(64)→x(128)→x(192)の順番にて直列に変換して、シリアル出力とする。そして、基数4で、かつFFT長が256個であるため、計算単位として64つの組合せに分割されるため、上述した加減演算を64回行い、4つの信号データの演算から求められた4つの中間データの組み合わせとして、64組、すなわち256個の中間データを出力することで、FFT演算の1つの周期(256個の信号に対するFFT処理)を終了する。
このバタフライ演算器11からのパラレル/シリアル変換されたシリアル出力は、次段のバタフライ演算器12の入力信号となり、256個の信号に対するFFT演算における1段目のステージによる中間データである。
バタフライ演算器11は、上述したバタフライ演算の処理を、記憶部22のダブルバッファにおいて、第1及び第2の記憶領域のいずれか一方から信号のデータを読み出してバタフライ演算を行っている際、他方に新たな信号列を書き込んでいる。
次に、バタフライ演算器12は、バタフライ演算器11から入力される中間データ列{x(0),x(1),x(2),x(3),…,x(253),x(254),x(255)}、すなわち中間データx(k)を、入力データとして入力する。ここで、入力アドレス生成256部25Bは、前段の出力アドレスと同一の入力アドレスを出力する。入力される中間データは、この入力アドレスに従い、記憶部22へ書き込まれる。そして入力後、バタフライ演算器12は、バタフライ演算器11と同様なバタフライ演算の処理を行う。以下の処理は、特に説明が無い限り、バタフライ演算器12におけるバタフライ演算の処理について説明する。この中間データx(n,k,k,k)において、中間データの番号kは、
k=64n+16k+4k+k;(k,k,k,n=0,1,2,3)
で決定される。
すなわち、バタフライ演算器12においても、バタフライ演算器11と同様に、FFT長が256個であることを示すFFT長情報がセレクタ24へ入力されているため、セレクタ24は入力アドレス生成256部23Bから入力される入力アドレスを記憶部22に対し出力する。これにより、記憶部22には、上記入力アドレスに従い、バタフライ演算器11から入力される中間データが、前段の出力アドレスと同一の値の入力アドレスに順番に書き込まれる(バタフライ演算器11と同様に、記憶部22は第1及び第2の記憶領域からなるダブルバッファ構成となっており、データの書き込み読み出しの処理も同様である)。
バタフライ演算器12において、FFT長が256個であることを示すFFT長情報がセレクタ25へ入力されているため、セレクタ25は出力アドレス生成256部25Bから入力される入力アドレスを記憶部22に対し出力する。
同様に、FFT長が256個であることを示すFFT長情報がセレクタ28へ入力されているため、セレクタ28は因子アドレス生成256部28Bから入力される因子アドレスをFFT回転因子テーブル27に対し出力する。
このとき、出力アドレス生成256部25Bは、複素加減算部27により、(5)式の演算が行われるため、すなわち16の位の桁kについての和を求めるため、k以外のn0,k1,k0を固定し、x(0,k,0、0)としてkを0,1,2,3で変化させ、中間データx(0),x(16),x(32),x(48)を読み出すアドレスを生成し、次にx(0,k,0、1)としてkを0,1,2,3で変化させ、x(1),x(17),x(33),x(49)として、順次出力アドレスを生成する。
これにより、記憶部22に書き込まれた中間データが、出力アドレス生成256部25Bの出力する出力アドレスにより、読み出されて複素複素乗算部26へ出力される。
すなわち、上記出力アドレス生成256部25Bは、バタフライ演算器11から入力される中間データx(k)を、複素加減算部27にて、係数「W n1k2」に対応して複素加減算する際の、中間データの組となるように、記憶部22(例えば、第1の記憶領域)に記憶されている入力順に対して並べ替える出力アドレスを生成して出力する。
同様に、FFT回転因子テーブル27は、因子アドレス生成256部28Bから出力される因子アドレスに対応した回転因子である係数「W 16n0k2」を出力する。
ここで、バタフライ演算器12のFFT回転因子テーブル27は、各FFT長毎に対応したテーブルを有している。これらのテーブルには、第2のステージであるバタフライ演算器12において、記憶部22から出力される中間データx(k)各々に複素乗算する係数が、FFT長毎に記憶されている。
次に、複素複素乗算部26は、バタフライ演算器11で説明したと同様に、記憶部22から出力される中間データ各々に、FFT回転因子テーブル27から出力される係数を順次複素乗算して、シリアル/パラレル変換部30へ出力する。
この後の、シリアル・パラレル変換部30,複素加減算部27及びパラレル/シリアル変換部31における処理は、バタフライ演算器11の場合と同様のため、説明を省略する。
そして、バタフライ演算器12は、第2ステージのバタフライ演算の結果として、中間データ列x(k),0≦k≦256を出力する。
次に、バタフライ演算器13は、バタフライ演算器12から入力される中間データ列{x(0),x(1),x(2),x(3),…,x(253),x(254),x(255)}、すなわち中間データx(k)を、入力データとして入力する。ここで、入力アドレス生成256部25Bは、前段の出力アドレスと同一の入力アドレスを出力する。入力される中間データは、この入力アドレスに従い、記憶部22へ書き込まれる。そして入力後、バタフライ演算器13は、バタフライ演算器12と同様なバタフライ演算の処理を行う。以下の処理は、特に説明が無い限り、バタフライ演算器13におけるバタフライ演算の処理について説明する。この中間データx(n,n,k,k)において、中間データの番号kは、
k=64n+16n+4k+k;(k,k,n,n=0,1,2,3)
で決定される。
すなわち、バタフライ演算器13においても、バタフライ演算器11及び12と同様に、FFT長が256個であることを示すFFT長情報がセレクタ24へ入力されているため、セレクタ24は入力アドレス生成256部23Bから入力される入力アドレスを記憶部22に対し出力する。これにより、記憶部22には、上記入力アドレスに従い、バタフライ演算器12から入力される中間データを、前段の出力アドレスと同様の値の入力アドレスに順番に書き込まれる(バタフライ演算器11及び12と同様に、記憶部22は第1及び第2の記憶領域からなるダブルバッファ構成となっており、データの書き込み読み出しの処理も同様である)。
バタフライ演算器13において、FFT長が256個であることを示すFFT長情報がセレクタ25へ入力されているため、セレクタ25は出力アドレス生成256部25Bから入力される入力アドレスを記憶部22に対し出力する。
同様に、FFT長が256個であることを示すFFT長情報がセレクタ28へ入力されているため、セレクタ28は因子アドレス生成256部28Bから入力される因子アドレスをFFT回転因子テーブル27に対し出力する。
このとき、出力アドレス生成256部25Bは、複素加減算部27により、(6)式の演算が行われるため、すなわち4の位の桁kについての和を求めるため、k以外のn,n,kを固定し、x(0,0,k,0)としてkを0,1,2,3で変化させ、中間データx(0),x(4),x(8),x(12)を読み出すアドレスを生成し、次にx(0,0,k,1)としてkを0,1,2,3で変化させ、x(1),x(5),x(9),x(13)として、順次出力アドレスを生成する。
これにより、記憶部22に書き込まれた中間データが、出力アドレス生成256部25Bの出力する出力アドレスにより、読み出されて複素複素乗算部26へ出力される。
すなわち、上記出力アドレス生成256部25Bは、バタフライ演算器12から入力される中間データx(k)を、複素加減算部27にて、係数「W n2k1」に対応して複素加減算する際の、中間データの組となるように、記憶部22(例えば、第1の記憶領域)に記憶されている入力順に対して並べ替える出力アドレスを生成して出力する。
同様に、FFT回転因子テーブル27は、因子アドレス生成256部28Bから出力される因子アドレスに対応した回転因子である係数「W 4(4n1+n0)k1」を出力する。
ここで、バタフライ演算器13のFFT回転因子テーブル27は、各FFT長毎に対応したテーブルを有している。これらのテーブルには、第3のステージであるバタフライ演算器13において、記憶部22から出力される中間データx(k)各々に複素乗算する係数が、FFT長毎に記憶されている。
次に、複素複素乗算部26は、バタフライ演算器12で説明したと同様に、記憶部22から出力される中間データ各々に、FFT回転因子テーブル27から出力される係数を順次複素乗算して、シリアル/パラレル変換部30へ出力する。
この後の、シリアル・パラレル変換部30,複素加減算部27及びパラレル/シリアル変換部31における処理は、バタフライ演算器11の場合と同様のため、説明を省略する。
そして、バタフライ演算器13は、第3ステージのバタフライ演算の結果として、中間データ列x(k),0≦k≦256を出力する。
上述したように、バタフライ演算器13も、バタフライ演算器12と同様な処理により、第3ステージにおける中間データ列x(k),0≦k≦256を出力する。
次に、バタフライ演算器14は、バタフライ演算器13から入力される中間データ列{x(0),x(1),x(2),x(3),…,x(253),x(254),x(255)}、すなわち中間データx(k)を、入力データとして入力する。ここで、入力アドレス生成256部25Bは、前段の出力アドレスと同一の入力アドレスを出力する。入力される中間データは、この入力アドレスに従い、記憶部22へ書き込まれる。そして入力後、バタフライ演算器14は、バタフライ演算器12及び13と同様なバタフライ演算の処理を行う。以下の処理は、特に説明が無い限り、バタフライ演算器14におけるバタフライ演算の処理について説明する。この中間データx(n,n,n,k)において、中間データの番号kは、
k=64n+16n+4n+k;(k,n,n,n=0,1,2,3)
で決定される。
すなわち、バタフライ演算器14においても、バタフライ演算器12及び13と同様に、FFT長が256個であることを示すFFT長情報がセレクタ24へ入力されているため、セレクタ24は入力アドレス生成256部23Bから入力される入力アドレスを記憶部22に対し出力する。これにより、記憶部22には、上記入力アドレスに従い、バタフライ演算器13から入力される中間データが、前段の出力アドレスと同一の値の入力アドレスに順番に書き込まれる(バタフライ演算器11及び12と同様に、記憶部22は第1及び第2の記憶領域からなるダブルバッファ構成となっており、データの書き込み読み出しの処理も同様である)。
バタフライ演算器14において、FFT長が256個であることを示すFFT長情報がセレクタ25へ入力されているため、セレクタ25は出力アドレス生成256部25Bから入力される入力アドレスを記憶部22に対し出力する。
同様に、FFT長が256個であることを示すFFT長情報がセレクタ28へ入力されているため、セレクタ28は因子アドレス生成256部28Bから入力される因子アドレスをFFT回転因子テーブル27に対し出力する。
このとき、出力アドレス生成256部25Bは、複素加減算部27により、(7)式の演算が行われるため、すなわち1の位の桁kについての和を求めるため、k以外のn,n,nを固定し、x(0,0,0,k)としてkを0,1,2,3で変化させ、中間データx(0),x(1),x(2),x(3)を読み出すアドレスを生成し、次にx(0,0,1,k)としてkを0,1,2,3で変化させ、x(4),x(5),x(6),x(7)として、順次出力アドレスを生成する。
これにより、記憶部22に書き込まれた中間データが、出力アドレス生成256部25Bの出力する出力アドレスにより、読み出されて複素複素乗算部26へ出力される。
すなわち、上記出力アドレス生成256部25Bは、バタフライ演算器12から入力される中間データx(k)を、複素加減算部27にて、係数「W n3k0」に対応して複素加減算する際の、中間データの組となるように、記憶部22(例えば、第1の記憶領域)に記憶されている入力順に対して並べ替える出力アドレスを生成して出力する。
同様に、FFT回転因子テーブル27は、因子アドレス生成256部28Bから出力される因子アドレスに対応した回転因子である係数「W (16n2+4n1+n0)k0」を出力する。
ここで、バタフライ演算器13のFFT回転因子テーブル27は、各FFT長毎に対応したテーブルを有している。これらのテーブルには、第4のステージであるバタフライ演算器14において、記憶部22から出力される中間データx(k)各々に複素乗算する係数が、FFT長毎に記憶されている。
次に、複素複素乗算部26は、バタフライ演算器13で説明したと同様に、記憶部22から出力される中間データ各々に、FFT回転因子テーブル27から出力される係数を順次複素乗算して、シリアル/パラレル変換部30へ出力する。
この後の、シリアル・パラレル変換部30,複素加減算部27及びパラレル/シリアル変換部31における処理は、バタフライ演算器13の場合と同様のため、説明を省略する。
そして、バタフライ演算器12は、第4ステージのバタフライ演算の結果として、中間データ列x(k),0≦k≦256を出力する。
上述したように、バタフライ演算器14も、バタフライ演算器12と同様な処理により、第4ステージにおける中間データ列x(k),0≦k≦256を出力する。
ここで、FFT長情報がFFT長が256個であることを示しているため、セレクタ16は、バタフライ演算器14の中間データx,0≦k≦256を選択して、FFT演算結果であるX(n),0≦n≦256として出力する。
したがって、バタフライ演算器14は、FFT長が256個である場合に、入力信号である信号列{x(0),x(1),x(2),x(3),…,x(254),x(255)}のFFT演算結果である出力信号{X(0),X(1),X(2),X(3),…,X(254),X(255)}を出力し、FFT演算回路1のFFT演算結果とする。
上述したように、バタフライ演算器11,12,13,14及び15各々は、FFT長が64,256及び1024個の場合それぞれにおいて、入力信号である信号または中間データに対して、係数の複素乗算及び、係数が複素乗算された信号(サンプルまたは中間データ)の加減演算に対応して、記憶部22からの信号(中間データ)の読み出し順の変更処理と、FFT回転因子テーブル27に記憶された係数の数値とが異なっているが、基本的に同様な処理を行っている。
また、バタフライ演算器11,12,13,14及び15は、入力される信号、または前段からの中間データのバタフライ演算を行うため、各々の構成違いとして以下の点にある。
バタフライ演算器11,12及び13は、信号及び中間データに対するバタフライ演算を行う必要があるため、FFT長が64、256及び1024個の場合に対応して、入力アドレス生成部23に入力アドレス生成64部23A,入力アドレス生成256部23B及び入力アドレス生成1024部23Cが設けられ、出力アドレス生成部25に出力アドレス生成64部25A,出力アドレス生成256部25B,出力アドレス生成1024部25C、また因子アドレス生成部28に因子アドレス生成64部28A,因子アドレス生成256部25B,因子アドレス生成1024部25Cが設けられ、FFT回転因子テーブル27にFFT長64、256,1024それぞれの場合の係数が記憶されている。また、バタフライ演算器11,12及び13のセレクタ24、28及び29は、上述した構成に対応して、FFT長がFFT長64、256,1024の場合に対応して切り替えられる。
しかしながら、バタフライ演算器14は、FFT長が64の場合においてバタフライ演算を行う必要がないため、FFT長が256及び1024個の場合に対応して、入力アドレス生成部23に入力アドレス生成256部23B及び入力アドレス生成1024部23Cが設けられ、出力アドレス生成部25に出力アドレス生成256部25B,出力アドレス生成1024部25C、また因子アドレス生成部28に因子アドレス生成256部25B,因子アドレス生成1024部25Cが設けられ、FFT回転因子テーブル27にFFT長256,1024それぞれの場合の係数が記憶されている。また、バタフライ演算器14のセレクタ24、28及び29は、上述した構成に対応して、FFT長がFFT長256,1024の場合に対応して切り替えられる。
同様に、バタフライ演算器15は、FFT長が1024の場合においてのみ、バタフライ演算を行うため、FFT長が1024個の場合に対応して、入力アドレス生成部23に入力アドレス生成1024部23Cが設けられ、出力アドレス生成部25に出力アドレス生成1024部25C、また因子アドレス生成部28に因子アドレス生成1024部25Cが設けられ、FFT回転因子テーブル27に信号1024の係数が記憶されている。また、バタフライ演算器14には、FFT長が1024個の場合のみの入力アドレス,出力アドレス及び因子アドレス、そして、中間データに複素乗算する係数しか必要とされないため、セレクタが設けられていない。
ここで、バタフライ演算器14及び15も、バタフライ演算器セルとして、バタフライ演算器11〜13と同様な回路構成とし、必要な部分のみ使用するように構成してもよい。
また、バタフライ演算器14及び15は、FFT長情報がFFT長64を示している場合に動作を停止し、バタフライ演算器15は、FFT長情報がFFT長256を示している場合に動作を停止するように構成してもよい。
また、信号順変換部としての、入力アドレス生成部23,出力アドレス生成部25及び記憶部22において、上述した構成では、記憶部22の連続したアドレスに、入力された順番に、記憶部21が順次信号を書き込んでいた。そして、FFT長に対応して、出力アドレス生成部25が、複素乗算する順番に記憶部22から信号を読み出す出力アドレスを生成するようにした。
しかしながら、信号順変換部として、記憶部22に書き込む入力アドレスを、信号が複素乗算される順番に連続して記憶部22に記憶されるアドレスとして生成し、その入力アドレスに対応して、入力する信号を順次記憶部22に書き込むようにしてもよい。これにより、上述した実施形態と同様に、入力される信号順を各演算を行う順番に変換することができる。これにより、出力アドレス生成部25は記憶部22の連続したアドレスを生成し、順次、記憶部22から信号を読み出すこととなる。
また、上述した本実施形態のFFT演算回路は、各バタフライ演算器における回転因子のテーブルにおける係数と、加減演算の式とを変更することにより、逆FFT演算回路として用いることが可能である。
本発明の一実施形態によるFFT演算回路の構成例を示すブロック図である。 図1におけるバタフライ演算器11(または、12、13,14,15)の構成例を示すブロック図である。 図2における記憶部22のメモリ空間を説明する概念図である。 図2におけるFFT回転因子テーブルの構成を説明する概念図である。
符号の説明
1…FFT演算回路
11,12,13,14,15…バタフライ演算器
16,24,28,29…セレクタ
22…記憶部
23…入力アドレス生成部
23A…入力アドレス生成63部
23B…入力アドレス生成256部
23C…入力アドレス生成1024部
25…出力アドレス生成部
25A…出力アドレス生成63部
25B…出力アドレス生成256部
25C…出力アドレス生成1024部
26…複素複素乗算部
27…複素加減算部
28…因子アドレス生成部
28A…因子アドレス生成63部
28B…因子アドレス生成256部
28C…因子アドレス生成1024部
30…シリアル/パラレル変換部
31…パラレル/シリアル変換部
32…タイミング生成部

Claims (4)

  1. 複数の直列に接続されたバタフライ演算部からなり、演算対象のFFT長を任意に選択して設定するFFT演算器であり、
    前記バタフライ演算部が、
    入力される信号を一旦格納する一時記憶部を備え、バタフライ演算において複素乗算及び複素加減算を行う順番に、順次信号を読み出す信号順変換部と、
    FFT長及びバタフライ演算部の段数に対応して、各信号に複素乗算する複素係数が記憶された複素係数記憶部と、
    読み出された前記信号毎に、前記複素係数記憶部から対応する複素係数を順次読み出して複素乗算する複素乗算部と、
    該複素乗算部から出力される、複素係数が複素乗算された信号に対し、順次複素加減算を行う複素加減算部と
    を有することを特徴とするFFT演算回路。
  2. FFT長により、前記複数のバタフライ演算部のいずれの演算結果をFFT演算結果として出力するかを選択するセレクタを有することを特徴とする請求項1記載のFFT演算回路
  3. 前記信号順変換部が、
    入力される前記信号を順次前記一時記憶部に書き込む入力アドレスを生成する入力アドレス生成部と、
    FFT長に対応して、複素乗算部が読み出した前記複素係数を複素乗算する順番に読み出す出力アドレスを生成する出力アドレス生成部と、
    該出力アドレスに対応して、前記一時記憶部から信号を順次読み出す読出回路と
    を有することを特徴とする請求項1または請求項2に記載のFFT演算回路。
  4. 前記信号順変換部がFFT長に対応した複数の入力アドレス生成部と複数の出力アドレス生成部を有し、選択されたFFT長に対応した入力アドレス生成部及び出力アドレス生成部を選択し、入力アドレス及び出力アドレスを生成することを特徴とする請求項3に記載のFFT演算回路。
JP2005366731A 2005-12-20 2005-12-20 Fft演算回路 Active JP4791172B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005366731A JP4791172B2 (ja) 2005-12-20 2005-12-20 Fft演算回路
KR1020060101573A KR100878765B1 (ko) 2005-12-20 2006-10-18 Fft 연산 회로
US11/641,864 US7979485B2 (en) 2005-12-20 2006-12-20 Circuit for fast fourier transform operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005366731A JP4791172B2 (ja) 2005-12-20 2005-12-20 Fft演算回路

Publications (2)

Publication Number Publication Date
JP2007172157A true JP2007172157A (ja) 2007-07-05
JP4791172B2 JP4791172B2 (ja) 2011-10-12

Family

ID=38298659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005366731A Active JP4791172B2 (ja) 2005-12-20 2005-12-20 Fft演算回路

Country Status (2)

Country Link
JP (1) JP4791172B2 (ja)
KR (1) KR100878765B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101969542B1 (ko) * 2017-12-21 2019-04-16 엘아이지넥스원 주식회사 사용자 정보를 이용한 통신용 식별 주소 생성 장치 및 이를 구비하는 단말간 통신 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5887655A (ja) * 1981-11-20 1983-05-25 Asahi Chem Ind Co Ltd パイプライン高速フ−リエ変換装置
JPH0619955A (ja) * 1992-07-03 1994-01-28 Fujitsu Ltd 可変高速フーリエ変換回路
JP2002132747A (ja) * 2000-10-30 2002-05-10 Nec Corp Fft演算回路
WO2002069182A1 (fr) * 2001-02-28 2002-09-06 Fujitsu Limited Dispositif a transformee de fourrier
US20050114421A1 (en) * 2003-11-26 2005-05-26 Gibb Sean G. Interleaving memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100444729B1 (ko) * 2001-12-24 2004-08-16 한국전자통신연구원 레딕스-8 단일 경로 지연 전달 구조의 고속 퓨리에 변환장치 및 그 방법
KR100846485B1 (ko) * 2002-04-09 2008-07-17 삼성전자주식회사 하다마드 트랜스폼 방법 및 장치
KR100576520B1 (ko) * 2003-12-01 2006-05-03 전자부품연구원 반복 연산 기법을 이용한 가변 고속 푸리에 변환프로세서

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5887655A (ja) * 1981-11-20 1983-05-25 Asahi Chem Ind Co Ltd パイプライン高速フ−リエ変換装置
JPH0619955A (ja) * 1992-07-03 1994-01-28 Fujitsu Ltd 可変高速フーリエ変換回路
JP2002132747A (ja) * 2000-10-30 2002-05-10 Nec Corp Fft演算回路
WO2002069182A1 (fr) * 2001-02-28 2002-09-06 Fujitsu Limited Dispositif a transformee de fourrier
US20050114421A1 (en) * 2003-11-26 2005-05-26 Gibb Sean G. Interleaving memory

Also Published As

Publication number Publication date
KR20070065778A (ko) 2007-06-25
KR100878765B1 (ko) 2009-01-14
JP4791172B2 (ja) 2011-10-12

Similar Documents

Publication Publication Date Title
JP5840994B2 (ja) 行列演算装置
KR20000050581A (ko) Cbfp알고리즘을 갖는 fft프로세서
JP2014179065A (ja) データ処理装置、データ処理方法およびデータ処理プログラム
US7979485B2 (en) Circuit for fast fourier transform operation
RU2700194C1 (ru) Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье и способ её формирования
JP4791172B2 (ja) Fft演算回路
US8788558B2 (en) Method and device for transform computation
US4991132A (en) Apparatus for executing division by high-speed convergence processing
JPWO2011102291A1 (ja) 高速フーリエ変換回路
JP6687803B2 (ja) 区分線形近似のためのシステムおよび方法
JP3065979B2 (ja) 高速フーリエ変換装置および方法、可変ビットリバース回路、逆高速フーリエ変換装置および方法、並びにofdm受信および送信装置
Muscedere et al. On efficient techniques for difficult operations in one and two-digit DBNS index calculus
JP3913921B2 (ja) 有限フィールドでの任意要素の逆数具現回路
CN114281304A (zh) 随机计算方法、电路、芯片及设备
TW200811672A (en) Optimized multi-mode DFT implementation
US12019700B2 (en) Signal processing apparatus, method, program, and recording medium
Ho Design and Implementation of a Polynomial Basis Multiplier Architecture Over GF (2 m)
Chen et al. Optimal circuits for parallel bit reversal
JP3875183B2 (ja) 演算装置
JP2008072247A (ja) Ldpc復号器の演算制御データ生成方法及びldpc復号器
RU2730174C1 (ru) Реконфигурируемый вычислитель быстрого преобразования фурье сверхбольшой длины преобразования
Ye et al. A new efficient RNS-to-binary conversion for the three-moduli sets
JP5072558B2 (ja) データ処理装置
JP2697619B2 (ja) Nポイントfft専用プロセッサ
JPS6220590B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080925

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110601

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: 20110621

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110721

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

Free format text: PAYMENT UNTIL: 20140729

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4791172

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250