(57)【特許請求の範囲】
【請求項１】
ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算を行う演算装置であって、
前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算回路と、
各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理回路とを備え、
前記バタフライ演算回路は、前記変調方法に基づき予め設定された段においてビットシフトを行う
ことを特徴とする演算装置。
【請求項２】
前記所定の変調方法がＱＰＳＫ変調で、前記所定の点数が２０４８点であるとき、前記バタフライ演算の第５段目、第７段目、および、第１０段目においてビットシフトを行う
ことを特徴する請求項１に記載の演算装置。
【請求項３】
前記バタフライ演算回路においてビットシフトを行わない段の演算結果に対し、前記クリップ処理回路においてクリップ処理を行う
ことを特徴とする請求項２に記載の演算装置。
【請求項４】
前記変調方法における値の分布をシミュレーションすることにより、前記バタフライ演算においてビットシフトを行う段が決定される
ことを特徴とする請求項１記載の演算装置。
【請求項５】
前記入力信号は、ＤＡＢ方式で放送され受信された信号である
ことを特徴とする請求項１記載の演算装置。
【請求項６】
ＯＦＤＭ方式を用いて所定の変調方法で変調した所定の点数の入力信号に対し、ＩＦＦＴ演算を行う演算装置であって、
前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算回路と、
各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理回路とを備え、
前記バタフライ演算回路は、前記変調方法に基づき予め設定された段においてビットシフトを行う
ことを特徴とする演算装置。
【請求項７】
ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算を行う演算方法であって、
前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算ステップと、
各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理ステップとを備え、
前記バタフライ演算ステップにおいては、前記変調方法に基づき予め設定された段においてビットシフトを行う
ことを特徴とする演算方法。
【請求項８】
ＯＦＤＭ方式を用いて所定の変調方法で変調した所定の点数の入力信号に対し、ＩＦＦＴ演算を行う演算方法であって、
前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算ステップと、
各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理ステップとを備え、
前記バタフライ演算ステップにおいては、前記変調方法に基づき予め設定された段においてビットシフトを行う
ことを特徴とする演算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算方法および演算装置に関し、特に、所定のビット数のデータに対してバタフライ演算を行い、バタフライ演算の演算結果に対して、ビットシフト処理またはクリップ処理を行う演算方法および演算装置に関する。
【０００２】
【従来の技術】
最近、放送技術においてもデジタル化が普及しつつある。図５は、オーディオ信号をデジタル化して放送するデジタルラジオ放送の１つであるＤＡＢ（Digital Audio Broadcasting）の受信装置の構成例を示している。
【０００３】
チューナ９２は、アンテナ９１を介して受信した信号から、所定の放送局（チャンネル）の信号を選択し、その信号をＡ／Ｄ変換器９３に出力する。Ａ／Ｄ変換器９３は、供給された信号をＡ／Ｄ変換し、変換後のデジタルデータをＦＦＴ（Fast Fourier Transform）回路９４に出力する。
【０００４】
ＦＦＴ回路９４は、ＦＦＴ演算を行い、供給された時間軸上のデータを、複数の副搬送波の周波数軸上のデータに変換することにより、ＯＦＤＭ（Orthogonal Frequency Division Multiplexing）方式で送信されたデータを復調する。なお、このＦＦＴ回路９４には、時間軸上において隣接するシンボル（所定の量のデータを含む所定の期間の変調信号）との間に設けられているガード・インタバル成分が除去された後のシンボル成分が供給される。
【０００５】
デインタリーブ回路および誤り訂正回路９５は、ＦＦＴ回路９４より供給されたデータに対してデインタリーブ処理を行うとともに、誤り訂正処理を実行する。デインタリーブ回路および誤り訂正回路９５により処理された信号は、その一部が復号化回路９６に供給される。復号化回路９６は、供給された信号のうちの音声信号を復号し、復号したデータを、アナログのオーディオ信号に変換した後、左チャンネルのオーディオ信号と、右チャンネルのオーディオ信号を、スピーカ９７，９８にそれぞれ出力し、それらの信号に対応する音声を出力させる。
【０００６】
また、付加データ出力回路９９は、デインタリーブ回路および誤り訂正回路９５より供給された信号から、番組内容、交通情報などの付加データを分離して出力する。
【０００７】
図６は、８点のＦＦＴ演算を行う場合のＦＦＴ回路９４におけるシグナルフローの一例を示している。ＦＦＴ回路９４は、予め、ビット逆順に並び換えられたデータｆ（０），ｆ（４），ｆ（２），ｆ（６），ｆ（１），ｆ（５），ｆ（３），ｆ（７）を供給される。
【０００８】
内蔵するバタフライ演算器は、それらのデータのうちの２つのデータに対してバタフライ演算を行い、２つの演算結果を、内蔵するメモリに記憶する。
【０００９】
第１段目のバタフライ演算においては、第０番目のデータｆ（０）と第１番目のデータｆ（４）、第２番目のデータｆ（２）と第３番目のデータｆ（６）、第４番目のデータｆ（１）と第５番目のデータｆ（５）、並びに、第６番目のデータｆ（３）と第７番目のデータｆ（７）に対してバタフライ演算を行い、それらの演算結果を第０番目のデータＲ１（０）乃至第７番目のデータＲ１（７）としてメモリにそれぞれ記憶させる。
【００１０】
次に、第２段目のバタフライ演算においては、第０番目のデータＲ１（０）と第２番目のデータＲ１（２）、第１番目のデータＲ１（１）と第３番目のデータＲ１（３）、第４番目のデータＲ１（４）と第６番目のデータＲ１（６）、並びに、第５番目のデータＲ１（５）と第７番目のデータＲ１（７）に対してバタフライ演算を行い、それらの演算結果を第０番目のデータＲ２（０）および第７番目のデータＲ２（７）としてメモリに記憶させる。
【００１１】
そして、第３段目のバタフライ演算においては、第０番目のデータＲ２（０）と第４番目のデータＲ２（４）、第１番目のデータＲ２（１）と第５番目のデータＲ２（５）、第２番目のデータＲ２（２）と第６番目のデータＲ２（６）、並びに、第３番目のデータＲ２（３）および第７番目のデータＲ２（７）に対してバタフライ演算を行い、それらの演算結果を第０番目のデータＦ（０）および第７番目のデータＦ（７）としてメモリに記憶させる。
【００１２】
次に、このようにして算出されたデータ（ＦＦＴ演算されたデータ）Ｆ（０）乃至Ｆ（７）をデインタリーブ回路および誤り訂正回路９５に出力する。
【００１３】
このように、入力データまたは前段のバタフライ演算の演算結果をデータとして、１段で、８個のデータに対して４（８／２）回のバタフライ演算が行われ、合計３（＝ｌｏｇ2（８））段のバタフライ演算が行われる。
【００１４】
なお、Ｎ個のデータに対して（即ち、Ｎ点の）ＦＦＴ演算を行う場合は、入力データまたは前段のバタフライ演算の演算結果をデータとして、１段で、Ｎ個のデータに対して（Ｎ／２）回のバタフライ演算が行われ、合計Ｍ（＝ｌｏｇ2（Ｎ））段のバタフライ演算が行われる。
【００１５】
ＦＦＴ演算に時間間引き型のアルゴリズムを利用した場合、バタフライ演算においては、２つのデータＡ，Ｂのうちの一方のデータＢ（複素数）に対して、所定の複素数（回転演算子）ＷkN（＝（ｅｘｐ（−ｊ２πｋ／Ｎ））、Ｎは整数）を乗算した後、その演算結果と、他方のデータＡ（複素数）との和（バタフライ演算の演算結果Ｒ＝Ａ＋ＷkＢ）を計算する。
【００１６】
このとき、第１段目のバタフライ演算の演算結果Ｒの実数部のダイナミックレンジ（実数部の取りうる値の範囲）および虚数部のダイナミックレンジは、演算前のデータの実数部のダイナミックレンジおよび虚数部のダイナミックレンジの（１＋２1/2）倍となる（後述）。
【００１７】
さらに、ｉ段のバタフライ演算を行った後のデータ（即ち、第ｉ段目のバタフライ演算の演算結果）の実数部のダイナミックレンジおよび虚数部のダイナミックレンジは、第１段目に入力されたデータの実数部および虚数部のダイナミックレンジの２i-1（１＋２1/2）倍となる（後述）。
【００１８】
従って、Ｍ段のバタフライ演算を行った場合、演算結果の実数部および虚数部のダイナミックレンジは、入力データの実数部のダイナミックレンジおよび虚数部のダイナミックレンジの２M-1（１＋２1/2）倍となる。
【００１９】
このようなダイナミックレンジの全域のデータを保持可能とするためには、入力データのビット数よりビット数がＫ（ｌｏｇ2（２M-1（１＋２1/2））以上の、最も小さい整数）個多いメモリを使用する必要がある。
【００２０】
例えば、２，０４８点のＦＦＴ演算を行う場合、１１（Ｍ＝１１＝ｌｏｇ2（２０４８））段のバタフライ演算が必要となるので、例えば入力データが８ビットであると、１つのデータ（実数部または虚数部）当たり２０（≧１９．３＝８＋ｌｏｇ2（２11-1（１＋２1/2）））ビットのメモリが必要となる。
【００２１】
【発明が解決しようとする課題】
しかしながら、このように、入力データのビット数よりビット数がＫ個多いメモリを使用した場合、最初の数段におけるデータのダイナミックレンジは、メモリに記憶可能なデータのダイナミックレンジより非常に狭いので、メモリの利用効率が低くなるという問題を有している。
【００２２】
なお、メモリに記憶するデータのビット数を予め小さく設定しておき、各段において、バタフライ演算の演算結果のオーバフローの発生状況に対応して、演算結果をＬＳＢ（Least Significant Bit）側にビットシフトするか、あるいは、所定の値にクリップすることにより、メモリに必要なビット数を低減させるとともに、メモリの利用効率を高くすることが考えられるが、演算結果のオーバフローを監視するための回路が必要となり、回路構成が煩雑になるとともに、コストが増加するという問題を有している。
【００２３】
本発明は、このように状況に鑑みてなされたもので、予め設定された段のバタフライ演算の演算結果に対してビットシフト処理を行うようにして、オーバフローを監視するための回路を不要として、装置のコストを低くするものである。
【００２４】
【課題を解決するための手段】
本発明の第１の側面の演算装置は、ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算を行う演算装置であって、前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算回路と、各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理回路とを備え、前記バタフライ演算回路は、前記変調方法に基づき予め設定された段においてビットシフトを行うことを特徴とする。
本発明の第２の側面の演算装置は、ＯＦＤＭ方式を用いて所定の変調方法で変調した所定の点数の入力信号に対し、ＩＦＦＴ演算を行う演算装置であって、前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算回路と、各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理回路とを備え、前記バタフライ演算回路は、前記変調方法に基づき予め設定された段においてビットシフトを行うことを特徴とする。
【００２５】
本発明の第１の側面の演算方法は、ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算を行う演算方法であって、前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算ステップと、各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理ステップとを備え、前記バタフライ演算ステップにおいては、前記変調方法に基づき予め設定された段においてビットシフトを行うことを特徴とする。
本発明の第２の側面の演算方法は、ＯＦＤＭ方式を用いて所定の変調方法で変調した所定の点数の入力信号に対し、ＩＦＦＴ演算を行う演算方法であって、前記入力信号に対し、前記点数に対応した段数のバタフライ演算を行うバタフライ演算ステップと、各段の前記バタフライ演算の結果に対しクリップ処理を行うクリップ処理ステップとを備え、前記バタフライ演算ステップにおいては、前記変調方法に基づき予め設定された段においてビットシフトを行うことを特徴とする。
【００２６】
本発明の第１の側面の演算装置においては、ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算が行われ、各段のバタフライ演算の結果に対しクリップ処理が行われ、変調方法に基づき予め設定された段においてビットシフトが行われる。
本発明の第２の側面の演算装置においては、ＯＦＤＭ方式を用いて所定の変調方法で変調された所定の点数の入力信号に対し、ＩＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算が行われ、各段のバタフライ演算の結果に対しクリップ処理が行われ、変調方法に基づき予め設定された段においてビットシフトを行うことを特徴とする。
【００２７】
本発明の第１の側面の演算方法においては、ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算が行われ、各段のバタフライ演算の結果に対しクリップ処理が行われ、変調方法に基づき予め設定された段においてビットシフトが行われる。
本発明の第２の側面の演算方法においては、ＯＦＤＭ方式を用いて所定の変調方法で変調した所定の点数の入力信号に対し、ＩＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算が行われ、各段のバタフライ演算の結果に対しクリップ処理が行われ、変調方法に基づき予め設定された段においてビットシフトが行われる。
【００２８】
【発明の実施の形態】
図１は、本発明の演算装置の実施例の構成を示している。本実施例は、例えば、図５の受信装置におけるＦＦＴ回路９４の代わりに利用されるＦＦＴ演算装置である。
【００２９】
この実施例は、２，０４８点の、８ビットの入力データに対して、１データあたり１０ビットのメモリ（記憶領域）を利用して、１１段のバタフライ演算を行うようになされている。
【００３０】
入力バッファ１は、所定の回路（例えば、図５のＡ／Ｄ変換器９３）より供給されたデータ（予めビット逆順に並べ換えられているデータ）を一時的に記憶するようになされている。例えば、入力バッファ１は、ＯＦＤＭ方式でＱＰＳＫ変調またはＱＡＭ（Quadrature Amplitude Modulation）変調されたデータを受け取り、記憶する。
【００３１】
セレクタ２は、入力バッファ１から２つのデータＡ，Ｂを読み出し、演算回路３に出力するようになされている。
【００３２】
また、セレクタ２は、メモリ４（記憶手段）より２つのデータＡ，Ｂの実数部と虚数部をそれぞれ読み出し、それらのデータを演算回路３に出力するようになされている。
【００３３】
メモリ４は、処理途中のデータ（１０ビットの実数部（即ち、区間［−５１２，５１１］における値）と１０ビットの虚数部）を記憶するようになされている。
【００３４】
演算回路３のバタフライ演算部２１（第１の演算手段）は、１０ビットのビット幅でデータＡ，Ｂをセレクタ２より供給され、内蔵するＲＯＭに記憶されている回転演算子データＷk（上述のＷkN＝ｅｘｐ（−ｊ２πｋ／Ｎ））を適宜読み出し、そのデータＷkを利用して、２つのデータＡ，Ｂに対してバタフライ演算（Ａ＋ＷkＢ）を行い、１２ビットのビット幅で演算結果をビットシフト処理部２２（第２の演算手段）に出力するようになされている。
【００３５】
演算回路３のビットシフト処理部２２は、第５段目のバタフライ演算、第７段目のバタフライ演算、および、第１０段目のバタフライ演算の演算結果（１２ビット）の符号ビット以外の下位１１ビットを、ＬＳＢ側に１ビットだけビットシフトさせた後、処理後の演算結果をクリップ処理部２３（第３の演算手段）に出力するようになされている。
【００３６】
なお、ビットシフト処理部２２が、処理前の演算結果の端数の値に応じて、１０進数における四捨五入、切り捨て、切り上げなどの操作を行って、ビットシフト処理後のＬＳＢの値を算出するようにしてもよい。
【００３７】
演算回路３のクリップ処理部２３は、供給された１２ビットの演算結果の値が５１２（＝２10／２）以上である場合、その値を５１１に変更し、その値が−５１２より小さい場合、その値を−５１２に変更するようになされている。
【００３８】
セレクタ５は、演算回路３により演算された２つのデータ（演算結果）を、演算前の２つのデータが格納されていたメモリ４のアドレスにそれぞれ記憶させるようになされている。
【００３９】
また、セレクタ５は、演算回路３より供給された、第１１段目のバタフライ演算の演算結果を、出力バッファ６に出力するようになされている。
【００４０】
出力バッファ６は、セレクタ５より供給されたデータ（演算結果）を一時的に記憶し、所定の回路（例えば、図５のデインタリーブ回路および誤り訂正回路９５）に出力するようになされている。なお、出力バッファ６は、セレクタ５より供給されたデータを、後段の回路における信号レベルに対応して、例えばＭＳＢ（Most Significant Bit）側に３ビットだけビットシフトした後、出力することができる。
【００４１】
次に、図２のフローチャートを参照して、本実施例の動作について説明する。
【００４２】
最初に、ステップＳ１においては、入力バッファ１は、所定の回路（例えば、図５のＡ／Ｄ変換器９３）から、例えばＯＦＤＭ方式でＤＱＰＳＫ変調された２，０４８個のデータを受け取る。
【００４３】
ステップＳ２においては、セレクタ２は、入力バッファ１（第１段目のバタフライ演算の場合）またはメモリ４（第２段目乃至第１１番段目のバタフライ演算の場合）から、２，０４８個のデータのうちの所定の２つのデータを読み出し、それらのデータを演算回路３のバタフライ演算部２１に出力する。
【００４４】
ステップＳ３において、バタフライ演算部２１は、供給された２つのデータＡ，Ｂに対してバタフライ演算（Ａ＋ＷkＢ）を行い、２つの演算結果をビットシフト処理部２２に出力する。
【００４５】
このとき、図３に示すように、供給された２つのデータＡ，Ｂの実数部のダイナミックレンジおよび虚数部のダイナミックレンジが区間［−ａ，ａ］である（即ち、データＡ，Ｂ（複素数）のダイナミックレンジは、複素平面の原点を中心として、１辺が２ａの正方形の領域）とすると、回転演算子Ｗkは、原点を中心として、所定の角度だけ位置を回転させる演算子であるので、バタフライ演算における回転演算子ＷkとＢの乗算の結果ＷkＢの実数部のダイナミックレンジおよび虚数部のダイナミックレンジは、区間［−２1/2ａ，２1/2ａ］となる。
【００４６】
さらに、ＷkＢとＡの和、即ちバタフライ演算の演算結果の実数部のダイナミックレンジおよび虚数部のダイナミックレンジは、区間［−（１＋２1/2）ａ，（１＋２1/2）ａ］となる。
【００４７】
例えば、データＡ，Ｂの値が、Ａ＝ａ＋ｊ・ａ、Ｂ＝ａ＋ｊ・ａであり、回転演算子Ｗkが、Ｗk＝２-1/2−ｊ・２-1/2である場合、Ｗk・Ｂは、２1/2ａ＋ｊ・０となり、さらに、Ａ＋ＷkＢは、（１＋２1/2）ａ＋ｊ・ａとなる。このように、この場合の演算結果Ａ＋ＷkＢの実数部の値（１＋２1/2）ａは、ダイナミックレンジ［−（１＋２1/2）ａ，（１＋２1/2）ａ］の上限値となる。
【００４８】
なお、実数部および虚数部のダイナミックレンジが区間［−ａ，ａ］であるデータに対して所定のｎ段（ｎ＞１）のバタフライ演算を行う場合においては、第１段乃至第（ｎ−１）段において、値が１である回転演算子Ｗkでバタフライ演算を行い（第（ｎ−１）段の演算結果の実数部および虚数部のダイナミックレンジは、区間［−２n-1ａ，２n-1ａ］となる）、第ｎ段において、例えば値が２-1/2−ｊ・２-1/2である回転演算子Ｗkでバタフライ演算を行うと、演算結果の実数部および虚数部のダイナミックレンジの上限値（２n-1（１＋２1/2）ａ）および下限値（−２n-1（１＋２1/2）ａ）が発生する。
【００４９】
即ち、実数部および虚数部のダイナミックレンジが区間［−ａ，ａ］であるデータに対して第ｎ段のバタフライ演算を行うと、第ｎ段目のバタフライ演算の演算結果の実数部および虚数部のダイナミックレンジは、区間［−２n-1（１＋２1/2）ａ，２n-1（１＋２1/2）ａ］となる。
【００５０】
次に、ステップＳ４において、ビットシフト処理部２２は、今のバタフライ演算の段数が、第５段、第７段、および、第１０段のいずれかであるか否かを判断し、今のバタフライ演算の段数が、第５段、第７段、および、第１０段のいずれかであると判断した場合、ステップＳ５に進み、ビットシフト処理を行う。
【００５１】
ステップＳ５において、ビットシフト処理部２２は、バタフライ演算部２１より供給された演算結果を、ＬＳＢ側に１ビットだけビットシフトし、演算結果の絶対値を小さくする。そして、ビットシフト処理部２２は、その演算結果をクリップ処理部２３に出力する。
【００５２】
一方、ステップＳ４において、今のバタフライ演算の段数が、第５段、第７段、および、第１０段のいずれでもないと判断された場合、ステップＳ５をスキップし、ビットシフト処理部２２は、何もせずに、バタフライ演算部２１より供給された演算結果をクリップ処理部２３に出力する。
【００５３】
即ち、図４に示すように、ビットシフト処理部２２は、全１１段のバタフライ演算のうち、第５段目、第７段目、および、第１０段目のバタフライ演算のすべての演算結果に対してビットシフトを行い、データのダイナミックレンジを１／２に圧縮する。
【００５４】
なお、本実施例における実際のデータ（実数部または虚数部）（振幅の分布がガウス分布（標準偏差をダイナミックレンジの１／８とする）であると仮定したＯＦＤＭ方式でＱＰＳＫ変調されたデータ）の値の分布を予めシミュレーションした結果によれば、値が分布する幅は、第１段目のバタフライ演算により、約１．５倍に拡がり、第１段目および第２段目のバタフライ演算により、約２．２倍に拡がる。さらに、値が分布する幅は、第１段目乃至第３段目のバタフライ演算により、約３．２倍に拡がり、第１段目乃至第４段目のバタフライ演算により、約４．５倍に拡がる。そして、１１段のバタフライ演算により、値が分布する幅は、約１３．７倍に拡がる。
【００５５】
このように、実際のデータの値の分布の幅は、ダイナミックレンジより狭い。ただし、入力されたデータ（バタフライ演算を行う前のデータ）の実数部および虚数部の値の実際の分布の幅は、データの変調方法に応じて変化する。
【００５６】
このシミュレーションの結果に基づいて、本実施例の装置においては、データの実数部または虚数部の値が、５１２以上または−５１３以下になる確率が大きくなる第５段目のバタフライ演算の演算結果に対して、最初のビットシフト処理を行い、データのダイナミックレンジを１／２に圧縮し、次にデータの実数部または虚数部の値が、５１２以上または−５１３以下になる確率が大きくなる第７段目のバタフライ演算の演算結果に対して、第２回目のビットシフト処理を行い、さらに、第１０段目のバタフライ演算の演算結果に対して、第３回目のビットシフト処理を行い、データのダイナミックレンジを１／２に圧縮するようにしている。
【００５７】
次に、ステップＳ６において、クリップ処理部２３は、ビットシフト処理部２２より供給された演算結果の値が５１２以上であるか否かを判断するとともに、演算結果の値が−５１２より小さいか否かを判断し、演算結果の値が５１２以上であると判断した場合、または、演算結果の値が−５１２より小さいと判断した場合、ステップＳ７に進む。
【００５８】
ステップＳ７において、クリップ処理部２３は、演算結果の値が５１２以上である場合、その演算結果の値を５１１に変更し、演算結果の値が−５１２より小さい場合、その演算結果の値を−５１２に変更した後、それらの演算結果をセレクタ５に出力する。
【００５９】
一方、ステップＳ６において、演算結果の値が５１２より小さく、かつ、−５１２以上であると判断した場合、ステップＳ７をスキップし、クリップ処理部２３は、何もせずに、演算結果をセレクタ５に出力する。
【００６０】
なお、クリップ処理部２３は、１２ビットの演算結果を、１０ビットに変換した後（１２ビットのデータのうち下位９ビットの値を、１０ビットのデータの下位９ビットの値とし、１２ビットのデータの符号ビットの値を、１０ビットのデータの符号データの値とした後）、セレクタ５に出力する。
【００６１】
また、上述のシミュレーションの結果によれば、本実施例においては、第５段目、第７段目、および第１０段目以外のバタフライ演算においては、演算結果が５１２以上または−５１３以下になる確率が小さいので、５１２以上または−５１３以下になったデータ（実数部または虚数部）に対してクリップ処理だけを行い、すべてのデータを、区間［−５１２，５１１］の値にしている。
【００６２】
なお、上述のビットシフト処理を行うことにより切り捨て誤差が発生し、クリップ処理を行うことにより歪み誤差が発生するが、上述のシミュレーションの結果によれば、実用上、必要とされる演算精度は確保されているので、特に問題は生じない。
【００６３】
次に、ステップＳ８において、セレクタ５は、演算回路３のクリップ処理部２３より供給された演算結果を、メモリ４の、セレクタ２がデータを読み出したアドレス（第１段目乃至第１０段目のバタフライ演算の場合）、または、出力バッファ６（第１１段目のバタフライ演算の場合）に記憶させる。
【００６４】
そして、ステップＳ９において、演算回路３は、今の段において、すべてのデータに対してバタフライ演算を行ったか否かを判断し、まだ、バタフライ演算を行っていないデータが残っている場合、ステップＳ２に戻り、それらのデータに対してバタフライ演算を行う。
【００６５】
一方、今の段において、すべてのデータに対してバタフライ演算を行った場合、ステップＳ１０に進む。
【００６６】
そして、ステップＳ１０において、演算回路３は、第１１段目のバタフライ演算が終了したか否か（即ち、全１１段のバタフライ演算が終了したか否か）を判断し、第１１段目のバタフライ演算が終了していないと判断した場合、ステップＳ２に戻り、次の段のバタフライ演算を行う。
【００６７】
一方、第１１段目のバタフライ演算が終了したと判断した場合、ステップＳ１１に進み、出力バッファ６は、１１段のバタフライ演算を行った後のデータ（演算結果）を、所定の回路（例えば、図５のデインタリーブ回路および誤り訂正回路９５）に出力する。
【００６８】
以上のように、１１段のバタフライ演算のうち、第５段目、第７段目、および第１０段目のバタフライ演算の演算結果に対してビットシフト処理を行うことにより、１データ（実数部または虚数部）あたり１０ビットのメモリ（記憶領域）で、２，０４８点の、８ビットの入力データに対するＦＦＴ演算を行う。
【００６９】
なお、本実施例においては、２，０４８点のＦＦＴ演算が行われるが、データ数は、２，０４８点に限定されるものではなく、装置の構成を変更することにより、他のデータ数のＦＦＴ演算を行うことができる。なお、その場合、ビットシフト処理を行う段は、上述のシミュレーションにより簡単に算出することができる。
【００７０】
また、上記実施例においては、ＦＦＴ演算を行っているが、使用する回転演算子の順番を変更することにより、ＩＦＦＴ（Inverse FFT）演算を行うことができる。そして、そのようなＩＦＦＴ演算を行う装置を、上述の受信装置に変調信号を送信する送信装置において、所定の信号をＯＦＤＭ方式で変調するときに利用することができる。
【００７１】
【発明の効果】
以上のごとく、本発明の第１の側面によれば、ＯＦＤＭ方式を用いて所定の変調方法で変調された入力信号に対し、所定の点数のＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算を行い、各段のバタフライ演算の結果に対しクリップ処理を行い、変調方法に基づき予め設定された段においてビットシフトを行うようにした。
また、本発明の第２の側面によれば、ＯＦＤＭ方式を用いて所定の変調方法で変調された所定の点数の入力信号に対し、ＩＦＦＴ演算が行われる際、入力信号に対し、点数に対応した段数のバタフライ演算を行い、各段のバタフライ演算の結果に対しクリップ処理を行い、変調方法に基づき予め設定された段においてビットシフトを行うようにした。
いずれにおいても、結果として、オーバフローを監視するための回路などを設けることなく、１データあたりのビット数を少なくしてＦＦＴ演算を行うことができ、装置のコストを低減することができる。
【図面の簡単な説明】
【図１】本発明の演算装置の一実施例の構成を示すブロック図である。
【図２】図１の実施例の動作を説明するフローチャートである。
【図３】バタフライ演算における乗算の結果のダイナミックレンジの一例を示す図である。
【図４】図１の実施例のシグナルフローを説明する図である。
【図５】ＤＡＢの受信装置の一構成例を示すブロック図である。
【図６】ＦＦＴのシグナルフローの一例を説明する図である。
【符号の説明】
１  入力バッファ，  ２  セレクタ，  ３  演算回路，  ４  メモリ，  ５  セレクタ，  ６  出力バッファ，  ２１  バタフライ演算部，  ２２  ビットシフト処理部，  ２３  クリップ処理部，  ９１  アンテナ，  ９２  チューナ，９３  Ａ／Ｄ変換器，  ９４  ＦＦＴ回路，  ９５  デインタリーブ回路および誤り訂正回路，  ９６  復号化回路，  ９７，９８  スピーカ，  ９９  付加データ出力回路
【図１】
0003791561.tif 000002
【図２】
0003791561.tif 000003
【図３】
0003791561.tif 000004
【図４】
0003791561.tif 000005
【図５】
0003791561.tif 000006
【図６】
0003791561.tif 000007