JP3950466B2 - フーリエ変換装置 - Google Patents

フーリエ変換装置 Download PDF

Info

Publication number
JP3950466B2
JP3950466B2 JP2006033084A JP2006033084A JP3950466B2 JP 3950466 B2 JP3950466 B2 JP 3950466B2 JP 2006033084 A JP2006033084 A JP 2006033084A JP 2006033084 A JP2006033084 A JP 2006033084A JP 3950466 B2 JP3950466 B2 JP 3950466B2
Authority
JP
Japan
Prior art keywords
fourier transform
data
intermediate buffer
buffer memory
long
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 - Lifetime
Application number
JP2006033084A
Other languages
English (en)
Other versions
JP2006164308A (ja
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.)
United Module Corp
Original Assignee
United Module Corp
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 United Module Corp filed Critical United Module Corp
Priority to JP2006033084A priority Critical patent/JP3950466B2/ja
Publication of JP2006164308A publication Critical patent/JP2006164308A/ja
Application granted granted Critical
Publication of JP3950466B2 publication Critical patent/JP3950466B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、フーリエ変換装置に関するものである。
従来、時間成分の信号を周波数成分の信号に変換するための手法の1つに、DFT(離散的フーリエ変換)と呼ばれる手法がある。N点の信号(周期がNであることを示す)を周波数変換するためのDFTの一般式は、時間成分の信号値をSi 、周波数成分の信号値をSk とすると、次の(式1)のように表せる。
Figure 0003950466
この(式1)の演算を行うためには、乗算を4N2 回、加減算を2N2 +2N(N−1)回行う必要がある。すなわち、(式1)から分かるように、DFTは複素演算を行うものであるから、実際には次の(式2)で示される回転演算を引数k,iの各値について行っている。
Figure 0003950466
(式2)において、周波数成分の信号値Sk [real](実部)、Sk [imag](虚部)を求めるためには、時間成分の信号値Si [real]と cosθ、信号値Si [real]と sinθ、信号値Si [imag]と sinθ、信号値Si [imag]と cosθとの乗算をそれぞれiについてN回、それを更にkについてN回、2重のループで計算するから、全部で4N2 回の乗算が必要になる。
さらに、上述の乗算により得られる信号値Si [real] cosθと信号値Si [imag] sinθとの減算、信号値Si [real] sinθと信号値Si [imag] cosθとの加算をそれぞれiについてN回、それを更にkについてN回、2重のループで計算するから、全部で2N2 +2N(N−1)回の加減算が必要になる。上述のようなフーリエ変換を行う装置の従来例は、例えば、特許文献1、2によって提案されている。
特開平07−006160号公報 特開平02−101574号公報
以上のように、従来のDFTでは、数多くの乗算および加減算を行う必要があった。このため、処理に膨大な時間がかかってしまうという問題があった。そこで、従来、上記DFTの処理時間をできるだけ短くすることができるようにするために、FFT(高速フーリエ変換)と呼ばれる手法が開発され、デジタル信号処理の分野で多く用いられてきた。
このFFTは、バタフライ演算と呼ばれる基本演算を数段階に渡って繰り返して行うことにより、DFTの演算量を削減できるようにしたものである。つまり、FFTにおいて周期Nのフーリエ変換を実施する場合には、上記周期Nを所定の基数ごとに数段階に分けて、各基数のバタフライ演算をそれぞれ行うことで周波数解析を行っていた。
このFFTでは、数段階のバタフライ演算をパイプライン処理で並列に行うことが可能である。その場合には、数段階に渡って演算した結果をそれぞれ一時記憶しておくための中間バッファメモリが必要になる。しかしながら、従来のFFTでは、各中間バッファメモリの全メモリ容量が非常に大きくなってしまうという問題があった。
すなわち、FFTを構成する各バタフライ演算の性質上、その基数は比較的小さいものしか選択することができないため、バタフライ演算の段数が多くなってしまう。そのため、各バタフライ演算の結果を一時記憶しておくための中間バッファメモリの数が多くなるとともに、個々の中間バッファメモリの容量も大きくなってしまい、その結果、全メモリ容量が非常に大きくなってしまっていた。さらに、基本演算を数段階に渡って繰り返して行うことにより、容量が大きい中間バッファメモリへのアクセスが多くなる。大容量の中間バッファメモリにアクセスする場合は、1回のアクセスタイムが長くかかるのでアクセス回数が多くなると、アクセスタイムが膨大となり、フーリエ変換を行うための処理速度を低下させてしまうという問題点があった。
本発明は、このような問題を解決するために成されたものであり、デジタル信号処理においてフーリエ変換を行うための処理時間を短くすることができるようにするとともに、その処理の際に使用する中間バッファメモリの容量を小さくすることができるようにすることを目的とする。
本発明のフーリエ変換装置は、横方向に周期n1、縦方向に周期n2の2次元状に配置された周期N(=n1×n2)の時間成分の信号に対して、縦方向に対する周期n2のフーリエ変換を行うm個のn2長フーリエ変換手段と、上記m個のn2長フーリエ変換手段による変換結果を一時記憶するためのm個の中間バッファメモリと、上記m個の中間バッファメモリに記憶されたデータに対して回転演算を施す回転演算手段と、上記回転演算手段による演算結果に対して、横方向に対する周期n1のフーリエ変換を行うm個のn1長フーリエ変換手段と、複数サイクルに亘って同じn2長フーリエ変換手段により求められたデータが同じ中間バッファメモリ内に記憶されることがないようにするとともに、同じn1長フーリエ変換手段により使用されるデータが同じ中間バッファメモリ内に記憶されることがないようにして、上記m個のn2長フーリエ変換手段によりそれぞれ求められたm個のデータを上記m個の中間バッファメモリに1個ずつ振り分けて記憶するようにするデータ振り分け手段とを有し、上記m個のn2長フーリエ変換手段を用いてn1回のn2長フーリエ変換処理を並列に行うとともに、上記m個のn1長フーリエ変換手段を用いてn2回のn1長フーリエ変換処理を並列に行うようにし、上記データ振り分け手段によって同一サイクルで振り分けられたm個のデータに対して、同じn1長フーリエ変換手段を用いて互いに異なるサイクルでn1長フーリエ変換処理を行うようにしたことを特徴とする。
本発明は、上記技術手段より成り、周期Nの時間成分の信号が周期Nのフーリエ変換によって一度に周波数変換されるのではなく、上記周期Nよりも小さな周期n1、n2のフーリエ変換の組み合わせによって周波数変換されることとなるので、フーリエ変換演算の性質上、上記小さな周期n1、n2のフーリエ変換でそれぞれ行われる演算量は、上記周期Nのフーリエ変換で行われる演算量に比べて格段に少ないものとなり、上記小さな周期n1、n2のフーリエ変換で行われる各演算量と回転演算で行われる演算量とを合計しても、上記周期Nのフーリエ変換によって一度に周波数変換を行うようになされた従来のDFTの演算量よりも演算量が少なくなる。また、上記小さな周期n1、n2のフーリエ変換をm個のn2長フーリエ変換手段及びn1長フーリエ変換手段を用いて並列に行うようにするとともに、同じ数の中間バッファメモリを用意して、複数サイクルに亘って同じn2長フーリエ変換手段により求められたデータが同じ中間バッファメモリ内に記憶されることがないようにするとともに、同じn1長フーリエ変換手段により使用されるデータが同じ中間バッファメモリ内に記憶されることがないようにして、上記m個のn2長フーリエ変換手段によりそれぞれ求められたm個のデータを上記m個の中間バッファメモリに1個ずつ振り分けて記憶するようにし、さらに上記データ振り分け手段によって同一サイクルで振り分けられたm個のデータに対して、同じn1長フーリエ変換手段を用いて互いに異なるサイクルでn1長フーリエ変換処理を行うようにしたので、演算サイクル数が少なくなるとともに、中間バッファメモリへのアクセスも効率よく並列化することが可能となり、アクセスタイムを格段と短くすることが可能となる。
本発明によれば、周期N(=n1×n2)の時間成分の信号の周波数解析を、上記周期Nよりも小さな周期である横方向に対する周期n1のフーリエ変換と縦方向に対する周期n2のフーリエ変換との組み合わせによって行うようにして、上記小さな周期n1、n2のフーリエ変換をm個のn2長フーリエ変換手段及びn1長フーリエ変換手段を用いて並列に行うとともに、同じ数の中間バッファメモリを用意して、複数サイクルに亘って同じn2長フーリエ変換手段により求められたデータが同じ中間バッファメモリ内に記憶されることがないようにするとともに、同じn1長フーリエ変換手段により使用されるデータが同じ中間バッファメモリ内に記憶されることがないようにして、上記m個のn2 長フーリエ変換手段によりそれぞれ求められたm個のデータを上記m個の中間バッファメモリに1個ずつ振り分けて記憶するようにし、さらに上記データ振り分け手段によって同一サイクルで振り分けられたm個のデータに対して、同じn1長フーリエ変換手段を用いて互いに異なるサイクルでn1長フーリエ変換処理を行うようにしたので、上記周期Nのフーリエ変換によって一度に周波数変換を行うようになされた従来のDFTの演算量よりも演算量を少なくすることができる。また、演算サイクル数を少なくすることができるとともに、中間バッファメモリへのアクセスを効率よく並列化してアクセスタイムを短くすることができる。これにより、全体としての中間バッファメモリの容量を格段に小さくすることができるとともに、フーリエ変換の処理速度を高速にすることができる。
以下、本発明の一実施例を図面に基づいて説明する。時間成分の信号を周波数成分の信号に周期Nで変換するための処理、すなわちN点DFTの処理を、従来は図2(0)に示すようにN長フーリエ変換で一度に行っていた。これに対し、本実施例のフーリエ変換装置では、図2(a)〜(e)に示すように第1〜第5のフェーズに分けて行っている。
すなわち、第1のフェーズでは、図2(a)に示すように、入力される1次元状のN個のデジタル信号を横n1 個×縦n2 個の2次元状の配置に並べ替える。第2のフェーズでは、図2(b)に示すように、上記並べ替えた2次元状のデータ配置において、縦方向に対するn2 個のデータを用いてn2 長DFT処理を横方向の数n1 だけ行う。
次に、第3のフェーズでは、図2(c)に示すように、上記n2 長DFT処理で得られた結果に対して回転演算を施す。第4のフェーズでは、図2(d)に示すように、上記回転演算の結果に対して、横方向に対するn1 個のデータを用いてn1 長DFT処理を縦方向の数n2 だけ行う。最後に、第5のフェーズでは、図2(e)に示すように、上記n1 長DFT処理で得られた結果を1次元状のデータ配置に並べ替える。
図1は、本実施例によるフーリエ変換装置の構成を示す図であって、図2に示した5つのフェーズの処理を行うための構成を示す図である。図1において、1は第1の並べ替え手段であり、上記第1のフェーズの処理を行う。この第1の並べ替え手段1は、例えば、メモリとアドレッシング装置とにより簡単に構成することが可能である。この並べ替え処理を式で表すと、次の(式3)のようになる。
Figure 0003950466
2はn2 長フーリエ変換手段であり、次の(式4)に従って上記第2のフェーズの処理を行う。すなわち、上記第1の並べ替え手段1で並べ替えられた2次元状のデータ配置において、縦方向に対するn2 長のDFT処理をn1 回行う。
Figure 0003950466
3は回転演算手段であり、次に示す(式5)に従って上記第3のフェーズの処理を行う。すなわち、上記n2 長フーリエ変換手段2による演算処理の結果得られたデータに対して回転演算を施す。
Figure 0003950466
4は中間バッファメモリであり、上記n2 長フーリエ変換手段2によりフーリエ変換されたデータを一時記憶する。上述の回転演算手段3は、この中間バッファメモリ4に記憶されたデータに対して回転演算を行い、その演算結果をn1 長フーリエ変換手段5に供給するようになされている。
上記n1 長フーリエ変換手段5は、上記回転演算手段3による回転演算の結果得られるデータを用いて、次の(式6)に従って上記第4のフェーズの処理を行う。すなわち、上記並べ替えられた2次元状のデータ配置において、横方向に対するn1 長のDFT処理をn2 回行う。
Figure 0003950466
6は第2の並べ替え手段であり、上記第5のフェーズの処理を行う。すなわち、上記n1 長フーリエ変換手段5により求められたデータを次の(式7)に従って再び1次元状に並べ替えることにより、周波数成分の信号Sk を得る。なお、この第2の並べ替え手段6は、上記第1の並べ替え手段1と同様に、メモリとアドレッシング装置とにより構成することが可能である。
Figure 0003950466
上記(式3)〜(式7)に示した5つのフェーズに分けて行っている本実施例のDFT処理は、従来の(式1)で行っているDFT処理と等価であり、同じ演算結果(同じ周波数成分の信号Sk )を得ることができる。一方、その演算結果を得るまでの演算量は、従来に比べて本実施例の方が少なくなっている。このことを以下に説明する。
本実施例のDFT処理における第1のフェーズと第5のフェーズの処理は、単なるデータの並べ替え処理(メモリアドレッシング処理)であるから、演算は行っていない。そこで、本実施例における総演算量は、第2〜第4のフェーズにおける各処理の演算量を合計したものとなる。次に示す表1は、その演算量を示したものである。
Figure 0003950466
この表1から明らかなように、本実施例のDFT処理で行う乗算の回数は、4n1 2 (n1 +n2 +1)回であり、加減算を行う回数は、2n1 2 (2n1 +2n2 +1)回である。一方、従来例のところで述べたように、従来のDFT処理で行う乗算の回数は、4N2 =4n1 22 2回である。また、加減算を行う回数は、2N2 +2N(N−1)=4n1 22 2−2n1 2 回であり、2n1 2 は殆ど無視できるほど小さいと考えてよいから、結局4n1 22 2回である。
乗算を行う回数および加減算を行う回数をそれぞれ本実施例と従来とで比較してみれば分かるように、n1 とn2 の値を共に3以上とすれば、本実施例のDFT処理における演算量を従来のDFT処理における演算量よりも確実に少なくすることができる。
次に、本実施例のDFT処理と従来のFFT処理とを比較してみると、従来のFFTは、本実施例のDFTの特別な例であると言える。すなわち、本実施例のDFTでは、実演算を第2〜第4のフェーズの3段に分離して行っている。これに対し、従来のFFTは、第2のフェーズと第3のフェーズまたは第3のフェーズと第4のフェーズとを一まとめにして演算の流れを再配置し、バタフライ演算という形にまとめて行うものである。
このため、演算量の観点からすれば、本実施例のDFTと従来のFFTとで差ほど変わりはないと言える。ところが、各フェーズの処理をパイプライン化して並列に行う場合に必要な中間バッファメモリの容量という観点からすると、本実施例のDFTでは、従来のFFTよりも格段に小さいメモリ容量で済むというメリットがある。
すなわち、本実施例の場合、上記中間バッファメモリ4に必要なメモリ容量はn1 ×n2 ワード分である。さらに、第2のフェーズにおけるn1 長DFT処理の周期n1 を更に細かく分離して横方向n11、縦方向n12(n1 =n11×n12)として処理することとすれば、その中間部にn11×n12ワード分のメモリが必要になる。また、第4のフェーズにおけるn2 長DFT処理の周期n2 を更に細かく分離して横方向n21、縦方向n22(n2 =n21×n22)として処理することとすれば、その中間部にn21×n22ワード分のメモリが必要になる。
以下同様にして、更に細かく周期を分離して縦方向のDFT処理と横方向のDFT処理とを行うようにすれば、例えばN=216点の周波数解析を行う場合、各中間バッファメモリで必要なメモリ容量は、図3(a)の各四角の中に示す数字のようになる。したがって、中間バッファメモリの全メモリ容量は、各中間バッファメモリのメモリ容量を合計して、66176ワード分となる。
もちろん、図3(a)に示したように周期が最も小さくなるまで細分化する必要は必ずしもなく、その場合に必要なメモリ容量は、上記66176ワードよりも小さくなる。
一方、従来のFFTでは、数段階のバタフライ演算によって周波数解析を実施しているが、上述したように各バタフライ演算の基数は小さい値しかとることができない。そこで、基数を2とした場合に各中間バッファメモリとして必要なメモリ容量を、図3(b)に示した。この図3(b)から、中間バッファメモリとして必要な全メモリ容量は、131102ワード分であることが分かる。
図3(a)と図3(b)とを比較すれば明らかなように、本実施例のDFT処理によれば、各フェーズの処理を並列化動作させる場合に必要な中間バッファメモリのメモリ容量を、従来のFFTで各バタフライ演算を並列化動作させる場合に必要なメモリ容量よりも小さくすることができる。
以上説明したように、本実施例のフーリエ変換装置によれば、一連のフーリエ変換処理にかかる演算量を少なくすることができ、しかも、各フェーズを並列化動作させた場合に使用する中間バッファメモリの全メモリ容量を小さくすることもできるようになる。
なお、以上の実施例では、第1の並べ替え手段1と第2の並べ替え手段6とを含めたものを1つのフーリエ変換装置として扱っているが、このようなデータの並べ替えを行う手段が外部に存在すれば、これらの手段はフーリエ変換装置内に必ずしも設ける必要はない。
以上のような本実施例のフーリエ変換装置を利用して、以下に述べる幾つかの応用例を実現することができる。
まず第1番目の例は、ある小さな周期のフーリエ変換装置を2個直列に設けるとともに、その間に小規模の回転演算装置を付加することにより、より大きな周期のフーリエ変換装置を構成したものである。
例えば、図4に示すように、n2 長DFT装置11とn1 長DFT装置14とを直列に設けるとともに、その間に回転演算装置12と(n1 ×n2 )ワード分の容量を持つ中間バッファメモリ13とを付加することにより、N=n1 ×n2長の大きな周期のDFT装置を構成する。そして、n2 長DFTとn1 長DFTとをパイプライン処理することにより、N点の周波数解析を実施する。
上述したように、大きな周期Nの周波数解析を1個のDFT装置で一度に行うのは演算負荷が非常に大きいのに対して、小さな周期n1 、n2 の組み合わせで周波数解析を行うのは演算負荷が小さい。したがって、本装置によれば、全体としての処理速度を高速にすることができるというメリットがある。
第2番目の例は、第2のフェーズにおけるn2 長DFT処理と第4のフェーズにおけるn1 長DFT処理とがそれぞれ独立性が高いことを利用して、上記n2長DFT処理を行う装置と上記n1 長DFT処理を行う装置とをそれぞれ複数個ずつ設けて1つのフーリエ変換装置を構成したものである。
例えば、図5に示すように、m1(ワード/秒) の演算能力を持つn2 長DFT装置21a,21b,…,21cをl1 個設けてn2 長DFT装置群21を構成するとともに、m2(ワード/秒) の演算能力を持つn1 長DFT装置24a,24b,…,24cをl2 個設けてn1 長DFT装置群24を構成する。
そして、上記n2 長DFT装置群21と上記n1 長DFT装置群24との間にm3(ワード/秒) の演算能力を持つ回転演算装置22と(n1 ×n2 )ワード分の容量を持つ中間バッファメモリ23とを設けることにより、1つのフーリエ変換装置を構成する。
既に説明したように、第2のフェーズではn2 長DFT処理をn1 回行う必要がある。そこで、n2 長DFT装置群21を構成するn2 長DFT装置21a,21b,…,21cをn1 個、あるいは適当な数で割った個数だけ設けることにより、n1 回のn2 長DFT処理を並列に行うようにする。これにより、n2 長DFT処理をより短時間で行うようにすることができる。
例えば、n1 =4の場合、先に示した図4の例のように、1個のn2 長DFT装置11でn1 回のn2 長DFT処理を行うのでは4サイクルかかっていたのに対し、n2 長DFT装置を2個設ければ2サイクルで行うことができる。また、n2 長DFT装置を4個設ければ、1サイクルで行うことができる。
また、第4のフェーズについても同様に、n1 長DFT装置群24を構成するn1 長DFT装置24a,24b,…,24cをn2 個、あるいは適当な数で割った個数だけ設けることにより、n2 回のn1 長DFT処理を行う際の演算サイクル数を少なくすることができる。これにより、より高速なフーリエ変換装置を得ることができる。
なお、上記n2 長DFT装置群21の全体としての演算能力はl1 ×m1(ワード/秒) であり、上記n1 長DFT装置群24の全体としての演算能力はl2 ×m2(ワード/秒) である。ここで、m3 ≦l1 ×m1 あるいはm3 ≦l2 ×m2が成立すると、上記n2 長DFT装置群21およびn1 長DFT装置群24は、m3(ワード/秒) の演算能力に制限される。
第3番目の例は、ある小さな周期のフーリエ変換装置を複数個用い、それらを回転演算装置を介して積み重ねるようにして接続する(イメージとしては、図3(a)に示したツリー構造となるように接続する)ことにより、より大きな周期のフーリエ変換装置を構成したものである。
例えば、複数個の4点フーリエ変換装置を用いて、より大きな周期の4096点フーリエ変換装置を構成する場合について考える。この場合、図6に示すように、4096点フーリエ変換装置は、大きく分けて16点フーリエ変換装置31と、4096点回転演算装置32と、4096ワード分の容量を持つ4096点バッファメモリ33と、256点フーリエ変換装置34とにより構成される。
そして、上記16点フーリエ変換装置31は、2つの4点フーリエ変換装置31a,31dと、16点回転演算装置31bと、16ワード分の容量を持つ16点バッファメモリ31cとにより構成される。また、上記256点フーリエ変換装置34は、2つの16点フーリエ変換装置34a,34dと、256点回転演算装置34bと、256ワード分の容量を持つ256点バッファメモリ34cとにより構成される。
さらに、上記256点フーリエ変換装置34内にある一方の16点フーリエ変換装置34aは、上記16点フーリエ変換装置31と同様に、2つの4点フーリエ変換装置34a1 ,34a4 と、16点回転演算装置34a2 と、16ワード分の容量を持つ16点バッファメモリ34a3 とにより構成される。
他方の16点フーリエ変換装置34dについても上記16点フーリエ変換装置31と同様に、2つの4点フーリエ変換装置34d1 ,34d4 と、16点回転演算装置34d2 と、16ワード分の容量を持つ16点バッファメモリ34d3とにより構成される。
このように、小さな周期の4点フーリエ変換装置を複数個用い、それらを回転演算装置を介してツリー構造となるように接続することにより、より大きな周期の4096点フーリエ変換装置を構成している。なお、本装置において用いられている各回転演算装置は、ツリーの枝を結ぶ乗算の役目を果たしている。
つまり、この図6に示した装置では、4096点の周波数解析を、縦16点×横256点に分割して行う。そして、縦16点の周波数解析を行う際には、更に縦4点×横4点に分割して行う。また、横256点の周波数解析を行う場合も同様にして、縦4点×横4点のフーリエ変換にまで細分化して行う。
4096点の周波数解析を1個の4096点フーリエ変換装置で一度に行うのは演算負荷が非常に大きいが、小さな周期の4点フーリエ変換装置の組み合わせで周波数解析を行うのは演算負荷が小さいことは上述した通りである。したがって、本装置によれば、全体としての演算負荷を小さくして処理速度を高速にすることができる。
また、本装置において用いている中間バッファメモリの総メモリ容量は、4096+16+256 +16+16=4440ワードである。これに対して、従来のFFTにより4096点フーリエ変換装置を構成すると、各バタフライ演算の基数を4とした場合でも、バッファメモリの総メモリ容量は、4096+1024+256 +64+16+4 ×6=5480ワードである。
以上のことから明らかなように、図6の装置によれば、4096点のDFT処理にかかる演算量を少なくしてFFTと同程度にまで処理時間を短くすることができるだけでなく、演算の過程で使用する中間バッファメモリのメモリ容量を、FFTを行う場合に比べて小さくすることもできている。
第4番目の例は、図6に示した第3番目の例を応用した例である。すなわち、窓かけ演算にも流用できるようにした回転演算装置と16点フーリエ変換装置とを用いて1つのフーリエ変換装置を構成する。そして、これをタイムシェアリング(時分割)で用いることにより、より大きな周期(4096点)の周波数解析を行うことができるようにしたものである。
フーリエ変換は、数学上の話では本来は無限長の周期で行うものである。しかし、これを実際に行うのは現実問題として無理である。そこで、実際には、周期Nで一定区間を区切り、その端点をつなげることによって無限長とみなして周波数解析を行っている。ところが、この場合に、端点に不連続点が存在すると、正常でない周波数成分、すなわち、周波数もれ成分が生じることがある。
上述した窓かけ演算は、この端点の不連続点をなくし、周波数もれ成分を少なくすることを目的として行われるものであり、次の(式8)に示す演算式によって行われる。なお、(式8)中のSk はフーリエ解析するデータ、w(k) は窓関数、Sk ' は実サンプルデータを示している。
Figure 0003950466
ところで、この窓かけ演算は、精密ではないが、次の(式9)に示す回転演算とほぼ同じと考えることができる。したがって、係数をうまく与えれば、回転演算装置を用いて窓かけ演算を行うことが可能である。そこで、この第4番目の例では、回転演算装置を窓かけ演算にも流用できるようにしている。
Figure 0003950466
図7は、この第4番目の例を実現するための装置の構成を示す図である。図7に示したように、本装置は、窓かけ演算にも流用可能な窓かけ/回転演算装置41と、16点フーリエ変換装置42と、4096ワード分の容量を持つ4096点バッファメモリ43と、256ワード分の容量を持つ256点バッファメモリ44と、データ入力部45と、データ出力部46とにより構成されている。
上記回転演算装置41は、窓かけ演算を行う際に適当な係数を与える手段を具備している。また、上記16点フーリエ変換装置42は、図6中に示した各16点フーリエ変換装置と同様に、2つの4点フーリエ変換装置42a,42dと、16点回転演算装置42bと、16点バッファメモリ42cとにより構成されている。
このように構成したフーリエ変換装置は、図6中にα、β、γで示した部分(何れの部分も16点フーリエ変換装置と回転演算装置、あるいは16点フーリエ変換装置と窓かけ演算装置とを含んでいる)の処理を時分割で行うことにより、4096点の周波数解析を実施する。
すなわち、図8に示すように、まず最初に、データ入力部45を介して入力されるデータを用いて、図6中のαの部分に相当する演算が行われる。このとき、窓かけ/回転演算装置41では、適当な係数が与えられることにより窓かけ演算が行われる。このαの部分の演算結果は、データ出力部46を介して4096点バッファメモリ43に順次格納される。
そして、この4096点バッファメモリ43にデータがたまると、次にそのデータがデータ入力部45を介して入力され、図6中のβに相当する演算が行われる。このβの部分の演算結果は、データ出力部46を介して256点バッファメモリ44に順次格納される。次に、この256点バッファメモリ44にデータがたまると、そのデータがデータ入力部45を介して入力され、図6中のγに相当する演算が行われる。
このように、図7の装置によれば、小さな周期のフーリエ変換の組み合わせによって大きな周期のフーリエ変換を行っているので、4096点のDFT処理にかかる演算量を少なくして処理時間を短くすることができる。さらに、図6の装置と異なり、同じ装置を時分割で何度も用いているので、図6の装置に比べて、4点フーリエ変換装置や中間バッファメモリの使用数を減らすことができ、装置全体の規模を小さくすることができる。
第5番目の例は、高速ページモードを持つメモリを用いて中間バッファメモリを構成し、その高速ページモードを持つメモリに中間バッファメモリを配置するときに、ストライプ状に配置するのではなく、縦横のブロック状に配置することにより、メモリアクセスタイムを短くできるようにしたものである。
一般に、高速ページモードを持つICメモリは、2次元マトリクス状に作製される。そして、その行(カラム)と列(ロウ)とで位置を指定することにより所望のデータを得るようになされている。この場合、DRAMに代表されるメモリでは、その機構上の特徴により、先にロウアドレスを指定し、次にカラムアドレスを指定するようになっている。
そして、高速ページモードでは、同じロウアドレスについてカラムアドレスを連続して指定する場合には、異なるロウアドレスについてカラムアドレスを指定する場合に比べて高速にアクセスすることができるようになっている。このような高速ページモードを持つメモリの一例として、日立製のメモリ(HM511OOOA-6)がある。
ところで、上述したように、本実施例のフーリエ変換装置では、第2のフェーズで縦方向に対するDFT処理を行い、第4のフェーズで横方向に対するDFT処理を行っている。このため、2次元状に作られた中間バッファメモリの縦方向と横方向に対してそれぞれデータの読み書きを行っている。
ここで、中間バッファメモリ4を横方向にストライプ状に配置した場合には、縦方向に対する高速ページモードが使えないので、横方向に対するメモリアクセスタイムは速いが、縦方向に対するメモリアクセスタイムが遅くなってしまう。一方、ブロック状に配置すれば、縦方向に対するデータの読み書き時に高速ページモードが使えるので、横方向に対するアクセスタイムも縦方向に対するアクセスタイムも共に速くすることができるようになる。
図9は、上記した日立製のメモリのアクセスタイムの様子を示すタイムチャートである。この図9の例では、同じロウアドレスについて2つのカラムアドレスを連続して指定した場合について示している。
すなわち、通常、1ワードのアクセスを行うのにかかる時間(サイクルタイム)は120nsecであるのに対して、高速ページモードにおいて2ワードのアクセスを行うのにかかる時間は155(=60+45+50)nsecである。つまり、1ワード当たりでは、77.5nsecと通常時よりもアクセス時間が短くなっていることが図9から読み取れる。
このような日立製のメモリを中間バッファメモリとして用いた場合の具体例を次に示す。なお、ここでは、中間バッファメモリの全メモリ容量は218ワード(縦29 ワード×横29 ワード)であるとする。
まず、図10に示すように、中間バッファメモリを29 ワード分ずつ横方向にストライプ状に配置する場合について考える。この場合、第2のフェーズで求められたデータを中間バッファメモリに縦方向に書き込む際には、高速ページモードが使えないので、縦方向に対して1ワード当たり120nsecの時間がかかる。
また、第4のフェーズにおいて上記中間バッファメモリからデータを読み出す際に、横方向に対して1ワード当たりにかかるアクセス時間は、(60+45×(29 −1)+50)/29 ≒45.13nsecである。よって、メモリアクセスに関するデータレートの上限は、120+45.13=165.13nsec/ワードとなる。
次に、図11に示すように、中間バッファメモリを29 ワード分ずつブロック状(縦24 個×横25 個)に配置する場合について考える。この場合、縦方向に対するメモリアクセス時に高速ページモードを使うことが可能であるので、第2のフェーズで求められたデータを中間バッファメモリに書き込む際にかかる時間は、縦方向に対して1ワード当たり(60+45×15+50)/16≒49.06nsecである。
また、第4のフェーズにおいて上記中間バッファメモリからデータを読み出す際に、横方向に対して1ワード当たりにかかるアクセス時間は、(60+45×31+50)/32≒47.03nsecである。よって、メモリアクセスに関するデータレートの上限は、49.06+47.03=96.09nsec/ワードとなる。
以上の計算結果から明らかなように、中間バッファメモリをブロック状に配置することにより、ストライプ状に配置する場合に比べてメモリアクセス時間を短くすることができる。これにより、上述したようにフーリエ変換処理を行う際の演算量を減らすことができるだけでなく、処理の過程で使用する中間バッファメモリへのアクセス時間を削減することもできるようになり、全体としての処理時間を更に短くすることができる。
第6番目の例は、第2のフェーズの処理と第4のフェーズの処理とを並列に動作させる場合に、中間バッファメモリにデータを読み書きする際のアドレッシング動作を工夫することにより、中間バッファメモリを1ページ分だけ用意すれば済むようにしたものである。
第4のフェーズの処理を行う際には、第2のフェーズで求められたデータを用いるため、第2のフェーズの処理が終わらなければ第4のフェーズの処理は行うことができない。したがって、第2のフェーズの処理と第4のフェーズの処理とを並列に動作させる場合は、通常は、図12に示すように、第2のフェーズ用と第4のフェーズ用との2ページ分の中間バッファメモリが必要になる。
すなわち、第2のフェーズと第4のフェーズとを並列動作させる場合には、図12(a)に示すように、第2のフェーズにおける縦方向のDFT処理で求められるデータを縦方向に順次記憶していくと同時に、図12(b)に示すように、既に求められたデータを第4のフェーズにおいて横方向に読み出して横方向のDFT処理を順次行っていく必要がある。
したがって、第2のフェーズで求められるデータを縦方向に順次記憶していくためのページと、第4のフェーズでデータを横方向に読み出して使用するためのページとの2ページが中間バッファメモリとして必要になる。しかし、このように中間バッファメモリを2ページも用意したのでは、メモリ容量が非常に大きくなってしまう。
そこで、この第6番目の例では、今までのように第2のフェーズで求められたデータは縦方向に書き込み、第4のフェーズの処理ではデータを横方向に読み出すというように一定としないで、図13に示すように、1回目に行う第2、第4のフェーズではデータを縦方向に読み書きする。2回目に行う第2、第4のフェーズではデータを横方向に読み書きするというように、アドレッシングの方向を縦と横で交互に切り換えていくようにする。
すなわち、図13(a)において、1回目に行う第4のフェーズの処理では、中間バッファメモリに既に記憶されているデータ(この第4のフェーズの処理よりも前に行われた0回目の第2のフェーズの処理で求められたデータ)が縦方向に順次読み出される。
そして、この第4のフェーズの処理と同時に行われている1回目の第2のフェーズの処理で求められたデータが、上記読み出しによって空になった縦方向の領域に順次書き込まれる。すると、最終的には、中間バッファメモリの全ての領域に、1回目の第2のフェーズの処理で求められたデータが記憶される。
次に、図13(b)において、2回目に行う第4のフェーズの処理では、中間バッファメモリに記憶されているデータ(上記1回目の第2のフェーズの処理で求められたデータ)が横方向に順次読み出される。
そして、この第4のフェーズの処理と同時に行われている2回目の第2のフェーズの処理で求められたデータが、上記読み出しによって空になった横方向の領域に順次書き込まれる。すると、最終的には、中間バッファメモリの全ての領域に、2回目の第2のフェーズの処理で求められたデータが記憶される。この後は、再び図13(a)に示す処理が行われる。
以上のように、アドレッシングの方向を交互に切り換えてデータの読み書きを行うようにすれば、データを読み出して空きになった領域を有効に活用して、1つの中間バッファメモリを第2のフェーズ用と第4のフェーズ用とで共用することができ、中間バッファメモリを1ページ分だけ用意すれば済むようになる。
第7番目の例は、図5に示した第2番目の例を応用した例である。図5に示したように複数のDFT装置を用いて処理を並列化させた場合には、中間バッファメモリ23へのアクセスが非常に多くなる。そこで、この第7番目の例は、上記中間バッファメモリ23を複数のメモリに分割して用意するとともに、クロスバスイッチなどのデータ振り分け装置を用いることにより、メモリアクセス時における並列動作性を高めることができるようにしたものである。
図14は、この第7番目の例を実現するための装置の構成を示す図である。なお、この図14に示す装置は、図5に示した装置を変形したものであり、図5中に示した周期n1 、n2 の値をそれぞれ4とし、n1 長DFT処理を行う装置の数l1 、n2 長DFT処理を行う装置の数l2 をそれぞれ4個とした場合について示したものである。
すなわち、本装置は、第2のフェーズの処理を行う4個の4点フーリエ変換装置51a,51b,51c,51dと、データ振り分け装置52と、並列動作可能な4個の中間バッファメモリ53a,53b,53c,53dと、第4のフェーズの処理を行う4個の4点フーリエ変換装置54a,54b,54c,54dとにより構成される。なお、ここでは、説明の簡略化のため、回転演算装置は図示を省略している。
次に、上記のように構成した装置の動作を、図15に示す中間データの配置図を参照しながら説明する。本装置では、第2のフェーズで縦方向に4点フーリエ変換を行い、第4のフェーズで横方向に4点フーリエ変換を行うことにより、第1〜第16ワード(図15に丸付の数字で示している)の16点周波数解析を実行する。
このとき、上述した第2のフェーズの処理を行う4個の4点フーリエ変換装置51a,51b,51c,51dは、それぞれ図15の縦方向に対するデータを用いてフーリエ変換を同時に行う。これにより、第1サイクルでは、第1、第2、第3、第4ワードについてフーリエ変換されたデータが同時に得られる。
このようにして同時に得られた4個のデータは、データ振り分け装置52により4個の中間バッファメモリ53a,53b,53c,53dに1ワードずつ振り分けられて記憶される。ここで、各ワードのデータが記憶される中間バッファメモリ53a,53b,53c,53dの種類を、それぞれA〜Dの符号を付して示した。
通常、4個のデータを1個の中間バッファメモリに書き込むためには、4サイクル必要であるが、本実施例では、4個のデータを4個の中間バッファメモリ53a,53b,53c,53dに振り分けて書き込むようにしているので、1サイクルで書き込みを行うことができる。
また、第2サイクル〜第4サイクルの各サイクルで同時にフーリエ変換されたデータについても同様に、データ振り分け装置52により4個の中間バッファメモリ53a,53b,53c,53dに1ワードずつ振り分けられて記憶される。このとき、同じフーリエ変換装置で変換されたデータが同じ中間バッファメモリ内に記憶されないように振り分けが行われる。
以上のような書き込み動作により、4個の中間バッファメモリ53a,53b,53c,53dには、図15に示すような関係で各ワードのデータが記憶されることになる。すなわち、第1の中間バッファメモリ53aには、第1、第6、第11、第16ワードのデータが記憶され、第2の中間バッファメモリ53bには、第5、第10、第15、第4ワードのデータが記憶される。
また、第3の中間バッファメモリ53cには、第9、第14、第3、第8ワードのデータが記憶され、第4の中間バッファメモリ53dには、第13、第2、第7、第12ワードのデータが記憶される。
次に、第4のフェーズの処理を行う際には、上述した第4のフェーズの処理を行う4個の4点フーリエ変換装置54a,54b,54c,54dは、それぞれ図15の横方向に対するデータを用いてフーリエ変換を同時に行う。すなわち、第1サイクルでは、上記4個の4点フーリエ変換装置54a,54b,54c,54dは、それぞれ第1、第5、第9、第13ワードのデータを読み出してフーリエ変換を同時に行う。
この場合、図15から明らかなように、各4点フーリエ変換装置54a,54b,54c,54dで同時に使用する4個のデータは、上記4個の中間バッファメモリ53a,53b,53c,53dに1ワードずつ分散して記憶されている。したがって、1個の中間バッファメモリに上記4個のデータが全て記憶されていたとしたなら読み出しに4サイクルかかるところを、本実施例では、1サイクルで読み出すことができる。
以上説明したように、図14に示した第7番目の例の装置によれば、複数のフーリエ変換装置を用いてDFT処理を並列化動作させた場合に、中間バッファメモリへのアクセスも効率よく並列化させることができ、装置全体の並列動作性を向上させることができる。なお、参考のために、上述したデータの読み書きの手順を、図16に示しておく。
本発明の一実施例であるフーリエ変換装置の構成を示すブロック図である。 図1のフーリエ変換装置によって行われる第1〜第5のフェーズの処理内容を説明するための図である。 本実施例のフーリエ変換装置をツリー構造にした場合に必要な中間バッファメモリの容量を、FFTの各バタフライ演算を並列化動作させた場合に必要な中間バッファメモリの容量と比較するための図である。 第1番目の応用例による装置の構成を示す図である。 第2番目の応用例による装置の構成を示す図である。 第3番目の応用例による装置の構成を示す図である。 第4番目の応用例による装置の構成を示す図である。 図7に示した装置によって行われる時分割処理の様子を説明するための図である。 第5番目の応用例で使用される高速ページモードを持つ中間バッファメモリのアクセスタイムの様子を示すタイムチャートである。 中間バッファメモリをストライプ状に配置した様子を示す図である。 中間バッファメモリをブロック状に配置した様子を示す図である。 2ページ分の中間バッファメモリを用いてデータの読み書きを行う様子を説明するための図である。 第6番目の応用例によるデータの読み書きの様子を説明するための図であり、1ページ分の中間バッファメモリを用いてデータの読み書きを行う様子を説明するための図である。 第7番目の応用例による装置の構成を示す図である。 複数の中間バッファメモリとそれに記憶されるデータとの関係を説明するための図である。 第7番目の応用例によるデータの読み書きの手順を示す図である。
符号の説明
1 第1の並べ替え手段
2 n2 長フーリエ変換手段
3 回転演算手段
4 中間バッファメモリ
5 n1 長フーリエ変換手段
6 第2の並べ替え手段

Claims (1)

  1. 横方向に周期n1、縦方向に周期n2の2次元状に配置された周期N(=n1×n2)の時間成分の信号に対して、縦方向に対する周期n2のフーリエ変換を行うm個のn2長フーリエ変換手段と、
    上記m個のn2長フーリエ変換手段による変換結果を一時記憶するためのm個の中間バッファメモリと、
    上記m個の中間バッファメモリに記憶されたデータに対して回転演算を施す回転演算手段と、
    上記回転演算手段による演算結果に対して、横方向に対する周期n1のフーリエ変換を行うm個のn1長フーリエ変換手段と、
    複数サイクルに亘って同じn2長フーリエ変換手段により求められたデータが同じ中間バッファメモリ内に記憶されることがないようにするとともに、同じn1長フーリエ変換手段により使用されるデータが同じ中間バッファメモリ内に記憶されることがないようにして、上記m個のn2長フーリエ変換手段によりそれぞれ求められたm個のデータを上記m個の中間バッファメモリに1個ずつ振り分けて記憶するようにするデータ振り分け手段とを有し、
    上記m個のn2長フーリエ変換手段を用いてn1回のn2長フーリエ変換処理を並列に行うとともに、上記m個のn1長フーリエ変換手段を用いてn2回のn1長フーリエ変換処理を並列に行うようにし、上記データ振り分け手段によって同一サイクルで振り分けられたm個のデータに対して、同じn1長フーリエ変換手段を用いて互いに異なるサイクルでn1長フーリエ変換処理を行うようにしたことを特徴とするフーリエ変換装置。
JP2006033084A 2006-02-09 2006-02-09 フーリエ変換装置 Expired - Lifetime JP3950466B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006033084A JP3950466B2 (ja) 2006-02-09 2006-02-09 フーリエ変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006033084A JP3950466B2 (ja) 2006-02-09 2006-02-09 フーリエ変換装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP20381795A Division JP3839504B2 (ja) 1995-07-18 1995-07-18 フーリエ変換装置

Publications (2)

Publication Number Publication Date
JP2006164308A JP2006164308A (ja) 2006-06-22
JP3950466B2 true JP3950466B2 (ja) 2007-08-01

Family

ID=36666162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006033084A Expired - Lifetime JP3950466B2 (ja) 2006-02-09 2006-02-09 フーリエ変換装置

Country Status (1)

Country Link
JP (1) JP3950466B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5821104B2 (ja) * 2010-10-22 2015-11-24 株式会社レイトロン フーリエ変換処理装置
JP5654373B2 (ja) * 2011-02-01 2015-01-14 株式会社富士通アドバンストエンジニアリング 演算装置、演算方法およびプログラム

Also Published As

Publication number Publication date
JP2006164308A (ja) 2006-06-22

Similar Documents

Publication Publication Date Title
US6609140B1 (en) Methods and apparatus for fast fourier transforms
US20080208944A1 (en) Digital signal processor structure for performing length-scalable fast fourier transformation
US7464127B2 (en) Fast fourier transform apparatus
Govindaraju et al. High performance discrete Fourier transforms on graphics processors
EP0535244B1 (en) Quasi radix-16 processor and method
US6304887B1 (en) FFT-based parallel system for array processing with low latency
US7461114B2 (en) Fourier transform apparatus
US4821224A (en) Method and apparatus for processing multi-dimensional data to obtain a Fourier transform
KR20110079495A (ko) Simd 멀티코어 프로세서 아키텍처 상의 어레이 데이터 전치
US8880575B2 (en) Fast fourier transform using a small capacity memory
KR101222597B1 (ko) 메모리의 판독 및 기록방법, 메모리 제어방법과, 그것을이용한 연산장치
US20100106758A1 (en) Computing discrete fourier transforms
JPH11203272A (ja) 高速フーリエ変換処理装置、高速フーリエ変換処理システムおよび高速フーリエ変換処理方法
US20180373677A1 (en) Apparatus and Methods of Providing Efficient Data Parallelization for Multi-Dimensional FFTs
JP3950466B2 (ja) フーリエ変換装置
US8209485B2 (en) Digital signal processing apparatus
US6728742B1 (en) Data storage patterns for fast fourier transforms
JP3839504B2 (ja) フーリエ変換装置
Zheng Encrypted cloud using GPUs
US6438568B1 (en) Method and apparatus for optimizing conversion of input data to output data
JP2008052504A (ja) 離散フーリエ変換装置および離散フーリエ逆変換装置
US6772183B1 (en) Device for converting input data to output data using plural converters
JP2006331186A (ja) Fft演算装置及びfft演算方法
CN114116012B (zh) 基于混洗操作的fft码位反序算法向量化实现方法及装置
KR102479480B1 (ko) 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060905

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061211

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070302

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070420

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100427

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110427

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110427

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120427

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20120427

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120427

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130427

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130427

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140427

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term