JP6977883B2 - 信号処理装置、方法、プログラム - Google Patents

信号処理装置、方法、プログラム Download PDF

Info

Publication number
JP6977883B2
JP6977883B2 JP2020521241A JP2020521241A JP6977883B2 JP 6977883 B2 JP6977883 B2 JP 6977883B2 JP 2020521241 A JP2020521241 A JP 2020521241A JP 2020521241 A JP2020521241 A JP 2020521241A JP 6977883 B2 JP6977883 B2 JP 6977883B2
Authority
JP
Japan
Prior art keywords
data
processing
representation
circuit
input
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
JP2020521241A
Other languages
English (en)
Other versions
JPWO2019225576A1 (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 JPWO2019225576A1 publication Critical patent/JPWO2019225576A1/ja
Application granted granted Critical
Publication of JP6977883B2 publication Critical patent/JP6977883B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Landscapes

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

Description

[関連出願についての記載]
本発明は、日本国特許出願:特願2018−097761号(2018年5月22日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、信号処理装置、方法、プログラムに関する。
デジタル信号処理において重要な処理の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に分解して行われる。
図26には、Prime Factor法を利用して2段階の基数8のバタフライ処理に分解された、64ポイントFFTのデータフロー500が示されている。データフロー500は、データ並べ替え処理部501、バタフライ演算処理部502、503からなる延べ16回の基数8のバタフライ演算処理、及び、ひねり係数{Wk}(W=exp(-2πj/N), j2=-1)を乗算するひねり乗算処理部504を含む(図26では、ひねり係数は(W0, W1,…,W),…,(W0, W,…,W49))。
図26のデータフローでは、入力された時間領域のデータx(n)(n=0,1,・・・ ,63)が、FFT処理により、周波数領域の信号X(k)(k=0,1,・・・,63)にフーリエ変換される。図26では、一部のデータフローの図示は省略されている。なお、図26のデータフローは、IFFT処理を行う場合についても、基本構成は同じである。
図26のデータフローのすべてを回路で実現するためには、膨大な規模の回路を要する。そのため、必要な処理性能に応じて、データフローの一部分の処理を実現する回路を繰り返し使用することで、FFT処理の全体を実現する方法が一般的である。
例えば、図26のデータフローにおいて、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の近傍におけるビット単位の動作率が小さいデジタルデータの表現方法として、符号絶対値表現がある。図27には、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加算処理(インクリメント処理)が必要になる。
図28には、2の補数表現と符号絶対値表現との変換回路600の構成例が示されている。変換回路600は、ビット反転回路601と1加算回路602とを接続して構成される。変換回路600において、特に、1加算回路602の回路規模は、他の論理処理回路や演算処理回路と比較して無視できない規模となる。このため、変換処理が多く必要になる場合、その変換回路の分だけ、回路全体の回路規模や消費電力が大きくなる、という問題がある。
したがって、本発明は、上記課題に鑑みて創案されたものであって、その目的は、回路全体の回路規模や消費電力の増大を抑制又は低減可能とする信号処理装置、方法、プログラムを提供することを目的とする。
本発明の1つの側面によれば、信号処理装置は、演算処理を行う演算処理部と、記憶処理を行う記憶処理部とを備え、データ表現形式として2の補数表現と、2の補数表現と異なる第2の表現形式との双方を使用して処理を行う。前記第2の表現形式は、データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である。前記演算処理部は2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う。前記記憶処理部は前記第2の表現形式により表現されたデータに対して記憶処理を行う。
本発明の1つの側面によれば、バタフライ演算処理を行うバタフライ演算処理部と、ひねり乗算処理を行うひねり乗算処理部と、複数のデータの順序を並べ替えるデータ並べ替え処理部と、を備え、データ表現形式として2の補数表現と、2の補数表現と異なる第2の表現形式の双方を使用して演算処理を行うことで高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換(FFT)装置が提供される。前記第2の表現形式は、データ値が正又は0の場合は2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現である。前記バタフライ演算処理部は、2の補数表現により表現されたデータに対して処理を行う。前記データ並べ替え処理部は、前記第2の表現形式により表現されたデータに対して記憶処理を行う。前記ひねり乗算処理部は、乗算処理については前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して処理を行い、加算処理については2の補数表現により表現されたデータに対して処理を行う。前記補正処理は、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、前記Nビット(Nは正整数)のデータのうち、最下位ビットからMビット(MはM≦Nの正整数)に対して値1を加算する処理を行う。
本発明の1つの側面によれば、2の補数表現と異なる第2の表現形式により表現されたデータに対して記憶処理を行う工程と、2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う工程と、を含む信号処理方法が提供される。前記第2の表現形式は、データ値が正又は0の場合は、2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である。
本発明の1つの側面によれば、データ値が正又は0の場合は、2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である第2の表現形式により表現されたデータに対する記憶処理と、2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対する演算処理と、をプロセッサに実行させるプログラムが提供される。本発明によれば、該プログラムを記録した、半導体メモリやHDD(Hard Disk Drive)、CD(Compact Disk)、DVD(Digital Versatile Disk)等の非一時的なコンピュータ読み出し可能な媒体(non-transitory computer-readable medium)が提供される。
本発明によれば、回路全体の回路規模や消費電力の増大を抑制又は低減可能としている。
本発明の第1の例示的な実施形態に係る信号処理装置の構成例を説明する図である。 本発明の第1の例示的な実施形態に係るデータ表現形式の一例を表形式で示す図である。 本発明の第1の例示的な実施形態に係る記憶処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る変換回路の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る演算処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る記憶処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る演算処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る補正回路の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る演算回路の構成を説明する図である。 本発明の第1の例示的な実施形態に係る記憶処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る演算処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る演算処理部の構成例を説明する図である。 本発明の第1の例示的な実施形態に係る記憶処理部の構成例を説明する図である。 本発明の第2の例示的な実施形態に係るFFT装置の構成例を説明する図である。 本発明の第2の例示的な実施形態に係るFFT処理における逐次順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の例示的な実施形態に係るFFT処理におけるビットリバース順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の例示的な実施形態に係るデータ並べ替え処理部の構成例を説明する図である。 本発明の第2の例示的な実施形態に係るデータ並べ替え処理部の構成例を説明する図である。 本発明の第2の例示的な実施形態に係るデータ並べ替え部の構成例を説明する図である。 本発明の第2の例示的な実施形態に係る逐次順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の例示的な実施形態に係る中間順序に従うデータ組の配列を模式的に示す図である。 本発明の第2の例示的な実施形態に係るデータ並べ替え部の動作を説明するタイムチャートである。 本発明の第2の例示的な実施形態に係るデータ並べ替え部の構成例を説明する図である。 本発明の第2の例示的な実施形態に係るデータ組内並べ替え部の動作を説明するタイムチャートである。 本発明の第2の例示的な実施形態に係るひねり乗算処理部の構成例を説明する図である。 64ポイントFFT処理のデータフローを説明する図である。 データ表現形式の一例を表形式で示した図である。 変換回路の構成例を説明する図である。 (A)乃至(C)は本発明の例示的な第1の実施形態に係る方法の一形態を説明する図である。 本発明の実施形態として、コンピュータプログラムの一形態を説明する図である。
(第1の例示的な実施形態)
図1は、本発明の第1の例示的な実施形態に係る信号処理装置(信号処理回路)100の構成例を説明する図である。信号処理装置100は、信号データのバッファリング処理、リタイミング処理や並べ替え処理等の記憶処理を行う記憶処理部として、第1の記憶処理部101と、第2の記憶処理部103と、第3の記憶処理部105と、第4の記憶処理部108とを備えている。また、信号処理装置100は、加減算や乗除算等の演算処理を行う演算処理部として、第1の演算処理部102と、第2の演算処理部104と、第3の演算処理部106と、第4の演算処理部107とを備えている。なお、複数の記憶処理部を1つのユニット内に備えた構成としてもよい。また、複数の演算処理部を1つのユニット内に備えた構成としてもよい。
第1の記憶処理部101は、信号処理装置100の外部から、2の補数表現により表現された信号データを入力して記憶処理を行い、2の補数表現により表現された信号データを第1の演算処理部102に出力する。
第1の演算処理部102は、第1の記憶処理部101から、2の補数表現により表現された信号データを入力して演算処理を行い、2の補数表現により表現された信号データを第2の記憶処理部103に出力する。
第2の記憶処理部103は、第1の演算処理部102から2の補数表現により表現された信号データを入力して記憶処理を行い、符号絶対値−−表現により表現された信号データを第2の演算処理部104に出力する。
第2の演算処理部104は、第2の記憶処理部103から、符号絶対値−−表現により表現された信号データを入力して演算処理を行い、符号絶対値−−表現により表現された信号データを第3の記憶処理部105に出力する。
第3の記憶処理部105は、第2の演算処理部104から符号絶対値−−表現により表現された信号データを入力して記憶処理を行い、符号絶対値−−表現により表現された信号データを第3の演算処理部106に出力する。
第3の演算処理部106は、第3の記憶処理部105から、符号絶対値−−表現により表現された信号データを入力して演算処理を行い、2の補数表現により表現された信号データを第4の演算処理部107に出力する。
第4の演算処理部107は、第3の演算処理部106から、2の補数表現により表現された信号データを入力して演算処理を行い、符号絶対値−−表現により表現された信号データを第4の記憶処理部108に出力する。
第4の記憶処理部108は、第4の演算処理部107から、符号絶対値−−表現により表現された信号データを入力して記憶処理を行い、2の補数表現により表現された信号データを信号処理装置100の外部に出力する。
ここで、本発明に係る符号絶対値−−表現は、
データの値が正又は0の場合(非負の場合)、該データの2の補数表現と同一であり、
データの値が負の場合は、該データの2の補数表現に対して符号を示す最上位ビット以外のビットを反転した表現である。
図2に、符号絶対値−−表現とその比較として、2の補数表現、及び符号絶対値表現による、6ビットの信号データにおける+15〜−16の信号値の2進数表現を示す。
図2において、データ値が正の場合、符号絶対値−−表現、2の補数表現、及び符号絶対値表現ともすべて同一のビット表現である。データ値が0の場合、符号絶対値−−表現と2の補数表現は同一のビット表現である。データ値が負の場合、符号絶対値−−表現は2の補数表現から、符号を示す最上位ビット以外のビットを反転した表現である。同様に、データ値が負の場合、2の補数表現は、符号絶対値−−表現から、符号を示す最上位ビット以外のビットを反転した表現である。「符号絶対値−−表現」は、本願特許請求の範囲の「第2の表現形式」に対応する。
図2に示すように、符号絶対値−−表現は、符号絶対値表現と同様に、値0を境界として、正の値と負の値との間でビット値の差異が小さい。したがって、値0の近傍で正と負とで頻繁に変化する信号を表現した場合でも、ビット単位の動作率は小さい、という特徴がある。例えば、+1("00001")から−2("10001")に変化した場合、最上位ビットの1ビットのみが遷移することになる。
図3は、第1の記憶処理部101の構成例を示す図である。図3を参照すると、第1の記憶処理部101は、変換回路10aと、記憶回路30と、変換回路10bとを備えている。変換回路10aは、入力する2の補数表現で表現された信号データを、符号絶対値−−表現で表現された信号データに変換して出力する回路である。
記憶回路30は、変換回路10aが出力する符号絶対値−−表現で表現された信号データを入力して符号絶対値−−表現のまま記憶処理を行い、符号絶対値−−表現のまま変換回路10bに出力する回路である。
変換回路10bは、記憶回路30が出力する符号絶対値−−表現で表現された信号データを、2の補数表現で表現された信号データに変換して出力する回路である。
変換回路10a、10bは、例えば図4に示す変換回路10で実現することができる。変換回路10は、Nビット(Nは正の整数)の信号データを入力して、2の補数表現から符号絶対値−−表現へ、又は、符号絶対値−−表現から2の補数表現へ、変換して出力する回路である。
図4を参照すると、変換回路10は、入力IN[N-1]から入力する符号を示す最上位ビットはそのまま符号ビットとしてOUT[N-1]に出力する。入力IN[0]〜IN[N-2]は、XOR(exclusive OR:排他的論理和)回路17〜17N-2の第1端子にそれぞれ入力される。入力IN[N-1]から入力する符号を示す最上位ビットは、XOR回路17〜17N-2の第2端子に入力される。XOR回路17〜17N-2は第1端子と第2端子の入力の排他的論理和演算結果を出力OUT[0]〜OUT[N-2]にそれぞれ出力する。
入力するデータ値が正又は0の場合、入力IN[N-1]から入力する符号を示す最上位ビットは値0であり、出力OUT[0]〜OUT[N-2]には、入力IN[0]〜IN[N-2]に入力されたデータ値がそのまま出力される。
一方、入力するデータ値が負の場合、入力IN[N-1]から入力する符号を示す最上位ビットは値1であり、XOR回路17〜17N-2における第1端子と第2端子の入力の排他的論理和処理により、出力OUT[0]〜OUT[N-2]には、入力IN[0]〜IN[N-2]に入力されたデータ値を反転したデータが出力される。
以上の処理により、変換回路10は、入力IN[0]〜IN[N-1]に入力された2の補数表現で表現された信号データ(IN[N-1]は符号ビット)を符号絶対値−−表現に変換し、符号絶対値−−表現の信号データを出力OUT[0]〜OUT[N-1]から出力する(OUT[N-1]は符号ビット)。また、入力IN[0]〜IN[N-1]に入力された符号絶対値−−表現で表現された信号データ(IN[N-1]は符号ビット)を2の補数表現に変換し、2の補数表現の信号データを出力OUT[0]〜OUT[N-1]から出力する(OUT[N-1]は符号ビット)。
以上のように、変換回路10において、2の補数表現と符号絶対値−−表現との変換は、ビット反転処理のみで実現することができる。すなわち、変換回路10において、符号絶対値表現で必要とされた1加算処理(インクリメント処理)は必要とされない。ビット反転処理は、排他的論理和のみで実現できる。このため、他の論理処理回路や演算処理回路と比較して、圧倒的に小さい回路規模で、変換回路10を実現することができる。
図5は、第1の演算処理部102の構成例を示す図である。第1の演算処理部102は、演算回路40を備えている。演算回路40は、入力する2の補数表現で表現された信号データに対して演算処理を行い、その結果を2の補数表現で表現された信号データとして出力する。
演算回路40が行う演算処理は、具体的には、符号絶対値表現や符号絶対値−−表現では効率的な回路実現が難しい加算処理や減算処理を含む。
図6は、図1の第2の記憶処理部103の構成例を示す図である。第2の記憶処理部103は、変換回路10と記憶回路30とを備えている。
変換回路10は、入力する2の補数表現で表現された信号データを、符号絶対値−−表現で表現された信号データに変換して出力する。
記憶回路30は、変換回路10aが出力する符号絶対値−−表現で表現された信号データを入力して符号絶対値−−表現のまま記憶処理を行い、符号絶対値−−表現のまま出力する。
図7は、第2の演算処理部104の構成例を示す図である。第2の演算処理部104は、補正回路20と演算回路41とを備えている。補正回路20は、入力する符号絶対値−−表現で表現された信号データに対して補正処理を行い、その結果を出力する回路である。
演算回路41は、補正回路20が補正処理した符号絶対値−−表現された信号データに対して演算処理を行い、その結果を符号絶対値−−表現された信号データとして出力する。演算回路41が行う演算処理は、具体的には、符号絶対値表現や符号絶対値−−表現でも効率的な回路実現が可能な乗算処理や除算処理を含む。
図8は、図7の補正回路20の構成例を示す図である。補正回路20は、入力するNビット(Nは正整数)の信号データINが負の値の場合、入力INの最下位ビットからMビット(MはM≦Nの正整数)(IN[0]〜IN[M-1])に対して値1を加算する処理を行った結果を、出力OUTの最下位ビットからMビット(OUT[0]〜OUT[M-1])に出力する。、それ以外のビット(IN[M]〜IN[N-1])については、補正回路20は、入力INをそのまま出力OUTの該当するビット(OUT[M]〜OUT[N-1])に出力する。
一方、入力INが正の値の場合は、補正回路20は、信号データINの値をそのまま信号データOUTに出力する。
図8を参照すると、補正回路20は、セレクタ回路21と、加算回路22を備えている。セレクタ回路21は、入力IN[N-1]から入力する符号を示す最上位ビットを参照して、入力INが正の値(IN[N-1]が値0)の場合、値0を加算回路22に出力し、入力INが負の値(IN[N-1]が値1)の場合、値1を加算回路22に出力する。
加算回路22は、セレクタ回路21が出力する値と、入力INの最下位ビットからMビット(IN[0]〜IN[M-1])とを加算して、出力OUTの最下位ビットからMビット(OUT[0]〜OUT[M-1])に出力する回路である。
図7の演算回路41は、例えば符号絶対値表現に係る演算回路で実現することができる。図9は、図7の演算回路41の構成例を示す図である。演算回路41は、符号演算回路42と、符号なし演算回路43を備えている。
符号演算回路42は、符号絶対値表現において最上位ビットの符号ビットを演算する回路であり、入力Aの最上位ビットである符号ビット44と、入力Bの最上位ビットである符号ビット45とを入力する。
符号演算回路42は、
・符号ビット44と符号ビット45が両方とも値0である場合には、値0を符号ビット48に出力し、
・符号ビット44と符号ビット45のいずれか一方が値1である場合には、値1を符号ビット48に出力し、
・符号ビット44と符号ビット45が両方とも値1である場合には値、値0を符号ビット48に出力することで、出力Cの符号ビットを演算して出力する。
符号なし演算回路43は、符号絶対値表現において、符号ビット以外の絶対値部分を演算する回路である。
符号なし演算回路43は、入力Aの最上位ビット以外のビット46と、入力Bの最上位ビット以外のビット47とを入力して演算処理を行い、絶対値49に出力することで、出力Cの符号ビット以外のビットである絶対値部分を演算して出力する。
上記したように、演算回路41は、符号絶対値表現に係る演算回路であり、符号とそれ以外の絶対値とを別に演算して処理が可能な演算を実現することができる。具体的には、演算回路41は、乗算処理や除算処理を実現することができる。
次に、補正回路20の機能について説明する。図2に示すように、符号絶対値表現と符号絶対値−−表現とを比較すると、正の値の場合は、同じ2進数表現が同じ値を表現する。一方、負の値の場合は、同じ2進数表現について、符号絶対値表現よりも、符号絶対値−−表現の方が、1だけ小さい値を表現する。
したがって、演算回路41のように、符号絶対値表現に係る演算回路で符号絶対値−−表現で表現された信号データを演算した場合、演算対象の入力データが負の値の場合には、演算結果に誤差が発生する。補正回路20は、演算対象の入力データに補正を加えることで、演算結果の誤差を縮小する機能を提供する。補正回路20は、入力するNビットのうち最下位ビットからMビットに対して、入力が負の値の場合に1を加算する。
したがって、演算回路41に入力される値(負の値)が、符号絶対値−−表現で表現された値から、符号絶対値表現で表現された値に近づくことになる。その結果、演算結果における誤差を縮小することができる。
入力するNビットのすべてのビットに対して、入力が負の値の場合に、1を加算した場合(M=Nの場合)、演算回路41に入力される値が、符号絶対値表現で表現された値と等しくなり、演算結果における誤差は発生しないが、入力するNビットのすべてのビットに対して加算処理を行うので、加算回路22の回路規模が大きくなる。すなわち、Mを大きくすると、演算誤差は小さくなるが、回路規模は大きくなり、Mを小さくすると、演算誤差は大きくなるが、回路規模は小さくなる、という特徴がある。
したがって、演算誤差が許容できる範囲で、Mをなるべく小さな値に設定することで、補正回路20の回路規模を小さくすることができる。
図10は、第3の記憶処理部105の構成例を示す図である。第3の記憶処理部105は、記憶回路30を備え、符号絶対値−−表現で表現された信号データを入力して記憶処理を行い、符号絶対値−−表現のまま出力する回路である。
図11は、第3の演算処理部106の構成例を示す図である。第3の演算処理部106は、補正回路20と、演算回路41と、変換回路10とから構成することができる。
補正回路20は、入力する符号絶対値−−表現で表現された信号データに対して補正処理を行い、その結果を出力する。
演算回路41は、補正回路20が補正処理した符号絶対値−−表現された信号データに対して演算処理を行い、その結果を符号絶対値−−表現された信号データとして出力する。
変換回路10は、演算回路41が出力した符号絶対値−−表現で表現された信号データを、2の補数表現で表現された信号データに変換して出力する。
図12は、第4の演算処理部107の構成例を示す図である。第4の演算処理部107は、変換回路10と、補正回路20と、演算回路41とから構成することができる。
変換回路10は、入力する2の補数表現で表現された信号データを、符号絶対値−−表現で表現された信号データに変換して出力する。
補正回路20は、入力する符号絶対値−−表現で表現された信号データに対して補正処理を行い、その結果を出力する演算回路41は、補正回路20が補正処理した符号絶対値−−表現された信号データに対して演算処理を行い、その結果を符号絶対値−−表現された信号データとして出力する。
図13は、第4の記憶処理部108の構成例を示す図である。第4の記憶処理部108は、記憶回路30と変換回路10とから構成することができる。
記憶回路30は、入力する符号絶対値−−表現で表現された信号データを入力して符号絶対値−−表現のまま記憶処理を行い、符号絶対値−−表現のまま変換回路10に出力する。
変換回路10は、記憶回路30が出力する符号絶対値−−表現で表現された信号データを、2の補数表現で表現された信号データに変換して出力する。
図29(A)は、第1の例示的な実施形態の方法を説明する図である。第1の例示的な実施形態の方法は、符号絶対値−−表現形式に変換したデータの記憶処理(ステップS1)と、2の補数表現により表現されたデータ、又は、符号絶対値−−表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算を行う演算処理(ステップS2)とを少なくとも含む。なお、演算処理(ステップS2)のあとに記憶処理(ステップS1)をさらに含むようにしてもよい。また、演算処理(ステップS2)を最初に実行し、つづいて記憶処理(ステップS1)を実行するようにしてもよい。なお、上記ステップS1、S2の各処理は、メモリに接続されたプロセッサにプログラム(命令群)を実行させることで実現するようにしてもよい。
図29(B)は、図29(A)の記憶処理(ステップS1)の手順の一例を説明する図である。記憶処理は、データを2の補数表現から符号絶対値−−表現形式に変換する第1の変換処理(ステップS11)と、符号絶対値−−表現形式に変換したデータを記憶回路に記憶する記憶処理(ステップS12)と、記憶処理後の符号絶対値−−表現形式のデータを記憶回路から読み出し2の補数表現へ変換して出力する第2の変換処理(ステップS13)と、を含む。なお、図29(B)において、演算処理(ステップS2)との組み合わせによっては、ステップS12のみとしてもよいし、あるいは、ステップS12に加えてステップS11又はステップS13のいずれか一方を含むようにしてもよい。
図29(C)は、図29(A)の演算処理(ステップS2)の手順の一例を説明する図である。演算処理は、データを2の補数表現から符号絶対値−−表現形式に変換する第1の変換処理(ステップS21)と、符号絶対値−−表現形式により表現されたデータに補正処理を行ったデータに対して演算を行う演算処理(ステップS22)と、演算処理結果の符号絶対値−−表現形式のデータを2の補数表現へ変換して出力する第2の変換処理(ステップS23)と、を含む。なお、記憶処理(ステップS1)から2の補数表現により表現されたデータが出力され、ステップS22において、2の補数表現により表現されたデータに対して演算処理を行う場合、図29(C)のステップS21、ステップS23は省略される。また、図29(A)の記憶処理(ステップS1)から符号絶対値−−表現形式により表現されたデータが出力され、図29(C)のステップS22において、符号絶対値−−表現形式により表現されたデータに補正処理を行ったデータに対して演算を行う場合、図29(C)のステップS21は省略される。すなわち、記憶処理(ステップS1)からのデータの表現形式と、演算処理(ステップS2)でのデータの表現形式の組み合わせに応じて、図29(C)のステップS21又はステップS23の両方、又は、いずれか一方を含むようにしてもよい。
(第1の例示的な実施形態の効果)
以上説明したように、第1の例示的な実施形態では、信号処理装置100は、第1の記憶処理部101、第2の記憶処理部103、第3の記憶処理部105、及び、第4の記憶処理部108において、符号絶対値−−表現で記憶処理を行う。さらに、信号処理装置100は、第2の演算処理部104、及び第4の演算処理部107において、符号絶対値−−表現で演算処理を行う。
図2に示すように符号絶対値−−表現は、符号絶対値表現と同様に、値0を境界として、正の値と負の値との間でビット値の差異が小さい。したがって、値0の近傍で正と負とで頻繁に変化する信号を表現した場合でも、ビット単位の動作率は小さいという特徴がある。その結果、2の補数表現のまま処理するのに比べて、記憶処理や演算処理における回路の動作率を低減することができる。
また、変換回路10による2の補数表現と符号絶対値−−表現との変換処理は、ビット反転処理のみで実現することができ、符号絶対値表現が必要とした1加算処理(インクリメント処理)を必要としない。
ビット反転処理は、XOR回路のみで実現できるので、他の論理処理回路や演算処理回路と比較して圧倒的に小さい回路規模で実現することができる。
したがって、第1の例示的な実施形態では、値0の近傍で正と負とで頻繁に変化する信号を処理する場合でも、記憶処理部における回路の動作率を小さくすることができる。このため、記憶処理部における消費電力を低減することができる。
また、補正回路20による符号絶対値−−表現の値の補正により、乗算や除算などの演算処理を、符号絶対値−−表現のまま演算しても、発生する演算誤差を小さくすることができる。そのため、符号絶対値−−表現を適用可能な演算回路を増加させることができるため、演算処理部における消費電力を低減することができる。
また、補正回路20は、許容される演算誤差に応じて補正対象となるビット数(M)を最適な値に設定することができるので、補正回路20の回路規模を小さくすることができる。その結果、演算処理部における消費電力を低減することができる。
一方、第1の例示的な実施形態では、第1の演算処理部102、及び第3の演算処理部106において、2の補数表現のまま演算処理される。そのため、これら演算処理部に係る回路の動作率は低減されないが、符号絶対値表現を適用した場合のようにデータ表現形式間の変換により回路規模が大きく増大することはない。したがって、第2の演算処理部104や第4の演算処理部107、記憶処理に係る消費電力が小さくなる分だけ、信号処理装置全体の消費電力を低減することができる。
(第2の例示的な実施形態)
図14は、本発明の第2の例示的な実施形態に係るFFT装置400の構成例を示す図である。FFT装置400は、図26に示されたデータフロー500にしたがって、2段階の基数8のバタフライ処理に分解された64ポイントFFTを、パイプライン回路方式によって処理する。
FFT装置400は、時間領域のデータx(n)(n=0,1,・・・,N-1)を入力し、x(n)をFFT処理によりフーリエ変換して周波数領域の信号X(k)(k=0,1,・・・,N-1)を生成し、出力する。ここで、NはFFTブロックサイズを表す正整数である。
FFT装置400は、8データ並列で64ポイントFFT処理を行うものとする。この場合、FFT装置400は、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する。このとき、入力データx(n) として、8データずつ、8サイクルの期間に、図15に示す順序で、合計で64個のデータが入力される。なお、ここでは、図15の表の内容として示された、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サイクルの期間に、図15に示す順序で、64データを出力される。なお、ここでは、図15の表の内容として示された、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を構成するデータが出力される。
FFT装置400は、第1のデータ並べ替え処理部250aと、第1のバタフライ演算処理部240aと、第2のデータ並べ替え処理部260と、ひねり乗算処理部270と、第2のバタフライ演算処理部240bと、第3のデータ並べ替え処理部250bとを備える。
FFT装置400は、第1のデータ並べ替え処理、第1のバタフライ演算処理、第2のデータ並べ替え処理、ひねり乗算処理、第2のバタフライ演算処理、及び、第3のデータ並べ替え処理を、パイプライン処理する。
第1のデータ並べ替え処理部250aと第2のデータ並べ替え処理部260は、データ並べ替えのためのバッファ回路である。第1のデータ並べ替え処理部250aと第2のデータ並べ替え処理部260は、それぞれ、第1のバタフライ演算処理部240aの前と後で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
第3のデータ並べ替え処理部250bも、同様に、データ並べ替えのためのバッファ回路である。すなわち、第3のデータ並べ替え処理部250bは、第2のバタフライ演算処理部240bの後で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
具体的には、第1のデータ並べ替え処理部250aは、入力データx(n)の入力順序である図15に示す「逐次順序」を、第1のバタフライ演算処理部240aに入力する順序である図16に示す「ビットリバース順序」に並べ替える。
図16に示すビットリバース順序は、図26に示したデータフロー図における、1段目の基数8のバタフライ演算処理部502への入力データ組に対応する。
具体的には、1サイクル目に、データ組1を構成するx(0),x(8),・・・,x(56)の8データを入力する。そして、2サイクル目に、データ組2を構成するx(1),x(9),・・・,x(57)の8データを入力する。以降、3サイクル目から8サイクル目まで同様にして、データ組3〜8を構成するデータを入力する。
逐次順序は、図15に示された8つのデータ組P1、P2、P3、P4、P5、P6、P7、P8の順序をいう。データ組Ps(sは処理サイクルの順序を表す値であり、s=1、2、・・・、8)は、それぞれ、ps(0)からps(7)まで順に並んだ8個のデータからなる。図15に示す順序で、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の順に並べられる。「逐次順序」は、i×s個のデータを、先頭からi個ずつデータ順に並べたデータ組をs組作成し、各データ組をサイクル順に並べたものである。
ビットリバース順序は、図16に示された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)
Qs(i)とPi+1(s−1)は、各データ組を構成するデータについて、サイクルの進行の順序とデータ位置に関する順序とが入れ替えられた関係にある。ビットリバース順序で入力されたデータをビットリバース順序にしたがって並び替えると、逐次順序となる。
図15における各行ps(i)、及び図16における8つの行qs(i)は、それぞれ、次段のi番目に入力されるデータを示す。各データ組に含まれる8個の数字は、FFTのポイントのうちの1個を特定する識別情報であり、具体的にはx(n)の添え字nの値である。
なお、逐次順序及びビットリバース順序は、図15、図16に例示されたものに限定されない。すなわち、逐次順序の各データ組は、上記のように、FFTのポイント数、サイクル数、並列に処理するデータ数に応じて、データを順に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータの、サイクルの進行に対する順序とデータ位置に対する順序を入れ替えて作成すればよい。
第1のバタフライ演算処理部240aは、図26のデータフロー500において2回行われる基数8のバタフライ演算処理の、1回目のバタフライ演算処理(502)(第1のバタフライ演算処理)を処理するバタフライ演算処理回路である。
第1のバタフライ演算処理部240aは、バタフライ演算処理の結果を、データy(n)(n=0,1,・・・,63)として、図15の逐次順序で出力する。
第2のデータ並べ替え処理部260は、第1のバタフライ演算処理部240aが逐次順序で出力するデータy(n)を、第2のバタフライ演算処理部240bに入力するために、図16のビットリバース順序に並べ替える。
ひねり乗算処理部270は、第1のバタフライ演算処理後に、FFT演算における複素平面上の複素回転を処理する回路であり、図26のデータフロー500における、ひねり乗算処理部504に対応する。なお、ひねり乗算処理では、データの並へ替えは行われない。
第2のバタフライ演算処理部240bは、図26のデータフロー図における、2回目の基数8のバタフライ演算処理(503)を処理するバタフライ演算処理回路である。
第2のバタフライ演算処理部240bは、ビットリバース順序で入力されるひねり乗算処理後のデータy'(n)(n=0,1,・・・,63)に対してバタフライ演算処理を行い、その結果X(k)(n=0,1,・・・,63)を、同じくビットリバース順序で出力する。
第3のデータ並べ替え処理部250bは、第2のバタフライ演算処理部240bがビットリバース順序で出力するデータX(k)を、図15の逐次順序に並べ替える。
データ並べ替え処理部は、入力されたデータを一旦記憶し、記憶したデータの選択及び出力を制御することによって、図15の逐次順序、図16のビットリバース順序のそれぞれに従ったデータの並べ替え処理が実現される。以下に、データ並べ替え処理部の具体例を示す。
図14において、第1のデータ並べ替え処理部250a、及び第3のデータ並べ替え処理部250bは、例えば図17に示すデータ並べ替え処理部250で実現することができる。
図17を参照すると、データ並べ替え処理部250は、変換回路231と、データ並べ替え部(データ並べ替え手段)200と、及び変換回路232とを備えている。変換回路231で、逐次順序で入力される2の補数表現で表現されたデータを符号絶対値−−表現に変換した後、データ並べ替え部200で、逐次順序からビットリバース順序へのデータ並べ替え処理や、ビットリバース順序から逐次順序へのデータ並べ替え処理を符号絶対値−−表現で行う。、そして、変換回路232で、符号絶対値−−表現から2の補数表現に変換して出力する。
図14の第2のデータ並べ替え処理部260は、例えば図18に示すデータ並べ替え処理部260で実現することができる。図18を参照すると、データ並べ替え処理部260は、変換回路231と、データ並べ替え部(データ並べ替え手段)200とから構成される。変換回路231が、逐次順序で入力される2の補数表現で表現されたデータを符号絶対値−−表現に変換した後、データ並べ替え部(データ並べ替え手段)200は、逐次順序からビットリバース順序へのデータ並べ替え処理を符号絶対値−−表現で行い、符号絶対値−−表現のまま出力する。
図17及び図18において、変換回路231は、変換回路233a〜233hから構成され、並列に入力される2の補数表現で表現されたデータをそれぞれ符号絶対値−−表現に変換する。変換回路233a〜233hは、図4に示す変換回路10で構成することができる。
また、図17において、変換回路232は、変換回路234a〜234hから構成され、並列に入力される符号絶対値−−表現で表現されたデータをそれぞれ2の補数表現に変換する。変換回路234a〜234hは、図4に示す変換回路10で構成することができる。
図19は、図17、図18のデータ並べ替え部(データ並べ替え手段)200の構成例を示す図である。図19を参照すると、データ並べ替え部200は、第1のデータ並べ替え部(第1のデータ並べ替え手段)201と、第2のデータ並べ替え部(第2のデータ並べ替え手段)204とから構成される。第1のデータ並べ替え部(第1のデータ並べ替え手段)201と第2のデータ並べ替え部(第2のデータ並べ替え手段)204とによる2段階のステップで、逐次順序からビットリバース順序へのデータ並べ替え処理や、ビットリバース順序から逐次順序へのデータ並べ替え処理を行う。
図19のデータ並べ替え部(データ並べ替え手段)200におけるデータ並べ替え処理について、逐次順序からビットリバース順序へのデータ並べ替え処理を例に、具体的に説明する。
第1のデータ並べ替え部(第1のデータ並べ替え手段)201は、1ステップ目の並べ替えとして、図20に示す「逐次順序」のデータを、図21に示されている「中間順序」のデータへ、並べ替えを行う。図21に示す「中間順序」は、図20に示されている「逐次順序」において、点線で示した4つのデータから構成されるデータ組の単位で、矢印で示した並べ替えを行った後の順序である。
詳細には、図20に示されている「逐次順序」において、
{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}から構成されるデータ組との並べ替えをそれぞれ行うと、図21に示す「中間順序」になる。
次に、第2のデータ並べ替え部(第2のデータ並べ替え手段)204は、2ステップ目の並べ替えとして、図21に示されている「中間順序」から、図16に示されている「ビットリバース順序」への並べ替え処理を符号絶対値−−表現のまま行う。
詳細には、図21の「中間順序」において、点線で示した4つのデータから構成される各データ組において、矢印で示した各データ組の内部の並べ替えを行った後の順序である。
すなわち、図21の「中間順序」において、
{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との並べ替え、
をそれぞれ行うと、図16に示されている「ビットリバース順序」になる。
図19を参照すると、データ並べ替え部200において、第1のデータ並べ替え部(第1のデータ並べ替え手段)201は、第1のデータ振り分け部(第1のデータ振り分け手段)202と、4つのRAM回路210a、210b、210c、210dと、第2のデータ振り分け部(第2のデータ振り分け手段)203とを備えている。
第1のデータ振り分け部202は、8つの入力in0〜in7から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のデータ並べ替え部(第2のデータ並べ替え手段)204は、4つのデータ組内並べ替え部220a〜220dから構成される。
データ組内並べ替え部220aは、2つの入力207a、207bを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、出力out0、out1に出力する。
同様に、データ組内並べ替え部220bは、2つの入力207c、207dを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、出力out2、out3に出力する。
データ組内並べ替え部220cは、2つの入力207e、207fを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、出力out4、out5に出力する。
データ組内並べ替え部220dは、2つの入力207g、207hを入力して、4つのデータから構成されるデータ組の内部で並べ替え処理を行い、出力out6、out7に出力する。なお、図19のデータ並べ替え部200が、図18の第2のデータ並べ替え処理部260のデータ並べ替え部200を構成する場合、図19の第2のデータ並べ替え部(第2のデータ並べ替え手段)204の出力out0〜out7は、図18の第2のデータ並べ替え処理部260の出力out0〜out7に対応する。図19のデータ並べ替え部200が、図17のデータ並べ替え処理部250のデータ並べ替え部200を構成する場合、図19の第2のデータ並べ替え部(第2のデータ並べ替え手段)204の出力out0〜out7は、図17の変換回路232(変換回路234a〜234h)のそれぞれの入力に対応する。
次に、データ並べ替え部200の具体的な動作を説明する。図22は、データ並べ替え部200の動作を示すタイムチャートである。図22の横軸は時間(サイクル番号で表す)であり、各行は、図19の各部のデータ線(入力、出力)のデータを表している。図22において、サイクル(列)とデータ線(行)の配列の要素の数字:0〜63は、データx(0)・・・、x(63)(例えば図15のデータ組P1、・・・、P8の各データ)を表している。
データ並べ替え部200は、t0〜t7の8サイクルにおいて8並列で、0〜63の64個のデータを逐次順序で入力し、t8〜t15の8サイクルにおいて8並列で、0〜63の64個のデータをビットリバース順序で出力する。
まず、第1のデータ並べ替え部(第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〜205hに2、2、及び16〜21の8データをそれぞれ出力する。
(4)サイクルt3において、入力in0〜in7から24〜31の8データをそれぞれ入力し、出力205a〜205hに30、31、及び24〜29の8データをそれぞれ出力する。
(5)サイクルt4において、入力in0〜in7から32〜39の8データをそれぞれ入力し、出力205a〜205hに36〜39、及び32〜35の8データをそれぞれ出力する。
(6)サイクルt5において、入力in0〜in7から40〜47の8データをそれぞれ入力し、出力205a〜205hに44〜47、及び40〜43の8データをそれぞれ出力する。
(7)サイクルt6において、入力in0〜in7から48〜55の8データをそれぞれ入力し、出力205a〜205hに50〜55、及び48、49の8データをそれぞれ出力する。
(8)サイクルt7において、入力in0〜in7から56〜63の8データをそれぞれ入力し、出力205a〜205hに58〜63、及び56、57の8データをそれぞれ出力する。
なお、上記(1)〜(8)において、0〜7、8〜15、16〜23、24〜31、32〜39、40〜47、48〜55、56〜63の各8データは、例えば図15のデータ組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つのデータに対してローテート(rotate)処理して出力するものであり、例えばシフト回路で容易に実現することができる。例えばin0〜in7からの8データを並列に記憶保持するレジスタにおいて、例えばサイクルt2及びt3では、2つのデータ分、右ローテートすることで、in6、in7、in0〜in5のデータをこの順に並べた8データが得られる。サイクルt4及びt5では、例えば4つのデータ分、左又は右にローテートすることで、in4〜in7、in0〜in3のデータをこの順に並べた8データが得られる。サイクルt6及びt7では、例えば2つのデータ分、左ローテートすることで、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を、サイクルt8において出力206a、206bに出力する。
(2)サイクルt1において入力205a、205bから入力したデータ8,9を、サイクルt9において出力206a、206bに出力する。
(3)サイクルt2において入力205a、205bから入力したデータ22,23を、サイクルt14において出力206a、206bに出力する。
(4)サイクルt3において入力205a、205bから入力したデータ30,31を、サイクルt15において出力206a、206bに出力する。
(5)サイクルt4において入力205a、205bから入力したデータ36,37を、サイクルt12において出力206a、206bに出力する。
(6)サイクルt5において入力205a、205bから入力したデータ44,45を、サイクルt13において出力206a、206bに出力する。
(7)サイクルt6において入力205a、205bから入力したデータ50,51を、サイクルt10において出力206a、206bに出力する。
(8)サイクルt7において入力205a、205bから入力したデータ58,59を、サイクル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)サイクルt8において、入力206a〜206hから0,1,16、17,32,33,48,49の8データをそれぞれ入力し、出力207a〜207hに0,1,16、17,32,33,48,49の8データをそれぞれ出力する。
(2)サイクルt9において、入力206a〜206hから8,9,24,25,40,41,56,57の8データをそれぞれ入力し、出力207a〜207hに8,9,24,25,40,41,56,57の8データをそれぞれ出力する。
(3)サイクルt10において、入力206a〜206hから50,51,2,3,18,19,34,35の8データをそれぞれ入力し、出力207a〜207hに2,3,18,19,34,35,50,51の8データをそれぞれ出力する。
(4)サイクルt11において、入力206a〜206hから58,59,10,11,26,27,42,43の8データをそれぞれ入力し、出力207a〜207hに10,11,26,27,42,43,58,59の8データをそれぞれ出力する。
(5)サイクルt12において、入力206a〜206hから36,37,52,53,4,5,20,21の8データをそれぞれ入力し、出力207a〜207hに4,5,20,21,36,37,52,53の8データをそれぞれ出力する。
(6)サイクルt13において、入力206a〜206hから44,45,60,61,12,13,28,29の8データをそれぞれ入力し、出力207a〜207hに12,13,28,29,44,45,60,61の8データをそれぞれ出力する。
(7)サイクルt14において、入力206a〜206hから22,23,38,39,54,55,6,7の8データをそれぞれ入力し、出力207a〜207hに6,7,22,23,38,39,54,55の8データをそれぞれ出力する。
(8)サイクルt15において、入力206a〜206hから30,31,46,47,62,63,14,15の8データをそれぞれ入力し、出力207a〜207hに14,15,30,31,46,47,62,63の8データをそれぞれ出力する。
第1のデータ振り分け部202と同様に、第2のデータ振り分け部203も、並列して同時に入力する8つのデータに対してローテート処理して出力するものであり、例えばシフト回路で容易に実現することができる。
次に、図22を参照して、第2のデータ並べ替え部(第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に、
サイクルt9において、0,8の2つのデータを出力し、
サイクルt10において、1,9の2つのデータを出力する。
同様に、入力207a、207bから、
サイクルt10において、2,3の2つのデータを入力し、
サイクルt11において、10,11の2つのデータを入力し、
出力out0、out1に、
サイクルt11において、2,10の2つのデータを出力し、
サイクルt12において、3,11の2つのデータを出力する。
入力207a、207bから、
サイクルt12において、4,5の2つのデータを入力し、
サイクルt13において、12,13の2つのデータを入力し、
出力out0、out1に、
サイクルt13において、4,12の2つのデータを出力し、
サイクルt14において、5,13の2つのデータを出力する。
入力207a、207bから、
サイクルt14において、6,7の2つのデータを入力し、
サイクルt15において、14,15の2つのデータを入力し、
出力out0、out1に、
サイクルt15において、6,14の2つのデータを出力し、
サイクルt16において、7,15の2つのデータを出力する。
データ組内並べ替え部220bは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220bは省略される。
入力207c、207dから、
サイクルt8において、16,17の2つのデータを入力し、
サイクルt9において、24,25の2つのデータを入力し、
出力out2、out3に、
サイクルt9において、16,24の2つのデータを出力し、
サイクルt10において、17,25の2つのデータを出力する。
同様に、
入力207c、207dから、
サイクルt10において、18,19の2つのデータを入力し、
サイクルt11において、26,27の2つのデータを入力し、
出力out2、out3に、
サイクルt11において、18,26の2つのデータを出力し、
サイクルt12において、19,27の2つのデータを出力する。
入力207c、207dから、
サイクルt12において、20,21の2つのデータを入力し、
サイクルt13において、28,29の2つのデータを入力し、
出力out2、out3に、
サイクルt13において、20,28の2つのデータを出力し、
サイクルt14において、21,29の2つのデータを出力する。
入力207c、207dから、
サイクルt14において、22,23の2つのデータを入力し、
サイクルt15において、30,31の2つのデータを入力し、
出力out2、out3に、
サイクルt15において、22,30の2つのデータを出力し、
サイクルt16において、23,31の2つのデータを出力する。
データ組内並べ替え部220cは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220cは省略される。
入力207e、207fから、
サイクルt8において、32,33の2つのデータを入力し、
サイクルt9において、40,41の2つのデータを入力し、
出力out4、out5に、
サイクルt9において、32,40の2つのデータを出力し、
サイクルt10において、33,41の2つのデータを出力する。
同様に、
入力207e、207fから、
サイクルt10において、34,35の2つのデータを入力し、
サイクルt11において、42,43の2つのデータを入力し、
出力out4、out5に、
サイクルt11において、34,42の2つのデータを出力し、
サイクルt12において、35,43の2つのデータを出力する。
入力207e、207fから、
サイクルt12において、36,37の2つのデータを入力し、
サイクルt13において、44,45の2つのデータを入力し、
出力out4、out5に、
サイクルt13において、36,44の2つのデータを出力し、
サイクルt14において、37,45の2つのデータを出力する。
入力207e、207fから、
サイクルt14において、38,39の2つのデータを入力し、
サイクルt15において、46,47の2つのデータを入力し、
出力out4、out5に、
サイクルt15において、38,46の2つのデータを出力し、
サイクルt16において、39,47の2つのデータを出力する。
データ組内並べ替え部220dは、以下のように動作する。なお、動作主体であるデータ組内並べ替え部220dは省略される。
入力207g、207hから、
サイクルt8において、48,49の2つのデータを入力し、
サイクルt9において、56,57の2つのデータを入力し、
出力out6、out7に、
サイクルt9において、48,56の2つのデータを出力し、
サイクルt10において、49,57の2つのデータを出力する。
同様に、入力207g、207hから、
サイクルt10において、50,51の2つのデータを入力し、
サイクルt11において、58,59の2つのデータを入力し、
出力out6、out7に、
サイクルt11において、50,58の2つのデータを出力し、
サイクルt12において、51,59の2つのデータを出力する。
入力207g、207hから、
サイクルt12において、52,53の2つのデータを入力し、
サイクルt13において、60,61の2つのデータを入力し、
出力out6、out7に、
サイクルt13において、52,60の2つのデータを出力し、
サイクルt14において、53,61の2つのデータを出力する。
入力207g、207hから、
サイクルt14において、54,55の2つのデータを入力し、
サイクルt15において、62,63の2つのデータを入力し、
出力out6、out7に、
サイクルt15において、54,62の2つのデータを出力し、
サイクルt16において、55,63の2つのデータを出力する。
以上説明したように、第1のデータ並べ替え部201が、逐次順序から中間順序への並べ替えを行い、第2のデータ並べ替え部204が、中間順序からビットリバース順序への並べ替えを行うことで、データ並べ替え部200は、逐次順序からビットリバース順序への並べ替えを実現する。
第2のデータ並べ替え部204を構成するデータ組内並べ替え部220a〜220dは、例えば図23に示すデータ組内並べ替え部220で実現することができる。図23を参照すると、データ組内並べ替え部220は、セレクタ回路221、224、225、及び、フリップフロップ222、223から構成される。
図24は、データ組内並べ替え部220の動作を示すタイムチャートである。図24において、データ組内並べ替え部220は、サイクルt0、t1において、入力in0、in1から、4つのデータ0,1,8,9をデータ組として入力して、データ組内の並べ替え処理を行い、サイクルt1、t2において、出力out0、out1から4つのデータとして、0,8,1,9を出力する。具体的には、データ組内並べ替え部220は、サイクルt0において、入力in0、in1から0,1を入力し、セレクタ221は入力in0から入力した0を選択する。また、サイクルt0において、フリップフロップ222はセレクタ221が選択した0を記憶し、フリップフロップ223は入力in1から入力した1を記憶する。
サイクルt1において、入力in0、in1から8,9を入力し、セレクタ221は入力in1から入力した9を選択する。また、サイクルt1において、フリップフロップ222は記憶した0を出力するとともに入力in1から入力した9を記憶し、フリップフロップ223は記憶した1を出力する。また、サイクルt1において、セレクタ224は、フリップフロップ222が出力する0を選択して、出力out0に出力し、セレクタ225は、入力in0から入力した8を選択して、出力out1に出力する。
サイクルt2において、フリップフロップ222は記憶した9を出力し、フリップフロップ223は記憶した1を出力する。また、サイクルtにおいて、セレクタ224は、フリップフロップ223が出力する1を選択して、出力out0に出力し、セレクタ225は、フリップフロップ222が出力する9を選択して、出力out1に出力する。
以上、逐次順序からビットリバース順序への並べ替えを例に、データ並べ替え処理を説明したが、ビットリバース順序から逐次順序への並べ替えについても同様に、1ステップ目の並べ替えとして、ビットリバース順序から中間順序に並べ替えを行い、2ステップ目の並べ替えとして、中間順序から逐次順序に並べ替えを行う、2段階のステップで実現することができる。
図25は、ひねり乗算処理部270の構成例を示す図である。ひねり乗算処理部270は、符号絶対値−−表現で表現された複素信号:
A=B+iC、及び、
W=X+iY
(ただし、i=−1)を入力して、それらの複素乗算の結果である
T=AxW=(BX−CY)+i(CX+BY)
を演算して出力する。
ひねり乗算処理部270は、補正回路20a〜20d、乗算回路271a〜271d、変換回路10a〜10d、加算回路272a〜272bを備えている。
補正回路20a〜20dは、例えば図8に示した補正回路20により実現することができる。
補正回路20aは、入力する複素信号A=B+iCの実数成分であるBに対して補正処理を行う。
同様に、補正回路20bは、入力する複素信号A=B+iCの虚数成分であるiCに対して補正処理を行う。
補正回路20cは、入力する複素信号W=X+iYの実数成分であるXに対して補正処理を行う。
補正回路20dは、入力する複素信号W=X+iYの虚数成分であるiYに対して補正処理を行う。
乗算回路271a〜271dは、例えば図9に示した演算回路41において、符号なし演算回路43で符号なし乗算処理を行うことで実現することができる。
乗算回路271aは、符号絶対値−−表現で表現された入力Aの実数成分Bと、入力Wの実数成分Xとの乗算処理を行い、その結果であるBXを出力する。
乗算回路271bは、符号絶対値−−表現で表現された入力Aの虚数成分iCと入力Wの虚数成分iYとの乗算処理を行い、その結果である−CYを出力する。
乗算回路271cは、符号絶対値−−表現で表現された入力Aの虚数成分iCと入力Wの実数成分Xとの乗算処理を行い、その結果であるiCXを出力する。
乗算回路271dは、符号絶対値−−表現で表現された入力Aの実数成分Bと入力Wの虚数成分iYとの乗算処理を行い、その結果であるiBYを出力する。
変換回路10a〜10dは、例えば図4に示す変換回路10で実現することができる。
変換回路10aは、乗算回路271aが出力した符号絶対値−−表現で表現された信号BXを2の補数表現へ変換して出力する。
変換回路10bは、乗算回路271bが出力した符号絶対値−−表現で表現された信号−CYを2の補数表現へ変換して出力する。
変換回路10cは、乗算回路271cが出力した符号絶対値−−表現で表現された信号iCXを2の補数表現へ変換して出力する。
変換回路10dは、乗算回路271dが出力した符号絶対値−−表現で表現された信号iBYを2の補数表現へ変換して出力する。
加算回路272a、272bは、2の補数表現で表現された入力に対して加算処理を行う加算回路で実現することができる。
加算回路272aは、変換回路10aが出力する2の補数表現で表現された信号BXと、変換回路10bが出力する2の補数表現で表現された信号−CYとの加算処理を行い、その結果であるBX−CYを出力する。
加算回路272bは、変換回路10cが出力する2の補数表現で表現された信号iCXと、変換回路10dが出力する2の補数表現で表現された信号iBYとの加算処理を行い、その結果であるi(CX+BY)を出力する。
これらの加算結果から、ひねり乗算処理部270は、その処理結果であるT=AxW=(BX−CY)+i(CX+BY)を出力する。
(第2の例示的な実施形態の効果)
上記したように、第2の例示的な実施形態では、FFT装置400は、バタフライ演算において必要なデータの並べ替え処理である、「逐次順序」から、「ビットリバース順序」への並べ替えや、「ビットリバース順序」から「逐次順序」への並べ替えを、符号絶対値−−表現に変換した後、「中間順序」を介した2段階のステップで実現する。そのため、2の補数表現のまま並べ替え処理を行うのに対して、第1のデータ並べ替え部201や第2のデータ並べ替え部204を構成するRAM回路、フリップフロップ回路やセレクタ回路などの回路の動作率を低減することができる。
また、FFT装置400は、ひねり乗算処理を構成する乗算処理と加算処理のうち、前者の乗算処理を符号絶対値−−表現のまま処理する。そのため、2の補数表現で乗算処理を行うのに対して、回路の動作率を低減することができる。
一方、後者の加算処理は、2の補数表現で処理を行うが、乗算回路に比べて加算回路の回路規模は大幅に小さいため、乗算処理を符号絶対値−−表現で処理する分だけ、ひねり乗算処理を行うひねり乗算処理部270の回路の動作率を低減することができる。
また、2の補数表現と符号絶対値−−表現との変換処理は、ビット反転処理のみで実現することができ、従来の符号絶対値表現が必要とした1加算処理(インクリメント処理)を必要としない。
ビット反転処理はXOR回路のみで実現できるので、他の論理処理回路や演算処理回路と比較して圧倒的に小さい回路規模で実現することができる。
また、符号絶対値−−表現の値に対する補正処理により、乗算や除算などの演算処理を符号絶対値−−表現のまま演算しても、発生する演算誤差を小さくすることができ、許容される演算誤差に応じて補正対象となるビット数を最適な値に設定することができる。その結果、補正処理に係る回路規模を小さくすることができる。
したがって、第2の例示的な実施形態では、値0の近傍で正と負とで頻繁に変化する信号を処理する場合でも、データの並べ替え処理における回路の動作率を小さくすることができる。このため、データ並べ替え処理部における消費電力を低減することができる。
一方、第2の例示的な実施形態では、バタフライ演算処理はバラフライ演算処理部において、2の補数表現のまま処理される。そのため、それら演算処理に係る回路の動作率は低減されないが、符号絶対値表現を適用した場合のようにデータ表現形式間の変換により回路規模が大きく増大することはない。したがって、データの並べ替え処理やひねり乗算処理に係る消費電力が小さくなる分だけ、FFT装置全体の消費電力を低減することができる。
図30は、上記した第1、第2の例示的な実施形態の装置100、400の処理、機能をプログラムで実現する一形態を模式的に例示する図である。図30を参照すると、プロセッサ装置300は、プロセッサ301と、プロセッサ301で実行されるプログラム(命令群とデータ等)を記憶するプログラム記憶部302と、プロセッサ301によるデータの書き込み読み出しが行われるRAM303(第2の例示的な実施形態の図8のRAM回路210として機能してもよい)と、入力端子INから入力データを受信しプロセッサ301に供給する第1のインタフェース(インタフェース1)304と、プロセッサ301から出力されるデータを受け出力端子OUTから出力する第2のインタフェース(インタフェース2)305を備えている。プロセッサ301は、デジタル信号プロセッサ(Digital Signal Processor)等であってもよい。プログラム記憶部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の例示的な実施形態と同様の効果を奏することができる。なお、図30は単に説明のために、プロセッサ装置300の各部301〜305の構成を例示したが、これらの各部の一部又は全てをプロセッサ301に含める1チップ構成としてもよいことは勿論である。
なお、上記の特許文献1−3、非特許文献1、2の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
上記した実施形態は以下のように付記される(ただし、以下に制限されない)。
(付記1)
データ値が正又は0の場合は、2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である第2の表現形式により表現されたデータに対して記憶処理を行う記憶処理部と、
2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う演算処理部と、
を備えた、ことを特徴とする信号処理装置。
(付記2)
前記補正処理は、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、
前記Nビット(ただし、Nは所定の正整数)のデータのうち、最下位ビットからMビット(ただし、MはM≦Nの正整数)に対して値1を加算する処理である、ことを特徴とする付記1に記載の信号処理装置。
(付記3)
前記演算処理部は、
処理する演算が乗算又は除算の場合には、
前記第2の表現形式により表現されたデータに前記補正処理を行ったデータのいずれかに対して演算処理を行い、
処理する演算が加算又は減算の場合には、2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とする付記1又は2に記載の信号処理装置。
(付記4)
前記記憶処理部は、
2の補数表現で表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換部と、
前記第2の表現形式でのデータの記憶処理及び出力を行う記憶回路と、
前記記憶回路から出力された前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換部について、
前記記憶回路を備えた構成と、
前記記憶回路と、前記第1の変換部又は前記第2の変換部の少なくともいずれかを備えた構成
のうちの少なくともいずれかを含む、ことを特徴とする付記1乃至3のいずれかに記載の信号処理装置。
(付記5)
前記演算処理部は、
2の補数表現により表現されたデータを入力し、2の補数表現により表現されたデータの演算処理を行う第1の演算回路と、
2の補数表現により表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換部と、
前記第2の表現形式により表現されたデータに前記補正処理を行う補正回路と、
前記補正回路で補正処理されたデータを入力し、前記補正処理されたデータの演算処理を行う第2の演算回路と、
前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換部について、
前記第1の演算回路を備えた構成と、
前記補正回路及び前記第2の演算回路を備えた構成と、
前記補正回路及び前記第2の演算回路に、さらに前記第1の変換部又は前記第2の変換部の少なくともいずれかを備えた構成、
のうちの少なくともいずれかを含む、ことを特徴とする付記1乃至3のいずれかに記載の信号処理装置。
(付記6)
前記第2の演算回路は、
演算対象である前記補正処理した前記第2の表現形式のデータの符号ビットの演算結果を符号ビットとして出力する符号演算回路と、
演算対象である前記補正処理した前記第2の表現形式のデータの前記符号ビット以外の絶対値部分を演算して出力する符号なし演算回路と、ことを特徴とする付記5に記載の信号処理装置。
(付記7)
前記第1及び第2の変換部は、前記入力したデータの最上位ビットはそのまま出力し、
前記入力したデータの前記最上位ビット以外は、前記最上位ビットとの排他的論理和を行った結果を出力する、ことを特徴とする付記4乃至6のいずれかに記載の信号処理装置。
(付記8)
付記1又は2に記載の信号処理装置において、データ表現形式として2の補数表現と、前記第2の表現形式の双方を使用して高速フーリエ変換又は逆高速フーリエ変換を行い、
前記演算処理部が、
バタフライ演算処理を行うバタフライ演算処理部と、
ひねり乗算処理を行うひねり乗算処理部と、
を備え、
前記記憶処理部が、
複数のデータの順序を並べ替えるデータ並べ替え処理部を備え、
前記バタフライ演算処理部は、2の補数表現により表現されたデータに対してバタフライ演算処理を行い、
前記ひねり乗算処理部は、乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
加算処理については、2の補数表現により表現されたデータに対して演算処理を行い、
前記データ並べ替え処理部は、前記第2の表現形式により表現されたデータに対して記憶処理を行う、ことを特徴とする信号処理装置。
(付記9)
前記データ並べ替え処理部は、
2の補数表現で表現されたデータを入力し前記第2の表現形式へ変換する第1の変換部と、
前記第2の表現形式で表現されたデータを入力し2の補数表現へ変換する第2の変換部と、
を備え、
前記第1の変換部は、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
前記第2の変換部は、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、ことを特徴とする付記8に記載の信号処理装置。
(付記10)
前記第1及び第2の変換部は、前記入力したデータの最上位ビットはそのまま出力し、
前記入力したデータの前記最上位ビット以外は、前記最上位ビットとの排他的論理和を行った結果を出力する、ことを特徴とする付記8又は9に記載の信号処理装置。
(付記11)
バタフライ演算処理を行うバタフライ演算処理部と、
ひねり乗算処理を行うひねり乗算処理部と、
複数のデータの順序を並べ替えるデータ並べ替え処理部と、
を備え、高速フーリエ変換(FFT)又は逆高速フーリエ変換(IFFT)を行うFFT装置であって、
データ表現形式として2の補数表現と、2の補数表現と異なる第2の表現形式の双方を使用して演算を行い、
前記第2の表現形式は、非負のデータについては2の補数表現と同一であり、負のデータについては、前記データの2の補数表現から符号を示す最上位ビット以外のビットを反転した表現であり、
前記バタフライ演算処理部は、
2の補数表現により表現されたデータに対して処理を行い、
前記データ並べ替え処理部は、
前記第2の表現形式により表現されたデータに対して記憶処理を行い、
前記ひねり乗算処理部は、
乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
加算処理については、2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とするFFT装置。
(付記12)
前記補正処理は、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、前記Nビット(Nは正整数)のデータのうち、最下位ビットからMビット(MはM≦Nの正整数)に対して値1を加算する処理を行う、ことを特徴とする付記11に記載のFFT装置。
(付記13)
前記データ並べ替え処理部は、
データを2の補数表現から前記第2の表現形式へ変換する第1の変換部と、
前記第2の表現形式から2の補数表現へ変換する第2の変換部と、
を備え、
前記第1の変換部により、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
前記第2の変換部により、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、ことを特徴とする付記11又は12に記載のFFT装置。
(付記14)
前記第1及び第2の変換部は、前記入力したデータの最上位ビットはそのまま出力し、
前記入力したデータの前記最上位ビット以外は、前記最上位ビットとの排他的論理和を行った結果を出力する、ことを特徴とする付記11乃至13のいずれかに記載のFFT装置。
(付記15)
2の補数表現と異なる第2の表現形式により表現されたデータに対して記憶処理を行う工程と、
2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う工程と、
を含み、
前記第2の表現形式は、
データ値が正又は0の場合は、2の補数表現と同一であり、
データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である、ことを特徴とする信号処理方法。
(付記16)
前記補正処理では、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、
前記Nビット(ただし、Nは所定の正整数)のデータのうち、最下位ビットからMビット(ただし、MはM≦Nの正整数)に対して値1を加算する、ことを特徴とする付記15に記載の信号処理方法。
(付記17)
前記演算処理では、処理する演算が乗算又は除算の場合には、
前記第2の表現形式により表現されたデータに前記補正処理を行ったデータのいずれかに対して演算処理を行い、
処理する演算が加算又は減算の場合には、2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とする付記15又は16に記載の信号処理方法。
(付記18)
前記記憶処理は、
2の補数表現で表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式でのデータの記憶回路へ記憶する記憶処理と、
前記記憶回路から出力された前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換処理について、
前記記憶処理、又は、
前記記憶処理の前又は後の前記第1の変換処理又は前記第2の変換処理の少なくともいずれかを含む、ことを特徴とする付記15乃至17のいずれかに記載の信号処理方法。
(付記19)
前記演算処理は、
2の補数表現により表現されたデータを入力し、2の補数表現により表現されたデータの演算処理を行う第1の演算処理と、
2の補数表現により表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式により表現されたデータに対して行う補正処理と、
前記補正処理されたデータの演算処理を行う第2の演算処理と、
前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換処理について、
前記第1の演算処理、
前記補正処理及び前記第2の演算処理、
前記補正処理及び前記第2の演算処理に、さらに前記第1の変換処理又は前記第2の変換処理の少なくともいずれか、
のうちのいずれかを含む、ことを特徴とする付記15乃至17のいずれかに記載の信号処理方法。
(付記20)
付記15又は16に記載の信号処理方法において、データ表現形式として2の補数表現と、前記第2の表現形式の双方を使用して高速フーリエ変換又は逆高速フーリエ変換を行い、
前記演算処理が、
バタフライ演算処理を行うバタフライ演算処理と、
ひねり乗算処理を行うひねり乗算処理と、
を含み、高速フーリエ変換又は逆高速フーリエ変換を行い、
前記記憶処理が、
複数のデータの順序を並べ替えるデータ並べ替え処理を含み、
前記バタフライ演算処理は、
2の補数表現により表現されたデータに対してバタフライ演算処理を行い、
前記ひねり乗算処理は、乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
加算処理については、2の補数表現により表現されたデータに対して演算処理を行い、
前記データ並べ替え処理は、前記第2の表現形式により表現されたデータに対して記憶処理を行う、ことを特徴とする信号処理方法。
(付記21)
前記データ並べ替え処理は、データを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式から2の補数表現へ変換する第2の変換処理と、
を含み、
前記第1の変換処理では、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
前記第2の変換処理では、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、ことを特徴とする付記20に記載の信号処理方法。
(付記22)
バタフライ演算処理を行うバタフライ演算処理と、
ひねり乗算処理を行うひねり乗算処理と、
複数のデータの順序を並べ替えるデータ並べ替え処理と、
を含み、高速フーリエ変換(FFT)又は逆高速フーリエ変換(IFFT)を行うFFT方法であって、
データ表現形式として2の補数表現と、2の補数表現と異なる第2の表現形式の双方を使用して演算を行い、
前記第2の表現形式は、非負のデータについては2の補数表現と同一であり、負のデータについては、前記データの2の補数表現から符号を示す最上位ビット以外のビットを反転した表現であり、
前記バタフライ演算処理では、
2の補数表現により表現されたデータに対して処理を行い、
前記データ並べ替え処理では、
前記第2の表現形式により表現されたデータに対して記憶処理を行い、
前記ひねり乗算処理では、
乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
加算処理については、2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とするFFT演算方法。
(付記23)
前記補正処理は、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、前記Nビット(Nは正整数)のデータのうち、最下位ビットからMビット(MはM≦Nの正整数)に対して値1を加算する処理を行う、ことを特徴とする付記22に記載のFFT演算方法。
(付記24)
前記データ並べ替え処理は、データを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式から2の補数表現へ変換する第2の変換処理と、
を含み、
前記第1の変換処理では、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
前記第2の変換処理では、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、ことを特徴とする付記22又は23に記載のFFT演算方法。
(付記25)
データ値が正又は0の場合は、2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である第2の表現形式により表現されたデータに対する記憶処理と、
2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対する演算処理と、
をプロセッサに実行させるプログラム。
(付記26)
前記補正処理として、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、
前記Nビット(ただし、Nは所定の正整数)のデータのうち、最下位ビットからMビット(ただし、MはM≦Nの正整数)に対して値1を加算する処理を実行する、ことを特徴とする付記25に記載のプログラム。
(付記27)
前記演算処理として、処理する演算が乗算又は除算の場合には、
前記第2の表現形式により表現されたデータに前記補正処理を行ったデータのいずれかに対して演算処理を行い、
処理する演算が加算又は減算の場合には、2の補数表現により表現されたデータに対して演算処理を行う、付記25又は26に記載のプログラム。
(付記28)
前記記憶処理は、
2の補数表現で表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式でのデータの記憶回路へ記憶する記憶処理と、
前記記憶回路から出力された前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換処理について、
前記記憶処理、又は、
前記記憶処理の前又は後の前記第1の変換処理又は前記第2の変換処理の少なくともいずれかを含む、付記25乃至27のいずれかに記載のプログラム。
(付記29)
前記演算処理は、
2の補数表現により表現されたデータを入力し、2の補数表現により表現されたデータの演算処理を行う第1の演算処理と、
2の補数表現により表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式により表現されたデータに対して行う補正処理と、
前記補正処理されたデータの演算処理を行う第2の演算処理と、
前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換処理について、
前記第1の演算処理、
前記補正処理及び前記第2の演算処理、
前記補正処理及び前記第2の演算処理に、さらに前記第1の変換処理又は前記第2の変換処理の少なくともいずれか、
のうちのいずれかを含む、付記25乃至27のいずれかに記載のプログラム。
(付記30)
前記演算処理が、
バタフライ演算処理を行うバタフライ演算処理と、
ひねり乗算処理を行うひねり乗算処理と、
を含み、高速フーリエ変換又は逆高速フーリエ変換を行い、
前記記憶処理が、
複数のデータの順序を並べ替えるデータ並べ替え処理を含み、
前記バタフライ演算処理は、2の補数表現により表現されたデータに対してバタフライ演算処理を行い、
前記ひねり乗算処理は、乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
加算処理については、2の補数表現により表現されたデータに対して演算処理を行い、
前記データ並べ替え処理は、前記第2の表現形式により表現されたデータに対して記憶処理を行う、付記25又は26に記載のプログラム。
(付記31)
前記データ並べ替え処理は、
データを2の補数表現から前記第2の表現形式へ変換する第1の変換処理と、
前記第2の表現形式から2の補数表現へ変換する第2の変換処理と、
を含み、
前記第1の変換処理では、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
前記第2の変換処理では、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、付記30に記載のプログラム。
100 信号処理装置
101、103、105、108 記憶処理部
102、104、106、107 演算処理部
10、10a〜10d 変換回路
17 XOR回路
20、20a〜20d 補正回路
21 セレクタ回路
22 加算回路
30 記憶回路
40、41 演算回路
42 符号演算回路
43 符号なし演算回路
200 データ並べ替え部
201 第1のデータ並べ替え部(第1のデータ並べ替え手段)
202 第1のデータ振り分け部(第1のデータ振り分け手段)
203 第2のデータ振り分け部(第2のデータ振り分け手段)
204 第2のデータ並べ替え部(第2のデータ並べ替え手段)
210a〜210d RAM回路
220 データ組内並べ替え部
220a〜220d データ組内並べ替え部
221、224、225 セレクタ回路
222、223 フリップフロップ
231、232 233a〜233h、234a〜234h 変換回路
240a、240b バタフライ演算処理部
250、250a、250b、260 データ並べ替え処理部
270 ひねり乗算処理部
271a〜271d 乗算回路
272a、272b 加算回路
300 プロセッサ装置
301 プロセッサ
302 プログラム記憶部
303 RAM
304 第1のインタフェース
305 第2のインタフェース
400 FFT装置
500 64ポイントFFTのデータフロー
501 データ並べ替え処理部(データ並べ替え処理)
502、503 バタフライ演算処理部(バタフライ演算処理)
504 ひねり乗算処理部(ひねり乗算処理)
600 変換回路
601 ビット反転回路
602 1加算回路

Claims (8)

  1. データ値が正又は0の場合は、2の補数表現と同一であり、データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式である第2の表現形式により表現されたデータに対して記憶処理を行う記憶処理部と、
    2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う演算処理部と、
    を備え
    前記補正処理は、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、
    前記Nビット(ただし、Nは所定の正整数)のデータのうち、最下位ビットからMビット(ただし、MはM≦Nの正整数)に対して値1を加算する処理である、ことを特徴とする信号処理装置。
  2. 前記演算処理部は、処理する演算が乗算又は除算の場合には、
    前記第2の表現形式により表現されたデータに前記補正処理を行ったデータのいずれかに対して演算処理を行い、
    処理する演算が加算又は減算の場合には、
    2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とする請求項1に記載の信号処理装置。
  3. 前記演算処理部は、
    2の補数表現により表現されたデータを入力し、2の補数表現により表現されたデータの演算処理を行う第1の演算回路と、
    2の補数表現により表現されたデータを入力し、前記入力したデータを2の補数表現から前記第2の表現形式へ変換する第1の変換部と、
    前記第2の表現形式により表現されたデータに前記補正処理を行う補正回路と、
    前記補正回路で補正処理されたデータを入力し、前記補正処理されたデータの演算処理を行う第2の演算回路と、
    前記第2の表現形式のデータを入力し、前記入力したデータを2の補数表現へ変換して出力する第2の変換部について、
    前記第1の演算回路を備えた構成と、
    前記補正回路及び前記第2の演算回路を備えた構成と、
    前記補正回路及び前記第2の演算回路に、さらに前記第1の変換部又は前記第2の変換部の少なくともいずれかを備えた構成、
    のうちの少なくともいずれかを含み、
    前記第2の演算回路は、
    演算対象である前記補正処理した前記第2の表現形式のデータの符号ビットの演算結果を符号ビットとして出力する符号演算回路と、
    演算対象である前記補正処理した前記第2の表現形式のデータの前記符号ビット以外の絶対値部分を演算して出力する符号なし演算回路と、
    を備えた、ことを特徴とする請求項1又は2に記載の信号処理装置。
  4. 請求項1記載の信号処理装置において、データ表現形式として2の補数表現と前記第2の表現形式の双方を使用して高速フーリエ変換又は逆高速フーリエ変換を行い、
    前記演算処理部が、
    バタフライ演算処理を行うバタフライ演算処理部と、
    ひねり乗算処理を行うひねり乗算処理部と、
    を備え、
    前記記憶処理部が、
    複数のデータの順序を並べ替えるデータ並べ替え処理部を備え、
    前記バタフライ演算処理部は、2の補数表現により表現されたデータに対してバタフライ演算処理を行い、
    前記ひねり乗算処理部は、乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
    加算処理については、2の補数表現により表現されたデータに対して演算処理を行い、
    前記データ並べ替え処理部は、前記第2の表現形式により表現されたデータに対して記憶処理を行う、ことを特徴とする信号処理装置。
  5. 前記データ並べ替え処理部は、
    2の補数表現で表現されたデータを入力し前記第2の表現形式へ変換する第1の変換部と、
    前記第2の表現形式で表現されたデータを入力し2の補数表現へ変換する第2の変換部と、
    を備え、
    前記第1の変換部は、入力する2の補数表現で表現されたデータを前記第2の表現形式に変換してデータ並べ替え処理を行い、
    前記第2の変換部は、前記第2の表現形式で表現されたデータ並べ替え処理後のデータを2の補数表現に変換して出力する、ことを特徴とする請求項に記載の信号処理装置。
  6. 2の補数表現と異なる第2の表現形式により表現されたデータに対して記憶処理を行う工程と、
    2の補数表現により表現されたデータ、又は、前記第2の表現形式により表現されたデータに補正処理を行ったデータの少なくともいずれかに対して演算処理を行う工程と、
    を含み、
    前記第2の表現形式は、
    データ値が正又は0の場合は、2の補数表現と同一であり、
    データ値が負の場合は、2の補数表現から符号を示す最上位ビット以外のビットを反転した表現形式であり、
    前記補正処理では、前記第2の表現形式により表現されたNビット(Nは正整数)のデータが負の値の場合に、前記Nビット(ただし、Nは所定の正整数)のデータのうち、最下位ビットからMビット(ただし、MはM≦Nの正整数)に対して値1を加算する、ことを特徴とする信号処理方法。
  7. 前記演算処理では、処理する演算が乗算又は除算の場合には、前記第2の表現形式により表現されたデータに前記補正処理を行ったデータのいずれかに対して演算処理を行い、
    処理する演算が加算又は減算の場合には、2の補数表現により表現されたデータに対して演算処理を行う、ことを特徴とする請求項に記載の信号処理方法。
  8. 請求項記載の信号処理方法において、データ表現形式として2の補数表現と、前記第2の表現形式の双方を使用して高速フーリエ変換又は逆高速フーリエ変換を行い、
    前記演算処理が、
    バタフライ演算処理を行うバタフライ演算処理と、
    ひねり乗算処理を行うひねり乗算処理と、
    を含み、
    前記記憶処理が、
    複数のデータの順序を並べ替えるデータ並べ替え処理を含み、
    前記バタフライ演算処理は、2の補数表現により表現されたデータに対してバタフライ演算処理を行い、
    前記ひねり乗算処理は、乗算処理については、前記第2の表現形式により表現されたデータに補正処理を行ったデータに対して演算処理を行い、
    加算処理については、2の補数表現により表現されたデータに対して演算処理を行い、
    前記データ並べ替え処理は、前記第2の表現形式により表現されたデータに対して記憶処理を行う、ことを特徴とする信号処理方法。
JP2020521241A 2018-05-22 2019-05-21 信号処理装置、方法、プログラム Active JP6977883B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018097761 2018-05-22
JP2018097761 2018-05-22
PCT/JP2019/020041 WO2019225576A1 (ja) 2018-05-22 2019-05-21 信号処理装置、方法、プログラム

Publications (2)

Publication Number Publication Date
JPWO2019225576A1 JPWO2019225576A1 (ja) 2021-07-01
JP6977883B2 true JP6977883B2 (ja) 2021-12-08

Family

ID=68616944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020521241A Active JP6977883B2 (ja) 2018-05-22 2019-05-21 信号処理装置、方法、プログラム

Country Status (3)

Country Link
US (1) US20210342102A1 (ja)
JP (1) JP6977883B2 (ja)
WO (1) WO2019225576A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115833845B (zh) * 2023-01-06 2023-05-19 北京象帝先计算技术有限公司 位置输出装置和位置输出方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4520347A (en) * 1982-11-22 1985-05-28 Motorola, Inc. Code conversion circuit
US4841467A (en) * 1987-10-05 1989-06-20 General Electric Company Architecture to implement floating point multiply/accumulate operations
JPH06100961B2 (ja) * 1988-04-18 1994-12-12 富士通テン株式会社 デジタル信号処理プロセッサ
JP2766133B2 (ja) * 1992-08-06 1998-06-18 日本電気アイシーマイコンシステム株式会社 パラレル・シリアル・データ変換回路
JP2001306547A (ja) * 2000-04-21 2001-11-02 Sony Corp 演算装置及び演算方法
JP2003101415A (ja) * 2001-09-19 2003-04-04 Seiko Epson 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
US8050173B2 (en) * 2008-07-01 2011-11-01 Broadcom Corporation Dynamic precision for datapath modules
WO2014115540A1 (ja) * 2013-01-23 2014-07-31 日本電気株式会社 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム記憶媒体
WO2015011874A1 (ja) * 2013-07-23 2015-01-29 日本電気株式会社 デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
KR102372362B1 (ko) * 2015-09-22 2022-03-08 삼성전자주식회사 부호화된 크기 방식을 이용한 디지털 신호 프로세서 및 이를 포함하는 무선 통신 수신기

Also Published As

Publication number Publication date
JPWO2019225576A1 (ja) 2021-07-01
WO2019225576A1 (ja) 2019-11-28
US20210342102A1 (en) 2021-11-04

Similar Documents

Publication Publication Date Title
JP6288089B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
JP6256348B2 (ja) 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム
WO2011074128A1 (en) Information processing apparatus, control method thereof, program, and computer-readable storage medium
JP6930607B2 (ja) 信号処理装置、方法、プログラムと記録媒体
US9785614B2 (en) Fast Fourier transform device, fast Fourier transform method, and recording medium storing fast Fourier transform program
JP6977883B2 (ja) 信号処理装置、方法、プログラム
JP2002351858A (ja) 処理装置
JP6489021B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラム
JP5763911B2 (ja) ルートi(√i)演算の保持を特徴とする基数8固定小数点FFT論理回路
JP6943283B2 (ja) 高速フーリエ変換装置、データ並べ替え処理装置、高速フーリエ変換処理方法およびプログラム
JP6992745B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびデジタルフィルタ処理プログラム
US11764942B2 (en) Hardware architecture for memory organization for fully homomorphic encryption
JP6451647B2 (ja) 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム
JP4405452B2 (ja) 逆変換回路
WO2020195239A1 (ja) デジタルフィルタ装置、デジタルフィルタ装置の動作方法及びプログラムを格納した非一時的なコンピュータ可読媒体
JP2009245407A (ja) 複素数の積和演算装置および積和演算方法
JPWO2015045310A1 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム
JP2023131901A (ja) 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム
US20210182061A1 (en) Information processing device, information processing method, and program
JP2010072981A (ja) 複素数の積和演算装置および積和演算方法
CN116955899A (zh) 一种信号处理方法及装置
JP5570250B2 (ja) 適応フィルタ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211025

R150 Certificate of patent or registration of utility model

Ref document number: 6977883

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150