JP3872724B2 - 高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 - Google Patents
高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 Download PDFInfo
- Publication number
- JP3872724B2 JP3872724B2 JP2002170181A JP2002170181A JP3872724B2 JP 3872724 B2 JP3872724 B2 JP 3872724B2 JP 2002170181 A JP2002170181 A JP 2002170181A JP 2002170181 A JP2002170181 A JP 2002170181A JP 3872724 B2 JP3872724 B2 JP 3872724B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- storage means
- fourier transform
- fast fourier
- twiddle factor
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
この発明は、回転因子表を用いた高速フーリエ変換装置に関する。
【0002】
【従来の技術】
画像信号の圧縮処理や拡大縮小処理およびフィルタ処理などのディジタル信号処理において(式1)に示すようなN点離散フーリエ変換(以下「DFT」という。)あるいは(式2)のN点逆離散フーリエ変換(以下「IDFT」という。)の演算がしばしば用いられる。
【0003】
1次元N点DFT演算は、時間領域のN個の離散データxn(n=0, 1, 2, …, N-1)を入力データとし、周波数領域のN個の離散データXk(k = 0, 1, 2, …, N-1)を出力データとする変換であり、
N点1次元DFTの定義式:
【数1】
で表される。また、1次元N点IDFTは、周波数領域のN個の離散データXk(k = 0, 1, 2, …, N-1)を入力とし、時間領域のN個の離散データxn(n=0, 1, 2, …, N-1)を出力データとする変換であり、
N点1次元IDFTの定義式:
【数2】
で表される。
【0004】
ここでWNは回転因子(twiddle factor)と呼ばれ、複素指数関数WN = e- 2 π i /Nで定義される。またiは虚数でi2=-1である。Wには次のような性質がある。
WN N/2 = -1, WN/2 = WN 2, WN N = 1
(式1)および(式2)はN次元の正方行列とN次元のベクトルの内積演算であり、(式1)ならば行列で表示すると次の(式3)のように書ける。
【0005】
【数3】
この(式3)の演算はN×N回の乗算とN(N-1)回の加算を含んでいる。なお、係数が1の乗算は実質的には省けるので乗算回数は(N-1)×(N-1)回ですむが、Nが大きくなるにつれてほぼNの2乗に比例して演算回数が増加し、現実的な時間内での演算ができなくなってしまうことに変わりはない。
【0006】
この演算回数を削減する方法として、次に示すように偶数番と奇数番とに分割する方法が広く用いられており、考案者の名前からCooley-Tukey(クーリー−テューキー)型高速フーリエ変換(FFT)と呼ばれている(参考文献 J.W.Cooley, J.W.Tukey, ``An Algorithm for the Machine Calculation of Complex Fourier Series,'' Mathematics of Computation, Vol.19, pp.297-301, 1965.) 。
【0007】
(i) FFTの例として、まずDFTにおいて基数2(Radix-2)の周波数間引き演算(DIF) を行う方法を示す。この基数2の周波数間引き演算では、出力の周波数列Xkを間引いて、kが偶数番(k=2h)の集合{ X2h | h= 0,1,…,N/2-1}と奇数番(k=2h+1)の集合{ X2h+1 | h= 0,1,…,N/2-1}とに分ける。
【0008】
具体的には、サイズが半分の部分問題を定めるために(式1)の和(summation)をnが前半(0からN/2-1)の和と後半(N/2からN-1)の和との2つに分割して次のように書き直す。
【0009】
【数4】
そして、この(式4)をkが偶数(k=2h)の項と奇数(k=2h+1)の項とに分けて、次のように別々に考える。
【0010】
まず、N点1次元DFTの周波数領域インデックスkが偶数の項 (k=2h)は、WN N =1およびWN/2 = WN 2の性質を使うと、
【数5】
と表される。したがって、
yn=xn + xn+N/2 , n = 0, 1, …, N/2-1 (式6)
というN/2回の加算を予め行っておけば、(式5)の演算は半分のサイズの部分問題になり、
【数6】
というN/2点DFTになる。
【0011】
次に、N点1次元DFTの周波数領域インデックスkが奇数の項(k=2h+1)は、偶数の項と同様にして、
【数7】
と表される。したがって、
zn = (xn - xn+N/2) WN n, n = 0, 1, …, N/2-1 (式8)
というN/2回の減算とN/2回の乗算を予め行っておけば、(式7’)の演算は半分のサイズの部分問題になり、
【数8】
というN/2点DFTになる。
【0012】
(式6)と(式8)で表される演算は、同じ項同士の加算xn+xn+N/2と減算xn-xn+N/2を含んでおり、演算フローグラフの形からバタフライ演算と呼ばれている。
【0013】
結局、N点DFTはこのN/2回のバタフライ演算を行うことによって、2つのN/2点DFTに分解できる。
【0014】
この演算処理は「基数2の周波数間引き演算」あるいはRadix-2 DIF と呼ばれている。この演算処理は更にhが偶数の場合と奇数の場合とに分割できるので、再帰的に繰り返すことができる。
【0015】
(ii) 次に、DFTにおいて基数4(Radix-4)の周波数間引き演算(DIF) を行う方法を示す。N点DFTは、Nが2rで割り切れるならば、上記のRadix-2と同様に基数2rの周波数間引き演算によって、r分の1のDFTに分割することができる。
【0016】
一般的には基数4の間引き演算の効率がよいので、基数4の周波数間引き演算についての結果を示す。
【0017】
【数9】
ただし、
【数10】
である。
【0018】
(iii) 次に、DFTにおいて基数2(Radix-2)の時間間引き演算(DIT) を行う方法を示す。この基数2の時間間引き演算では、(式1)の入力集合{ xn }をnが偶数の場合n=2m(m = 0, 1, 2, …, N/2 - 1)と奇数の場合n=2m + 1(m = 0, 1, 2, …, N/2 - 1)とに分割する。すると、
【数11】
となる。
【0019】
ここでWN/2 N/2=1 を使うと、WN/2 km = WN/2 km (WN/2 N/2)m = WN/2 (k + N/2)m だから、周波数領域のインデックスkについて半分のk = 0, 1, …, N/2-1 に対する和(summation)を計算するだけで十分である。
【0020】
つまり、(式12)の各和はサイズN/2のDFTとして扱え、時間領域のインデックスが偶数番の集合{x2m | m = 0, 1, …, N/2-1 }のN/2点DFTと奇数番の集合{x2m+1 | m = 0, 1, …, N/2-1 }のN/2点DFTとに分けることができる。このことから、この演算処理は時間間引き(desimation-in-time, DIT)と呼ばれている。
【0021】
この(式12)において
ym = x2m
zm = x2m+1
と置くと、(式12)は次の2つの部分問題に帰着できる。
【0022】
まず、N点1次元DFTの時間領域インデックスnが偶数の項(n=2m)は、
【数12】
と表される。
【0023】
また、N点1次元DFTの時間領域インデックスnが奇数の項(n=2m+1)は、
【数13】
と表される。
【0024】
これら2つのN/2点DFTをあらかじめ計算しておくと、周波数領域インデックスkが0からN/2-1までのN/2個の出力項は、
【数14】
で与えられる。これはN/2回の加算とN/2回の乗算である。
【0025】
また、WN N/2+k = -WN kとWN/2 N/2=1を使うと、残りのN/2個の出力項は、
【数15】
で与えられる。これはN/2回の減算とN/2回の乗算である。
【0026】
つまり、入力の偶数項に関するN/2点DFT(式13)と奇数項に関するN/2点DFT(式14)を求め、(式15)と(式16)で表されるバタフライ演算を実行すれば、元々のN点DFTが得られる。この分解は再帰的に適用できるので、結局、時間間引きDFTは周波数間引きDFTのバタフライ演算を逆向きに実行していることになる。これらの式は任意の偶数サイズの問題に適用可能である。
【0027】
(iv) さらに具体例として、8点1次元DFTを基数2の周波数間引き演算で求める場合(Radix-2 DIF DFT)を示す。この8点1次元DIF-DFTの演算フローは図5に示すように模式化される。
(式1)から、8点1次元DFTの定義式は
【数16】
と表される。この(式17)をkが偶数(k=2h)の場合と奇数(k=2h+1)の場合に分けると、次に示す2つの4点1次元DFTになる。
【0028】
【数17】
【数18】
【0029】
図5中の501から504は(式18)と(式19)の中のバタフライ演算に相当し、505は(式19)中の回転因子を用いた乗算に相当する。(式18)は4点DFT506を表し、(式19)は4点DFT507を表している。
【0030】
さらに、(式18)と(式19)とをそれぞれhが偶数(h=2m)の場合と奇数(h=2m+1)の場合に分けると、次に示す4つの2点1次元DFTに分解できる。
【0031】
【数19】
【0032】
このようにCooley-Tukey型FFTは、バタフライ演算と呼ばれる加減算と回転因子と呼ばれるWとの間の乗算で構成される。
【0033】
周波数間引き演算と時間間引き演算とは基本的に演算量は変わりなく、手順が互いに逆順になっているだけである。周波数間引き演算はGentleman-Sande(ジェントルマン−サンド)型FFTと呼ばれることもある。
【0034】
以上がDFTおよびIDFTのCooley-Tukey型FFTの概略である。Cooley-Tukey型FFTにはこの他にも様々な変形手法が知られているが、ここでは省略する。
【0035】
FFTによって現実的な時間内で計算できるようになったとはいえ、FFTポイント数Nが大きい場合に実時間処理を行うには、なお相当な計算量を要する。このため、携帯機器等の小型情報処理装置においては、FFTは集積回路内部の専用回路ブロックとして実現される場合が多い。その場合、回路規模が重要な問題となる。
【0036】
すなわち、FFTを集積回路内部の専用回路として実現する場合、加減算に比べて乗除算の回路規模が大きくなるので工夫を要する。回転因子を用いた乗算を実現するに当たっては、回転因子を予めメモリーに記憶しておく方式と、必要なときに漸化式を用いて計算する方式とがある。本発明は回転因子を予めメモリーに記憶しておく方式に関するので、そのような回転因子を用いた乗算に関する従来の技術を次に説明する。
【0037】
FFTにおける回転因子を用いた乗算は複素数同士の乗算であり、2つの実数の内積演算を実行することになる。例えば複素数の入力データをa = aR + i aI、複素数の回転因子をWN n = WnR + i WnIとすると、入力データと回転因子との間の乗算結果zも複素数になり、z = a・WN n = (aR・WnR - aI・WnI) + i (aR・WnI + aI・WnR)で表される。直接、複素数を回路で計算することはできないので、実際の計算としては、
実部 zR = aR・WnR - aI・WnI (式21)
虚部 zI = aR・WnI + aI・WnR (式22)
という、実部と虚部の2つの実数演算を各々、実行することになる。これには4回の乗算と2回の加減算が必要である。
【0038】
N点1次元DFTを計算するために必要な回転因子は、Radix-2では(式8)中のWN n (n = 0, 1, ..., N/2 - 1)であり、N/2点DFTに分解した後に必要な回転因子はWN/2 n (n = 0, 1, ..., N/4 - 1)である。これらは全てN点DFTで必要な回転因子の部分集合である。
【0039】
回転因子Wは、定義に従って、
WN n = e- 2 π i n/N = cos(2πn/N) - i sin(2πn/N) (式23)
と表される。ただしiは純虚数、n = 0, 1, ..., N/2 - 1である。(式23)を一覧表(回転因子表)にすると、表1のようになる。
【0040】
【表1】
【0041】
この表1の実部と虚部の値をそれぞれnの関数としてグラフで表現すると、図6中に示す余弦波601、正弦波602の曲線上の点になる。つまり、WN nをn=0から小さな順番にn=N/2-1まで並べれば、全区間604(n=0からn=N/2までの全範囲を指す。)をN/2等分したグラフ上の点が表1の実部および虚部を示す。ここで簡単のために、
Cn = cos(2πn/N),
Sn = sin(2πn/N)
と書くことにする。Cnは曲線601上の点であり、Snは曲線603上の点である。
【0042】
点Snが作る曲線603は、全区間604において、n=N/4の直線608を中心とした線対称になっている。したがって、全区間604にわたる点Snの値を、前半区間(n=0からn=N/4までの範囲を指す。)605におけるSnの値によって表すことができる(但し、Nは4の倍数とする)。また、点Cnが作る曲線601は、全区間604において、n=N/4の直線608とWN n=0の直線との交点を中心とした点対称になっている。したがって、絶対値と符号を加味することによって、全区間604にわたるCnの値を、前半区間605におけるCnの値によって表すことができる。
【0043】
さらに、前半区間605において、点Snが作る曲線603と点Cnが作る曲線601とを併せてできる曲線は、n=N/8の直線609を中心とした線対称となっている。したがって、全区間604にわたるCnとSnの値を、第1クォータ区間(n=0からn=N/8までの範囲を指す。)606におけるCnとSnの値によって表すことができる。
【0044】
さらに、第1クォータ区間606におけるSnが作る曲線と、その隣の第2クォータ区間(n=N/8からn=N/4までの範囲を指す。)610におけるCnが作る曲線とは、n=N/8の直線609を中心にして線対称になっている。したがって、次の(式24)のように、第1クォータ区間606におけるSnの値を第2クォータ区間610におけるCnの値によって表すことができる。
Sn = CN/4-n (式24)
これから分かるように、必要な回転因子を全てテーブル(これを「回転因子表」と呼ぶ。)に記憶すればN/2個の複素数が必要であるが、Nが4の倍数の場合には、表2のごとく、N/8個ごとに絶対値の同じ数値が順序を変えて並ぶことになる。
【0045】
【表2】
【0046】
そこで従来から、n = 0,1, ..., N/8までの実部の絶対値|WnR| = Cn = cos(2πn/N)と虚部の絶対値|WnI| = CN/4-n = cos(2π(N/4-n)/N)のペアを一覧表として記憶しておく方式が行われている(例えば特開平2-101575)。これにより、N点DFTのために必要な回転因子表のサイズを、N個の実数(N/2個の複素数)を含むサイズからその約4分の1に縮小することができる。
【0047】
このような回転因子表を用いた乗算を行うための回路構成は、例えば図7に示すようなものである。記憶手段705には表2中に示したn=0からn=N/8までの実部と虚部のペアが記憶されている。記憶手段705から読み出された値は第5演算手段710と第6演算手段711に入力される。第5演算手段710は複数のマルチプレクサで構成されており、入力データのアドレスnにしたがって、CnとCN/4-nを第1演算手段706と第2演算手段707に振り分ける。第6演算手段710も複数のマルチプレクサで構成されており、入力データのアドレスnにしたがって、CnとCN/4-nを第3演算手段708と第4演算手段709に振り分ける。実部入力701からの入力は第1演算手段706と第3演算手段708に入力され、虚部入力702からの入力は第2演算手段707と第4演算手段709に入力される。第1演算手段706から第4演算手段709はそれぞれが入力値同士の乗算を実行する。第1演算手段706の出力と第2演算手段707の出力とが第7演算手段712で減算されて実部出力703に結果を出力する。第3演算手段708の出力と第4演算手段709の出力とが第8演算手段713で加算され、虚部出力704に結果が出力される。このようにして入力複素数と回転因子との間の乗算が実行される。
【0048】
【発明が解決しようとする課題】
ところで、図7に示した方式によれば、読み出してきた回転因子の値を使って(式21)と(式22)の4回の乗算と2回の加減算を実行してはじめて目的の演算が完了する。すなわち、必要な演算精度に応じたビット長をもつ4個の乗算器706〜709と2個の加(減)算器712〜713とを必要とする。このため、依然として回路規模が大きいという問題がある。
【0049】
例えば16点DFTの場合、本来回転因子として用いられる8個の複素数W16 0 ,W16 1 ,W16 2 ,W16 3 ,W16 4 ,W16 5 ,W16 6 ,W16 7 の間に、
W16 0 = C0 - iS0 = C0 - iC4,
W16 1 = C1 iS1 = C1 - iC3,
W16 2 = C2 iS2 = C2 - iC2,
W16 3 = C3 iS3 = C3 - iC1,
W16 4 = C4 iS4 = C4 - iC0,
W16 5 = C5 iS5 = - C3 - iC1,
W16 6 = C6 iS6 = - C2 - iC2,
W16 7 = C7 iS7 = - C1 - iC3
という関係がある。そこで、従来の方式では、上述のように、
{(|WnR| ,|WnI|)} = {(C0, C4), (C1, C3), (C2, C2)}
の3組の数値ペアを一覧表として記憶しておき、n=0の時にはzR = aR・C0 - aI・C4とzI = aR・C4 + aI・C0を計算し、n=1の時にはzR = aR・C1 - aI・C3とzI = aR・C3 + aI・C1を計算し、という具合にその都度読み出した回転因子の数値ペアを用いて乗算と加減算を実行する。このため、回転因子表のサイズを小さくできるが、回路規模が大きくなるという問題がある。
【0050】
そこで、この発明の課題は、回路規模を削減できる高速フーリエ変換装置を提供することにある。
【0051】
【課題を解決するための手段】
上記課題を解決するため、本発明の基礎となる回転因子表は、正の整数N点まで演算可能な高速フーリエ変換のための回転因子表であって、次のような特徴を有するものである。すなわち、本発明の回転因子表は、0からN/8までの各整数nについて、
{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値と、
{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値と
を格納したことを特徴とする。
【0052】
簡単のために、従来例の説明に用いたのと同様に、
Cn = cos(2πn/N),
Sn = sin(2πn/N)
という記号を用いることにすると、本発明の回転因子表は、
A = {cos(2πn/N) + cos(2π(N/4-n)/N)}/2
= (Cn + CN/4 - n)/2
= (|WnR| + |WnI|)/2
B = {cos(2πn/N) - cos(2π(N/4-n)/N)}/2
= (Cn - CN/4 - n)/2
= (|WnR| - |WnI|)/2
の値を格納したことを特徴とする。例えば16点DFTに用いられるものでは、
{(A, B)} = {((C0+C4)/2, (C0-C4)/2), ((C1+C3)/2, (C1-C3)/2), (C2, 0)}
の3組の数値を格納しておく。また、1024点DFTに用いられるものでは、1024/8+1=129組の数値を格納しておく。
【0053】
この回転因子表に格納された回転因子を用いて、高速フーリエ変換のための演算を分散算術演算(Distributed Arithmetic)法(以下、DA法という。)によって実行すれば、高速フーリエ変換を効率よく実現でき、従来例における乗算器706から709(図7参照)を省略できる(詳しくは後述する)。したがって、高速フーリエ変換装置の回路規模を削減できる。
【0054】
なお、分散算術演算法は、行列の内積演算を、乗算器を使わずに、ビットシリアル演算によって行う方法である。
【0055】
一形態の回転因子表は、
上記各整数nごとに{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値を一つずつ格納した第1の回転因子表と、
上記各整数nごとに{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を一つずつ格納した第2の回転因子表と
を含むことを特徴とする。
【0056】
この一形態の回転因子表によれば、各回転因子表が各整数nごとに例えば入力データの実部と虚部に対応して複数個の値を格納する場合に比して、回転因子表のサイズを少なくとも半分以下にすることができる(詳しくは後述する)。したがって、高速フーリエ変換装置の回路規模をさらに削減できる。また、高速フーリエ変換装置の消費電力も低減できる。
【0057】
一形態の回転因子表は、
上記各整数nごとに{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値と{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値とを対応付けて1対格納したことを特徴とする。
【0058】
この一形態の回転因子表によれば、例えば入力データの実部と虚部に対応して第1の回転因子表と第2の回転因子表を選択する場合に比して、アドレスデコーダ部を半減できる。したがって、高速フーリエ変換装置の回路規模をさらに削減できる。また、高速フーリエ変換装置の消費電力も低減できる。
【0059】
また、本発明の基礎となる高速フーリエ変換装置は、実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、次のような特徴を有するものである。すなわち、本発明の高速フーリエ変換装置は、0からN/8までの各整数nごとに、上記入力データで指定されるべきアドレスに所定の順で{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値または{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を並べて格納した第1記憶手段と、各整数nごとに、上記入力データで指定されるべきアドレスに所定の順で{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値または{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を並べて格納した第2記憶手段とを備える。また、演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段を備える。また、第1記憶手段から読み出された値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段を備える。さらに、第2記憶手段から読み出された値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段を備える。
【0060】
この高速フーリエ変換装置によれば、DA法による回転因子を用いた乗算を効率よく実現でき、従来例の高速フーリエ変換装置における乗算器706〜709(図7参照)を省略できる(詳しくは後述する)。したがって、回路規模を削減できる。
【0061】
また、本発明の基礎となる別の高速フーリエ変換装置は、実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、次のような特徴を有するものである。すなわち、本発明の高速フーリエ変換装置は、上記入力データの実部ビット値と虚部ビット値との間の排他的論理和を求める排他的論理和演算手段を備える。また、0からN/8までの各整数nごとに、上記排他的論理和演算手段の出力値に応じて指定されるべきアドレスに所定の順で{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値または{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を並べて格納した第1記憶手段と、各整数nごとに、上記排他的論理和演算手段の出力値に応じて指定されるべきアドレスに所定の順で{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値または{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を並べて格納した第2記憶手段とを備える。また、演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段を備える。また、第1記憶手段から読み出された値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段を備える。さらに、第2記憶手段から読み出された値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段を備える。
【0062】
この高速フーリエ変換装置によれば、DA法による回転因子を用いた乗算を効率よく実現でき、従来例の高速フーリエ変換装置における乗算器706〜709(図7参照)を省略できる。したがって、回路規模を削減できる。しかも、第1記憶手段および第2記憶手段の記憶容量を、前記高速フーリエ変換装置のものに比して、少なくとも半分以下にできる。
【0063】
本発明の高速フーリエ変換装置は、実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、次のような特徴を有するものである。すなわち、本発明の高速フーリエ変換装置は、上記入力データの実部ビット値と虚部ビット値との間の排他的論理和を求める排他的論理和演算手段を備える。また、上記各整数nごとに{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値を一つずつ格納した第1の回転因子表を格納した第1記憶手段と、上記各整数nごとに{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値を一つずつ格納した第2の回転因子表を格納した第2記憶手段とを備える。また、上記各整数nごとに、上記第1記憶手段から読み出された値と第2記憶手段から読み出された値とを、上記排他的論理和手段の出力値に応じて入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として出力する第3演算手段を備える。また、演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段を備える。また、第3演算手段の第1出力値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段を備える。さらに、第3演算手段の第2出力値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段を備える。
【0064】
本発明の高速フーリエ変換装置によれば、DA法による回転因子を用いた乗算を効率よく実現でき、従来例の高速フーリエ変換装置における乗算器706〜709(図7参照)を省略できる。したがって、回路規模を削減できる。しかも、第1記憶手段および第2記憶手段の記憶容量を、前記高速フーリエ変換装置のものに比して、少なくとも半分以下にできる。また、消費電力も低減できる。
【0065】
別の局面では、本発明の高速フーリエ変換装置は、実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、次のような特徴を有するものである。すなわち、本発明の高速フーリエ変換装置は、上記入力データの実部ビット値と虚部ビット値との間の排他的論理和を求める排他的論理和演算手段と、上記各整数nごとに{cos(2πn/N) + cos(2π(N/4-n)/N)}/2の値と{cos(2πn/N) - cos(2π(N/4-n)/N)}/2の値とを対応付けて1対格納した回転因子表を格納した記憶手段とを備える。また、上記各整数nごとに、上記記憶手段から読み出された一対の値を、上記排他的論理和手段の出力値に応じて入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として出力する第3演算手段を備える。また、演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段を備える。また、第3演算手段の第1出力値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段を備える。さらに、第3演算手段の第2出力値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段を備える。
【0066】
本発明の高速フーリエ変換装置によれば、DA法による回転因子を用いた乗算を効率よく実現でき、従来例の高速フーリエ変換装置における乗算器706〜709(図7参照)を省略できる。したがって、回路規模を削減できる。しかも、記憶手段のアドレスデコーダを、前記高速フーリエ変換装置のように第1記憶手段、第2記憶手段から読み出された値を排他的論理和手段の出力値(もとは入力データの実部ビット値と虚部ビット値)に応じて入れ替える場合に比して、半減できる。また、消費電力も低減できる。
【0067】
【発明の実施の形態】
以下、この発明を図示の実施の形態により詳細に説明する。
【0068】
最初に分散算術演算(Distributed Arithmetic, 以下DAと表記する)法を、回転因子を用いた乗算に適用したときの原理を説明し、続いて本発明を適用した高速フーリエ変換装置を説明する。
【0069】
(DA法を、回転因子を用いた乗算に適用したときの原理)
DA法を用いて、ある一つの回転因子WN n = WnR + i WnIとバタフライ演算後の値a = aR + i aIとの間の乗算
実部 znR = aR・WnR - aI・WnI (式21)
虚部 znI = aR・WnI + aI・WnR (式22)
を実行する場合を考える。
【0070】
aRとaIは共に2の補数表現された2進数のJビット固定小数点数であるとするとそれぞれ、
【数20】
と表される。j=0が最上位ビット、j=J-1が最下位ビットである。(式21)と(式22)に(式25)を代入して入力データのビットによる表現形式にすると、
【数21】
となる。(式26)をjに関する和に書き直すと、
【数22】
となる。(式27)がDA法の原理を表している。すなわち、予め分かっている定数WnRとWnIに任意の入力aRとaIを掛け合わせて加える場合、(式27)中の大括弧内の
【数23】
の値を予め一覧表(回転因子表)として記憶しておけば、乗算を行うことなくznRとznIを得ることができる。(式28)中のaRとaIは各々が2進数の1ビットなので、それぞれは表3と表4に示したように、入力aRとaIの4種類のビットパターンに対する値で、とり得る全ての値を表すことができる。そしてj=1からj=J-1まではそれぞれの値に2-jが掛かるので1桁ずつ右へずらせて加えるだけで乗算結果を得ることができる。
【0071】
【表3】
実部(znR)のためのLUT
【0072】
【表4】
虚部(znI)のためのLUT
【0073】
以上が単純なDA法の原理である。この単純なDA法では、1つの複素数の回転因子につき、4ワードのルックアップテーブル(LUT)が2つ必要になる。N点DFTではN/8+1個の複素数の回転因子が必要なので4ワードのLUTがN/4+2個必要になる。
【0074】
ところで、上記のような単純なDA法ではなく、{0,1}→{-1,+1}という変数変換を施してオフセット・バイナリ・コード DA法(参考文献 Stanley A. White, ``Applications of distributed arithmetic to digital signal processing: A tutorial review,'' IEEE ASSP magazine (Acoustics, Speech, and Signal Processing Magazine), Vol.6, No.3, pp.4-19, July 1989.)を適用すると、前記のLUTは表5と表6のように整理される。
【0075】
【表5】
znRのためのLUT(オフセットバイナリDA)
【0076】
【表6】
znIのためのLUT(オフセットバイナリDA)
【0077】
表5と表6では、それぞれ表の上半分と下半分との間で、ROM内容(記憶値)に対称性がある。つまり、表5と表6のROM内容は、それぞれ表の上半分と下半分との間で、絶対値が同じで、かつ符号が反対の関係にある。そこで、各々がワード数を半分にできて、表7と表8のようになる。ただし、表7では、aR=0なら読み出したROM内容にマイナス符号、aR=1ならプラス符号を付ける。また、表8では、aI=0なら読み出したROM内容にマイナス符号、aI=1ならプラス符号を付ける。ここで○を排他的論理和(XOR)を表す演算記号として用いた。この性質は一般的な内積演算と同じである。
【0078】
【表7】
znRのためのLUT
【0079】
【表8】
znIのためのLUT
【0080】
表7と表8を見ると、DFTに用いられる回転因子表に特有の性質として実部LUTも虚部LUTも、任意の(aR, aI)の入力ビット対に対して、出力の値は(WnR + WnI)/2と(WnR - WnI)/2のいずれかになることが分かる。したがって (WnR + WnI)/2を記憶するLUT+と (WnR - WnI)/2を記憶するLUT-という構成にすることによって、それぞれ表9、表10に示すように、LUTの大きさを更に半分にできる。
【0081】
【表9】
znRのためのLUT指定
【0082】
【表10】
znIのためのLUT指定
【0083】
また、実部演算(znR)用LUTと虚部演算(znI)用LUTとを一つのROMにまとめて、表11のように1ワードのLUTが1個で済むようにできる。こうすることによって、アドレスデコーダ部を簡略化できる。
【0084】
【表11】
実部虚部共用LUT
【0085】
ところで、N点DFTを実行するためには、表2のn = 0, 1, ..., N/8の値を使って、残りのn = N/8+1, ..., N/2-1を生成する必要がある。それにはnの値の上位2ビットによってLUT番号を昇順で適用するか降順で適用するかを決定し(00=昇順,01=降順,10=昇順,11=降順)、下位2ビットでLUT番号を決定する(昇順:00=LUT0, 01=LUT1, 10=LUT2, 11=LUT3 /降順:00=LUT4, 01=LUT3, 10=LUT2, 11=LUT1)。
【0086】
また、第1クォータ区間(n=0からn=N/8までの範囲を指す。)ではWnR=Cn,WnI=-CN/4-n,第2クォータ区間(n=N/8からn=2N/8までの範囲を指す。)ではWnR=CN/4-n,WnI=-Cn,第3クォータ区間(n=2N/8からn=3N/8までの範囲を指す。)ではWnR=-CN/4-n,WnI=-Cn,第4クォータ区間(n=3N/8からn=4N/8までの範囲を指す。)ではWnR=-Cn,WnI=-CN/4-nを使うことになる。Qn+=Cn+CN/4-n,Qn-=Cn-CN/4-n,と表すものとすると、例えば32点DFTに用いられるLUTは、次の表12のようになる。
【0087】
【表12】
【0088】
これから分かるように、N/8+1ワードの表を使うだけで、乗算器を必要とせず、N点DFTを実行することができる。
【0089】
(第1参考例の高速フーリエ変換装置)
図1は、標準的なオフセットバイナリDA法を、回転因子表を用いた乗算に適用した第1参考例の高速フーリエ変換装置の要部、つまり、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示している。
【0090】
この高速フーリエ変換装置は、2ビットの入力データが入力される実部入力端子101および虚部入力端子102と、各nの値ごとにそれらの入力データに応じて所定の記憶データを出力する第1記憶手段(実部LUT)105および第2記憶手段(虚部LUT)106と、第1演算手段(加減算器1)107および第2演算手段(加減算器2)108と、第1の一時記憶手段(レジスタ1)109および第2の一時記憶手段(レジスタ2)110とを備えている。
【0091】
実部入力端子101と虚部入力端子102とからは入力データaの実部aRと虚部aIがそれぞれ最下位ビットからビットシリアルに入力されてくる。
【0092】
今、aRのj番目のビットをaR[j]というように書く。入力データは2の補数表現されたビット長Jの小数であるとすると、
【数24】
である。ここで最上位ビット(MSB)をj=0とする。第1記憶手段105は、n=0からn=N/8までの各nについて、表5のROM内容欄の値の絶対値を記憶している。また、第2記憶手段106は、n=0からn=N/8までの各nについて、表6のROM内容欄の値の絶対値を記憶している。第1記憶手段(実部LUT)105および第2記憶手段(虚部LUT)106については、図8(a)にデータ構造と記憶値を模式的に示す。
【0093】
第1記憶手段105からは、各nの値ごとに、入力された(aR , aI)のビット対に応じた値が読み出される。すなわち、第1記憶手段105からは、
(aR , aI)=(0,0)ならば(|WnR| - |WnI|)/2、
(aR , aI)=(0,1)ならば(|WnR| + |WnI|)/2、
(aR , aI)=(1,0)ならば(|WnR| + |WnI|)/2、
(aR , aI)=(1,1)ならば(|WnR| - |WnI|)/2
がそれぞれ読み出される。第2記憶手段106からも同様に、各nの値ごとに
(aR , aI)=(0,0)ならば(|WnR| + |WnI|)/2、
(aR , aI)=(0,1)ならば(|WnR| - |WnI|)/2、
(aR , aI)=(1,0)ならば(|WnR| - |WnI|)/2、
(aR , aI)=(1,1)ならば(|WnR| + |WnI|)/2
がそれぞれ読み出される。
【0094】
第1演算手段107は、第1記憶手段105から読み出された値と第1の一時記憶手段109から読み出された値とを加算し、その結果を改めて第1の一時記憶手段109に入力する。この加算のとき、符号判定ビットaRが0ならば第1記憶手段105から読み出された値は符号反転されるので実質的には減算となる。また、第1の一時記憶手段109からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第1演算手段107へ入力されている。このことにより、第1の一時記憶手段109からの出力103には乗算結果の実部znR = aR・WnR - aI・WnIが得られる。
【0095】
第2演算手段108は、第2記憶手段106から読み出された値と第2の一時記憶手段110から読み出された値とを加算し、その結果を改めて第2の一時記憶手段110に入力する。この加算のとき、符号判定ビットaI が0ならば第2記憶手段106から読み出された値は符号反転されるので実質的には減算となる。また、第2の一時記憶手段110からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第2演算手段108へ入力されている。このことにより、第2の一時記憶手段110からの出力104には乗算結果の虚部znI = aR・WnI + aI・WnRが得られる。
【0096】
これらの乗算結果znR、znIを用いて高速フーリエ変換が実現される。
【0097】
本参考例の高速フーリエ変換装置によれば、図7の従来例に比べて乗算器706〜709を省略できるので、回路規模を削減できる。
【0098】
(第2参考例の高速フーリエ変換装置)
図2は、オフセットバイナリDA法を、回転因子表を用いた乗算に適用した第2参考例の高速フーリエ変換装置の要部、つまり、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示している。本参考例で用いる回転因子表は、第1参考例で用いたものに比してサイズが半分のものである。
【0099】
この高速フーリエ変換装置は、2ビットの入力データが入力される実部入力端子201および虚部入力端子202と、その入力データの実部ビット値と虚部ビット値との間の排他的論理和を求めるXOR回路212と、各nの値ごとにそれらの入力データに応じて所定の記憶データを出力する第1記憶手段(実部LUT)205および第2記憶手段(虚部LUT)206と、第1演算手段(加減算器1)207および第2演算手段(加減算器2)208と、第1の一時記憶手段(レジスタ1)209および第2の一時記憶手段(レジスタ2)210とを備えている。
【0100】
実部入力端子201と虚部入力端子202とからは入力データaの実部aRと虚部aIがそれぞれ最下位ビットからビットシリアルに入力されてくる。XOR回路212は、それらのaRとaIとの間の排他的論理和aR○aIを求める。
【0101】
第1記憶手段205は、n=0からn=N/8までの各nについて、表7のROM内容欄の値を記憶している。この第1記憶手段205からは、各nの値ごとに、入力データの排他的論理和aR○aIの値に応じて、記憶値が読み出される。すなわち、aR○aI=0ならば(WnR - WnI)/2が読み出され、aR○aI=1ならば(WnR + WnI)/2が読み出される。
【0102】
第2記憶手段206は、n=0からn=N/8までの各nについて、表8のROM内容欄の値を記憶している。この第2記憶手段206からは、各nの値ごとに、入力データの排他的論理和aR○aIの値に応じて、記憶値が読み出される。すなわち、aR○aI=0ならば(WnR + WnI)/2が読み出され、aR○aI=1ならば(WnR - WnI)/2が読み出される。
【0103】
第1記憶手段(実部LUT)205および第2記憶手段(虚部LUT)206については、図8(b)にデータ構造と記憶値を模式的に示す。
【0104】
第1演算手段207は、符号判定ビットaRの値に応じて、aR=0ならば第1記憶手段205から受けた値を第1の一時記憶手段209の値から減算し、aR=1ならば第1記憶手段205から受けた値を第1の一時記憶手段209の値に加算する。第1演算手段207の演算結果は第1の一時記憶手段209へ入力される。また、第1の一時記憶手段209からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第1演算手段207へ入力されている。このことにより、第1の一時記憶手段209からの出力203には乗算結果の実部znR = aR・WnR - aI・WnIが得られる。
【0105】
第2演算手段208は、符号判定ビットaIの値に応じて、aI=0ならば第2記憶手段206から受けた値を第2の一時記憶手段210の値から減算し、aI=1ならば第1記憶手段205から受けた値を第1の一時記憶手段210の値に加算する。第2演算手段208の結果は第2の一時記憶手段210へ入力される。また、第2の一時記憶手段210からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第2演算手段208へ入力されている。このことにより、第2の一時記憶手段210からの出力204には乗算結果の虚部znI = aR・WnI + aI・WnRが得られる。
【0106】
これらの乗算結果znR、znIを用いて高速フーリエ変換が実現される。
【0107】
本参考例の高速フーリエ変換装置によれば、図7の従来例に比べて乗算器706〜709を省略できるので、回路規模を削減できる。また、消費電力も低減できる。しかも、第1記憶手段(実部LUT)205および第2記憶手段(虚部LUT)206の記憶容量は、第1参考例のものに比して、半分で済む。
【0108】
(第1実施形態の高速フーリエ変換装置)
図3は、オフセットバイナリDA法を、回転因子表を用いた乗算に適用した第1実施形態の高速フーリエ変換装置の要部、つまり、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示している。本実施形態で用いる回転因子表は、第2参考例で用いたものに比して、さらにサイズが半分のものである。
【0109】
この高速フーリエ変換装置は、2ビットの入力データが入力される実部入力端子301および虚部入力端子302と、その入力データの実部ビット値と虚部ビット値との間の排他的論理和を求めるXOR回路312と、nの値に応じて所定の記憶データを出力する第1記憶手段(第1LUT)305および第2記憶手段(第2LUT)306と、それらの記憶手段305,306から読み出された値を入れ替えて出力し得る第3演算手段311と、第1演算手段(加減算器1)307および第2演算手段(加減算器2)308と、第1の一時記憶手段(レジスタ1)309および第2の一時記憶手段(レジスタ2)310とを備えている。
【0110】
実部入力端子301と虚部入力端子302とからは入力データaの実部aRと虚部aIがそれぞれ最下位ビットからビットシリアルに入力されてくる。XOR回路312は、それらのaRとaIとの間の排他的論理和aR○aIを求める。
【0111】
第1記憶手段305は、第1の回転因子表として、n=0からn=N/8までの各nごとに、Qn+=(WnR + WnI)/2の値を一つずつ記憶している。この第1記憶手段305からは、nの値に応じてQn+=(WnR + WnI)/2の値が読み出される。また、第2記憶手段306は、第2の回転因子表として、n=0からn=N/8までの各nごとに、Qn-=(WnR - WnI)/2の値を一つずつ記憶している。この第2記憶手段306からは、nの値に応じてQn-=(WnR - WnI)/2の値が読み出される。第1記憶手段(第1LUT)305および第2記憶手段(第2LUT)306については、図9(a)にデータ構造と記憶値を模式的に示す。
【0112】
第3演算手段311は、第1記憶手段305および第2記憶手段306から読み出された値Qn+とQn-を受けて、入力データの排他的論理和aR○aIの値に応じて、それらの値Qn+とQn-を入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として第1演算手段(加減算器1)307、第2演算手段(加減算器2)308へ出力する。すなわち、aR○aI=0ならば、第2記憶手段306の出力値Qn-を第1演算手段307へ第1出力値として出力するとともに、第1記憶手段305の出力値Qn+を第2演算手段308へ第2出力値として出力する。また、aR○aI=1ならば、第1記憶手段305の出力値Qn+を第1演算手段307へ第1出力値として出力するとともに、第2記憶手段306の出力値Qn-を第2演算手段308へ第2出力値として出力する。
【0113】
第1演算手段307は、符号判定ビットaRの値に応じて、aR=0ならば第3演算手段311から受けた値を第1の一時記憶手段(レジスタ1)309の値から減算し、aR=1ならば第3演算手段311から受けた値を第1の一時記憶手段309の値に加算する。第1演算手段307の演算結果は第1の一時記憶手段309へ入力される。また、第1の一時記憶手段309からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第1演算手段307へ入力されている。このことにより、第1の一時記憶手段309からの出力303には乗算結果の実部znR = aR・WnR - aI・WnIが得られる。
【0114】
第2演算手段308は、符号判定ビットaIの値に応じて、aI=0ならば第3演算手段311から受けた値を第2の一時記憶手段(レジスタ2)310の値から減算し、aI=1ならば第3演算手段311から受けた値を第2の一時記憶手段310の値に加算する。第2演算手段308の結果は第2の一時記憶手段310へ入力される。また、第2の一時記憶手段310からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第2演算手段308へ入力されている。このことにより、第2の一時記憶手段310からの出力304には乗算結果の虚部znI = aR・WnI + aI・WnRが得られる。
【0115】
これらの乗算結果znR、znIを用いて高速フーリエ変換が実現される。
【0116】
本実施形態の高速フーリエ変換装置によれば、図7の従来例に比べて乗算器706〜709を省略できるので、回路規模を削減できる。しかも、第1記憶手段(第1LUT)305および第2記憶手段(第2LUT)306の記憶容量は、第2参考例のものに比して、さらに半分で済む。
【0117】
(第2実施形態の高速フーリエ変換装置)
図4は、オフセットバイナリDA法を、回転因子表を用いた乗算に適用した第2実施形態の高速フーリエ変換装置の要部、つまり、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示している。本実施形態で用いる回転因子表は、第1実施形態における第1LUT305と第2LUT306とを一つに統合したものに相当する。
【0118】
この高速フーリエ変換装置は、2ビットの入力データが入力される実部入力端子401および虚部入力端子402と、その入力データの実部ビット値と虚部ビット値との間の排他的論理和を求めるXOR回路412と、nの値に応じて所定の記憶データを1対出力する記憶手段(0LUT)405と、その記憶手段405の1対の出力値を入れ替えて出力し得る第3演算手段411と、第1演算手段(加減算器1)407および第2演算手段(加減算器2)408と、第1の一時記憶手段(レジスタ1)409および第2の一時記憶手段(レジスタ2)410とを備えている。
【0119】
実部入力端子401と虚部入力端子402とからは入力データaの実部aRと虚部aIがそれぞれ最下位ビットからビットシリアルに入力されてくる。XOR回路412は、それらのaRとaIとの間の排他的論理和aR○aIを求める。
【0120】
記憶手段(0LUT)405は、n=0からn=N/8までの各nごとに、Qn+=(WnR + WnI)/2の値とQn+=(WnR + WnI)/2の値とを対応付けて1対記憶している。この記憶手段405からは、入力データaRとaIには関係なく、nの値に応じてQn+=(WnR + WnI)/2とQn-=(WnR - WnI)/2の1対の値が読み出される。LUT405については、図9(b)にデータ構造と記憶値を模式的に示す。
【0121】
第3演算手段406は、記憶手段405から読み出された一対の値Qn+とQn-を受けて、入力データの排他的論理和aR○aIの値に応じて、それらの値Qn+とQn-を入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として第1演算手段407、第2演算手段408へ出力する。すなわち、aR○aI=0ならば、Qn-を第1演算手段407へ第1出力値として出力するとともに、Qn+を第2演算手段408へ第2出力値として出力する。また、aR○aI=1ならば、Qn+を第1演算手段407へ第1出力値として出力するとともに、Qn-を第2演算手段408へ第2出力値として出力する。
【0122】
第1演算手段407は、符号判定ビットaRの値に応じて、aR=0ならば第3演算手段406から受けた値を第1の一時記憶手段409の値から減算し、aR=1ならば第3演算手段406から受けた値を第1の一時記憶手段409の値に加算する。第1演算手段407の結果は第1の一時記憶手段409へ入力される。また、第1の一時記憶手段409からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第1演算手段407へ入力されている。このことにより、第1の一時記憶手段409からの出力403には乗算結果の実部znR = aR・WnR - aI・WnIが得られる。
【0123】
第2演算手段408は、符号判定ビットaIの値に応じて、aI=0ならば第3演算手段406から受けた値を第2の一時記憶手段410の値から減算し、aI=1ならば第3演算手段406から受けた値を第2の一時記憶手段410の値に加算する。第2演算手段408の結果は第2の一時記憶手段410へ入力される。また、第2の一時記憶手段410からの出力は1ビットだけ下位ビット側へシフト(右シフト)して第2演算手段408へ入力されている。このことにより、第2の一時記憶手段410からの出力404には乗算結果の虚部znI = aR・WnI + aI・WnRが得られる。
【0124】
これらの乗算結果znR、znIを用いて高速フーリエ変換が実現される。
【0125】
本実施形態の高速フーリエ変換装置によれば、図7の従来例に比べて乗算器706〜709を省略できるので、回路規模を削減できる。しかも、記憶手段(0LUT)のアドレスデコーダを、第1実施形態のように入力データの実部ビット値と虚部ビット値に対応して第1LUT、第2LUTから読み出された値を入れ替える場合に比して、半減できる。また、消費電力も低減できる。
【0126】
このように、本発明の回転因子表によれば、N点DFT/IDFTを実行するためにはN/8+1組のデータを記憶しておくだけで済む。したがって、高速フーリエ変換装置の回路規模を削減できる。
【0127】
なお、本実施形態では基数2のFFTについて説明を行ったが、当然ながら、これに限られるものではない。N/8が420の倍数ならば、nが0からN/8までの区間のCnとSnの組で回転因子を表すことができ、したがって、本発明は、基数4のFFTや基数8のFFTに広く適用することができる。
【0128】
【発明の効果】
以上より明らかなように、本発明の高速フーリエ変換装置によれば、回路規模を削減できる。
【図面の簡単な説明】
【図1】 本発明の第1参考例の高速フーリエ変換装置の要部、つまり、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示す図である。
【図2】 本発明の第2参考例の高速フーリエ変換装置の要部を示す図である。
【図3】 本発明の第1実施形態の高速フーリエ変換装置の要部を示す図である。
【図4】 本発明の第2実施形態の高速フーリエ変換装置の要部を示す図である。
【図5】 一般的な8点離散フーリエ変換装置の周波数間引き演算を行う回路の構成を示す図である。
【図6】 高速フーリエ変換のための回転因子の周期性を示す図である。
【図7】 従来の高速フーリエ変換装置における、バタフライ演算によって得られた入力データと回転因子表に含まれた回転因子との乗算を行う回路の構成を示す図である。
【図8】 (a)は、表5と表6の回転因子表を具体化したものに相当し、図1中に示したLUT105とLUT106のデータ構造と記憶値とを模式化して示す図である。(b)は、表5と表6の回転因子表を具体化したものに相当し、図2中に示したLUT205とLUT206のデータ構造と記憶値とを模式化して示す図である。
【図9】 (a)は、図3中に示したLUT305とLUT306のデータ構造と記憶値とを模式化して示す図である。(b)は、図4中に示したLUT405のデータ構造と記憶値とを模式化して示す図である。
【符号の説明】
105,205,305 第1の記憶手段(LUT)
106,206,306 第2の記憶手段(LUT)
107,207,307,407 第1の演算手段
108,208,308,408 第2の演算手段
212,312,412 XOR回路
311,406 第3の演算手段
405 記憶手段
Claims (2)
- 実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、
上記入力データの実部ビット値と虚部ビット値との間の排他的論理和を求める排他的論理和演算手段と、
0から N/8 までの各整数nについて、上記各整数nごとに {cos(2 π n/N) + cos(2 π (N/4-n)/N)}/2 の値を一つずつ格納した第1の回転因子表を格納した第1記憶手段と、
0から N/8 までの各整数nについて、上記各整数nごとに {cos(2 π n/N) - cos(2 π (N/4-n)/N)}/2 の値を一つずつ格納した第2の回転因子表を格納した第2記憶手段と、
上記各整数nごとに、上記第1記憶手段から読み出された値と第2記憶手段から読み出された値とを、上記排他的論理和手段の出力値に応じて入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として出力する第3演算手段と、
演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段と、
第3演算手段の第1出力値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段と、
第3演算手段の第2出力値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段と
を備えたことを特徴とする高速フーリエ変換装置。 - 実部と虚部を表す2ビットの入力データと、回転因子表に含まれた回転因子との間の乗算を行う正の整数N点まで演算可能な高速フーリエ変換装置であって、
上記入力データの実部ビット値と虚部ビット値との間の排他的論理和を求める排他的論理和演算手段と、
0から N/8 までの各整数nについて、上記各整数nごとに {cos(2 π n/N) + cos(2 π (N/4-n)/N)}/2 の値と {cos(2 π n/N) - cos(2 π (N/4-n)/N)}/2 の値とを対応付けて1対格納した回転因子表を格納した記憶手段と、
上記各整数nごとに、上記記憶手段から読み出された一対の値を、上記排他的論理和手段の出力値に応じて入れ替えて又は入れ替えずにそのまま第1出力値、第2出力値として出力する第3演算手段と、
演算結果を格納し得る第1の一時記憶手段および第2の一時記憶手段と、
第3演算手段の第1出力値と第1の一時記憶手段から読み出された値とを、上記入力データの実部ビット値に応じて加算又は減算する第1演算手段と、
第3演算手段の第2出力値と第2の一時記憶手段から読み出された値とを、上記入力データの虚部ビット値に応じて加算又は減算する第2演算手段と
を備えたことを特徴とする高速フーリエ変換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002170181A JP3872724B2 (ja) | 2002-06-11 | 2002-06-11 | 高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002170181A JP3872724B2 (ja) | 2002-06-11 | 2002-06-11 | 高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004013811A JP2004013811A (ja) | 2004-01-15 |
JP3872724B2 true JP3872724B2 (ja) | 2007-01-24 |
Family
ID=30436528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002170181A Expired - Fee Related JP3872724B2 (ja) | 2002-06-11 | 2002-06-11 | 高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3872724B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009505486A (ja) * | 2005-08-08 | 2009-02-05 | フリースケール セミコンダクター インコーポレイテッド | マルチモード無線広帯域信号プロセッサシステムおよび方法 |
CN103106181B (zh) * | 2013-01-29 | 2016-03-02 | 北京理工大学 | 一种大点数fft在处理器上的实现方法 |
CN115544438B (zh) * | 2022-11-28 | 2023-04-18 | 南京创芯慧联技术有限公司 | 数字通信系统中的旋转因子生成方法、装置和计算机设备 |
-
2002
- 2002-06-11 JP JP2002170181A patent/JP3872724B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004013811A (ja) | 2004-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Takahashi | An extended split-radix FFT algorithm | |
Nussbaumer et al. | The fast Fourier transform | |
US6792441B2 (en) | Parallel multiprocessing for the fast fourier transform with pipeline architecture | |
US6751643B2 (en) | Butterfly-processing element for efficient fast fourier transform method and apparatus | |
Bouguezel et al. | A new radix-2/8 FFT algorithm for length-q/spl times/2/sup m/DFTs | |
Garrido et al. | Hardware architectures for the fast Fourier transform | |
US20030041080A1 (en) | Address generator for fast fourier transform processor | |
van Der Hoeven et al. | The frobenius FFT | |
KR102376492B1 (ko) | 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 | |
JP3872724B2 (ja) | 高速フーリエ変換のための回転因子表およびそれを用いた高速フーリエ変換装置 | |
Elster | Fast bit-reversal algorithms | |
JP2001101160A (ja) | 高速フーリエ変換用データ記憶パターン | |
KR100200479B1 (ko) | 수정 역 이산 여현 변환방법 | |
ELLIOTT | Fast Fourier transforms | |
Huang et al. | A new memoryless and low-latency FFT rotator architecture | |
US20180373676A1 (en) | Apparatus and Methods of Providing an Efficient Radix-R Fast Fourier Transform | |
Banerjee et al. | A Novel Paradigm of CORDIC-Based FFT Architecture Framed on the Optimality of High-Radix Computation | |
CN112597726A (zh) | 一种fft芯片的优化方法 | |
JP3709291B2 (ja) | 高速複素フーリエ変換方法及び装置 | |
Palani | Discrete Fourier Transform and Computation | |
Arunachalam et al. | The fast Fourier transform algorithm and its application in digital image processing | |
Sundararajan | Fast Computation of the DFT | |
Zieliński et al. | Fast Fourier Transform | |
Buell | Mathematics, computing, and arithmetic | |
CN104572578B (zh) | 用于显著改进微控制器中fft性能的新颖方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050225 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060619 |
|
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: 20060831 |
|
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: 20061017 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061020 |
|
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: 20091027 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101027 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111027 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121027 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131027 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |