JP6930607B2 - 信号処理装置、方法、プログラムと記録媒体 - Google Patents

信号処理装置、方法、プログラムと記録媒体 Download PDF

Info

Publication number
JP6930607B2
JP6930607B2 JP2019562102A JP2019562102A JP6930607B2 JP 6930607 B2 JP6930607 B2 JP 6930607B2 JP 2019562102 A JP2019562102 A JP 2019562102A JP 2019562102 A JP2019562102 A JP 2019562102A JP 6930607 B2 JP6930607 B2 JP 6930607B2
Authority
JP
Japan
Prior art keywords
data
output
parallel
cycle
cycles
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.)
Active
Application number
JP2019562102A
Other languages
English (en)
Other versions
JPWO2019131754A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019131754A1 publication Critical patent/JPWO2019131754A1/ja
Application granted granted Critical
Publication of JP6930607B2 publication Critical patent/JP6930607B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • 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
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

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

Description

(関連出願についての記載)
本発明は、日本国特許出願:特願2017−250740号(2017年12月27日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、信号処理装置、方法、プログラムと記録媒体に関する。
デジタル信号処理において重要な処理の1つとして、高速フーリエ変換(Fast Fourier Transform。以降、「FFT」という。)処理がある。また、例えば、無線通信や有線通信における信号伝送中の波形歪みを補償する技術として、周波数領域等化(Frequency domain equalization(FDE))技術が知られている。
周波数領域等化では、まず、高速フーリエ変換により時間領域上の信号データが周波数領域上のデータに変換される。
次に、等化のためのフィルタ処理が行われる。
そして、フィルタ処理後のデータは、逆高速フーリエ変換(Inverse FFT。以降、「IFFT」という。)により時間領域上の信号データに再変換される。
上記によって、元の時間領域上の信号の波形歪みが補償される。以降、FFTとIFFTを区別しないときは、「FFT/IFFT」と表記する。
一般に、FFT/IFFT処理では、「バタフライ演算」が用いられる。例えば特許文献1には、バタフライ演算を用いたFFT装置等について記載されている。特許文献1には、後述の「ひねり乗算」、すなわち、ひねり係数(twiddle coefficient又はtwiddle factor)を用いた乗算についても記載されている。また、例えば非特許文献1には、効率的なFFT/IFFT処理方式として、Cooley-Tukeyによるバタフライ演算が記載されている。しかし、ポイント数の大きいCooley-TukeyによるFFT/IFFTは回路が複雑になる。そのため、FFT/IFFT処理は、例えば非特許文献2に記載されたPrime Factor法に基づいて、2つの小さなFFT/IFFTに分解して行われる。
図14には、Prime Factor法を利用して2段階の基数8のバタフライ処理に分解された、64ポイントFFTのデータフロー500が示されている。データフロー500は、データ並べ替え処理部501、バタフライ演算処理部502、503からなる延べ16回の基数8のバタフライ演算処理、及び、ひねり係数{Wk}(W=exp(-2πj/N), j2=-1)を乗算するひねり乗算処理部504を含む(図14では、ひねり係数は(W0, W1,…,W),…,(W0, W,…,W49))。
図14に示すデータフロー500では、入力された時間領域のデータx(n)(n=0,1,・・・,63)が、FFT処理により、周波数領域の信号X(k)(k=0,1,・・・,63)にフーリエ変換される。なお、図14では、一部のデータフローの図示は省略されている。図14に示すデータフロー500は、IFFT処理を行う場合であっても、基本構成は同じである。
FFTのポイント数が大きい場合、図14に示すデータフロー500のすべてを、回路で実現すると、膨大な規模となる。そのため、FFTのポイント数が大きい場合、一般的に、必要な処理性能に応じて、データフローの一部分の処理を実現する回路を繰り返し使用することで、FFT処理の全体を実現する方法が採られる。
例えば、図14のデータフローにおいて、8個のデータに対して並列に(以降、単に「8データ並列で」という。)FFT処理を行うFFT装置を物理的な回路として作成した場合、合計8回の繰り返し処理により64ポイントFFT処理を実現することができる。
8回の繰り返し処理は、8個のデータに対して行われる部分データフロー505a〜505hの、それぞれにあたる処理が順に行われるものであり、具体的には、次のように行われる。すなわち、
1回目には、部分データフロー505aにあたる処理が、
2回目には、部分データフロー505bにあたる処理が、
3回目には、部分データフロー505c(図示せず)にあたる処理が、それぞれ行われる。以降同様に、8回目の部分データフロー505hにあたる処理までが順にそれぞれ行われる。以上の処理により、64ポイントFFT処理が実現される。
バタフライ演算では、逐次的な順序に並べられたデータが、所定の規則に従った順序で読み出されて、処理される。そのため、バタフライ演算では、データの並べ替えが必要である。そのためには、主にRAM(Random Access Memory)が用いられる。例えば、特許文献2には、バタフライ演算においてRAMを用いたデータの並べ替えを行うFFT装置について記載されている。
また、例えば特許文献3には、メモリ使用量を削減したFFT演算装置におけるバタフライ演算の並列処理による高速化技術が記載されている。
特開平8−137832号公報(第3−5頁、図25) 特開2001−56806号公報(第5頁、図1) 特開2012−22500号公報(第5頁、図1)
J.W.Cooley, J.W.Tukey, "An Algorithm for the Machine Calculation of Complex Fourier Series," Mathematics of Computation, US, American Mathematical Society, Apr. 1965, Vol.19, No. 90, pp. 297-301 D.P.Kolba, "A Prime Factor FFT Algorithm Using High-Speed Convolution," IEEE Trans. on Acoustics, US, IEEE Signal Processing Society, Aug. 1977, Vol.29, No.4, pp. 281-294
デジタル信号処理における信号データの2進数による表現方法として、2の補数表現が広く使われている。2の補数表現は、減算処理を加算処理で表現できることから、加減算処理回路を小さい回路規模で実現できるという特徴がある。
一方、2の補数表現では、値0の近傍における正の小さい値と負の小さい値ではビット単位での値が大きく異なる。このため、値が0の近傍で正と負とで頻繁に変化する信号を2の補数で表現した場合、ビット単位の動作率(トグル率)が大きい、という特徴がある。CMOS(Complementary Metal Oxide Semiconductor)回路により実現したデジタル信号処理回路の動的な消費電力(ダイナミック電力)Pは、下記に示す式(1)で表現することができる。
P=(1/2)*a*C*V2*f … (1)
ここで、
a:回路動作率(percentage-activity)、
C:負荷容量、
V:電圧、
f:動作周波数
である。回路動作率(percentage-activity)は、ある時間期間におけるスイッチング回数の推定値と該期間におけるクロックサイクル数の比率で与えられる。
信号データのビット単位の動作率(トグル率)は回路動作率aを決定することから、ビット単位の動作率の低減が、消費電力の低減に有効である。ところで、通信向け信号処理の信号データは、値0の近傍で正と負とで頻繁に変化することが多い。また、デジタル信号処理において重要な処理の1つとして、高速フーリエ変換(FFT)処理においても、その内部データが値0の近傍の小さい値をとることが多い。
これらの処理において、2の補数表現を用いた場合、ビット単位の動作率が大きくなり、その結果消費電力が大きくなるという問題がある。
それに対し、値0の近傍におけるビット単位の動作率が小さいデジタルデータの表現方法として、符号絶対値表現がある。図15には、2の補数表現と符号絶対値表現の一例として、8ビットの信号データにおける+7〜−8の信号値の2進数表現が示されている。2の補数表現では、値0を境界として、正の値と負の値との間で上位ビット側のビット値が大きく異なることがわかる。従って、値0の近傍で正と負とで頻繁に変化する信号を表現した場合、ビット単位の動作率が大きくなることになる。
例えば、+1から−1に変化した場合、最下位ビット(Least Significant Bit; LSB)以外の7ビットがすべて遷移することになる。
一方、符号絶対値表現は、最上位ビット(Most Significant Bit; MSB)で符号を表し、それ以外のビットで値の絶対値を表すことから、値0を境界として、正の値と負の値との間でビット値の差異が小さい。従って、値0の近傍で正と負とで頻繁に変化する信号を表現した場合でも、ビット単位の動作率は小さいという特徴がある。例えば、信号の値が+1から−1に変化した場合、最上位ビットの1ビットのみが遷移することになる。
ところが、符号絶対値表現では、減算処理を加算処理で表現できないことから、加算処理回路と減算処理回路とを別に用意する必要がある。その結果、加減算処理を実現する回路の規模が大きくなる。回路規模は、式(1)に示した動的な消費電力Pにおける負荷容量Cを決定することから、回路規模の増大は消費電力を増大させる。
すなわち、符号絶対値表現は、2の補数表現と比較して、回路動作率aを低減できるものの、加減算回路の負荷容量Cが増大する。このため、特に加減算処理の多い信号処理の場合、消費電力が大きくなる、という問題がある。
また、加減算処理には効率的に回路実現が可能な2の補数表現を使用し、加減算処理以外には、動作率を低減できる符号絶対値表現を使用することも考えられる。しかしながら、2の補数表現と符号絶対値表現との変換には、ビット反転処理と1加算処理(インクリメント処理)が必要になる。したがって、変換処理が多く必要な回路の場合、その変換回路の分だけ消費電力が大きくなる、という問題がある。
図16には、2の補数表現と符号絶対値表現との変換回路600の構成の一例が示されている。変換回路600は、ビット反転回路601と1加算回路602とを接続した構成である。変換回路600において、特に、1加算回路602の回路規模は、他の論理処理回路や演算処理回路と比較して無視できない規模となる。このため、変換処理が多く必要になる場合、その変換回路の分だけ、回路全体の回路規模や消費電力が増大する、という問題がある。
したがって、本発明は、上記課題に鑑みて創案されたものであって、回路全体の回路規模や消費電力の増大を抑制又は低減可能とする信号処理装置、方法、プログラムを提供することを目的とする。
本発明の1つの側面によれば、2の補数表現により表現されたデータに対して演算処理を行う演算処理部と、データ表現形式として第2の表現形式により表現されたデータに対して記憶処理を行う記憶処理部と、を備え、前記第2の表現形式は、データ値が正または0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である信号処理装置が提供される。
本発明の1つの側面によれば、2の補数表現により表現されたデータに対して演算処理を行う演算処理工程と、
データ表現形式として第2の表現形式により表現されたデータに対して記憶処理を行う記憶処理工程と、
を含み、前記第2の表現形式は、
データ値が正または0の場合は2の補数表現と同一であり、
データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である、信号処理方法が提供される。
本発明の1つの側面によれば、2の補数表現により表現されたデータに対して演算処理を行う演算処理と、
データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である第2の表現形式により表現されたデータに対して記憶処理を行う記憶処理を、コンピュータ(プロセッサ)に実行させるプログラムが提供される。本発明によれば、該プログラムを記録した非一時的なコンピュータ読み出し可能な媒体(non-transitory computer-readable medium)が提供される。
本発明の1つの側面によれば、信号処理として高速フーリエ変換(逆高速フーリエ変換)を行う装置が提供される。本発明の1つの側面の高速フーリエ変換装置(逆高速フーリエ変換装置)によれば、バタフライ演算処理を行うバタフライ演算処理部と、ひねり乗算処理を行うひねり乗算処理部と、複数のデータの順序を並べ替えるデータ並べ替え処理部と、を備え、データ表現形式として2の補数表現と、2の補数表現と異なる第2の表現形式の双方を使用して処理を行い、
前記第2の表現形式は、データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現であり、
前記バタフライ演算処理部と前記ひねり乗算処理部は、2の補数表現により表現されたデータに対して処理を行い、
前記データ並べ替え処理部は、前記第2の表現形式により表現されたデータに対して記憶処理を行う。
本発明によれば、バタフライ演算処理、ひねり乗算処理、及び、複数のデータの順序を並べ替えるデータ並び替え処理を実行しデータの高速フーリエ変換(逆高速フーリエ変換)を行うプロセッサに、
前記バタフライ演算処理と前記ひねり乗算処理は、2の補数表現により表現されたデータに対して処理を行い、
データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である第2の表現形式により表現されたデータに対して記憶処理を行う前記データ並び替え処理を実行させるプログラムが提供される。本発明によれば、該プログラムを記録した非一時的なコンピュータ読み出し可能な媒体(non-transitory computer-readable medium)が提供される。
本発明によれば、信号処理装置の回路規模や消費電力の増大を抑制又は低減することができる。
本発明の第1の実施形態に係る信号処理回路の構成を説明する図である。 本発明の第1の実施形態に係る記憶処理部の構成を説明する図である。 本発明の第1の実施形態に係るデータ表現形式の一例を表形式で示した図である。 本発明の第1の実施形態に係る変換回路の構成を例示する図である。 本発明の第2の実施形態に係る信号処理回路の構成を説明する図である。 本発明の第2の実施形態に係るFFT処理における逐次順序に従うデータ組を模式的に示す図である。 本発明の第2の実施形態に係るFFT処理におけるビットリバース順序に従うデータ組を模式的に示す図である。 本発明の第2の実施形態に係るデータ組内並べ替え部220の構成の一例を示す図である。 本発明の第2の実施形態に係る逐次順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の実施形態に係る中間順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の実施形態に係るデータ並べ替え部の動作を説明するタイムチャートである。 本発明の第2の実施形態に係るデータ並べ替え部の構成の一例を示す図である。 本発明の第2の実施形態に係るデータ組内並べ替え部220の動作を説明するタイムチャートである。 2段階のバタフライ演算を用いる64ポイントFFT処理のデータフローの一例を説明する図である。 データ表現形式の一例を表形式で示した図である。 変換回路の構成の一例を示す図である。 本発明に係る方法の一形態を説明する図である。 図17Aの記憶処理工程(ステップS1)の手順を説明する図である。 本発明に係るコンピュータプログラムの一形態を説明する図である。
以下、図面を参照して、本発明のいくつかの例示的な実施形態について説明する。
(第1の実施形態)
図1は、本発明の例示的な第1の実施形態に係る信号処理装置10の構成例を示す図である。信号処理装置10は、信号データのバッファリング処理、リタイミング処理や並べ替え処理等の記憶処理を行う記憶処理部11a、11b、11cと、加減算や乗除算等の演算処理を行う演算処理部12a、12bと、を備えている。なお、図1において、矢印は、処理におけるデータの流れの一例を例示したものである(各部間の信号が常に一方向であることに制限するという意味に解釈すべきでないことは勿論である)。また、以下では、記憶処理部11a、11b、11c等は、特に、各部を指定して説明する必要がある場合を除いて、a、b、c等の記号を省略し、記憶処理部11で参照される。他の要素についても同様とされる。
記憶処理部11aは、信号処理装置10の外部(図示せず)から、2の補数表現により表現された信号データを入力して記憶処理を行い、演算処理部12aに出力する。
演算処理部12aは、記憶処理部11aから、2の補数表現により表現された信号データを入力して演算処理を行い、記憶処理部11bに出力する。
記憶処理部11bは、演算処理部12aから、2の補数表現により表現された信号データを入力して記憶処理を行い、演算処理部12bに出力する。
演算処理部12bは、記憶処理部11bから、2の補数表現により表現された信号データを入力して演算処理を行い、記憶処理部11cに出力する。
記憶処理部11cは、演算処理部12bから、2の補数表現により表現された信号データを入力して記憶処理を行い、信号処理装置10の外部に出力する。
記憶処理部11a、11b、11cは、例えば図2に示す記憶処理部11により実現することができる。
図2を参照すると、記憶処理部11は、第1の変換回路13a、記憶回路14、第2の変換回路13bを備えている。
第1の変換回路13aは、入力する2の補数表現で表現された信号データを、符号絶対値−−表現で表現された信号データに変換して出力する回路である。なお、「符号絶対値−−表現」は、実施形態で発明者が新たに命名した用語であり、特許請求の範囲の第2の表現形態に対応している。「符号絶対値−−表現」は、データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現である。
図3には、符号絶対値−−表現と、その比較として、2の補数表現、及び符号絶対値表現による、6ビットの信号データにおける+15〜−16の信号値の2進数表現が示されている。図3において、データ値が正の場合、符号絶対値−−表現、2の補数表現、及び符号絶対値表現ともすべて同一のビット表現である。
データ値が0の場合、符号絶対値−−表現と2の補数表現は同一のビット表現である。
データ値が負の場合、符号絶対値−−表現は、2の補数表現から、符号を示す最上位ビット以外のビットを反転した表現である。同様に、データ値が負の場合、2の補数表現は、符号絶対値−−表現から、符号を示す最上位ビット以外のビットを反転した表現である。
図3に示すように、符号絶対値−−表現は、符号絶対値表現と同様に、値0を境界として、正の値と負の値との間でビット値の差異が小さい。従って、値0の近傍で正と負とで頻繁に変化する信号を表現した場合でも、ビット単位の動作率は小さいという特徴がある。
符号絶対値−−表現において、例えば、信号値が+1("00001")から−2("10001")に変化した場合、最上位ビットの1ビットのみが遷移することになる。
再び図2を参照すると、記憶回路14は、第1の変換回路13aが出力する符号絶対値−−表現で表現された信号データを入力して符号絶対値−−表現のまま記憶処理を行い、符号絶対値−−表現のまま第2の変換回路13bに出力する回路である。
第2の変換回路13bは、記憶回路14が出力する符号絶対値−−表現で表現された信号データを、2の補数表現で表現された信号データに変換して出力する回路である。
第1、第2の変換回路13a、13bは、同一の構成とされ、例えば、図4に示す変換回路13で実現することができる。図4を参照すると、変換回路13は、2の補数表現のNビット(Nは正の整数)の信号データ(IN[0]〜IN[N-1])を並列に入力して、2の補数表現から符号絶対値−−表現へ変換してNビット(OUT[0]〜OUT[N-1])を並列に出力する回路である。また、変換回路13は、符号絶対値−−表現のNビットの信号データ(IN[0]〜IN[N-1])を並列に入力して、該符号絶対値−−表現から2の補数表現へ変換してNビット(OUT[0]〜OUT[N-1])を並列に出力する回路である。
変換回路13は、入力IN[N-1]から入力する符号を示す最上位ビットは、そのまま符号ビットとしてOUT[N-1]に出力する。
入力IN[0]〜IN[N-2]から入力するそれ以外のビットは、それぞれ、XOR(exclusive OR)回路17により入力IN[N-1]から入力する符号を示す最上位ビットとの排他的論理和をとった後、出力OUT[0]〜OUT[N-2]にそれぞれ出力する。
従って、入力するデータ値が正又は0の場合、入力IN[N-1]から入力する符号を示す最上位ビットは値0であり、出力OUT[0]〜OUT[N-2]には、それぞれ、入力IN[0]〜IN[N-2]に入力されたデータ値がそのまま出力される。
一方、入力するデータ値が負の場合、入力IN[N-1]から入力する符号を示す最上位ビットは値1であり、排他的論理和処理により出力OUT[0]〜OUT[N-2]には、それぞれ、入力IN[0]〜IN[N-2]に入力されたデータ値を反転したデータが出力される。
以上の処理により、変換回路13は、2の補数表現から符号絶対値−−表現へ、又は、符号絶対値−−表現から2の補数表現への変換処理が実現される。
以上のように変換回路13において、2の補数表現と、符号絶対値−−表現との変換は、ビット反転処理のみで実現することができ、符号絶対値表現が必要とした1加算処理を必要としない。ビット反転処理は、排他的論理和(XOR回路)のみで実現できるので、他の論理処理回路や演算処理回路と比較して圧倒的に小さい回路規模で実現することができる。
図17Aは、第1の実施形態の方法を説明する図である。第1の実施形態の方法は、データ表現形式として、符号絶対値−−表現形式により表現されたデータに対して記憶処理を行う記憶処理工程(ステップS1)と、2の補数表現により表現されたデータに対して演算処理を行う演算処理工程(ステップS2)とを少なくとも含む。なお、演算処理工程(ステップS2)のあとに記憶処理工程(ステップS1)をさらに含むようにしてもよい。また、演算処理工程を最初に実行し、つづいて記憶処理工程を実行するようにしてもよい。
図17Bは、図17Aの記憶処理工程(ステップS1)の手順を説明する図である。データを2の補数表現から符号絶対値−−表現形式に変換する第1変換工程(ステップS11)と、符号絶対値−−表現形式に変換したデータの記憶処理を行う工程(ステップS12)と、記憶処理後の符号絶対値−−表現形式のデータを読み出し2の補数表現へ変換して出力する第2変換工程(ステップS13)と、を含む。
(第1の実施形態の効果)
以上説明したように、本実施形態においては、信号処理装置10は、記憶処理部11a、11b、11cにおいて、2の補数表現で表現されるデータを符号絶対値−−表現に変換して記憶処理を行った後、再び2の補数表現に変換する。
図3に示すように、符号絶対値−−表現は、符号絶対値表現と同様に、値0を境界として、正の値と負の値との間でビット値の差異が小さい。従って、値0の近傍で正と負とで頻繁に変化する信号を表現した場合でも、ビット単位の動作率は小さいという特徴がある。その結果、2の補数表現のまま処理する場合と比べて、記憶処理部11a、11b、11cにおける回路の動作率を低減することができる。
また、変換回路13による2の補数表現と符号絶対値−−表現との変換処理は、ビット反転処理のみで実現することができ、符号絶対値表現が必要とした1加算処理(インクリメント処理)を必要としない。
ビット反転処理は、XOR回路のみで実現できる。このため、他の論理処理回路や演算処理回路と比較して圧倒的に小さい回路規模で実現することができる。
従って、本実施形態では、値0の近傍で正と負とで頻繁に変化する信号を処理する場合でも、記憶処理部11a、11b、11cにおける回路の動作率を小さくすることができる。このため、記憶処理部11a、11b、11cにおける消費電力を低減することができる。
一方、本実施形態では、演算処理は、演算処理部12a、12bにおいて、2の補数表現のまま処理される。そのため、演算処理に係る回路の動作率は低減されない。しかし、符号絶対値表現を適用した場合のように、データ表現形式間の変換によって回路規模が増大する、ということはない。従って、記憶処理部11a、11b、11cでの消費電力が小さくなる分だけ、信号処理装置全体の消費電力を低減することができる。
なお、本実施形態では、信号データのバッファリング処理、リタイミング処理や並べ替え処理等の記憶処理は、記憶処理部11a、11b、11cにおいて、符号絶対値−−表現で処理を行い、加減算や乗除算等の演算処理は、演算処理部12a、12bにおいて2の補数表現で処理を行うとしたが、符号絶対値−−表現での処理で所望の結果が得られる場合、記憶処理部11a、11b、11cにおいて、記憶処理に限らず、符号絶対値−−表現に基づき、加減算や乗除算等の演算処理を行ってもよい。
(第2の実施形態)
本発明の例示的な第2の実施形態について説明する。第2の実施形態は、本発明をFFT装置に適用したものである。FFT装置には、バタフライ演算処理を行うバタフライ演算処理部と、ひねり乗算処理を行うひねり乗算処理部と、複数のデータの順序を並べ替えるデータ並べ替え処理部と、を備え、前記バタフライ演算処理部と前記ひねり乗算処理部は、2の補数表現により表現されたデータに対して処理を行い、前記データ並べ替え処理部は、符号絶対値−−表現により表現されたデータに対して記憶処理を行う。
図5は、本発明の第2の実施形態に係るFFT装置20の構成例を示すブロック図である。FFT装置20は、図14に示されたデータフロー500に従って、2段階の基数8のバタフライ処理に分解された64ポイントFFTを、パイプライン回路方式によって処理する。FFT装置20は、時間領域のデータx(n)(n=0,1,・・・ ,N-1)を入力し、x(n)をFFT処理によりフーリエ変換して周波数領域の信号X(k)(k=0,1,・・・,N-1)を生成して出力する。ここで、NはFFTブロックサイズを表す正整数である。特に制限されないが、FFT装置20は、8データ並列で64ポイントFFT処理を行うものとする(N=64)。この場合、FFT装置20は、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する。このとき、入力データx(n) として、8データずつ、8サイクルの期間に、図6に示す順序で、合計で64個のデータが入力される。なお、ここでは、図6において、表の内容(8行×8列の要素)として示された、0から63までの数字は、x(n)の添え字nを表している。
具体的には、1サイクル目に、データ組P1を構成するx(0),x(1),・・・,x(7)の8データが入力される。
そして、2サイクル目に、データ組P2を構成するx(8),x(9),・・・,x(15)の8データが入力される。以降同様に、3サイクル目から8サイクル目まで、データ組P3〜P8を構成するデータが入力される。
同様に、出力データX(k)として、8データずつ、8サイクルの期間に、図6に示す順序で、64データが出力される。なお、ここでは、図6の表の内容として示された、0から63までの数字は、X(k)の添え字kを表している。
具体的には、1サイクル目に、データ組P1を構成するx(0),x(1),・・・,x(7)の8データが出力される。
2サイクル目に、データ組P2を構成するx(8),x(9),・・・,x(15)の8データが出力される。以降同様に、3サイクル目から8サイクル目まで、データ組P3〜P8を構成するデータが出力される。
図5に示すように、FFT装置20は、第1のデータ並べ替え処理部200a、第1のバタフライ演算処理部21a、第2のデータ並べ替え処理部200b、ひねり乗算処理部22、第2のバタフライ演算処理部21b、第3のデータ並べ替え処理部200c、を備える。
FFT装置20は、第1のデータ並べ替え処理、第1のバタフライ演算処理、第2のデータ並べ替え処理、ひねり乗算処理、第2のバタフライ演算処理、第3のデータ並べ替え処理を、パイプライン処理する。
第1のデータ並べ替え処理部200a、第2のデータ並べ替え処理部200bは、データ並べ替えのためのバッファ回路である。第1のデータ並べ替え処理部200a、第2のデータ並べ替え処理部200bは、それぞれ、第1のバタフライ演算処理部21aの前と後で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
第3のデータ並べ替え処理部200cも、同様に、データ並べ替えのためのバッファ回路である。すなわち、第3のデータ並べ替え処理部200cは、第2のバタフライ演算処理部21bの後で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
具体的には、第1のデータ並べ替え処理部200aは、入力データx(n)の入力順序である図6に示す「逐次順序」を、第1のバタフライ演算処理部21aに入力する順序である図7に示す「ビットリバース順序」に並べ替える。
図7に示すビットリバース順序は、図14に示したデータフロー図における、1段目の基数8のバタフライ演算処理部502への入力データ組に対応する。
具体的には、1サイクル目に、データ組Q1を構成するx(0),x(8),・・・,x(56)の8データを入力する。そして、2サイクル目に、データ組Q2を構成するx(1),x(9),・・・,x(57)の8データを入力する。以降、3サイクル目から8サイクル目まで同様にして、データ組Q3〜Q8を構成するデータを入力する。
逐次順序は、図6に示された8つのデータ組P1、P2、P3、P4、P5、P6、P7、P8の順序をいう。データ組Ps(sは処理サイクルの順序を表す値であり、s=1、2、・・・、8)は、それぞれ、ps(0)からps(7)まで順に並んだ8個のデータからなる。図6に示す順序で、8データずつ8サイクルの期間に合計で64個のデータx(0)〜x(63)が入力されるとして、ps(i)(i=0,…,7)は、以下で与えられる。
ps(i)=x[8×(s−1)+i]
各データ組は、処理のサイクルの進行に対応して、P1、P2、P3、P4、P5、P6、P7、P8の順に並べられる。「逐次順序」は、is個のデータを、先頭からi個ずつデータ順に並べたデータ組をs組作成し、各データ組をサイクル順に並べたものである。
ビットリバース順序は、図7に示された8つのデータ組Q1、Q2、Q3、Q4、Q5、Q6、Q7、Q8の順序をいう。データ組Qs(sは処理サイクルの順序を表す値であり、s=1、2、・・・、8)は、それぞれ、qs(0)からqs(7)まで、順に並んだ8個のデータからなる。逐次順序で入力された64個のデータx(0)〜x(63)に対して、qs(i)(i=0,…,7)は、以下で与えられる。
qs(i)=x[(s−1)+8×i]
各データ組は、処理のサイクルの進行に対応して、Q1、Q2、Q3、Q4、Q5、Q6、Q7、Q8の順に並べられる。ビットリバース順序は、逐次順序で入力されたis個のデータを先頭からs個ずつサイクル順に並べ、同じサイクルのi個のデータを1つの組としてデータ順に並べたものである。
ビットリバース順序の各データ組は、逐次順序の各組が設定されていれば一意に定まる。ビットリバース順序の各データ組Qs(s=1,…,8)を構成するデータのうちi番目のデータQs(i)(i=0,…,7)は、逐次順序に従ったi+1番目のサイクルにおけるs−1番目のデータPi+1(s―1)である。すなわち、
Qs(i)=Pi+1(s−1)
ここで、Ps、Qs(s=1,…,8)のi番目のデータをPs(i)、Qs(i)(i=1,…,8)で表すと、上式は、
Qs(i)=Pi(s)
となる。すなわち、Qs(i)とPi(s)は、各データ組を構成するデータについて、サイクルの進行の順序とデータ位置に関する順序とが入れ替えられた関係にある。したがって、ビットリバース順序で入力されたデータをビットリバース順序にしたがって並び替えると、逐次順序となる。
図6における各行ps(i)、及び図7における8つの行qs(i)は、それぞれ、次段のi番目に入力されるデータを示す。各データ組に含まれる8個の数字は、FFTのポイントのうちの1個を特定する識別情報であり、具体的にはx(n)の添え字nの値である。
なお、逐次順序及びビットリバース順序は、図6、図7に例示されたものに限定されない。すなわち、逐次順序の各データ組は、上記のように、FFTのポイント数、サイクル数、並列に処理するデータ数に応じて、データを順に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータの、サイクルの進行に対する順序とデータ位置に対する順序を入れ替えて作成すればよい。
第1のバタフライ演算処理部21aは、図14のデータフロー500において2回行われる基数8のバタフライ演算処理のうち、1回目のバタフライ演算処理502(第1のバタフライ演算処理)を処理するバタフライ演算処理部である。
第1のバタフライ演算処理部21aは、バタフライ演算処理の結果を、データy(n)(n=0,1,・・・ ,63)として、図6に示されている逐次順序で出力する。
第2のデータ並べ替え処理部200bは、第1のバタフライ演算処理部21aが逐次順序で出力するデータy(n)を、第2のバタフライ演算処理部21bに入力するために、図7に示されているビットリバース順序に並べ替える。
ひねり乗算処理部22は、第1のバタフライ演算処理後に、FFT演算における複素平面上の複素回転を処理する回路であり、図14のデータフロー500におけるひねり乗算処理部504に対応する。なお、ひねり乗算処理では、データの並へ替えは行われない。
第2のバタフライ演算処理部21bは、図14のデータフロー図における、2回目の基数8のバタフライ演算処理部503の処理を行うバタフライ演算処理回路に対応する。第2のバタフライ演算処理部21bは、ビットリバース順序で入力されるひねり乗算処理後のデータy'(n)(n=0,1,・・・ ,63)に対してバタフライ演算処理を行い、その結果X(k)(n=0,1,・・・ ,63)を、同じくビットリバース順序で出力する。
第3のデータ並べ替え処理部200cは、第2のバタフライ演算処理部21bがビットリバース順序で出力するデータX(k)を、図6に示されている逐次順序に並べ替える。
データ並べ替え処理部200は、入力されたデータを一旦記憶し、記憶したデータの選択及び出力を制御することによって、図6に示される逐次順序、図7に示されるビットリバース順序のそれぞれに従ったデータの並べ替え処理が実現される。以下に、データ並べ替え処理部200の具体例を示す。
第1のデータ並べ替え処理部200a、第2のデータ並べ替え処理部200b、及び第3のデータ並べ替え処理部200cは、例えば図8に示されるデータ並べ替え処理部200で実現することができる。
図8を参照すると、データ並べ替え処理部200は、変換回路231、第1のデータ並べ替え部201(第1のデータ並べ替え手段)、第2のデータ並べ替え部204(第2のデータ並べ替え手段)、及び、変換回路232を備えている。
データ並べ替え処理部200は、逐次順序で入力される2の補数表現で表現されたデータを符号絶対値−−表現に変換する。その後、データ並べ替え処理部200は、2段階のステップで、逐次順序からビットリバース順序へのデータ並べ替え処理やビットリバース順序から逐次順序へのデータ並べ替え処理を符号絶対値−−表現で行い、符号絶対値−−表現から2の補数表現に変換して出力する。
以下では、逐次順序からビットリバース順序へのデータ並べ替え処理を例に、具体的に説明する。
変換回路231は、図9に示されている逐次順序で入力される2の補数表現で表現されたデータを符号絶対値−−表現に変換する。なお、図9において、Ps、ps(0)〜ps(7)(s=1,…,8)は、図6と同一である。
次に、第1のデータ並べ替え部201は、1ステップ目の並べ替えとして、変換回路231により符号絶対値−−表現に変換された、図9に示されている「逐次順序」のデータを、符号絶対値−−表現のまま、図10に示されている「中間順序」のデータへ、並べ替えを行う。
図10に示されている「中間順序」は、図9に示されている「逐次順序」において、破線で囲んだ4つのデータから構成されるデータ組の単位で、矢印で示した並べ替えを行った後の順序である。詳細には、図9に示されている「逐次順序」において、
{2, 3, 10, 11}から構成されるデータ組と、{16, 17, 24, 25}から構成されるデータ組との並べ替え、
{4, 5, 12, 13}から構成されるデータ組と、{32, 33, 40, 41}から構成されるデータ組との並べ替え、
{6, 7, 14, 15}から構成されるデータ組と、{48, 49, 56, 57}から構成されるデータ組との並べ替え、
{20, 21, 28, 29}から構成されるデータ組と、{34, 35, 42, 43}から構成されるデータ組との並べ替え、
{22, 23, 30, 31}から構成されるデータ組と、{50, 51, 58, 59}から構成されるデータ組との並べ替え、
{38, 39, 46, 47}から構成されるデータ組と、{52, 53, 60, 61}から構成されるデータ組との並べ替えをそれぞれ行うと、図10に示されている「中間順序」になる。
次に、第2のデータ並べ替え部204は、2ステップ目の並べ替えとして、図10に示されている「中間順序」から、図7に示されている「ビットリバース順序」への並べ替え処理を符号絶対値−−表現のまま行う。
詳細には、図10に示されている「中間順序」において、破線で囲んだ4つのデータから構成される各データ組において、矢印で示した各データ組の内部の並べ替えを行った後の順序である。すなわち、図10に示されている「中間順序」において、
{0, 1, 8, 9}から構成されるデータ組における1と8との並べ替え、
{2, 3, 10, 11}から構成されるデータ組における3と10との並べ替え、
{4, 5, 12, 13}から構成されるデータ組における5と12との並べ替え、
{6, 7, 14, 15}から構成されるデータ組における7と14との並べ替え、
{16, 17, 24, 25}から構成されるデータ組における17と24との並べ替え、
{18, 19, 26, 27}から構成されるデータ組における19と26との並べ替え、
{20, 21, 28, 29}から構成されるデータ組における21と28との並べ替え、
{22, 23, 30, 31}から構成されるデータ組における23と30との並べ替え、
{32, 33, 40, 41}から構成されるデータ組における33と40との並べ替え、
{34, 35, 42, 43}から構成されるデータ組における35と42との並べ替え、
{36, 37, 44, 45}から構成されるデータ組における37と44との並べ替え、
{38, 39, 46, 47}から構成されるデータ組における39と46との並べ替え、
{48, 49, 56, 57}から構成されるデータ組における49と56との並べ替え、
{50, 51, 58, 59}から構成されるデータ組における51と58との並べ替え、
{52, 53, 60, 61}から構成されるデータ組における53と60との並べ替え、
{54, 55, 62, 63}から構成されるデータ組における55と62との並べ替え、
をそれぞれ行うと、図7に示されている「ビットリバース順序」になる。
次に、変換回路232は、第2のデータ並べ替え部204により「ビットリバース順序」に並べ替えられた符号絶対値−−表現で表現されたデータを、2の補数表現に変換する。変換回路232は、変換回路233a〜233hから構成され、並列に入力される2の補数表現で表現されたデータをそれぞれ符号絶対値−−表現に変換する。変換回路233a〜233hは、図4に示した変換回路13で構成することができる。
第1のデータ並べ替え部201は、第1のデータ振り分け部202、4つのRAM(Random Access memory)回路210a、210b、210c、210d、第2のデータ振り分け部203を備えている。
第1のデータ振り分け部202は、8つの入力in0〜in7から、変換回路233a〜233hを介して、8つのデータを同時に入力して、データの振り分け処理を行い、8つの出力205a〜205hへ出力する。
RAM回路210aは、第1のデータ振り分け部202がその出力205a及び205bに出力した2つのデータを入力し、これらを組みにして記憶し、出力206a及び206bに、再び2つのデータとして出力する。
同様に、RAM回路210bは、第1のデータ振り分け部202がその出力205c及び205dに出力した2つのデータを入力しこれらを組みにして記憶し、出力206c及び206dに再び2つのデータとして出力する。
RAM回路210cは、第1のデータ振り分け部202がその出力205e及び205fに出力した2つのデータを入力しこれらを組みにして記憶し、出力206e及び206fに再び2つのデータとして出力する。
RAM回路210dは、第1のデータ振り分け部202がその205g及び205hに出力した2つのデータを入力しこれらを組みにして記憶し、出力206g及び206hに再び2つのデータとして出力する。
第2のデータ振り分け部203は、8つの入力206a〜206hから8つのデータを同時に入力して、データの振り分け処理を行い、8つの出力207a〜207hへ出力する。
第2のデータ並べ替え部204は、4つのデータ組内並べ替え部220a〜220dを備えている。
データ組内並べ替え部220aは、第2のデータ振り分け部203の2つの出力207a、207bからのデータを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、変換回路234a、234bを介して出力out0、out1にそれぞれ出力する。
同様に、データ組内並べ替え部220bは、第2のデータ振り分け部203の2つの出力207c、207dからのデータを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、変換回路234c、234dを介して出力out2、out3にそれぞれ出力する。
データ組内並べ替え部220cは、第2のデータ振り分け部203の2つの出力207e、207fからのデータを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、変換回路234e、234fを介して出力out4、out5にそれぞれ出力する。
データ組内並べ替え部220dは、第2のデータ振り分け部203の2つの出力207g、207hからのデータを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、変換回路234g、234hを介して出力out6、out7にそれぞれ出力する。
変換回路232は、変換回路234a〜234hから構成される。変換回路234a〜234hは、第2の並べ替え部204から並列に出力される符号絶対値−−表現で表現されたデータをそれぞれ入力し、それぞれ2の補数表現に変換する。変換回路234a〜234hは図4に示す変換回路13で構成することができる。
次に、データ並べ替え処理部200の具体的な動作を説明する。図11は、図8に示したデータ並べ替え処理部200の動作を説明するためのタイムチャートである。図11の横軸は時間(サイクル番号で表す)であり、各行は、図8の各部のデータ線(入力、出力)のデータを表している。図11において、サイクル(列)とデータ線(行)の配列の要素の数字:0〜63は、データx(0)・・・、x(63)(例えば図6のデータ組P1、・・・、P8の各データ)を表している。
データ並べ替え処理部200は、t0〜t7の8サイクルにおいて、入力in0〜in7より8並列で、0〜63の64個のデータを逐次順序で入力し、t9〜t16の8サイクルにおいて8並列で、0〜63の64個のデータをビットリバース順序で出力out0〜out7より出力する。
まず、第1のデータ並べ替え手段201の動作の詳細を説明する。第1のデータ並べ替え手段201は、t0〜t7の8サイクルにおいて8並列で、0〜63の64個のデータを逐次順序で入力し、t8〜t15の8サイクルにおいて8並列で、0〜63の64個のデータを中間順序で出力する。
第1のデータ振り分け部202は以下の動作を行う。なお、以下では、動作主体である第1のデータ振り分け部202は省略される。
サイクルt0及びt1において、
in0から入力したデータを出力205aに出力し、
in1から入力したデータを出力205bに出力し、
in2から入力したデータを出力205cに出力し、
in3から入力したデータを出力205dに出力し、
in4から入力したデータを出力205eに出力し、
in5から入力したデータを出力205fに出力し、
in6から入力したデータを出力205gに出力し、
in7から入力したデータを出力205hに出力する。
サイクルt2及びt3において、
in0から入力したデータを出力205cに出力し、
in1から入力したデータを出力205dに出力し、
in2から入力したデータを出力205eに出力し、
in3から入力したデータを出力205fに出力し、
in4から入力したデータを出力205gに出力し、
in5から入力したデータを出力205hに出力し、
in6から入力したデータを出力205aに出力し、
in7から入力したデータを出力205bに出力する。
サイクルt4及びt5において、
in0から入力したデータを出力205eに出力し、
in1から入力したデータを出力205fに出力し、
in2から入力したデータを出力205gに出力し、
in3から入力したデータを出力205hに出力し、
in4から入力したデータを出力205aに出力し、
in5から入力したデータを出力205bに出力し、
in6から入力したデータを出力205cに出力し、
in7から入力したデータを出力205dに出力する。
サイクルt6及びt7において、
in0から入力したデータを出力205gに出力し、
in1から入力したデータを出力205hに出力し、
in2から入力したデータを出力205aに出力し、
in3から入力したデータを出力205bに出力し、
in4から入力したデータを出力205cに出力し、
in5から入力したデータを出力205dに出力し、
in6から入力したデータを出力205eに出力し、
in7から入力したデータを出力205fに出力する。
すわなち、第1のデータ振り分け部202は、サイクルt0からt7において以下の動作を行う。
(1)サイクルt0において、入力in0〜in7から0〜7の8データをそれぞれ入力し、出力205a〜205hに0〜7の8データをそれぞれ出力する。
(2)サイクルt1において、入力in0〜in7から8〜15の8データをそれぞれ入力し、出力205a〜205hに8〜15の8データをそれぞれ出力する。
(3)サイクルt2において、入力in0〜in7から16〜23の8データをそれぞれ入力し、出力205a、205bに22、23、出力205c〜205hに16〜21の8データをそれぞれ出力する。
(4)サイクルt3において、入力in0〜in7から24〜31の8データをそれぞれ入力し、出力205a、205bに30、31、出力205c〜205hに、24〜29の8データをそれぞれ出力する。
(5)サイクルt4において、入力in0〜in7から32〜39の8データをそれぞれ入力し、出力205a〜205dに36〜39、出力205e〜205hに32〜35の8データをそれぞれ出力する。
(6)サイクルt5において、入力in0〜in7から40〜47の8データをそれぞれ入力し、出力205a〜205dに44〜47、出力205e〜205hに40〜43の8データをそれぞれ出力する。
(7)サイクルt6において、入力in0〜in7から48〜55の8データをそれぞれ入力し、出力205a〜205fに50〜55、出力205g、205hに48、49の8データをそれぞれ出力する。
(8)サイクルt7において、入力in0〜in7から56〜63の8データをそれぞれ入力し、出力205a〜205fに58〜63、出力205g、205hに56、57の8データをそれぞれ出力する。
なお、上記(1)〜(8)において、0〜7、8〜15、16〜23、24〜31、32〜39、40〜47、48〜55、56〜63の各8データは、例えば図6のデータ組P1を構成するx(0)〜x(7)、データ組P2を構成するx(8)〜x(15)、データ組P3を構成するx(16)〜x(23)、データ組P4を構成するx(24)〜x(31)、データ組P5を構成するx(32)〜x(39)、データ組P6を構成するx(40)〜x(47)、データ組P7を構成するx(48)〜x(55)、データ組P8を構成するx(56)〜x(63)に対応している。すなわち、データの数字nはx(n)の添え字nを表している。以下、データに関して、同様の表記が用いられる。
以上説明したように、第1のデータ振り分け部202は、並列して同時に入力する8つのデータに対してローテート処理して出力するものであり、例えばシフト回路で容易に実現することができる。例えばin0〜in7からの8データ(データ:7ビット)を並列に記憶保持するレジスタにおいて、例えばサイクルt2及びt3では、2つのデータ分(2×7ビット)右ローテートすることで、in6、in7、in0〜in5のデータをこの順に並べた8データが得られる。サイクルt4及びt5では、例えば4つのデータ分(4×7ビット)、左又は右にローテートすることで、in4〜in7、in0〜in3のデータをこの順に並べた8データが得られる。サイクルt6及びt7では、例えば2つのデータ分(2×7ビット)左ローテートすることで、in2〜in7、in0〜in1のデータをこの順に並べた8データが得られる。並列8データはそれぞれ、出力205a〜205hに出力される。
次に、RAM回路210aは、以下の動作を行う。なお、第1のデータ振り分け部202の出力205a、205bは、RAM回路210aの入力にそれぞれ接続されるため、RAM回路210aに関する説明では、入力205a、205bという。また、動作主体であるRAM回路210aは省略される。RAM回路210b〜210dの入力についても同様とする。
(1)サイクルt0において、入力205a、205bから入力した0,1の2つのデータを、サイクルt8において出力206a、206bに出力する。
(2)サイクルt1において、入力205a、205bから入力した8,9の2つのデータを、サイクルt9において出力206a、206bに出力する。
(3)サイクルt2において入力205a、205bから入力した22,23の2つのデータを、サイクルt14において出力206a、206bに出力する。
(4)サイクルt3において入力205a、205bから入力した30,31の2つのデータを、サイクルt15において出力206a、206bに出力する。
(5)サイクルt4において入力205a、205bから入力した36,37の2つのデータを、サイクルt12において出力206a、206bに出力する。
(6)サイクルt5において入力205a、205bから入力した44,45の2つのデータを、サイクルt13において出力206a、206bに出力する。
(7)サイクルt6において、入力205a、205bから入力した50,51の2つのデータを、サイクルt10において出力206a、206bに出力する。
(8)サイクルt7において入力205a、205bから入力した58,59の2つのデータを、サイクルt11において出力206a、206bに出力する。
同様に、RAM回路210bは、以下の動作を行う。
(1)サイクルt0において入力205c、205dから入力した2,3の2つのデータを、サイクルt10において出力206c、206dに出力する。
(2)サイクルt1において入力205c、205dから入力した10,11の2つのデータを、サイクルt11において出力206c、206dに出力する。
(3)サイクルt2において入力205c、205dから入力した16,17の2つのデータを、サイクルt8において出力206c、206dに出力する。
(4)サイクルt3において入力205c、205dから入力した24,25の2つのデータを、サイクルt9において出力206c、206dに出力する。
(5)サイクルt4において入力205c、205dから入力した38,39の2つのデータを、サイクルt14において出力206c、206dに出力する。
(6)サイクルt5において入力205c、205dから入力した46,47の2つのデータを、サイクルt15において出力206c、206dに出力する。
(7)サイクルt6において入力205c、205dから入力した52,53の2つのデータを、サイクルt12において出力206c、206dに出力する。
(8)サイクルt7において入力205c、205dから入力した60,61の2つのデータを、サイクルt13において出力206c、206dに出力する。
同様に、RAM回路210cは、以下の動作を行う。
(1)サイクルt0において入力205e、205fから入力した4,5の2つのデータを、サイクルt12において出力206e、206fに出力する。
(2)サイクルt1において入力205e、205fから入力した12,13の2つのデータを、サイクルt13において出力206e、206fに出力する。
(3)サイクルt2において入力205e、205fから入力した18,19の2つのデータを、サイクルt10において出力206e、206fに出力する。
(4)サイクルt3において入力205e、205fから入力した26,27の2つのデータを、サイクルt11において出力206e、206fに出力する。
(5)サイクルt4において入力205e、205fから入力した32,33の2つのデータを、サイクルt8において出力206e、206fに出力する。
(6)サイクルt5において入力205e、205fから入力した40,41の2つのデータを、サイクルt9において出力206e、206fに出力する。
(7)サイクルt6において入力205e、205fから入力した54,55の2つのデータを、サイクルt14において出力206e、206fに出力する。
(8)サイクルt7において入力205e、205fから入力した62,63の2つのデータを、サイクルt15において出力206e、206fに出力する。
同様に、RAM回路210dは、以下の動作を行う。
(1)サイクルt0において入力205g、205hから入力した6,7の2つのデータを、サイクルt14において出力206g、206hに出力する。
(2)サイクルt1において入力205g、205hから入力した14,15の2つのデータを、サイクルt15において出力206g、206hに出力する。
(3)サイクルt2において入力205g、205hから入力した20,21の2つのデータを、サイクルt12において出力206g、206hに出力する。
(4)サイクルt3において入力205g、205hから入力した28,29の2つのデータを、サイクルt13において出力206g、206hに出力する。
(5)サイクルt4において入力205g、205hから入力した34,35の2つのデータを、サイクルt10において出力206g、206hに出力する。
(6)サイクルt5において入力205g、205hから入力した42,43の2つのデータを、サイクルt11において出力206g、206hに出力する。
(7)サイクルt6において入力205g、205hから入力した48,49の2つのデータを、サイクルt8において出力206g、206hに出力する。
(8)サイクルt7において入力205g、205hから入力した56,57の2つのデータを、サイクルt9において出力206g、206hに出力する。
次に、第2のデータ振り分け部203は、以下の動作を行う。なお、RAM回路210a〜210dの出力206a〜206hは第2のデータ振り分け部203の入力に接続されるため、第2のデータ振り分け部203の説明では、入力206a〜206hという。また、動作主体である第2のデータ振り分け部203は省略される。
サイクルt8及びt9において、
入力206aから入力したデータを出力207aに出力し、
入力206bから入力したデータを出力207bに出力し、
入力206cから入力したデータを出力207cに出力し、
入力206dから入力したデータを出力207dに出力し、
入力206eから入力したデータを出力207eに出力し、
入力206fから入力したデータを出力207fに出力し、
入力206gから入力したデータを出力207gに出力し、
入力206hから入力したデータを出力207hに出力する。
サイクルt10及びt11において、
入力206aから入力したデータを出力207gに出力し、
入力206bから入力したデータを出力207hに出力し、
入力206cから入力したデータを出力207aに出力し、
入力206dから入力したデータを出力207bに出力し、
入力206eから入力したデータを出力207cに出力し、
入力206fから入力したデータを出力207dに出力し、
入力206gから入力したデータを出力207eに出力し、
入力206hから入力したデータを出力207fに出力する。
サイクルt12及びt13において、
入力206aから入力したデータを出力207eに出力し、
入力206bから入力したデータを出力207fに出力し、
入力206cから入力したデータを出力207gに出力し、
入力206dから入力したデータを出力207hに出力し、
入力206eから入力したデータを出力207aに出力し、
入力206fから入力したデータを出力207bに出力し、
入力206gから入力したデータを出力207cに出力し、
入力206hから入力したデータを出力207dに出力する。
サイクルt14及びt15において、
入力206aから入力したデータを出力207cに出力し、
入力206bから入力したデータを出力207dに出力し、
入力206cから入力したデータを出力207eに出力し、
入力206dから入力したデータを出力207fに出力し、
入力206eから入力したデータを出力207gに出力し、
入力206fから入力したデータを出力207hに出力し、
入力206gから入力したデータを出力207aに出力し、
入力206hから入力したデータを出力207bに出力する。
すわなち、第2のデータ振り分け部203は、以下の動作を行う。
(1)サイクルt0において、入力206a〜206hから0,1,16、17,32,33,48,49の8データをそれぞれ入力し、出力207a〜207hに0,1,16、17,32,33,48,49の8データをそれぞれ出力する。
(2)サイクルt1において、入力206a〜206hから8,9,24,25,40,41,56,57の8データをそれぞれ入力し、出力207a〜207hに8,9,24,25,40,41,56,57の8データをそれぞれ出力する。
(3)サイクルt2において、入力206a〜206hから50,51,2,3,18,19,34,35の8データをそれぞれ入力し、出力207a〜207hに2,3,18,19,34,35,50,51の8データをそれぞれ出力する。
(4)サイクルt3において、入力206a〜206hから58,59,10,11,26,27,42,43の8データをそれぞれ入力し、出力207a〜207hに10,11,26,27,42,43,58,59の8データをそれぞれ出力する。
(5)サイクルt4において、入力206a〜206hから36,37,52,53,4,5,20,21の8データをそれぞれ入力し、出力207a〜207hに4,5,20,21,36,37,52,53の8データをそれぞれ出力する。
(6)サイクルt5において、入力206a〜206hから44,45,60,61,12,13,28,29の8データをそれぞれ入力し、出力207a〜207hに12,13,28,29,44,45,60,61の8データをそれぞれ出力する。
(7)サイクルt6において、入力206a〜206hから22,23,38,39,54,55,6,7の8データをそれぞれ入力し、出力207a〜207hに6,7,22,23,38,39,54,55の8データをそれぞれ出力する。
(8)サイクルt7において、入力206a〜206hから30,31,46,47,62,63,14,15の8データをそれぞれ入力し、出力207a〜207hに14,15,30,31,46,47,62,63の8データをそれぞれ出力する。
第2のデータ振り分け部203も、並列して同時に入力する8つのデータに対して、前述した第1のデータ振り分け部202と同様に、ローテート処理して出力するものであり、例えばシフト回路で容易に実現することができる。
次に、図11を参照して第2のデータ並べ替え部204の動作の詳細を説明する。第2のデータ並べ替え部204は、t8〜t15の8サイクルにおいて8並列で、0〜63の64個のデータを中間順序で入力し、t9〜t16の8サイクルにおいて8並列で、0〜63の64個のデータをビットリバース順序で出力する。
データ組内並べ替え部220aは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220aは省略される。
入力207a、207bから、
サイクルt8において、0,1の2つのデータを入力し、
サイクルt9において、8,9の2つのデータを入力し、
出力out0、out1にそれぞれ接続する変換回路234a、234bに、
サイクルt9において、0,8の2つのデータを出力し、
サイクルt10において、1,9の2つのデータを出力する。
同様に、入力207a、207bから、
サイクルt10において、2,3の2つのデータを入力し、
サイクルt11において、10,11の2つのデータを入力し、
出力out0、out1にそれぞれ接続する変換回路234a、234bに、
サイクルt11において、2,10の2つのデータを出力し、
サイクルt12において、3,11の2つのデータを出力する。
入力207a、207bから、
サイクルt12において、4,5の2つのデータを入力し、
サイクルt13において、12,13の2つのデータを入力し、
出力out0、out1にそれぞれ接続する変換回路234a、234bに、
サイクルt13において、4,12の2つのデータを出力し、、
サイクルt14において、5,13の2つのデータを出力する。
入力207a、207bから、
サイクルt14において、6,7の2つのデータを入力し、
サイクルt15において、14,15の2つのデータを入力し、
出力out0、out1にそれぞれ接続する変換回路234a、234bに、
サイクルt15において、6,14の2つのデータを出力し、
サイクルt16において、7,15の2つのデータを出力する。
データ組内並べ替え部220bは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220bは省略される。
入力207c、207dから、
サイクルt8において、16,17の2つのデータを入力し、
サイクルt9において、24,25の2つのデータを入力し、
出力out2、out3にそれぞれ接続する変換回路234c、234dに、
サイクルt9において、16,24の2つのデータを出力し、
サイクルt10において、17,25の2つのデータを出力する。
同様に、
入力207c、207dから、
サイクルt10において、18,19の2つのデータを入力し、
サイクルt11において、26,27の2つのデータを入力し、
出力out2、out3にそれぞれ接続する変換回路234c、234dに、
サイクルt11において、18,26の2つのデータを出力し、
サイクルt12において、19,27の2つのデータを出力する。
入力207c、207dから、
サイクルt12において、20,21の2つのデータを入力し、
サイクルt13において、28,29の2つのデータを入力し、
出力out2、out3にそれぞれ接続する変換回路234c、234dに、
サイクルt13において、20,28の2つのデータを出力し、
サイクルt14において、21,29の2つのデータを出力する。
入力207c、207dから、
サイクルt14において、22,23の2つのデータを入力し、
サイクルt15において、30,31の2つのデータを入力し、
出力out2、out3にそれぞれ接続する変換回路234c、234dに、
サイクルt15において、22,30の2つのデータを出力し、
サイクルt16において、23,31の2つのデータを出力する。
データ組内並べ替え部220cは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220cは省略される。
入力207e、207fから、
サイクルt8において、32,33の2つのデータを入力し、
サイクルt9において、40,41の2つのデータを入力し、
出力out4、out5にそれぞれ接続する変換回路234e、234fに、
サイクルt9において、32,40の2つのデータを出力し、
サイクルt10において、33,41の2つのデータを出力する。
同様に、
入力207e、207fから、
サイクルt10において、34,35の2つのデータを入力し、
サイクルt11において、42,43の2つのデータを入力し、
出力out4、out5にそれぞれ接続する変換回路234e、234fに、
サイクルt11において、34,42の2つのデータを出力し、
サイクルt12において、35,43の2つのデータを出力する。
入力207e、207fから、
サイクルt12において、36,37の2つのデータを入力し、
サイクルt13において、44,45の2つのデータを入力し、
出力out4、out5にそれぞれ接続する変換回路234e、234fに、
サイクルt13において、36,44の2つのデータを出力し、
サイクルt14において、37,45の2つのデータを出力する。
入力207e、207fから、
サイクルt14において、38,39の2つのデータを入力し、
サイクルt15において、46,47の2つのデータを入力し、
出力out4、out5にそれぞれ接続する変換回路234e、234fに、
サイクルt15において、38,46の2つのデータを出力し、
サイクルt16において、39,47の2つのデータを出力する。
データ組内並べ替え部220dは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220dは省略される。
入力207g、207hから、
サイクルt8において、48,49の2つのデータを入力し、
サイクルt9において、56,57の2つのデータを入力し、
出力out6、out7にそれぞれ接続する変換回路234g、234hに、
サイクルt9において、48,56の2つのデータを出力し、
サイクルt10において、49,57の2つのデータを出力する。
同様に、入力207g、207hから、
サイクルt10において、50,51の2つのデータを入力し、
サイクルt11において、58,59の2つのデータを入力し、
出力out6、out7にそれぞれ接続する変換回路234g、234hに、
サイクルt11において、50,58の2つのデータを出力し、
サイクルt12において、51,59の2つのデータを出力する。
入力207g、207hから、
サイクルt12において、52,53の2つのデータを入力し、
サイクルt13において、60,61の2つのデータを入力し、
出力out6、out7にそれぞれ接続する変換回路234g、234hに、
サイクルt13において、52,60の2つのデータを出力し、
サイクルt14において、53,61の2つのデータを出力する。
入力207g、207hから、
サイクルt14において、54,55の2つのデータを入力し、
サイクルt15において、62,63の2つのデータを入力し、
出力out6、out7にそれぞれ接続する変換回路234g、234hに、
サイクルt15において、54,62の2つのデータを出力し、
サイクルt16において、55,63の2つのデータを出力する。
以上説明したように、第1のデータ並べ替え部201が、逐次順序から中間順序への並べ替えを行い、第2のデータ並べ替え部204が、中間順序からビットリバース順序への並べ替えを行うことで、データ並べ替え処理部200は、逐次順序からビットリバース順序への並べ替えを実現する。
第2のデータ並べ替え部204を構成するデータ組内並べ替え部220a〜220dは、例えば図12に示すデータ組内並べ替え部220で実現することができる。図12を参照すると、データ組内並べ替え部220は、セレクタ回路221、224、225、及び、フリップフロップ222、223から構成される。
図13は、データ組内並べ替え部220の動作を説明するタイムチャートである。図13において、データ組内並べ替え部220は、サイクルt0、t1において、入力in0、in1から、0,1,8,9の4つのデータをデータ組として入力して、データ組内の並べ替え処理を行い、サイクルt1、t2において、出力out0、out1から4つのデータとして、0,8,1,9を出力する。
具体的には、データ組内並べ替え部220では、サイクルt0において、入力in0、in1から0,1の2つのデータを入力し、セレクタ221は、入力in0から入力した0を選択して出力する。また、サイクルt0において、フリップフロップ222は、セレクタ221で選択出力された0を記憶する。フリップフロップ223は、入力in1から入力した1を記憶する。
次のサイクルt1において、入力in0、in1から8,9の2つのデータを入力し、セレクタ221は、入力in1から入力した9を選択出力する。また、サイクルt1において、フリップフロップ222は、サイクルt0で記憶した0を出力するとともに、入力in1から入力した9を記憶する。フリップフロップ223は、サイクルt0で記憶した1を出力する。
また、サイクルt1において、セレクタ224は、フリップフロップ222が出力する0を選択して、出力out0に出力する。セレクタ225は、入力in0から入力した8を選択して、出力out1に出力する。
サイクルt2において、フリップフロップ222は、記憶した9を出力する。フリップフロップ223は、記憶した1を出力する。
また、サイクルt2において、セレクタ224は、フリップフロップ223が出力する1を選択して、出力out0に出力する。セレクタ225は、フリップフロップ222が出力する9を選択して、出力out1に出力する。なお、特に制限されないが、フリップフロップ222、223は、サイクル毎のクロック信号(クロックパルス)CKの立ち上がりでデータ端子のデータを記憶し、該クロックパルスの立ち下がりで出力端子Qから出力するマスタ・スレーブ構成のフリップフロップであってもよい。あるいは、例えばデータ端子Dのデータをクロックパルスの立ち上がりエッジ(又は立ち上がり)に応答して出力端子Qから出力するエッジトリガ型のフリップフロップで構成してもよい。
以上、逐次順序からビットリバース順序への並べ替えを例に、データ並べ替え処理を説明したが、ビットリバース順序から逐次順序への並べ替えについても同様に、符号絶対値−−表現に変換した後、1ステップ目の並べ替えとして、ビットリバース順序から中間順序に並べ替えを行い、2ステップ目の並べ替えとして、中間順序から逐次順序に中部替えを行う、2段階のステップで実現することができる。
(第2の実施形態の効果)
以上のように、本実施形態では、FFT装置20は、バタフライ演算において必要なデータの並べ替え処理である、「逐次順序」から、「ビットリバース順序」への並べ替えや、「ビットリバース順序」から「逐次順序」への並べ替えを、符号絶対値−−表現に変換した後、「中間順序」を介した2段階のステップで実現する。そのため、2の補数表現のまま並べ替え処理を行うのに対して、第1のデータ並べ替え部201や第2のデータ並べ替え部204を構成するRAM回路、フリップフロップ回路やセレクタ回路などの回路の動作率を低減することができる。
また、2の補数表現と符号絶対値−−表現との変換処理は、ビット反転処理のみで実現することができ、符号絶対値表現で必要とされた1加算処理(インクリメント処理)は不要である。
ビット反転回路は、XOR回路のみで実現できるので、他の論理処理回路や演算処理回路と比較して圧倒的に小さい回路規模で実現することができる。
従って、本実施形態では、値0の近傍で正と負とで頻繁に変化する信号を処理する場合でも、データの並べ替え処理における回路の動作率を小さくすることができるため、データ並べ替え処理部における消費電力を低減することができる。
一方、本実施形態では、バタフライ演算処理やひねり乗算処理はバラフライ演算処理部やひねり乗算処理部において2の補数表現のまま処理される。
そのため、これら演算処理に係る回路の動作率は低減されない。符号絶対値表現を適用した場合のようにデータ表現形式間の変換により回路規模が増大することはない。従って、データの並べ替え処理に係る消費電力が小さくなる分だけ、FFT装置全体の消費電力を低減することができる。
図18は、上記した第1、第2の実施形態の装置10、20の処理、機能をプログラムで実現する一形態を模式的に例示する図である。図18を参照すると、プロセッサ装置300は、プロセッサ301と、プロセッサ301で実行されるプログラム(命令群とデータ等)を記憶するプログラム記憶部302と、プロセッサ301によるデータの書き込み読み出しが行われるRAM303(第2の実施形態の図8のRAM回路210として機能してもよい)と、入力端子INから入力データを受信しプロセッサ301に供給する第1のインタフェース(インタフェース1)304と、プロセッサ301から出力されるデータを受け出力端子OUTから出力する第2のインタフェース(インタフェース2)305を備えている。プロセッサ301は、デジタル信号プロセッサ(Digital Signal Processor)等であってもよいし、無線通信用等のFFTプロセッサであってもよい。プログラム記憶部302は、ROM(Read-Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、あるいは、HDD(Hard Disk Drive)、USB(Universal Serial Bus)メモリ等であってもよい。プログラム記憶部302は、プロセッサ301のファームウェアを記憶する構成であってもよい。RAM303はプロセッサ301に内蔵される構成としてもよい。第1のインタフェース304は、入力回路(又は受信回路)と入力バッファ(受信バッファ)を備え、第2のインタフェース305は、出力バッファ(送信バッファ)と出力回路(送信回路)を備えた構成としてもよい。第1、第2のインタフェース304、305は、入出力回路(送受信回路(transceiver))を備えた一つのインタフェース回路としてもよい。プロセッサ301がプログラム記憶部302に記憶されたプログラムを実行することで、前記第1、第2の実施形態と同様の効果を奏することができる。なお、図18は単に説明のために、プロセッサ装置300の各部301〜305の構成を例示したが、これらの各部の一部又は全てをプロセッサ301に含める1チップ構成としてもよいことは勿論である。
なお、上記の特許文献1−3、非特許文献1、2の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
10 信号処理装置
11、11a、11b、11c 記憶処理部
12a、12b 演算処理部
13、13a、13b 変換回路
14 記憶回路
17 XOR回路
20 FFT装置
21a、21b バタフライ演算処理部
22 ひねり乗算処理部
200、200a〜200c データ並べ替え処理部
200 データ並べ替え処理部
201 第1のデータ並べ替え部(手段)
202 第1のデータ振り分け部
203 第2のデータ振り分け部
204 第2のデータ並べ替え部(手段)
205a〜205h 出力(第1のデータ振り分け部の出力データ)
206a〜205h 出力(RAM回路の出力データ)
207a〜207h 出力(第2のデータ振り分け部の出力データ)
210a〜210d RAM回路
220 データ組内並べ替え部
220a〜220d データ組内並べ替え部
221、224、225 セレクタ回路
222、223 フリップフロップ
231、232、233a〜233h、234a〜234h 変換回路
300 プロセッサ装置
301 プロセッサ
302 プログラム記憶部
303 RAM
304 第1のインタフェース
305 第2のインタフェース
500 データフロー
501 データ並べ替え処理部
502、503 バタフライ演算処理部
504 ひねり乗算処理部
505a〜505h 部分データフロー
600 変換回路
601 ビット反転回路
602 1加算回路

Claims (6)

  1. 並列にN個(Nは2のべき乗)をNサイクル分入力しN×Nポイント高速フーリエ変換又は逆高速フーリエ変換を行う信号処理装置であって、
    第1乃至第3のデータ並べ替え処理部と、
    第1及び第2のバタフライ演算処理部
    データにひねり係数を乗算する処理を行うひねり乗算処理部と
    を備え、
    前記第1のデータ並べ替え処理部は、逐次順序で並列に入力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1のバタフライ演算処理部は、前記第1のデータ並べ替え処理部から並列に出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第2のデータ並べ替え処理部は、前記第1のバタフライ演算処理部から逐次順序で並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記ひねり乗算処理部は、前記第2のバタフライ演算処理部から出力されるデータに対して対応するひねり係数を乗算し、
    前記第2のバタフライ演算処理部は、前記ひねり乗算処理部から出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第3のデータ並べ替え処理部は、前記第2のバタフライ演算処理部から並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序のデータを逐次順序のデータに並べ替え、前記逐次順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1及び第2のバタフライ演算処理部と前記ひねり乗算処理部は、2の補数表現により表現されたデータに対して演算処理を行い、
    前記第1乃至第3のデータ並べ替え処理部は、第2の表現形式により表現された複数のデータの順序の並べ替えを行い、
    前記第2の表現形式は、データ値が正または0の場合は2の補数表現と同一であり、
    データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である、ことを特徴とする信号処理装置。
  2. 前記第1乃至第3の各データ並べ替え処理部において、
    各サイクルごとN個のデータを並列にNサイクル分入力し、
    並列に入力したN個の2の補数表現のデータを前記第2の表現形式に変換してN個並列に出力する第1の変換部と
    前記第1の変換部から並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、循環的にシフトしたデータをN個並列に出力する第1の振り分け部と、
    前記第1の振り分け部から並列に出力されるN個のデータをNサイクル分、N行N列に記憶し、隣接する2×2のデータを要素の単位としたN/2行、N/2列について、各行毎、対応する列の置換を行った上で、1列目からN列目まで、N行ごとデータを並列に出力する、N/2個のメモリと、
    前記N/2個のメモリから順次並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、前記第1の振り分け部と反対方向に循環的にシフトしたデータをN個並列に出力する第2の振り分け部と、
    を備え、
    前記第2の振り分け部から並列に出力されるN個のNサイクル分のデータを、隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列とすると、該行列は、各サイクルごとN個のデータを並列にNサイクル分入力したデータの隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列の対角成分に対して対称に隣接する2×2のデータ組の要素を入れ替えたものとされ、
    各々が、前記第2の振り分け部から並列に出力されるN個のデータの隣り合う各2つのデータからなるN/2個のデータ組の各々について、連続する2サイクル分からなる2×2のデータのうち前のサイクルの2番目のデータと後のサイクルの1番目のデータとの並べ替えを行い、並べ替え後のN/2個のデータ組を各サイクルごと並列に出力する、N/2個の並べ替え部を備え、
    前記N/2個の並べ替え部からN個並列に出力される第iサイクルの第j番目のデータは、N個のデータをNサイクル分入力したデータの第jサイクルの第i番目のデータであり、
    前記N/2個の並べ替え部から出力されるN個のデータを前記第2の表現形式から2の補数表現に変換して並列に出力する第2の変換部を備えた、ことを特徴とする請求項に記載の信号処理装置。
  3. 並列にN個(Nは2のべき乗)をNサイクル分入力しN×Nポイント高速フーリエ変換又は逆高速フーリエ変換を行う信号処理方法であって、
    第1乃至第3のデータ並べ替え処理と、
    第1及び第2のバタフライ演算処理と、
    ひねり乗算処理と、
    を含み、
    前記第1のデータ並べ替え処理は、逐次順序で並列に入力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1のバタフライ演算処理は、前記第1のデータ並べ替え処理から並列に出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第2のデータ並べ替え処理は、前記第1のバタフライ演算処理から逐次順序で並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記ひねり乗算処理は、前記第2のバタフライ演算処理から出力されるデータに対して対応するひねり係数を乗算し、
    前記第2のバタフライ演算処理は、前記ひねり乗算処理から出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第3のデータ並べ替え処理は、前記第2のバタフライ演算処理から並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序のデータを逐次順序のデータに並べ替え、前記逐次順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1及び第2のバタフライ演算処理と前記ひねり乗算処理は、2の補数表現により表現されたデータに対して演算処理を行い、
    前記第1乃至第3のデータ並べ替え処理は、第2の表現形式により表現された複数のデータの順序の並べ替えを行い、
    前記第2の表現形式は、データ値が正または0の場合は2の補数表現と同一であり、
    データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である、ことを特徴とする信号処理方法。
  4. 前記第1乃至第3の各データ並べ替え処理は、
    各サイクルごとN個のデータを並列にNサイクル分入力し、
    並列に入力したN個の2の補数表現のデータを前記第2の表現形式に変換してN個並列に出力する第1の変換処理と、
    前記第1の変換処理から並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、循環的にシフトしたデータをN個並列に出力する第1の振り分け処理と、
    前記第1の振り分け処理から並列に出力されるN個のデータをNサイクル分、N行N列をメモリに記憶し、前記メモリに記憶された、隣接する2×2のデータ組を要素の単位としたN/2行、N/2列について、各行毎、対応する列の置換を行った上で、1列目からN列目まで、N行ごとデータを並列に出力する処理と、
    順次並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、前記第1の振り分け処理と反対方向に循環的にシフトしたデータをN個並列に出力する第2の振り分け処理と、
    を含み、
    前記第2の振り分け処理から並列に出力されるN個のNサイクル分のデータを、隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列とすると、該行列は、各サイクルごとN個のデータを並列にNサイクル分入力したデータの隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列の対角成分に対して対称に隣接する2×2のデータ組の要素を入れ替えたものとされ、
    各々が、前記第2の振り分け処理から並列に出力されるN個のデータの隣り合う各2つのデータからなるN/2個のデータ組の各々について、連続する2サイクル分からなる2×2のデータ組のうち前のサイクルの2番目のデータと後のサイクルの1番目のデータとの並べ替えを行い、並べ替え後のN/2個のデータ組を各サイクルごと並列に出力する、N/2個の並べ替え処理をさらに含み、
    前記N/2個の並べ替え処理からN個並列に出力される第iサイクルの第j番目のデータは、N個のデータをNサイクル分入力したデータの第jサイクルの第i番目のデータであり、
    前記N/2個の並べ替え処理から出力されるN個のデータを前記第2の表現形式から2の補数表現に変換して並列に出力する第2の変換処理を含む、ことを特徴とする請求項に記載の信号処理方法。
  5. 並列にN個(Nは2のべき乗)をNサイクル分入力しN×Nポイント高速フーリエ変換又は逆高速フーリエ変換をコンピュータに実行させるプログラムであって、
    第1及び第2のバタフライ演算処理と、
    ひねり乗算処理と、
    第1及び第3のデータ並べ替え処理を、
    含み、
    前記第1のデータ並べ替え処理は、逐次順序で並列に入力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1のバタフライ演算処理は、前記第1のデータ並べ替え処理から並列に出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第2のデータ並べ替え処理は、前記第1のバタフライ演算処理から逐次順序で並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序に並べ替え、ビットリバース順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記ひねり乗算処理は、前記第2のバタフライ演算処理から出力されるデータに対して対応するひねり係数を乗算し、
    前記第2のバタフライ演算処理は、前記ひねり乗算処理から出力されるN個のデータのバタフライ演算を行い、前記バタフライ演算の結果のN個のデータを並列に出力し、
    前記第3のデータ並べ替え処理は、前記第2のバタフライ演算処理から並列に出力されるN個のデータをNサイクル分入力し、ビットリバース順序のデータを逐次順序のデータに並べ替え、前記逐次順序に並べ替えたデータを、N個並列にNサイクル分出力し、
    前記第1及び第2のバタフライ演算処理と前記ひねり乗算処理は、2の補数表現により表現されたデータに対して演算処理を行い、
    前記第1乃至第3のデータ並べ替え処理は、第2の表現形式により表現された複数のデータの順序の並べ替えを行い、
    前記第2の表現形式は、データ値が正または0の場合は2の補数表現と同一であり、
    データ値が負の場合は、2の補数表現から符号を示す最上位ビットよりも下位の全ビットを反転した表現形式である、プログラム。
  6. 前記第1乃至第3の各データ並べ替え処理は、
    各サイクルごとN個のデータを並列にNサイクル分入力し、
    並列に入力したN個の2の補数表現のデータを前記第2の表現形式に変換してN個並列に出力する第1の変換処理と、
    前記第1の変換処理から並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、循環的にシフトしたデータをN個並列に出力する第1の振り分け処理と、
    前記第1の振り分け処理から並列に出力されるN個のデータをNサイクル分、N行N列をメモリに記憶し、前記メモリに記憶された、隣接する2×2のデータ組を要素の単位としたN/2行、N/2列について、各行毎、対応する列の置換を行った上で、1列目からN列目まで、N行ごとデータを並列に出力する処理と、
    順次並列に出力されるN個のデータの1サイクル目からNサイクルまで2サイクルごと、シフト量を0から順次2データ分増加させ、前記第1の振り分け処理と反対方向に循環的にシフトしたデータをN個並列に出力する第2の振り分け処理と、
    を含み、
    前記第2の振り分け処理から並列に出力されるN個のNサイクル分のデータを、隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列とすると、該行列は、各サイクルごとN個のデータを並列にNサイクル分入力したデータの隣接する2×2のデータ組を要素の単位としたN/2行、N/2列の行列の対角成分に対して対称に隣接する2×2のデータ組の要素を入れ替えたものとされ、
    各々が、前記第2の振り分け処理から並列に出力されるN個のデータの隣り合う各2つのデータからなるN/2個のデータ組の各々について、連続する2サイクル分からなる2×2のデータ組のうち前のサイクルの2番目のデータと後のサイクルの1番目のデータとの並べ替えを行い、並べ替え後のN/2個のデータ組を各サイクルごと並列に出力する、N/2個の並べ替え処理をさらに含み、
    前記N/2個の並べ替え処理からN個並列に出力される第iサイクルの第j番目のデータは、N個のデータをNサイクル分入力したデータの第jサイクルの第i番目のデータであり、
    前記N/2個の並べ替え処理から出力されるN個のデータを前記第2の表現形式から2の補数表現に変換して並列に出力する第2の変換処理を含む、請求項に記載のプログラム。
JP2019562102A 2017-12-27 2018-12-26 信号処理装置、方法、プログラムと記録媒体 Active JP6930607B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017250740 2017-12-27
JP2017250740 2017-12-27
PCT/JP2018/047828 WO2019131754A1 (ja) 2017-12-27 2018-12-26 信号処理装置、方法、プログラムと記録媒体

Publications (2)

Publication Number Publication Date
JPWO2019131754A1 JPWO2019131754A1 (ja) 2020-12-24
JP6930607B2 true JP6930607B2 (ja) 2021-09-01

Family

ID=67067546

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019562102A Active JP6930607B2 (ja) 2017-12-27 2018-12-26 信号処理装置、方法、プログラムと記録媒体

Country Status (3)

Country Link
US (1) US11604852B2 (ja)
JP (1) JP6930607B2 (ja)
WO (1) WO2019131754A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301542B2 (en) * 2019-05-15 2022-04-12 Nxp B.V. Methods and apparatuses involving fast fourier transforms processing of data in a signed magnitude form
CN115344526B (zh) * 2022-08-16 2023-04-18 江南信安(北京)科技有限公司 一种数据流架构的硬件加速方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62221071A (ja) 1986-03-20 1987-09-29 Toyota Central Res & Dev Lab Inc バタフライ演算回路及びそれを用いた高速フ−リエ変換装置
JPH06100961B2 (ja) * 1988-04-18 1994-12-12 富士通テン株式会社 デジタル信号処理プロセッサ
JPH0736666A (ja) 1993-07-22 1995-02-07 Sharp Corp デジタル信号処理装置
JPH08137832A (ja) 1994-11-07 1996-05-31 Fujitsu Ltd バタフライ演算回路および同回路を用いた高速フーリエ変換装置
JP2001056806A (ja) 1999-06-10 2001-02-27 Matsushita Electric Ind Co Ltd 高速フーリエ変換装置
JP2001306547A (ja) * 2000-04-21 2001-11-02 Sony Corp 演算装置及び演算方法
JP2003101415A (ja) * 2001-09-19 2003-04-04 Seiko Epson Corp データ変換装置、データ生成装置、データ変換プログラム及びデータ生成プログラム、並びにデータ変換方法及びデータ生成方法
JP2004133617A (ja) 2002-10-09 2004-04-30 Sony Corp 回路構成方法、その装置およびそのプログラムと、その演算回路
US7660840B2 (en) * 2003-09-29 2010-02-09 Broadcom Corporation Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly
JP2005184310A (ja) 2003-12-18 2005-07-07 Matsushita Electric Ind Co Ltd 輪郭補正装置
JP5366625B2 (ja) 2009-04-09 2013-12-11 キヤノン株式会社 データ伝送装置およびデータ伝送方法
JP5549442B2 (ja) 2010-07-14 2014-07-16 三菱電機株式会社 Fft演算装置
JP5763911B2 (ja) 2010-12-07 2015-08-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ルートi(√i)演算の保持を特徴とする基数8固定小数点FFT論理回路
US9727531B2 (en) 2012-11-26 2017-08-08 Nec Corporation Fast fourier transform circuit, fast fourier transform processing method, and program recording medium
US9785614B2 (en) * 2013-01-23 2017-10-10 Nec Corporation Fast Fourier transform device, fast Fourier transform method, and recording medium storing fast Fourier transform program
JP6288089B2 (ja) * 2013-07-23 2018-03-07 日本電気株式会社 デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
WO2015087497A1 (ja) 2013-12-13 2015-06-18 日本電気株式会社 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラムが記憶された記憶媒体

Also Published As

Publication number Publication date
WO2019131754A1 (ja) 2019-07-04
US11604852B2 (en) 2023-03-14
JPWO2019131754A1 (ja) 2020-12-24
US20200334321A1 (en) 2020-10-22

Similar Documents

Publication Publication Date Title
JP6288089B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
Garrido et al. Optimum circuits for bit reversal
JP6930607B2 (ja) 信号処理装置、方法、プログラムと記録媒体
JP6256348B2 (ja) 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム
JP5763911B2 (ja) ルートi(√i)演算の保持を特徴とする基数8固定小数点FFT論理回路
JP4160564B2 (ja) 処理速度の向上した高速フーリエ変換装置およびその処理方法
JP6489021B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラム
JP6977883B2 (ja) 信号処理装置、方法、プログラム
JPWO2011036918A1 (ja) データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法
JP6943283B2 (ja) 高速フーリエ変換装置、データ並べ替え処理装置、高速フーリエ変換処理方法およびプログラム
JP6992745B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびデジタルフィルタ処理プログラム
JP6451647B2 (ja) 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム
JP4405452B2 (ja) 逆変換回路
CN109753629B (zh) 多粒度并行fft计算装置
WO2020195239A1 (ja) デジタルフィルタ装置、デジタルフィルタ装置の動作方法及びプログラムを格納した非一時的なコンピュータ可読媒体
WO2015045310A1 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラムを格納する記憶媒体
JP2023131901A (ja) 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム
JP7052874B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2022152001A (ja) 高速フーリエ変換装置及びデジタルフィルタ装置
Minotta et al. Embedded FFT hardware algorithm development using automated bi-dimensional scalable folding
JP2010072981A (ja) 複素数の積和演算装置および積和演算方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200626

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210527

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6930607

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150