JP2011070392A - 離散フーリエ変換装置および離散フーリエ変換方法 - Google Patents

離散フーリエ変換装置および離散フーリエ変換方法 Download PDF

Info

Publication number
JP2011070392A
JP2011070392A JP2009220792A JP2009220792A JP2011070392A JP 2011070392 A JP2011070392 A JP 2011070392A JP 2009220792 A JP2009220792 A JP 2009220792A JP 2009220792 A JP2009220792 A JP 2009220792A JP 2011070392 A JP2011070392 A JP 2011070392A
Authority
JP
Japan
Prior art keywords
timing
output
data
control signal
multiplication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009220792A
Other languages
English (en)
Other versions
JP5493646B2 (ja
Inventor
Kimi Ishihara
希実 石原
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
Priority to JP2009220792A priority Critical patent/JP5493646B2/ja
Publication of JP2011070392A publication Critical patent/JP2011070392A/ja
Application granted granted Critical
Publication of JP5493646B2 publication Critical patent/JP5493646B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】離散フーリエ変換のポイント数の種類の増加に伴い加算器および乗算器の個数の増加を防止可能な離散フーリエ変換装置および離散フーリエ変換方法を提供する。
【解決手段】離散フーリエ変換装置は、第一タイミングで入力された複数データに制御信号が示すポイント数の離散フーリエ変換に応じた前段加算処理を実行する第一加算手段と、第一タイミングよりも遅い第二タイミングで入力されたデータに前記離散フーリエ変換に応じた乗算処理を実行する乗算手段と、第二タイミングよりも遅い第三タイミングで入力されたデータに前記離散フーリエ変換に応じた後段加算処理を実行する第二加算手段と、を含む。第一加算手段は、前段加算処理の結果を第二タイミングで乗算手段に出力し、乗算手段は、乗算処理の結果を第三タイミングで第二加算手段に出力する。
【選択図】図1

Description

本発明は、離散フーリエ変換装置および離散フーリエ変換方法に関し、特には、点数(ポイント数)が異なる離散フーリエ変換(DFT)を実行できる離散フーリエ変換装置および離散フーリエ変換方法に関する。
周波数領域の信号を時間領域の信号に変換する処理と、時間領域の信号を周波数領域の信号に変換する処理と、を含む変復調処理を行う無線通信信号処理装置が知られている。変復調処理の例としては、LTE(Long Term Evolution)で用いられる離散フーリエ変換(DFT)と離散逆フーリエ変換(IDFT)とを行う処理が挙げられる。
一般に、DFTは以下の式で表わされる。
Figure 2011070392
ここで、Xは入力、Yは出力、NはDFTの点数である。また、
Figure 2011070392
である。
DFTを高速に実行する手法として、ある点数のDFTを、その点数より少ない点数のDFT処理の組み合わせとして処理するウィノグラードの方法がある。
図49は、ウィノグラードの方法を用いて、15点DFTを3点及び5点のDFTに分割して処理する手法を示した図である。
ウィノグラードの方法によれば、15点のDFTは、3点DFTの前段演算部、5点DFTの前段演算部、乗算段、5点DFTの後段演算部、及び3点DFTの後段演算部から構成することができる。
まず、3点DFTの前段演算部が、X(k)で示される入力データに対し、入力データ同士の加算処理を行う。
次に、3点DFTの前段演算部は、加算処理結果を5点DFTの前段演算部に出力し、5点DFTの前段演算部が、3点DFTの前段演算部からの加算処理結果について加算処理を行う。
次に、5点DFTの前段演算部は、加算処理結果を乗算段に送り、乗算段は、5点DFTの前段演算部からの加算処理結果と、あらかじめ用意しておいた乗算係数と、の乗算を行う。
次に、乗算段は、乗算結果を5点DFTの後段演算部に送り、5点DFTの後段演算部は、入力されたデータ同士の加算処理を行う。
最後に、5点DFTの後段演算部は、加算処理結果を3点DFTの後段演算部に送り、3点DFTの後段演算部が、入力されたデータ同士の加算処理を行い、結果を出力する。
ウィノグラードの方法を修正した手法とアーキテクチャがいくつか提案されている。
特許文献1には、デジタルチャネライザで用いられるDFTを効率よく処理するためのアーキテクチャが提案されている。特許文献1に開示の方法では、DFT以後の処理において、不必要なDFT出力を計算するDFT回路を削減することによって、後段演算部の加算器が削減されている。
また、特許文献2には、特定のポイント数kのFFT回路がL個並列に配置され、k、2*k、..、L*kポイントのいずれのFFTも行えるサイズ可変離散フーリエ変換処理装置が記載されている。
特開2000−252934号公報 特開2000−123000号公報
特許文献1に開示されたDFT処理方法は、ポイント数に対して汎用性がなく、複数種類のポイント数のフーリエ変換に対応するためには、ポイント数ごとに、個別にDFT回路を設計しなければならない。このため、ポイント数の種類が増加するほど、DFT回路を構成する加算器および乗算器の個数が増加し、回路規模が大きくなってしまうという課題がある。また、DFTの点数毎に個別に回路を設計しなければならないため、設計に時間がかかってしまう。
特許文献2に開示されたサイズ可変離散フーリエ変換処理装置は、ポイント数kのFFT回路をL個用いることによって、L種類のポイント数のフーリエ変換に対応している。このため、ポイント数の種類が増加するほど、DFT回路を構成する加算器および乗算器の個数が増加し、回路規模が大きくなってしまうという課題がある。
つまり、特許文献1、2に開示された技術では、ポイント数の種類が増加するほど、DFT回路を構成する加算器および乗算器の個数が増加し、回路規模が大きくなってしまうという課題がある。
本発明の目的は、上記課題を解決可能な離散フーリエ変換装置および離散フーリエ変換方法を提供することである。
本発明の離散フーリエ変換装置は、複数種類のポイント数のうちの一つを示した制御信号と、複数のデータと、を受け付け、前記複数のデータに対して、前記制御信号にて示されたポイント数の離散フーリエ変換を、実行する離散フーリエ変換装置であって、
前記複数のデータが、クロックにて規定される第一タイミングで入力されると、前記複数のデータに対して、前記離散フーリエ変換に応じた前段加算処理を実行する第一加算手段と、
前記第一タイミングよりも遅い第二タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた乗算処理を実行する乗算手段と、
前記第二タイミングよりも遅い第三タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた後段加算処理を実行する第二加算手段と、を含み、
前記第一加算手段は、前記前段加算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第二タイミングで、前記乗算手段に出力し、
前記乗算手段は、前記前段加算処理の結果に対して前記乗算処理を実行し、当該乗算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第三タイミングで、前記第二加算手段に出力し、
前記第二加算手段は、前記乗算処理の結果に対して前記後段加算処理を行い、当該後段加算処理の結果を、前記複数のデータに対して前記離散フーリエ変換を実行した結果として出力する。
本発明の離散フーリエ変換方法は、複数種類のポイント数のうちの一つを示した制御信号と、複数のデータと、を受け付け、前記複数のデータに対して、前記制御信号にて示されたポイント数の離散フーリエ変換を、実行する離散フーリエ変換装置での離散フーリエ変換方法であって、
前記複数のデータが、クロックにて規定される第一タイミングで入力されると、前記複数のデータに対して、前記離散フーリエ変換に応じた前段加算処理を実行する第一加算ステップと、
前記第一タイミングよりも遅い第二タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた乗算処理を実行する乗算ステップと、
前記第二タイミングよりも遅い第三タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた後段加算処理を実行する第二加算ステップと、を含み、
前記第一加算ステップでは、前記前段加算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第二タイミングで出力し、
前記乗算ステップでは、前記前段加算処理の結果を前記第二タイミングで受け付け、当該前段加算処理の結果に対して前記乗算処理を実行し、当該乗算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第三タイミングで出力し、
前記第二加算ステップでは、前記乗算処理の結果を前記第三タイミングで受け付け、当該乗算処理の結果に対して前記後段加算処理を行い、当該後段加算処理の結果を、前記複数のデータに対して前記離散フーリエ変換を実行した結果として出力する。
本発明によれば、離散フーリエ変換のポイント数の種類の増加に伴い加算器および乗算器の個数が増加することを防止することが可能になる。
離散フーリエ変換装置200の構成を示した図である。 前段第一加算ユニット204の構成を示す図である。 前段転置ユニット205の構成を示す図である。 前段第二加算ユニット206の構成を示す図である。 前段第三加算ユニット207の構成を示す図である。 乗算ユニット202の構成を示す図である。 後段第一加算ユニット210の構成を示す図である。 後段第二加算ユニット211の構成を示す図である。 後段転置ユニット212の構成を示す図である。 後段第三加算ユニット213の構成を示す図である。 3点DFT/IDFTのデータフローを示す図である。 5点DFT/IDFTのデータフローを示す図である。 9点DFT/IDFTのデータフローを示す図である。 15点DFT/IDFTのデータフローを示す図である。 制御信号C_sigの内容を示す図である。 点数信号とDFT/IDFT点数の対応、及びDFT/IDFT選択信号とDFT, IDFTの対応を示す図である。 オフセットテーブル702の内容を示す図である。 DFT乗算係数メモリ704、IDFT乗算係数メモリ705の内容を示す図である。 3、5、9、15点DFT/IDFTの離散フーリエ変換装置200への入出力フォーマットを示す図である。 3点DFT/IDFTの前段第一加算ユニット204における処理内容を示すタイムチャートである。 3点DFT/IDFTの前段転置ユニット205における処理内容を示すタイムチャートである。 3点DFT/IDFTの前段第二加算ユニット206における処理内容を示すタイムチャートである。 3点DFT/IDFTの前段第三加算ユニット207における処理内容を示すタイムチャートである。 3点DFT/IDFTの乗算ユニット202における処理内容を示すタイムチャートである。 3点DFT/IDFTの後段第一加算ユニット210における処理内容を示すタイムチャートである。 3点DFT/IDFTの後段第二加算ユニット211における処理内容を示すタイムチャートである。 3点DFT/IDFTの後段転置ユニット212における処理内容を示すタイムチャートである。 3点DFT/IDFTの後段第三加算ユニット213における処理内容を示すタイムチャートである。 5点DFT/IDFTの前段第一加算ユニット204における処理内容を示すタイムチャートである。 5点DFT/IDFTの前段転置ユニット205における処理内容を示すタイムチャートである。 5点DFT/IDFTの前段第二加算ユニット206における処理内容を示すタイムチャートである。 5点DFT/IDFTの前段第三加算ユニット207における処理内容を示すタイムチャートである。 5点DFT/IDFTの乗算ユニット202における処理内容を示すタイムチャートである。 5点DFT/IDFTの後段第一加算ユニット210における処理内容を示すタイムチャートである。 5点DFT/IDFTの後段第二加算ユニット211における処理内容を示すタイムチャートである。 5点DFT/IDFTの後段転置ユニット212における処理内容を示すタイムチャートである。 5点DFT/IDFTの後段第三加算ユニット213における処理内容を示すタイムチャートである。 9点DFT/IDFTの前段第一加算ユニット204における処理内容を示すタイムチャートである。 9点DFT/IDFTの前段転置ユニット205における処理内容を示すタイムチャートである。 9点DFT/IDFTの前段第二加算ユニット206における処理内容を示すタイムチャートである。 9点DFT/IDFTの前段第三加算ユニット207における処理内容を示すタイムチャートである。 9点DFT/IDFTの乗算ユニット202における処理内容を示すタイムチャートである。 9点DFT/IDFTの後段第一加算ユニット210における処理内容を示すタイムチャートである。 9点DFT/IDFTの後段第二加算ユニット211における処理内容を示すタイムチャートである。 9点DFT/IDFTの後段転置ユニット212における処理内容を示すタイムチャートである。 9点DFT/IDFTの後段第三加算ユニット213における処理内容を示すタイムチャートである。 15点DFT/IDFTの乗算ユニット202における処理内容を示すタイムチャートである。 本発明の第二の実施形態の構成を示す図である。 ウィノグラードの方法を用いた、15点DFTの処理方法を示す図である。
次に、本発明の実施形態の離散フーリエ変換装置について図面を参照して詳細に説明する。
(第1実施形態)
図1は、本発明の第1実施形態の離散フーリエ変換装置(以下「演算装置」とも称する)200を示すブロック図である。
図1において、演算装置200は、前加算ユニット201と、乗算ユニット202と、後加算ユニット203と、を含む。
前加算ユニット201は、前段第一加算ユニット204と、前段転置ユニット205と、前段第二加算ユニット206と、前段第三加算ユニット207と、を含む。乗算ユニット202は、乗算器208と、制御ユニット209と、を含む。後加算ユニット203は、後段第一加算ユニット210と、後段第二加算ユニット211と、後段転置ユニット212と、後段第三加算ユニット213と、を含む。
演算装置200は、複数種類のポイント数のうちの1つを示した制御信号と、複数のデータと、を受け付けると、複数のデータに対して、制御信号にて示されたポイント数の離散フーリエ変換(DFT)を実行する。
本実施形態では、複数種類のポイント数は、3点、5点、9点および15点にて構成される。複数のデータのそれぞれは、DFTが施される複素数データである。
演算装置200は、制御信号と複数のデータとを受け付けると、まず、制御信号が示すポイント数のDFTに応じた前段加算処理を、複素数データに対して実行して、前段加算処理結果を生成する。
続いて、演算装置200は、制御信号が示すポイント数のDFTに応じた乗算処理を、その前段加算処理結果に対して実行して、乗算処理結果を生成する。
続いて、演算装置200は、制御信号が示すポイント数のDFTに応じた後段加算処理を、その乗算処理結果に対して実行して、制御信号にて示されたポイント数のDFTの結果を出力する。
前段加算処理は、乗算処理の前に行われるべき加算処理であり、後段加算処理は、乗算処理の後に行われるべき加算処理である。
なお、DFTの処理を、前段加算処理と乗算処理と後段加算処理とに分けて行うことは、例えば、ウィノグラードの方法等により公知である(図49参照)
前加算ユニット201は、一般的に第一加算手段と呼ぶことができる。
前加算ユニット201は、複数のデータが、第一タイミングで入力されると、その複数のデータに対して、制御信号が示すポイント数の離散フーリエ変換に応じた前段加算処理を実行する。
乗算ユニット202は、一般的に乗算手段と呼ぶことができる。
乗算ユニット202は、第一タイミングよりも遅い第二タイミングで入力されたデータに対して、制御信号が示すポイント数の離散フーリエ変換に応じた乗算処理を実行する。
後加算ユニット203は、一般的に第二加算手段と呼ぶことができる。
後加算ユニット203は、第二タイミングよりも遅い第三タイミングで入力されたデータに対して、制御信号が示すポイント数の離散フーリエ変換に応じた後段加算処理を実行する。
なお、前加算ユニット201は、前段加算処理の結果を、制御信号にて示されたポイント数に関わらず、第二タイミングで、乗算ユニット202に出力する。
また、乗算ユニット202は、前段加算処理の結果に対して乗算処理を実行し、その乗算処理の結果を、制御信号にて示されたポイント数に関わらず、第三タイミングで、後加算ユニット203に出力する。
また、後加算ユニット203は、乗算処理の結果に対して後段加算処理を行い、その後段加算処理の結果を、複数のデータに対して制御信号にて示されたポイント数の離散フーリエ変換を実行した結果として出力する。
前段第一加算ユニット204は、一般的に第一演算手段と呼ぶことができる。
前段第一加算ユニット204は、第一タイミングで複数のデータを受け付けると、制御信号に従って、複数のデータ同士を選択的に加算する(加算処理)、もしくは、複数のデータをそのまま出力する。
前段転置ユニット205は、一般的に並び替え手段と呼ぶことができる。
前段転置ユニット205は、第一タイミングよりも遅く第二タイミングよりも早い第四タイミングで入力されたデータを、制御信号に従って、選択的に並べ替える(転置処理)、もしくは、そのまま出力(スルー処理)する。
前段第二加算ユニット206は、一般的に第二演算手段と呼ぶことができる。
前段第二加算ユニット206は、第四タイミングよりも遅く第二タイミングよりも早い第五タイミングで入力されたデータを、制御信号に従って、選択的に加算する(加算処理)、もしくは、そのまま出力する。
前段第三加算ユニット207は、一般的に第三演算手段と呼ぶことができる。
前段第三加算ユニット207は、第五タイミングよりも遅く第二タイミングよりも早い第六タイミングで入力されたデータを、制御信号に従って、選択的に加算する(加算処理)、もしくはそのまま出力する。
なお、前段第一加算ユニット204は、制御信号にて示されたポイント数に関わらず、自己の出力を、第四タイミングで、前段転置ユニット205に出力する。
前段転置ユニット205は、制御信号にて示されたポイント数に関わらず、自己の出力を、第五タイミングで、前段第二加算ユニット206に出力する。
前段第二加算ユニット206は、制御信号にて示されたポイント数に関わらず、自己の出力を、第六タイミングで、前段第三加算ユニット207に出力する。
前段第三加算ユニット207は、制御信号にて示されたポイント数に関わらず、自己の出力を、第二タイミングで、乗算ユニット202に出力する。
乗算器208は、制御ユニット209から乗算係数を読み出し、その乗算係数を前段第三加算ユニット207の出力に乗算する乗算処理を行う。
制御ユニット209は、ポイント数ごとに、そのポイント数に対応する複素数の乗算係数を蓄えたメモリ(記憶手段)と、制御信号が示すポイント数に対応する乗算係数をメモリから読み出すためのアドレスを生成するアドレス生成ユニット(読み出し手段)と、を含む。
後段第一加算ユニット210は、一般的に第四演算手段と呼ぶことができる。
後段第一加算ユニット210は、第三タイミングで乗算ユニット202の出力を受け付けると、制御信号に従って、乗算ユニット202の出力同士を選択的に加算する(加算処理)、もしくは、乗算ユニット202の出力をそのまま出力する。
後段第二加算ユニット211は、一般的に第五演算手段と呼ぶことができる。
後段第二加算ユニット211は、第三タイミングよりも遅い第七タイミングで入力されたデータを、制御信号に従って、選択的に加算する(加算処理)、そのまま出力する、または、選択的に加算した加算結果に選択的に純虚数を乗算する。
後段転置ユニット212は、一般的にデータ並び替え手段と呼ぶことができる。
後段転置ユニット212は、第七タイミングよりも遅い第八タイミングで入力されたデータを、制御信号に従って、選択的に並べ替える(転置処理)、もしくは、そのまま出力(スルー処理)する。
後段第三加算ユニット213は、一般的に第六演算手段と呼ぶことができる。
後段第三加算ユニット213は、第八タイミングよりも遅い第九タイミングで入力されたデータを、制御信号に従って、選択的に加算する(加算処理)、もしくは、そのまま出力する。
なお、後段第一加算ユニット210は、制御信号にて示されたポイント数に関わらず、自己の出力を、第七タイミングで、後段第二加算ユニット211に出力する。
後段第二加算ユニット211は、制御信号にて示されたポイント数に関わらず、自己の出力を、第八タイミングで、後段転置ユニット212に出力する。
後段転置ユニット212は、制御信号にて示されたポイント数に関わらず、自己の出力を、第九タイミングで、後段第三加算ユニット213に出力する。
後段第三加算ユニット213は、自己の出力を、複数のデータに対して制御信号にて示されたポイント数の離散フーリエ変換を実行した結果として出力する。
図2は、前段第一加算ユニット204を示したブロック図である。
図2において、前段第一加算ユニット204は、遅延回路Dと、クロスバ(Xbar)31および37と、加算器32、33、35および36と、セレクタ(Sel)34と、を含む。
なお、前段第一加算ユニット204は、入力された制御信号C_sigを取り込み、また、制御信号C_sigをC_outとして出力する。
遅延回路Dは、演算装置200へ入力された複素数データin3を1クロック分遅延する。
クロスバ31は、制御信号C_sigに従って、遅延回路Dからの出力regr及び複素数データin1、in2、in3のそれぞれを、sel1、sel2、sel3、sel4、sel6、sel7、sel8のいずれかとして出力する。
加算器32は、sel3とsel4とを加算する加算処理を行う。
加算器33は、sel3と符号を反転したsel4とを加算する加算処理を行う。
セレクタ34は、制御信号C_sigに従って、sel2か加算器32の出力add_o_3かを選択して出力する。
加算器35は、sel1とセレクタ34の出力sel5とを加算する加算処理を行う。
加算器36は、sel1と符号を反転したsel5とを加算する加算処理を行う。
クロスバ37には、加算器35の出力add_o_1、加算器36の出力add_o_2、加算器32の出力add_o_3、加算器33の出力add_o_4、sel6、sel7、および、sel8が、入力可能である。
クロスバ37は、入力された信号のそれぞれを、制御信号C_sigに従って、out1、out2、out3、 out4として出力する。
図3は、前段転置ユニット205を示したブロック図である。
図3において、複素数データin1は、前段第一加算ユニット204からのout1であり、複素数データin2は、前段第一加算ユニット204からのout2であり、複素数データin3は、前段第一加算ユニット204からのout3であり、複素数データin4は、前段第一加算ユニット204からのout4であり、制御信号C_sigは、前段第一加算ユニット204からのC_outである。
図3において、前段転置ユニット205は、複数の遅延回路Dと、クロスバ(Xbar)41、42および43と、を含む。なお、図3内の各遅延回路Dは、入力されたデータを1クロック遅延させる。
前段転置ユニット205は、入力された複素数データin1, in2, in3およびin4と、同じく入力された制御信号C_sigと、をペアとして扱う。すなわち、前段転置ユニット205内のクロスバなどに入力される個々の複素数データには、制御信号C_sigが付加されることになる。
前段転置ユニット205は、制御信号と複素数データとの入力時に、制御信号と複素数データをペアにする処理を行う。以下では、この処理を「統合」と呼ぶこととする。
クロスバ41は、複素数データin1からin4の各々を、それぞれの複素数データに統合された制御信号C_sigに従って、Sel_1_1からSel_1_7のいずれかとして出力する。
クロスバ42は、遅延回路Dからの出力D_Sel_1_1からD_Sel_1_4を、各データに統合されている制御信号C_sigに従って、Sel_2_1からSel_2_4のいずれかとして出力する。
クロスバ43は、D_dt_1からD_dt_11の各信号を、それぞれに統合された制御信号に従って、Sel_3_1からSel_3_4のいずれかとして出力する。
Sel_3_1からSel_3_4の各信号は、制御信号と複素数データとに分離される。この分離された信号のうち、複素数データのみが、本ユニットからの出力out1、out2、out3、out4として出力される。一方、制御信号は、図3のGNDで示したグラウンドに入力され、以降使用されることはない。また、制御信号C_sigは、10クロック遅延され、C_outとして出力される。
図4は、前段第二加算ユニット206を示したブロック図である。
図4において、複素数データin1は、前段転置ユニット205からのout1であり、複素数データin2は、前段転置ユニット205からのout2であり、複素数データin3は、前段転置ユニット205からのout3であり、複素数データin4は、前段転置ユニット205からのout4であり、制御信号C_sigは、前段転置ユニット205からのC_outである。
図4において、前段第二加算ユニット206は、複数の遅延回路Dと、クロスバ(Xbar)&符号反転器51と、加算器52、53、54および55と、を含む。
クロスバ(Xbar)&符号反転器51は、制御信号C_sigに従って、入力in1からin4と、遅延回路Dの出力regr1からregr5と、の符号を反転し、それぞれを、sel1からsel9のいずれかとして出力する。
加算器52は、sel1とsel2とsel3とを加算する加算処理を行う。加算器53は、sel4とsel5とを加算する加算処理を行う。加算器54は、sel6とsel7とを加算する加算処理を行う。加算器55は、sel8とsel9とを加算する加算処理を行う。
これら加算器の出力は、それぞれ、out1, out2, out3, out4として、本ユニットから出力される。
また、制御信号C_sigは、1クロック遅延されて、C_outとして出力される。
図5は、前段第三加算ユニット207を示したブロック図である。
図5において、複素数データin1は、前段第二加算ユニット206からのout1であり、複素数データin2は、前段第二加算ユニット206からのout2であり、複素数データin3は、前段第二加算ユニット206からのout3であり、複素数データin4は、前段第二加算ユニット206からのout4であり、制御信号C_sigは、前段第二加算ユニット206からのC_outである。
前段第三加算ユニット207は、複数の遅延回路Dと、クロスバ(Xbar)&符号反転器61と、加算器62、63、64および65と、を含む。
クロスバ(Xbar)&符号反転器61は、制御信号C_sigに従って、入力in1からin4と、遅延回路Dの出力regr1からregr4と、の符号を反転し、それぞれを、sel1からsel10のいずれかとして出力する。
加算器62は、sel1とsel2とsel3とを加算する加算処理を行う。加算器63は、sel4とsel5とを加算する加算処理を行う。加算器64は、sel6とsel7とsel8とを加算する加算処理を行う。加算器65は、sel9とsel10とを加算する加算処理を行う。
これら加算器の出力は、それぞれ、out1, out2, out3, out4として出力される。
また、制御信号C_sigは、C_outとして出力される。
図6は、制御ユニット209と乗算器208を示したブロック図である。
図6において、複素数データin1は、前段第三加算ユニット207からのout1であり、複素数データin2は、前段第三加算ユニット207からのout2であり、複素数データin3は、前段第三加算ユニット207からのout3であり、複素数データin4は、前段第三加算ユニット207からのout4であり、制御信号C_sigは、前段第三加算ユニット207からのC_outである。
図6において、制御ユニット209は、後述するクロック数信号に加算するオフセットを格納したオフセットテーブル702と、乗算係数メモリ704および705と、加算器703と、セレクタ706と、を含む。
乗算器208は、クロスバ(Xbar)701と、入力信号と乗算係数の、実数部と虚数部をそれぞれ乗算する並列乗算器707、708、709および710と、純虚数を乗算する純虚数乗算器711、712、713および714と、セレクタ715、716、717および718と、を含む。
制御ユニット209においては、制御信号C_sigが入力されると、C_sigに従ってオフセットテーブル702からオフセットが出力される。加算器703は、そのオフセットとクロック数信号とを加算する。この加算結果に従って、乗算係数メモリ704および705のそれぞれから、乗算係数が出力される。セレクタ706は、後述のDFT/IDFT選択信号に従って、乗算係数メモリ704からの乗算係数と乗算係数メモリ705からの乗算係数とのいずれかを、mult_cf1からmult_cf4として出力する。
なお、クロック数信号、DFT/IDFT選択信号、および、メモリやテーブルの構成とそのアクセス方法については、後で詳細を説明する。
乗算器208では、クロスバ(Xbar)701は、制御信号C_sigに従って、入力in1からin4のそれぞれを、sel1からsel5のいずれかとして出力する。
並列乗算器707、708、709および710は、それぞれ、sel2とmult_cf4、sel3とmult_cf3、sel4とmult_cf2、sel5とmult_cf1を乗算し、それら乗算結果を、mult_sel1からmult_sel4のいずれかとして出力する。
純虚数乗算器711、712、713および714は、それぞれ、mult_sel1からmult_sel4に対し、純虚数を乗算し、それら乗算結果を、mult_i_sel1からmult_i_sel4のいずれかとして出力する。
セレクタ715、716、717および718は、それぞれ、C_sigに従って、mult_sel1からmult_sel4と、mult_i_sel1からmult_i_sel4とを、それぞれ選択的にout1からout4として出力する。
なお、クロスバ(Xbar)701の出力sel1は、out1として出力される。また、制御信号C_sigは、C_outとして出力される。
図7は、後段第一加算ユニット210を示したブロック図である。
図7において、複素数データin1は、乗算器208からのout1であり、複素数データin2は、乗算器208からのout2であり、複素数データin3は、乗算器208からのout3であり、複素数データin4は、乗算器208からのout4であり、複素数データin5は、乗算器208からのout5であり、制御信号C_sigは、乗算器208からのC_outである。
図7において、後段第一加算ユニット210は、クロスバ(Xbar)81および85と、加算器82、83および84と、を含む。
クロスバ(Xbar)81は、制御信号C_sigに従って、入力in1からin6のそれぞれを、sel1からsel9のいずれかとして出力する。
加算器82は、sel4とsel5を加算し、その加算結果add_s1を出力する。加算器83は、sel6とsel7を加算し、その加算結果add_s2を出力する。加算器84は、sel8とsel9を加算し、その加算結果add_s3を出力する。
クロスバ(Xbar)85は、sel1、sel2、sel3、add_s1、add_s2およびadd_s3を入力可能である。クロスバ(Xbar)85は、C_sigに従って、入力信号のそれぞれを、out1からout4のいずれかとして出力する。
また、制御信号C_sigは、C_outとして出力される。
図8は、後段第二加算ユニット211を示したブロック図である。
図8において、複素数データin1は、後段第一加算ユニット210からのout1であり、複素数データin2は、後段第一加算ユニット210からのout2であり、複素数データin3は、後段第一加算ユニット210からのout3であり、複素数データin4は、後段第一加算ユニット210からのout4であり、制御信号C_sigは、後段第一加算ユニット210からのC_outである。
図8において、後段第二加算ユニット211は、複数の遅延回路Dと、クロスバ(Xbar)901と、加算器902、903、904および905と、純虚数乗算器906、907、908および909と、Sel(セレクタ)910、911、912および913と、を含む。
クロスバ(Xbar)901は、制御信号C_sigに従って、入力in1からin4と遅延回路Dの出力regr1からregr10とのそれぞれを、sel1からsel12のいずれかとして出力する。
加算器902は、sel1とsel2とsel3とを加算して、加算結果add_s1を出力する。加算器903は、sel4とsel5とsel6とを加算して、加算結果add_s2を出力する。加算器904は、sel7とsel8とsel9とを加算して、加算結果add_s3を出力する。加算器904は、sel10とsel11とsel12とを加算して、加算結果add_s4を出力する。
純虚数乗算器906は、加算結果add_s1に純虚数を乗算して、乗算結果add_i_s1を出力する。純虚数乗算器907は、加算結果add_s2に純虚数を乗算して、乗算結果add_i_s2を出力する。純虚数乗算器908は、加算結果add_s3に純虚数を乗算して、乗算結果add_i_s3を出力する。純虚数乗算器909は、加算結果add_s4に純虚数を乗算して、乗算結果add_i_s4を出力する。
セレクタSel910は、C_sigに従って、加算器902の出力か純虚数乗算器906の出力かを選択して、その選択結果を、out1として出力する。セレクタSel911は、C_sigに従って、加算器903の出力か純虚数乗算器907の出力かを選択して、その選択結果を、out2として出力する。セレクタSel912は、C_sigに従って、加算器904の出力か純虚数乗算器908の出力かを選択して、その選択結果を、out3として出力する。セレクタSel913は、C_sigに従って、加算器905の出力か純虚数乗算器909の出力かを選択して、その選択結果を、out4として出力する。
C_sigは、2クロック遅延され、C_outとして出力される。
図9は、後段転置ユニット212を示したブロック図である。
図9において、複素数データin1は、後段第二加算ユニット211からのout1であり、複素数データin2は、後段第二加算ユニット211からのout2であり、複素数データin3は、後段第二加算ユニット211からのout3であり、複素数データin4は、後段第二加算ユニット211からのout4であり、制御信号C_sigは、後段第二加算ユニット211からのC_outである。
図9において、後段転置ユニット212は、複数の遅延回路Dと、クロスバ(Xbar)1001、1002、1003および1004と、を含む。
後段転置ユニット212では、まず、入力in1、in2、in3、in4が、制御信号C_sigと統合される。
クロスバ(Xbar)1001は、これらの信号を、それぞれ、Sel1_1からSel1_7のいずれかとして出力する。
クロスバ(Xbar)1002は、Sel1_1と、遅延回路Dの出力D_Sel1_1からD_Sel1_3を、それぞれが有する制御信号に従って、Sel2_1からSel2_4のいずれかに振り分ける。
クロスバ(Xbar)1003は、遅延回路Dの出力D_Sel2_1からD_Sel2_3を、それぞれが有する制御信号に従って、Sel3_1、Sel3_2、Sel3_3のいずれかに振り分ける。
クロスバ(Xbar)1004は、D_Sel3_1からD_Sel3_3と、D_Sel2_1からD_Sel2_3と、Sel2_4、Sel1_5、Sel1_6、および、Sel1_7を、それぞれが有する制御信号に従って、Sel4_1からSel4_4のいずれかに振り分ける。
Sel4_1からSel4_4は、制御信号と複素数データに分離される。複素数データのそれぞれは、out1、out2、out3、out4のいずれかとして出力される。一方、制御信号は、図9のGNDで示されるグラウンドへと出力され、以降使用されることはない。
また、制御信号C_sigは、遅延回路Dによって3クロック遅延され、C_outとして出力される。
図10は、後段第三加算ユニット213を示したブロック図である。
図10において、複素数データin1は、後段転置ユニット212からのout1であり、複素数データin2は、後段転置ユニット212からのout2であり、複素数データin3は、後段転置ユニット212からのout3であり、複素数データin4は、後段転置ユニット212からのout4であり、制御信号C_sigは、後段転置ユニット212からのC_outである。
図10において、後段第三加算ユニット213は、複数の遅延回路Dと、クロスバ(Xbar)1101および1108と、加算器1102、1103、1106および1107と、Sel(セレクタ)1104および1105と、を含む。
クロスバ(Xbar)1101は、制御信号C_sigに従って、入力in1からin4と遅延回路Dの出力regr1からregr5とのそれぞれを、sel1からsel7のいずれかとして出力する。
加算器1102は、sel1とsel2を加算して、加算結果add_o_1を出力する。加算器1103は、sel1と符号を反転したsel2とを加算し、加算結果add_o_2を出力する。
セレクタSel1104は、制御信号C_sigに従って、sel1とadd_o_2のいずれかを選択し、その選択結果をadd_sel1として出力する。セレクタSel1105は、制御信号C_sigに従って、sel3とadd_o_1のいずれかを選択し、その選択結果をadd_sel2として出力する。
加算器1106は、add_sel2とsel4を加算して、加算結果add_o_3を出力する。加算器1107は、add_sel2と符号を反転したsel4を加算して、加算結果add_o_4を出力する。
クロスバ(Xbar)1108は、add_sel1、add_o_1、add_o_3、add_o_4、sel5、sel6およびsel7を入力可能である。クロスバ(Xbar)1108は、制御信号C_sigに従って、入力信号のそれぞれを、out1からout4のいずれかとして出力する。
次に、演算装置200が、制御信号に従って、3、5、9、15点DFT/IDFTを行う例を説明する。
まず、演算装置200が処理する3点DFT/IDFT、5点DFT/IDFT、9点DFT/IDFT、15点DFT/IDFTのデータフローのそれぞれを、図11、図12、図13、図14に示す。
なお、DFTとIDFTは、後述の乗算係数を変えるだけで、その他は同じデータフローで処理することができる。このため、本説明では、各点数のDFTとIDFTを、それぞれの点数について、1つの図、すなわち、3点DFT/IDFTを図11、5点DFT/IDFTを図12、9点DFT/IDFTを図13、15点DFT/IDFTを図14を用いて説明する。
図11、図12、図13、図14において、矢印が重なる箇所は加算を示し、“−”で示すボックスは、そこを通過した信号の符号を反転することを意味し、“i”で示すボックスは、そこを通過した信号に純虚数を乗算することを示し、“×”で示す記号は、そこを通過する信号と、×記号の上部に矢印で示された乗算係数と、を乗算することを示す。
また、15点DFT/IDFTは、処理の途中で並べ替えを行う必要があるが、その処理は、図14の“並べ替え”と記載された箇所で行われる。
また、各DFT/IDFTの入力Xおよび出力Yのインデクスは、数1で示した式のX、Yのインデクスに対応する。
次に、入力される信号について説明する。
演算装置200に入力されるデータは、複素数データであり、実数部と虚数部は、それぞれ、浮動小数形式で表されたデータであるものとする。
また、本ユニットに入力される制御信号C_sigは、図15に記載のフォーマットを使用する。図15に示したとおり、C_sigは、DFT/IDFTの3、5、9、15点のいずれかを2ビットで示す点数信号と、点数信号で示されたDFT/IDFTが開始されてから経過したクロック数を3ビットで示すクロック数信号と、制御信号で行う処理がDFTであるのかIDFTであるのかを1ビットで示すDFT/IDFT選択信号と、を含む。なお、点数信号とDFT/IDFT点数の対応、および、DFT/IDFT選択信号とDFT、IDFTの対応は、図16に示すとおりである。
次に、図6に記載のオフセットテーブル702の構成を図17に示す。
オフセットテーブル702は、図15に示す点数信号をアドレスとして用い、各アドレスが示す内容には、乗算係数メモリ704、705にアクセスするためのオフセットが格納されている。すなわち、外部よりオフセットテーブル702に点数信号が入力されると、それに対応したオフセットがオフセットテーブル702より読み出され、オフセットテーブル702の外部へと出力される。
次に、DFT乗算係数メモリ704、及びIDFT乗算係数メモリ705について図18を用いて説明する。
図18に示すように、DFT乗算係数メモリ704およびIDFT乗算係数メモリ705は、それぞれ4つのメモリを持つ。また、これら4つのメモリにアドレスが入力されると、図18の“アドレス”に記載の値に対応した行の、各メモリに格納された4つの値が読み出され、図6のmult_cf1, mult_cf2, mult_cf3, mult_cf4として、それぞれ出力される。
例として、DFT乗算係数メモリ704にアドレス“2”が入力されたとすると、メモリ1からは0.559017、メモリ2からは1.538842、メモリ3からは-0.36327、メモリ4からは-0.58779が読み出される。
なお、図18には、図11、図12、図13、図14に示した乗算係数の係数名も併記した。また、表内の斜線は、その箇所に値が格納されていないことを示すものである。さらに、DFT乗算係数メモリおよびIDFT乗算係数メモリの4つのメモリに入力されるアドレスとは、クロック数信号と、オフセットテーブル702から読み出されたオフセット値と、を加算したものである。
演算装置200への3点、5点、9点、15点のDFT/IDFTのデータの入力フォーマットを、図19を用いて説明する。
図19は、3点、5点、9点、15点DFT/IDFTの入力XをDFT/IDFT回路に入力して、出力Yを得る様子を示した図である。
なお、入力Xの上部に示したCは、制御信号を示しており、C(DFT/IDFT選択信号値、クロック数、点数信号)のフォーマットとなっている。なお、本説明においては、DFTを例として説明を行うが、IDFTは後述する乗算ユニット部以外はDFTと同一の処理であるため、説明を省略する。
なお、5点DFT/IDFTについて、演算装置200では3つの系列を同時に行うことができる。
ここで、系列とは、図12に示す処理を1回分とする処理である。よって、3つの系列とは、図12に示す処理を3つ同時に行うことを意味する。
以下では3つの系列のそれぞれを、系列0、系列1、系列2として呼ぶこととする。
図19のXの()内のインデクスは、(図12の各信号に付されたインデクス、系列番号)を示している。例として、X(0,0)は、系列0のX0を示すものである。
(3点DFT/IDFT)
次に、演算装置200による3点DFT/IDFTの処理を説明する。
図20を用いて、前段第一加算ユニット204の処理を説明する。なお、図20において、何も記述されていない箇所の値は0値をとるものとし、以降に示すタイムチャートも同様であるとする。
前段第一加算ユニット204では、図11に示すb0、b1、b2を算出する処理を、1サイクルで行う。
具体的には、入力されたC_sigに従って、クロスバ(Xbar)31が、sel1としてX(0)を、sel3としてX(1)を、sel4としてX(2)を出力する。
次に、加算器35がb0を出力し、加算器32がb1を出力し、加算器33がb2を出力する。
最後に、Xbar37が、制御信号C_sigに従って、b0をout1に出力し、b1をout2に出力し、b2をout3に出力する。
このように、Xbarおよびセレクタは、入力されたC_sigによって、入力の出力先を変更する。以下では、各Xbarやセレクタの詳しい説明は省略し、信号名に出力される信号値のみを説明中で示すこととする。
図21を用いて、前段転置ユニット205の処理を説明する。
前段転置ユニット205では、まず、入力されたデータin1、in2、in3を、クロスバ(Xbar)41が、D_Sel_1_1、D_Sel_1_2、D_Sel_1_3として出力する。
次に、クロスバ(Xbar)42が、D_Sel_1_1からD_Sel_1_3を、それぞれSel_2_1からSel_2_3として出力し、クロスバ(Xbar)43が、out1、out2、out3を出力する。
図22を用いて、前段第二加算ユニット206の処理内容を説明する。
前段転置ユニット205では、特に加算処理を行わず、入力されたデータを遅延回路Dによって遅延させ、次のユニットに出力する。
図23を用いて、前段第三加算ユニット207の処理内容を説明する。
前段第三加算ユニット207では、特に加算処理を行わず、入力されたデータをスルーさせ、次のユニットに出力する。
図24を用いて、制御ユニット209、乗算器208の処理内容を説明する。
制御ユニット209は、1サイクル目で乗算係数T_3_1およびT_3_2を読み出し、乗算器208は、それをb1、b2に乗算して、out2、out3に出力する。なお、乗算器208は、b0には、特に係数を乗算せず、out1として出力する。
図25を用いて、後段第一加算ユニット210の処理内容を説明する。
後段第一加算ユニット210は、特に処理を行わず、入力データin1、in2、in3を、それぞれsel1、sel2、sel3として出力し、それをout1、out2、out3として出力する。
図26を用いて、後段第二加算ユニット211の処理内容を説明する。
後段第二加算ユニット211は、特に加算処理を行わないが、入力されたデータを2クロック遅延させて出力する。具体的には、後段第二加算ユニット211は、入力データin1、in2、in3をそれぞれregr2、regr5、regr7として出力し、さらに、それらをsel1、sel4、sel7として出力する。その後、各加算器82および84は、それぞれ、sel4、sel7に0を加算することによって、sel4、sel7と同じ値のadd_s1、add_s2を出力する。最終的にout1、out2、out3が出力される。
図27を用いて、後段転置ユニット212の処理内容を説明する。
後段転置ユニット212では、入力されたデータin1、in2、in3を、Sel_1_1、Sel_1_2、Sel_1_3として出力し、その後、遅延回路Dによって遅延された信号を、クロスバ(Xbar)1002が、Sel_2_1、Sel_2_2、Sel_2_3として出力する。
このとき、後段転置ユニット212は、特に入力されたデータを入れ替える処理などは行わない。その後、それぞれの信号は、D_Sel_2_1、D_Sel_2_2、D_Sel_2_3として出力され、その後、クロスバ(Xbar)1004およびSel_4_1、Sel_4_2、Sel_4_3を通過してout1、out2、out3として出力される。
図28を用いて、後段第三加算ユニット213の処理内容を説明する。
後段第三加算ユニット213では、入力されたデータを1クロック遅延させた上で加算処理を行う。具体的には、入力データin1、in2、in3は、それぞれ、regr2、regr3、reg4として出力される。その後、加算器1102がm0+m1の計算を行い、加算器1107がm0+m1-m2の計算を行う。また、m0はsel5として出力される。最後に、クロスバ(Xbar)1108から、3点DFT/IDFT結果y0、y1およびy2が、それぞれ、out1、out2、out3として出力される。
このように、演算装置200は、3点DFT/IDFTを指示する制御信号を受け付けると、3点DFT/IDFTを実行する。
(5点DFT/IDFT)
次に、演算装置200による5点DFT/IDFTの処理を説明する。
図29を用いて、前段第一加算ユニット204の処理内容を説明する。
前段第一加算ユニット204は、特に加算処理を行わず、データをスルーして出力する。具体的には、前段第一加算ユニット204は、入力データin1、in2、in3を、それぞれ、sel6、sel7、sel8として出力する。また、制御信号は、第1サイクル目より1クロックずつ順に出力される。
図30を用いて、前段転置ユニット205の処理内容を説明する。
前段転置ユニット205は、5点DFT/IDFTのデータの転置処理を行う。
具体的には、第1サイクルにおいて、in1、in2、in3として入力されたデータX(0,0)、X(0,1)、X(0,2)が、それぞれ、Sel_1_5、Sel_1_6、Sel_1_7として出力され、遅延回路Dに入力される。
次に、第2サイクルにおいては、in1、in2、in3として入力されたデータX(1,0)、X(1,1)、X(1,2)が、それぞれ、Sel_1_1、Sel_1_2、Sel_1_4として出力され、遅延回路Dに入力される。
次に、第3サイクルにおいては、in1、in2、in3として入力されたデータX(2,0)、X(2,1)、X(2,2)が、それぞれ、Sel_1_1、Sel_1_2、Sel_1_4として出力され、遅延回路Dに入力される。
次に、第4サイクルにおいては、in1、in2、in3として入力されたデータX(3,0)、X(3,1)、X(3,2)が、それぞれ、Sel_1_1、Sel_1_2、Sel_1_4として出力され、遅延回路Dに入力される。
次に、第5サイクルにおいては、in1、in2、in3として入力されたデータX(4,0)、X(4,1)、X(4,2)が、それぞれ、Sel_1_1、Sel_1_2、Sel_1_4として出力され、遅延回路Dに入力される。同時に、D_Sel_1_1として、C(0,01,1)と統合されたX(1,0)が出力され、これはSel_2_1として出力される。
次に、第6サイクルにおいては、D_Sel_1_1、D_Sel_1_2として、C(0,01,2)と統合されたX(2,0)、C(0,01,1)と統合されたX(1,1)が、それぞれ、出力される。このうち、C(0,01,2)と統合されたX(2,0)は、Sel_2_2として出力される。一方、C(0,01,1)と統合されたX(1,1)は、Sel_2_1として出力される。このように、前段転置ユニット205は、入力されたデータの順序を入れ替えて出力する。
次に、第7サイクルにおいては、D_Sel_1_1、D_Sel_1_2として、C(0,01,3)と統合されたX(3,0)、C(0,01,1)と統合されたX(2,1)が、それぞれ、出力される。また、C(0,01,3)と統合されたX(3,0)は、Sel_2_3として出力される。C(0,01,1)と統合されたX(2,1)は、Sel_2_2として出力される。
次に、第8サイクルにおいては、D_Sel_1_1、D_Sel_1_2、D_Sel_1_4として、C(0,01,4)と統合されたX(4,0)、C(0,01,1)と統合されたX(3,1)、 C(0,01,1)と統合されたX(1,2)が、それぞれ、出力される。また、C(0,01,4)と統合されたX(4,0)は、Sel_2_4として出力される。C(0,01,1)と統合されたX(3,1)は、Sel_2_3として出力される。C(0,01,1)と統合されたX(1,2)は、Sel_2_1として出力される。
次に、第9サイクルにおいては、D_Sel_1_2、D_Sel_1_4として、C(0,01,1)と統合されたX(4,1)、C(0,01,1)と統合されたX(2,2)が、それぞれ、出力される。また、C(0,01,1)と統合されたX(4,1)は、Sel_2_4として出力される。C(0,01,1)と統合されたX(2,2)は、Sel_2_2として出力される。
次に、第10サイクルおいては、D_Sel_1_4として、C(0,01,1)と統合されたX(3,2)が出力される。ここで、このデータはSel_2_3としても出力される。
次に、第11サイクルにおいては、D_Sel_1_4として、C(0,01,1)と統合されたX(4,2)が出力される。ここで、このデータは、Sel_2_4としても出力される。また、同時にSel_3_1として、C(0,01,1)と統合されたX(1,0)が出力され、Sel_3_2として、C(0,01,2)と統合されたX(2,0)が出力され、Sel_3_3として、C(0,01,3)と統合されたX(3,0)が出力され、 Sel_3_4として、C(0,01,4)と統合されたX(4,0)が出力される。これらデータからは制御信号が分離され、データだけがoutとして出力される。すなわち、out1としてX(1,0)が出力され、out2としてX(2,0)が出力され、out3としてX(3,0)が出力され、out4としてX(4,0)が出力される。さらに、C_outとしてC(0,01,0)が出力される。
次に、第12サイクルにおいては、Sel_3_1として、C(0,01,1)と統合されたX(1,1)が出力される。また、Sel_3_2として、C(0,01,2)と統合されたX(2,1)が出力される。また、Sel_3_3として、C(0,01,3)と統合されたX(3,1)が出力される。また、Sel_3_4として、C(0,01,4)と統合されたX(4,1)が出力される。これらデータからは制御信号が分離され、データだけがoutとして出力される。すなわち、out1としてX(1,1)が出力され、out2としてX(2,1)が出力され、out3としてX(3,1)が出力され、out4としてX(4,1)が出力される。さらに、C_outとして、C(0,01,1)が出力される。
次に、第13サイクルにおいては、Sel_3_1として、C(0,01,0)と統合されたX(0,0)が出力される。また、Sel_3_2として、C(0,01,1)と統合されたX(0,1)が出力される。これらデータからは制御信号が分離され、データだけがoutとして出力される。すなわち、out1としてX(0,0)が出力され、out2としてX(0,1)が出力される。さらに、C_outとしてC(0,01,2)が出力される。
次に、第14サイクルにおいては、Sel_3_1として、C(0,01,1)と統合されたX(1,2)が出力される。また、Sel_3_2として、C(0,01,2)と統合されたX(2,2)が出力される。また、Sel_3_3として、C(0,01,3)と統合されたX(3,2)が出力される、また、Sel_3_4としてC(0,01,4)と統合されたX(4,2)が出力される。これらデータからは制御信号が分離され、データだけがoutとして出力される。すなわち、out1としてX(1,2)が出力され、out2としてX(2,2)が出力され、out3としてX(3,2)が出力され、out4としてX(4,2)が出力される。
さらに、C_outとしてC(0,01,3)が出力される。
最後に、第15サイクルにおいては、Sel_3_1として、C(0,01,0)と統合されたX(0,2)が出力される。このデータからは制御信号が分離され、データだけがoutとして出力される。すなわち、out1として、X(0,2)が出力される。さらに、C_outとしてC(0,01,4)が出力される。
また、制御信号は、第11サイクル目より、1クロックごとに1つずつ出力される。
図31を用いて、前段第二加算ユニット206の処理内容を説明する。
前段第二加算ユニット206は、図12に示したa0、a1、a2、a3、a4を算出する処理を行う。
具体的には、前段第二加算ユニット206での5点DFT/IDFT用処理での2サイクル目に、regr1、regr3、regr4、 regr5として、それぞれ、X(1,0)、X(2,0)、X(3,0)、X(4,0)が出力される。また、加算器52がX(1,0)+X(2,0)を計算し、その計算結果a1(0)をout1として出力する。また、加算器53がX(1,0)-X(2,0)を計算し、その計算結果a4(0)をout2として出力する。また、加算器54がX(3,0)+X(4,0)を計算し、その計算結果a2(0)をout3として出力する。また、加算器55がX(3,0)-X(4,0)を計算し、その計算結果a3(0)をout4として出力する。ここで、aに付随する()内の数字は系列番号を示す。例として、a1(0)は、系列0の入力Xの途中計算結果a1であることを示す。
3サイクル目では2サイクル目と同様の処理が行われ、a1(1)、a4(1)、a2(1)、a3(1)が出力される。
4サイクル目では、前段第二加算ユニット206は、a(0)、a(1)を出力する。具体的には、regr1、regr3として、それぞれ、X(0,0)、X(0,1)が出力される。それらは、それぞれsel1、sel4として出力される。加算器52および加算器53は、それぞれ、sel1、sel4に0を加算し、その加算された値を、out1、out2として出力する。
5サイクル目では、2、3サイクル目と同様の処理が行われ、a1(2)、a4(2)、a2(2)、a3(2)が出力される。
6サイクル目では、a(2)が出力される。具体的には、regr1としてX(0,2)が出力され、X(0,2)がsel1として出力され、加算器52が、sel1に0を加算し、その加算結果をout1として出力する。
また、制御信号は、第2サイクル目より1クロックごとに1つずつ出力される。
図32を用いて、前段第三加算ユニット207の処理内容を説明する。
前段第三加算ユニット207では、図12に示したc0からc5を算出する処理を行う。
具体的には、第1サイクル目において、加算器62は、a1(0)-a2(0)を行って算出結果c2(0)を得て、c2(0)をout1として出力する。また、加算器65は、a3(0)+a(4)を行って算出結果c5(0)を得て、c5(0)をout4として出力する。また、クロスバ61は、a3(0)、a4(0)を、それぞれ、sel4、sel7として出力する。加算器63は、sel4に0を加算し、加算結果c3(0)をout2として出力する。また、加算器64は、sel7に0を加算し、加算結果c4(0)をout3として出力する。
次に、第2サイクル目においては、第1サイクル目と同様の処理が行われ、c2(1)、c3(1)、c4(1)、c5(1)が、それぞれ、out1、out2、out3、out4として出力される。
次に、第3サイクル目においては、in1、in2のデータa0(0)とa0(1)、および、regr1、regr2、regr3、regr4としてそれぞれ出力されるa1(0)、a2(0)、a1(1)、a2(1)を使い、c0(0)、c1(0)、c0(1)、c1(1)が、それぞれ算出される。
具体的には、加算器62が、a0(0)+a1(0)+a2(0)を計算して計算結果c0(0)を得て、c0(0)をout1として出力する。また、加算器63が、a1(0)+a2(0)を計算して計算結果c1(0)を得て、c1(0)をout2として出力する。また、加算器64が、a0(1)+a1(1)+a2(1)を計算して計算結果c0(1)を得て、c0(1)をout3として出力する。また、加算器65が、a1(1)+a2(1)を計算して計算結果c1(1)を得て、c1(1)をout4として出力する。
次に、第4サイクル目においては、第1、2サイクル目と同様の処理が行われ、c2(2)、 c3(2)、c4(2)、c5(2)が、それぞれ、out1、out2、out3、out4として出力される。
最後に、第5サイクル目においては、第3サイクル目と同様のほぼ同様の処理が行われ、c0(2)、c1(2)が得られる。
また、制御信号は、第1サイクル目より1クロックごとに1つずつ出力される。
図33を用いて、制御ユニット209、乗算器208の処理内容を説明する。制御ユニット209と乗算器208では、図12に示したm0からm5までの係数を求める処理を行う。
具体的には、第1サイクル目では、乗算器208は、入力されたc2(0)、c3(0)、c4(0)、c5(0)に、それぞれ、T5_2、T5_3、T_5_4、T5_5の係数を乗算する。さらに、乗算器208は、c3(0)、c4(0)、c5(0)に関しては、上記係数をかけた後に、純虚数を乗算する。以上により、m2(0)、m3(0)、m4(0)、m5(0)が算出され、これらは、それぞれ、out1、out2、out3、out4として出力される。
第2サイクル目では、第1サイクル目と同様の処理が行われ、m2(1)、m3(1)、m4(1)、m5(1)のそれぞれが算出され、これらはout1、out2、out3、out4として出力される。
第3サイクル目では、乗算器208は、入力されたc0(0)、c1(0)、c0(1)、c1(1)に対し、それぞれ、T5_0、T5_1、T5_0、T5_1の係数を乗算する処理を行い、m0(0)、m1(0)、m0(1)、m1(1)を得る。これらはそれぞれ、out1、out2、out3、out4として出力される。
第4サイクル目では、第1サイクル目と同様の処理が行われ、m2(2)、m3(2)、m4(2)、m5(2)が算出され、これらは、それぞれ、out1、out2、out3、out4として出力される。
第5サイクル目では、第3サイクル目と同様の処理が行われ、m0(2)、m1(2)が得られる。これらは、それぞれ、out1、out2として出力される。
また、制御信号は、第1サイクル目より1クロックごとに1つずつ出力される。
図34を用いて、後段第一加算ユニット210の処理内容を説明する。本ユニットでは図12に示したn0からn4を求める処理を行う。
具体的には、第1サイクル目では、m2(0)が、sel1さらに言えばn2(0)として出力される。さらに、加算器82が、m3(0)+m5(0)を計算し、その計算結果n3(0)をadd_s1として出力する。また、加算器83が、m4(0)+m5(0)を計算し、その計算結果n4(0)をadd_s2として出力する。クロスバ85は、n2(0)、n3(0)、n4(0)を、それぞれ、out1、out2、out3として出力する。
第2サイクル目では、第1サイクルと同様の処理が行われ、n2(1)、n3(1)、n4(1)が得られる。これらはそれぞれ、out1、out2、out3として出力される。
第3サイクル目では、sel1、sel2さらに言えばn0(0), n0(1)として、m0(0)、m0(1)がそれぞれ出力される。さらに、加算器82が、m0(0)+m1(0)を計算し、その計算結果n1(0)をadd_s1として出力する。また、加算器83が、m0(1)+m1(1)を計算し、その計算結果n1(1)をadd_s2として出力する。クロスバ85は、n0(0)、n0(1)、n1(0)、n1(1)を、それぞれ、out1、out2、out3、out4に出力する。
第4サイクル目では、第1、2サイクル目と同様の処理が行われ、n2(2)、n3(2)、n4(2)が得られる。これらはそれぞれ、out1、out2、out3として出力される。
第5サイクル目では、第3サイクル目と同様の処理が行われ、n0(2)、n1(2)が得られる。これらはそれぞれ、out1、out2として出力される。
また、制御信号は、第1サイクル目より、1クロックごとに1つずつ出力される。
図35を用いて、後段第二加算ユニット211の処理内容を説明する。
後段第二加算ユニット211では、図12に示したy0からy4を計算する。
具体的には、後段第二加算ユニット211は、第1サイクル目、第2サイクル目では、特に加算処理を行わず、第3サイクル目において、加算器902がn1(0)+n2(0)+n4(0)を計算し、その計算結果y1(0)をadd_s1として出力する。また、加算器903がn1(0)+n2(0)-n4(0)を計算し、その計算結果y4(0)をadd_s2として出力する。また、加算器904がn1(0)-n2(0)+n3(0)を計算し、その計算結果y2(0)をadd_s3として出力する。また、加算器905がn1(0)-n2(0)-n3(0)を計算し、その計算結果y3(0)をadd_s4として出力する。これらはそれぞれ、out1、out2、out3、out4として出力される。
第4サイクル目においては、第3サイクル目と同様の処理が行われ、y(1,1)、y(4,1)、y(2,1)、y(3,1)が得られる。これらはそれぞれ、out1、out2、out3、out4として出力される。
第5サイクル目においては、第3、4サイクル目と同様の処理が行われ、y(1,2)、y(4,2)、y(2,2)、y(3,2)が得られる。これらはそれぞれ、out1、out2、out3、out4として出力される。
第6サイクル目においては、sel1、sel4、sel7として、それぞれ、n0(0)、n0(1)、n0(2)が出力される。また、加算器902は、sel1に0を加算し、その加算結果y(0,0)をadd_s1として出力する。また、加算器903は、sel4に0を加算し、その加算結果y(0,1)をadd_s2として出力する。また、加算器904は、sel7に0を加算し、その加算結果y(0,2)をadd_s3として出力する。これらはそれぞれ、out1、out2、out3として出力される。
また、制御信号は、第3サイクル目より1クロックごとに1つずつ出力される。
図36を用いて、後段転置ユニット212の処理内容を説明する。
後段転置ユニット212は、入力されたデータを並べ替える処理を行う。
具体的には、第1サイクル目では、入力されたy(1,0)、y(4,0)、y(2,0)、y(3,0)は、それぞれ、制御信号C(0,01,0)と統合され、Sel_1_1、Sel_1_2、Sel_1_3、Sel_1_4として出力される。また、y(1,0)は、Sel_2_1として出力される。
第2サイクル目では、入力されたy(1,1)、y(4,1)、y(2,1)、y(3,1)は、それぞれ、制御信号C(0,01,1)と統合され、Sel_1_1、Sel_1_2、Sel_1_3、Sel_1_4として出力される。また、D_Sel_1_1として、C(0,01,0)と統合されたy(4,0)が出力され、このデータは、さらにSel_2_1としても出力される。一方、Sel_1_1として出力されたy(1,1)は、Sel_2_2としても出力される。
第3サイクル目では、入力されたy(1,2)、y(4,2)、y(2,2)、y(3,2)は、それぞれ、制御信号C(0,01,2)と統合され、Sel_1_1、Sel_1_2、Sel_1_3、Sel_1_4として出力される。また、D_Sel_1_1、D_Sel_1_2として、それぞれ、C(0,01,1)と統合されたy(4,1)、C(0,01,0)と統合されたy(2,0)が出力される。さらに、Sel_2_1、Sel_2_2、Sel_2_3として、それぞれ、C(0,01,0)と統合されたy(2,0)、C(0,01,1)と統合されたy(4,1)、C(0,01,2)と統合されたy(1,2)が出力される。
第4サイクル目では、入力されたy(0,0)、y(0,1)、y(0,2)は、それぞれ、制御信号C(0,01,3)と統合され、Sel_1_5、Sel_1_6、Sel_1_7として出力され、その後、Sel_4_1、Sel_4_2、Sel_4_3として出力される。これらの信号では、制御信号とデータが分離され、データだけがoutとして出力される。すなわち、y(0,0)、y(0,1)、y(0,2)が、それぞれ、out1、out2、out3として出力される。一方、D_Sel_1_1、D_Sel_1_2、D_Sel_1_3としては、それぞれ、C(0,01,2)と統合されたy(4,2)、C(0,01,1)と統合されたy(2,1)、C(0,01,0)と統合されたy(3,0)が出力される。これらは、それぞれ、Sel_2_3、Sel_2_2、Sel_2_1として出力される。さらに、D_Sel_2_1、D_Sel_2_2、D_Sel_2_3として、C(0,01,0)と統合されたy(1,0)、C(0,01,1)と統合されたy(1,1)、C(0,01,2)と統合されたy(1,2)が出力され、これらはそれぞれSel_3_1、 Sel_3_2、Sel_3_3として出力される。
第5サイクル目では、D_Sel_1_2、D_Sel_1_3として、それぞれ、C(0,01,2)と統合されたy(2,2)、C(0,01,1)と統合されたy(3,1)が出力され、これらはそれぞれ、Sel_2_3、 Sel_2_2として出力される。一方、D_Sel_2_1、D_Sel_2_2、D_Sel_2_3としては、C(0,01,0)と統合されたy(4,0)、C(0,01,1)と統合されたy(4,1)、C(0,01,2)と統合されたy(4,2)が出力され、これらはそれぞれ、Sel_3_1、Sel_3_2、Sel_3_3として出力される。さらに、Sel_4_1、Sel_4_2、Sel_4_3としては、それぞれ、C(0,01,0)と統合されたy(1,0)、C(0,01,1)と統合されたy(1,1)、C(0,01,2)と統合されたy(1,2)が出力される。これらの信号では制御信号とデータが分離され、データだけがoutとして出力される。すなわち、y(1,0)、y(1,1)、y(1,2)が、out1、out2、out3として出力される。
第6サイクル目では、D_Sel_1_3として、C(0,01,2)と統合されたy(3,2)が出力され、これはSel_2_3として出力される。また、D_Sel_2_1、D_Sel_2_2、D_Sel_2_3としては、C(0,01,0)と統合されたy(2,0)、C(0,01,1)と統合されたy(2,1)、C(0,01,2)と統合されたy(2,2)が出力され、これらはそれぞれ、Sel_3_1、Sel_3_2、Sel_3_3として出力される。さらに、Sel_4_1、Sel_4_2、Sel_4_3としては、それぞれ、C(0,01,0)と統合されたy(4,0)、C(0,01,1)と統合されたy(4,1)、C(0,01,2)と統合されたy(4,2)が出力される。これらの信号では、制御信号とデータが分離され、データだけがoutとして出力される。すなわち、y(4,0)、y(4,1)、y(4,2)が、out1、out2、out3として出力される。
第7サイクル目では、D_Sel_2_1、D_Sel_2_2、D_Sel_2_3として、C(0,01,0)と統合されたy(3,0)、C(0,01,1)と統合されたy(3,1)、C(0,01,2)と統合されたy(3,2)が出力され、これらはそれぞれSel_3_1、Sel_3_2、Sel_3_3として出力される。さらに、Sel_4_1、Sel_4_2、Sel_4_3としては、それぞれ、C(0,01,0)と統合されたy(2,0)、C(0,01,1)と統合されたy(2,1)、C(0,01,2)と統合されたy(2,2)が出力される。これらの信号では、制御信号とデータが分離され、データだけがoutとして出力される。すなわち、y(2,0)、y(2,1)、y(2,2)が、out1、out2、out3に出力される。
第8サイクル目では、Sel_4_1、Sel_4_2、Sel_4_3として、それぞれ、C(0,01,0)と統合されたy(3,0)、C(0,01,1)と統合されたy(3,1)、C(0,01,2)と統合されたy(3,2)が出力される。これらの信号では、制御信号とデータが分離され、データだけがoutとして出力される。すなわち、y(3,0)、y(3,1)、y(3,2)が、out1、out2、out3として出力される。
また、制御信号は、4サイクル目より、1クロックごとに1つずつ出力される。
図37を用いて、後段第三加算ユニット213の処理内容を説明する。
後段第三加算ユニット213では、入力されたデータを1クロックの遅延をつけて出力するだけで、特に加算処理を行わない。具体的には、遅延回路Dによって1クロック遅延されたin1、in2、in3のデータが、sel5、sel6、sel7として出力され、その後、out1、out2、out3として出力される。
このように、演算装置200は、5点DFT/IDFTを指示する制御信号を受け付けると、5点DFT/IDFTを実行する。
(9点DFT/IDFT)
次に、演算装置200による9点DFT/IDFTの処理を説明する。
図38を用いて、前段第一加算ユニット204の処理内容を説明する。
前段第一加算ユニット204は、図13に示したa1からa8の係数を算出する処理を行う。
具体的には、第1サイクル目では、加算器35および加算器36が、それぞれ、X(1)+X(8)、X(1)-X(8)の処理を行うことにより、a1、a2を算出し、それらを、out1、out2として出力する。
次に、第2サイクル目では、加算器32、加算器33、加算器35、および、加算器36が、それぞれ、X(4)+X(5)、X(4)-X(5)、X(2)+X(7)、X(2)-X(7)を行うことにより、a3、a4、a5、a6をそれぞれ算出する。これらデータは、それぞれ、out1、out2、out3、out4として出力される。
次に第3サイクル目では、加算器35および加算器36が、それぞれ、X(3)+X(6)、X(3)-X(6)を計算し、a7、a8を得る。これらはout3、out4として出力される。さらに、X(0)がsel6として出力され、その後、out1として出力する。
図39を用いて、前段転置ユニット205の処理内容を説明する。
前段転置ユニット205は、特にデータの並べ替え処理などは行わずに、入力されたデータを出力する。具体的には、 in1、in2、in3、in4として入力されたデータは、それぞれ、Sel_1_1、Sel_1_2、Sel_1_3、Sel_1_4として出力され、次に、Sel_2_1、Sel_2_2、Sel_2_3、Sel_2_4として出力され、さらに、D_dt_1、D_dt_2、D_dt3、D_dt_4として出力され、最後にout1、out2、out3、out4として出力される。
図40を用いて、前段第二加算ユニット206の処理内容を説明する。
前段第二加算ユニット206は、図13に示したa7'、a8'、および、a9からa16を算出する処理を行う。
具体的には、第1サイクル目では、加算処理が行われず、第2サイクル目において、加算器52、加算器53、加算器54、加算器55が、それぞれ、a1+a3+a5、a5-a1、a1-a3、a5-a3を計算して、算出結果a15、a9、a10、a11を出力する。それらはout1、out2、out3、out4として出力される。
次に、第3サイクル目において、加算器52、加算器53、加算器54、加算器55が、それぞれ、a6-a4+a2、-a6-a4、a2-a6、a2-a4を計算して、算出結果a16、a14、a12、a13を出力する。これらはout1、out2、out3、out4として出力される。
最後に、第4サイクル目においては、X0'、a7、a8は、それぞれ、sel1、sel4、sel6として出力され、その後、加算器52、加算器53、加算器54において0が加算され、その後、それぞれ、out1、out2、out3として出力される。
図41を用いて、前段第三加算ユニット207の処理内容を説明する。本処理では、図 13に示したa17が算出される。
具体的には、第1サイクル目においては、入力されたデータin1、in2、in3、in4が、それぞれ、sel1、sel4、sel6、sel9として出力され、その後、加算器62、加算器63、加算器64、加算器65にて0と加算され、その後、それぞれ、out1、out2、out3、out4として出力される。
第2サイクル目においては、第1サイクル目と同様の処理が行われる。
第3サイクル目においては、加算器62が、a15+x0''+a7'を行い、加算結果a17をout1として出力する。さらに、x0''、a7'、a8が、第1、第2サイクル目と同様の方法で、それぞれ、out2、out3、out4として出力される。
図42を用いて、制御ユニット209、乗算器208の処理内容を説明する。
制御ユニット209と乗算器208は、図13においてmで示された係数を算出する処理を行う。
具体的には、第1サイクル目において、乗算器208は、a15'、a9'、a10'、a11'と乗算係数T9_9、T9_1、T9_2、T9_3の乗算処理を行い、それぞれ、算出結果m9、m1、m2、m3を出力する。これらはそれぞれout2、out3、out4、out5として出力される。
第2サイクル目においては、第1サイクル目と同様の処理が行われ、m10、m6、m4、m5という係数が得られる。
第3サイクル目においては、第1、2サイクル目と同様の処理が行われ、a7'''、m7、m8、a17'という係数が得られる。さらに、X0'''係数が、sel1として出力され、その後、out1として出力される。
図43を用いて、後段第一加算ユニット210の処理内容を説明する。
後段第一加算ユニット210は、図13におけるc、および、xa0で示される係数を求める処理を行う。
具体的には、第1サイクル目において、m9が、sel1として出力され、その後out1として出力される。さらに、加算器82、加算器83、加算器84が、それぞれ、m1+m2、m2-m3、m1+m3を計算し、それぞれ、計算結果c4、c2、c3を得る。これらは、それぞれ、out2、out3、out4として出力される。
第2サイクル目においては、m10が、sel1として出力され、その後out1として出力される。さらに、加算器82、加算器83、加算器84が、それぞれ、m4-m6、m5-m6、m4-m5を計算し、それぞれ、計算結果c8、c9、c10を得る。これらは、それぞれ、out2、out3、out4として出力される。
第3サイクル目においては、m8、a17'が、それぞれ、sel1、sel2として出力され、その後out1、out2として出力される。さらに、加算器82、加算器83が、それぞれ、x0''''-m7、x0''''+a7'''を計算し、それぞれ、計算結果c1、xa0を得る。これらは、それぞれ、out3、out4として出力される。
図44を用いて、後段第二加算ユニット211の処理内容を説明する。
後段第二加算ユニット211は、図13に示した、c7、c6、c5、c14、c11*i、c12*i、c13*i、および、m10''*iを算出する処理を行う。
具体的には、第1サイクル、第2サイクル目では、特に加算処理は行われず、第3サイクル目において、加算器902がc1-c4-c2を行い、加算器903がc1+4+c3を行い、加算器904がc1+c2-c3を行い、加算器905がxa0-m9'を行い、それぞれ、c7、c6、c5、c14を得る。これらは、out1、out2、out3、out4にそれぞれ出力される。
第4サイクル目においては、加算器902がc8+c9+m8'を計算し、加算器903がc8+c10-m8'を計算し、加算器904が-c9+c10+m8'を計算する。さらに、これらに対して、純虚数乗算器906、907、908が、それぞれ、純虚数を乗算し、その乗算結果を、それぞれ、out1、out2、ou3として出力する。
第5サイクル目においては、a17''、m10'が、それぞれ、sel1、sel4として出力され、その後、加算器902、903にて0が加算されて出力される。さらに、これらに対して、純虚数乗算器906、907が、それぞれ、純虚数を乗算し、その乗算結果を、それぞれout1、out2として出力する。
図45を用いて、後段転置ユニット212の処理内容について説明する。
後段転置ユニット212は、特に、入力されたデータの並べ替え処理などを行わない。
具体的には、in1、in2、in3、in4として入力されたデータは、それぞれ、Sel_1_1、Sel_1_2、Sel_1_3、Sel_1_4として出力され、次に、Sel_2_1、Sel_2_2、Sel_2_3、Sel_2_4として出力され、さらに、Sel_1_1、Sel_4_2、Sel_4_3、Sel_4_4として出力され、最後にout1、out2、out3、out4として出力される。
図46を用いて、後段第三加算ユニット213の処理内容を説明する。
後段第三加算ユニット213は、図13においてyで示される出力を算出する。
具体的には、第1サイクル目では特に加算処理は行われず、第2サイクル目において、加算器1102、加算器1103、加算器1106、加算器1107が、それぞれ、c5+c11*i、c5-c11*i、c6+c12*i、c6-c12*iを計算し、計算結果y8、y1、y7、y2を得る。これらは、それぞれ、out1、out2、out3、out4として出力される。
第3サイクル目では、第2サイクル目と同様の処理が行われ、y5、y4、y6、y3が計算され、それぞれ、out1、out2、out3、out4として出力される。
第4サイクル目では、a17'''が、sel5として出力され、その後、out1として出力される。
このように、演算装置200は、9点DFT/IDFTを指示する制御信号を受け付けると、9点DFT/IDFTを実行する。
(15点DFT/IDFT)
次に、演算装置200による15点DFT/IDFT処理内容を説明する。ここで、15点DFT/IDFTは、乗算ユニットを除いては、3点DFT/IDFT処理及び5点DFT/IDFT処理の組み合わせで行うことができる。よって以降では、乗算ユニット以外のユニットでは3点DFT/IDFT、5点DFT/IDFTのどちらの処理を行うかについて示し、詳細な説明は省略する。
まず、前段第一加算ユニット204は、3点DFT/IDFTの処理を行う。ここで、3点DFT/IDFTでは、1サイクルで入出力が完了するのに対し、15点DFT/IDFTでは、3点DFT/IDFTの処理を5サイクル分繰り返して計算及び出力が行われる。
前段転置ユニット205は、5点DFT/IDFTの処理を行う。
前段第二加算ユニット206は、5点DFT/IDFTの処理を行う。
前段第三加算ユニット207は、5点DFT/IDFTの処理を行う。
図47を用いて、制御ユニット209、乗算器208の処理内容の説明を行う。
制御ユニット209と乗算器208は、図14においてeで示される係数に乗算係数をかけ、mで示される係数を算出する処理を行う。
具体的には、第1サイクル目では、乗算器208は、e2に対してT15_2を乗算し、m2係数を得る。これはout1として出力される。同時に、e3、e4、e5係数が入力され、乗算器208は、これらにT15_3、T15_4、T15_5を乗算する。さらに、これら係数に関しては、純虚数を乗算する処理を純虚数乗算器907、908、909が行いm3、m4、m5を得る。これらは、out2、out3、out4として出力される。
第2サイクル目では、第1サイクル目と同様の処理が行われ、m8、m9、m10、m11係数が得られる。これらは、それぞれ、out1、out2、out3、out4として出力される。
第3サイクル目では、e0、e1、e6、e7係数が入力され、それぞれにT15_0、T15_1、T15_6、T15_7が乗算され、m0、m1、m6、m7が算出される。これらはそれぞれ、out1、out2、out3、out4として出力される。
第4サイクル目では、e15、e16、e17係数が入力され、これらにT15_15、T15_16、T15_17が乗算され、m15、m16、m17が算出される。これらはout2、out3、out4として出力される。同時にe14が入力され、これにT15_14係数が乗算される。さらに、純虚数乗算器906が、その乗算結果に純虚数を乗算し、その乗算結果をout1として出力する。
第5サイクル目には、e12、e13係数が入力され、これにT15_12、T15_13係数が乗算される。さらに、純虚数乗算器906、907が、それぞれ、その乗算結果に純虚数を乗算し、その乗算結果を、out1、out2として出力する。
後段第一加算ユニット210は、5点DFT/IDFTの処理を行う。
後段第二加算ユニット211は、5点DFT/IDFTの処理を行う。
後段転置ユニット212は、5点DFT/IDFTの処理を行う。
後段第三加算ユニット213は、3点DFT/IDFTの処理を行う。
このように、演算装置200は、15点DFT/IDFTを指示する制御信号を受け付けると、15点DFT/IDFTを実行する。
(その他の実施形態)
図28に本発明の第2実施形態を示す。本実施形態は、離散フーリエ変換装置(演算装置)200と、離散フーリエ変換装置200を制御するCPU1と、データを格納するメモリユニット2と、を含む。
本実施形態においては、CPU1が、CPU-メモリユニットアドレス信号にて、メモリユニット2にアクセスするアドレスを発行すると、メモリユニット2は、CPU-メモリユニットデータ信号にて、発行されたアドレスに対応したデータをCPU1に出力する。
次に、CPU1は、上記の3、5、9、15点DFT/IDFTの制御信号とともにデータを離散フーリエ変換装置200に出力する。
離散フーリエ変換装置200は、CPU1から制御信号とデータを受け取ると、制御信号に従ってDFT/IDFTを実行し、その結果をCPU1に返す。
このような実施形態においては、離散フーリエ変換装置200がサポートする3、5、9、15点DFT/IDFT以外の点数のDFT/IDFTをCPU1が行うことにより、さらにDFT点数の種類を増やすことができる。
上記各実施形態によれば、3、5、9、15点のDFT/IDFTを共通の回路で処理できる。このため、3、5、9、15点のDFT/IDFTの回路を、それぞれ、個別の回路で構成した場合と比較して、乗算器と加算器の数を削減することができる点である。
また、3、5、9、15点のDFT/IDFTに対し、設計する回路は1つの回路で済む。このため、3、5、9、15点のDFT/IDFTの回路を、それぞれ、個別の回路で構成した場合と比較して、設計及び実装に要する時間が短縮できる。
また、3、5、9、15点という異なる点数のDFT/IDFTが行われても、データが各ユニットに出力されるタイミングを合わせているので、各ユニットは、DFT/IDFTのポイント数に関わらず、予め定められたタイミングで動作することができる。このため、各ユニットの動作開始タイミングを、DFT/IDFTのポイント数に応じて変更するような制御を行うことなく、異なる点数のDFT/IDFTを共通の回路を用いて行うことが可能になる。
[産業上の利用可能性]
本実施形態の活用例として、LTEで必要となる無線信号処理を実行する基地局装置が挙げられる。
1 CPU
2 メモリユニット
200 離散フーリエ変換装置(演算装置)
201 前加算ユニット
202 乗算ユニット
203 後加算ユニット
204 前段第一加算ユニット
205 前段転置ユニット
206 前段第二加算ユニット
207 前段第三加算ユニット
208 乗算器
209 制御ユニット
210 後段第一加算ユニット
211 後段第二加算ユニット
212 後段転置ユニット
213 後段第三加算ユニット

Claims (8)

  1. 複数種類のポイント数のうちの一つを示した制御信号と、複数のデータと、を受け付け、前記複数のデータに対して、前記制御信号にて示されたポイント数の離散フーリエ変換を実行する離散フーリエ変換装置であって、
    前記複数のデータが、クロックにて規定される第一タイミングで入力されると、前記複数のデータに対して、前記離散フーリエ変換に応じた前段加算処理を実行する第一加算手段と、
    前記第一タイミングよりも遅い第二タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた乗算処理を実行する乗算手段と、
    前記第二タイミングよりも遅い第三タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた後段加算処理を実行する第二加算手段と、を含み、
    前記第一加算手段は、前記前段加算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第二タイミングで前記乗算手段に出力し、
    前記乗算手段は、前記前段加算処理の結果に対して前記乗算処理を実行し、当該乗算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第三タイミングで前記第二加算手段に出力し、
    前記第二加算手段は、前記乗算処理の結果に対して前記後段加算処理を行い、当該後段加算処理の結果を、前記複数のデータに対して前記離散フーリエ変換を実行した結果として出力する、離散フーリエ変換装置。
  2. 前記第一加算手段は、
    前記第一タイミングで前記複数のデータを受け付けると、前記制御信号に従って、前記複数のデータ同士を選択的に加算する、もしくは、前記複数のデータをそのまま出力する第一演算手段と、
    前記第一タイミングよりも遅く前記第二タイミングよりも早い第四タイミングで入力されたデータを、前記制御信号に従って、選択的に並べ替える、もしくは、そのまま出力する並び替え手段と、
    前記第四タイミングよりも遅く前記第二タイミングよりも早い第五タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第二演算手段と、
    前記第五タイミングよりも遅く前記第二タイミングよりも早い第六タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第三演算手段と、を有し、
    前記第一演算手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第四タイミングで前記並び替え手段に出力し、
    前記並び替え手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第五タイミングで前記第二演算手段に出力し、
    前記第二演算手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第六タイミングで前記第三演算手段に出力し、
    前記第三演算手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第二タイミングで前記乗算手段に出力する、請求項1に記載の離散フーリエ変換装置。
  3. 前記乗算手段は、
    前記ポイント数ごとに、当該ポイント数に対応する乗算係数を格納する記憶手段と、
    前記制御信号が示すポイント数に対応する乗算係数を、前記記憶手段から読み出す読出し手段と、
    前記第一加算手段の出力に、前記読出し手段が読み出した乗算係数を乗算する第一乗算手段と、
    前記係数乗算手段の乗算結果に対し、前記制御信号に従って、選択的に純虚数を乗算する第二乗算手段と、を有する請求項1または2に記載の離散フーリエ変換装置。
  4. 前記第二加算手段は、
    前記第三タイミングで前記乗算手段の出力を受け付けると、前記制御信号に従って、前記乗算手段の出力同士を選択的に加算する、もしくは、前記乗算手段の出力をそのまま出力する第四演算手段と、
    前記第三タイミングよりも遅い第七タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、そのまま出力する、もしくは、選択的に加算した加算結果に選択的に純虚数を乗算する第五演算手段と、
    前記第七タイミングよりも遅い第八タイミングで入力されたデータを、前記制御信号に従って、選択的に並べ替える、もしくは、そのまま出力するデータ並び替え手段と、
    前記第八タイミングよりも遅い第九タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第六演算手段と、を有し、
    前記第四演算手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第七タイミングで前記第五演算手段に出力し、
    前記第五演算手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第八タイミングで前記データ並び替え手段に出力し、
    前記データ並び替え手段は、前記制御信号にて示されたポイント数に関わらず、自己の出力を、前記第九タイミングで前記第六演算手段に出力し、
    前記第六演算手段は、自己の出力を、前記複数のデータに対して前記制御信号にて示されたポイント数の離散フーリエ変換を実行した結果として出力する、請求項1から3のいずれか1項に記載の離散フーリエ変換装置。
  5. 複数種類のポイント数のうちの一つを示した制御信号と、複数のデータと、を受け付け、前記複数のデータに対して、前記制御信号にて示されたポイント数の離散フーリエ変換を実行する離散フーリエ変換装置での離散フーリエ変換方法であって、
    前記複数のデータが、クロックにて規定される第一タイミングで入力されると、前記複数のデータに対して、前記離散フーリエ変換に応じた前段加算処理を実行する第一加算ステップと、
    前記第一タイミングよりも遅い第二タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた乗算処理を実行する乗算ステップと、
    前記第二タイミングよりも遅い第三タイミングで入力されたデータに対して、前記離散フーリエ変換に応じた後段加算処理を実行する第二加算ステップと、を含み、
    前記第一加算ステップでは、前記前段加算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第二タイミングで出力し、
    前記乗算ステップでは、前記前段加算処理の結果を前記第二タイミングで受け付け、当該前段加算処理の結果に対して前記乗算処理を実行し、当該乗算処理の結果を、前記制御信号にて示されたポイント数に関わらず、前記第三タイミングで出力し、
    前記第二加算ステップでは、前記乗算処理の結果を前記第三タイミングで受け付け、当該乗算処理の結果に対して前記後段加算処理を行い、当該後段加算処理の結果を、前記複数のデータに対して前記離散フーリエ変換を実行した結果として出力する、離散フーリエ変換方法。
  6. 前記第一加算ステップは、
    前記第一タイミングで前記複数のデータを受け付けると、前記制御信号に従って、前記複数のデータ同士を選択的に加算する、もしくは、前記複数のデータをそのまま出力する第一演算ステップと、
    前記第一タイミングよりも遅く前記第二タイミングよりも早い第四タイミングで入力されたデータを、前記制御信号に従って、選択的に並べ替える、もしくは、そのまま出力する並び替えステップと、
    前記第四タイミングよりも遅く前記第二タイミングよりも早い第五タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第二演算ステップと、
    前記第五タイミングよりも遅く前記第二タイミングよりも早い第六タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第三演算ステップと、を有し、
    前記第一演算ステップでは、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第四タイミングで出力し、
    前記並び替えステップでは、前記第一演算ステップでの出力を前記第四ステップで受け付け、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第五タイミングで出力し、
    前記第二演算ステップでは、前記並び替えステップでの出力を前記第五タイミングで受け付け、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第六タイミングで出力し、
    前記第三演算ステップは、前記第二演算ステップでの出力を前記第六タイミングで受け付け、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第二タイミングで出力し、
    前記乗算ステップでは、前記第三演算ステップでの出力を、前記前段加算処理の結果として前記第二タイミングで受け付け、当該前段加算処理の結果に対して前記乗算処理を実行する、請求項5に記載の離散フーリエ変換方法。
  7. 前記乗算ステップは、
    前記ポイント数ごとに、当該ポイント数に対応する乗算係数を記憶手段に格納する記憶ステップと、
    前記制御信号が示すポイント数に対応する乗算係数を、前記記憶手段から読み出す読出しステップと、
    前記第一加算ステップでの出力に、前記読み出された乗算係数を乗算する第一乗算ステップと、
    前記乗算の結果に対し、前記制御信号に従って、選択的に純虚数を乗算する第二乗算ステップと、を有する請求項5または6に記載の離散フーリエ変換方法。
  8. 前記第二加算ステップは、
    前記第三タイミングで前記乗算ステップでの出力を受け付けると、前記制御信号に従って、当該出力同士を選択的に加算する、もしくは、当該出力をそのまま出力する第四演算ステップと、
    前記第三タイミングよりも遅い第七タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、そのまま出力する、もしくは、選択的に加算した加算結果に選択的に純虚数を乗算する第五演算ステップと、
    前記第七タイミングよりも遅い第八タイミングで入力されたデータを、前記制御信号に従って、選択的に並べ替える、もしくは、そのまま出力するデータ並び替えステップと、
    前記第八タイミングよりも遅い第九タイミングで入力されたデータを、前記制御信号に従って、選択的に加算する、もしくは、そのまま出力する第六演算ステップと、を有し、
    前記第四演算ステップでは、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第七タイミングで出力し、
    前記第五演算ステップでは、前記第四演算ステップでの出力を前記第七タイミングで受け付け、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第八タイミングで出力し、
    前記データ並び替えステップでは、前記第五演算ステップでの出力を前記第八タイミングで受け付け、前記制御信号にて示されたポイント数に関わらず、自己の出力を前記第九タイミングで出力し、
    前記第六演算ステップでは、前記データ並び替えステップでの出力を前記第九タイミングで受け付け、自己の出力を前記複数のデータに対して前記離散フーリエ変換を実行した結果として出力する、請求項5から7のいずれか1項に記載の離散フーリエ変換方法。
JP2009220792A 2009-09-25 2009-09-25 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法 Active JP5493646B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009220792A JP5493646B2 (ja) 2009-09-25 2009-09-25 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009220792A JP5493646B2 (ja) 2009-09-25 2009-09-25 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法

Publications (2)

Publication Number Publication Date
JP2011070392A true JP2011070392A (ja) 2011-04-07
JP5493646B2 JP5493646B2 (ja) 2014-05-14

Family

ID=44015627

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009220792A Active JP5493646B2 (ja) 2009-09-25 2009-09-25 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法

Country Status (1)

Country Link
JP (1) JP5493646B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132747A (ja) * 2000-10-30 2002-05-10 Nec Corp Fft演算回路
JP2007336164A (ja) * 2006-06-14 2007-12-27 Mitsubishi Electric Corp Dbf信号処理装置およびdbf信号処理方法
JP2008186396A (ja) * 2007-01-31 2008-08-14 Mitsubishi Electric Corp 高速フーリエ変換装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132747A (ja) * 2000-10-30 2002-05-10 Nec Corp Fft演算回路
JP2007336164A (ja) * 2006-06-14 2007-12-27 Mitsubishi Electric Corp Dbf信号処理装置およびdbf信号処理方法
JP2008186396A (ja) * 2007-01-31 2008-08-14 Mitsubishi Electric Corp 高速フーリエ変換装置

Also Published As

Publication number Publication date
JP5493646B2 (ja) 2014-05-14

Similar Documents

Publication Publication Date Title
US9525579B2 (en) FFT circuit
US9785614B2 (en) Fast Fourier transform device, fast Fourier transform method, and recording medium storing fast Fourier transform program
JP2006350922A (ja) メモリの読み出し及び書き込み方法、メモリ制御方法、及びそれを用いた演算装置
US7653676B2 (en) Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine
US20140195578A1 (en) Fast fourier transform circuit
JP5493646B2 (ja) 離散フーリエ変換装置および離散フーリエ変換・離散逆フーリエ変換方法
US20200334321A1 (en) Signal processing apparatus, method, program, and recording medium
Amerbaev et al. Efficient calculation of cyclic convolution by means of fast Fourier transform in a finite field
JP6248923B2 (ja) ディジタルフィルタ回路、ディジタルフィルタ処理方法及びディジタルフィルタ処理プログラム
JP6451647B2 (ja) 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム
JP2008052504A (ja) 離散フーリエ変換装置および離散フーリエ逆変換装置
Glittas et al. Pipelined FFT architectures for real-time signal processing and wireless communication applications
CN109753629B (zh) 多粒度并行fft计算装置
JP6436087B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム
WO2020152826A1 (ja) フーリエ変換装置及びフーリエ変換方法
CN101490671A (zh) 把输入数据值折叠到变换函数上
JP2009245407A (ja) 複素数の積和演算装置および積和演算方法
JPWO2013183096A1 (ja) 多段フィルタ処理装置及び方法
JP2002504250A (ja) データ要素の系列を変換する装置
JP2016218528A (ja) データ処理装置、およびデータ処理方法
JP6505334B2 (ja) 演算装置および演算方法
JP4586114B1 (ja) 積和演算装置
KR101074112B1 (ko) 푸리에 변환 장치 및 방법
Minotta et al. Embedded FFT hardware algorithm development using automated bi-dimensional scalable folding
CN110399588A (zh) 用于计算振荡函数的系统和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120814

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5493646

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150