(57)【要約】【課題】  ＤＳＰの大規模化、消費電力の増加を招くことなく、要求される演算精度での演算処理を実行することができ、かつ、演算サイクルを短縮化する。【解決手段】  アキュムレータ１３１と加算器１２３との間に小数点位置合わせ処理部１１４を介挿した。これは、アキュムレータ１３１が出力する累算値データＰ３とは小数点の位置がずれたデータＰ２Ｌが乗算結果レジスタ１２１から加算器１２３に供給されるとき、乗算結果レジスタ１２１の出力データＰ２Ｌと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を累算値データＰ３に対して施し、加算器１２３に供給する。従って、加算器１２３およびアキュムレータ１３１のビット幅を不要に増加させることなく、倍精度演算を実行することができる。【選択図】図１
2009282852.tif 000002
【特許請求の範囲】
【請求項１】
乗算器と、加算器と、アキュムレータと、小数点位置合わせ処理手段とを少なくとも含み、演算処理を行うデータパス部と、
前記乗算器へのデータの供給の制御を含む前記データパス部の各部の制御を行う制御部とを有し、
前記加算器は、前記乗算器の出力データを受け取るとともに、前記アキュムレータの出力データを前記小数点位置合わせ処理手段を介して受け取り、受け取った２つのデータを加算して出力し、
前記アキュムレータは、前記加算器の出力データを記憶して累算値データとして出力し、
前記小数点位置合わせ処理手段は、前記制御部からの指示に従い、前記アキュムレータが出力する累算値データをそのまま前記加算器に供給し、または前記アキュムレータが出力する累算値データに対し、前記乗算器の出力データと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を施して前記加算器に供給することを特徴とするデジタル信号処理装置。
【請求項２】
前記制御部は、倍精度演算により第１および第２のデータの乗算を行う場合に、
前記第１のデータの下位ビットと前記第２のデータの上位ビットとの乗算を前記乗算器に行わせ、前記アキュムレータの現在の累算値データに対して前記乗算器の乗算結果を加える累算処理を前記加算器およびアキュムレータに実行させる第１の乗算累算過程と、
前記第１のデータの上位ビットと前記第２のデータの下位ビットとの乗算を前記乗算器に行わせ、前記アキュムレータの現在の累算値データに対して前記乗算器の乗算結果を加える累算処理を前記加算器およびアキュムレータに実行させる第２の乗算累算過程とを実行し、
前記第２の乗算累算過程後に第３の乗算累算過程と小数点位置合わせ処理過程とを並列に実行し、
前記第３の乗算累算過程では、前記第１のデータの上位ビットと前記第２のデータの上位ビットとの乗算を前記乗算器に行わせ、前記アキュムレータの現在の累算値データに対して前記乗算器の乗算結果を加える累算処理を前記加算器およびアキュムレータに実行させ、
前記小数点位置合わせ処理過程では、前記第３の乗算累算過程において前記乗算器から出力される前記第１のデータの上位ビットと前記第２のデータの上位ビットとの乗算結果に対して小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を、前記第２の乗算累算過程後であって、前記第３の乗算累算過程前に前記アキュムレータが出力する累算値データに施すための前記小数点位置合わせ処理手段の制御を行うことを特徴とする請求項１に記載のデジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オーディオ機器等に好適なデジタル信号処理装置に関する。
【背景技術】
【０００２】
周知の通り、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ；デジタル信号処理装置）は、主に乗算処理および乗算結果の累算処理を高速実行するデータパス部と、予め記憶したプログラムに従ってデータパス部を制御して各種のフィルタ演算等の演算処理を行わせる制御部とを有する。
【特許文献１】特開平１０−２０７６９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、ＤＳＰの制御部がデータパス部に実行させる可能性のある演算処理には、例えばＩＩＲ（Infinite
Impulse Response；無限インパルス応答）フィルタ処理等のように演算精度に関する要求の厳しい演算処理がある。ここで、演算精度を高めるためには、データパス部の乗算器や累算処理のための加算器やアキュムレータのビット幅を大きくする必要がある。しかし、これらの各回路のビット幅を大きくすると、ＤＳＰ全体が大型化し、かつ、消費電力が増大するという問題がある。また、データパス部を構成する乗算器等の各回路のビット幅を大きくした場合、これらの各回路の遅延時間が増すために演算サイクルが長くなる。ここで、ＤＳＰの用途によっては、例えばボリューム処理等のような演算精度に関する要求が厳しくない演算処理を主にデータパス部に実行させる場合もある。このような場合、データパス部の演算精度は過剰であり、この過剰な演算精度を実現するために招いた演算サイクルの長期化がＤＳＰの処理効率を低下させるという問題がある。こういった問題を解決するための手段として、乗算対象である２個のデータ（例えばフィルタのノードの信号値とこの信号値に乗算するフィルタ係数）の各々を上位ビットと下位ビットに分け、一方のデータの上位ビットと他方のデータの下位ビットとの乗算、一方のデータの下位ビットと他方のデータの上位ビットの乗算、一方のデータの上位ビットと他方のデータの上位ビットの乗算を行い、各乗算結果を加算するという倍精度演算アルゴリズムがある。この倍精度演算アルゴリズムを利用する場合、乗算器のビット幅を大きくすることなく、データパス部を構成することができる。しかし、この場合、上位ビット同士の乗算結果と上位ビットと下位ビットの組み合わせの乗算結果の小数点位置を合わせて加算する必要があるため、加算器およびアキュムレータのビット幅を大きくしなければならず、依然としてデータパス部が大規模なものになるという問題がある。
【０００４】
この発明は、以上のような事情に鑑みてなされたものであり、回路の大規模化、消費電力の増加を招くことなく、要求される演算精度での演算処理を実行することができ、かつ、演算サイクルを短縮化することができるＤＳＰを提供することを目的としている。
【課題を解決するための手段】
【０００５】
この発明は、乗算器と、加算器と、アキュムレータと、小数点位置合わせ処理手段とを少なくとも含み、演算処理を行うデータパス部と、前記乗算器へのデータの供給の制御を含む前記データパス部の各部の制御を行う制御部とを有し、前記加算器は、前記乗算器の出力データを受け取るとともに、前記アキュムレータの出力データを前記小数点位置合わせ処理手段を介して受け取り、受け取った２つのデータを加算して出力し、前記アキュムレータは、前記加算器の出力データを記憶して累算値データとして出力し、前記小数点位置合わせ処理手段は、前記制御部からの指示に従い、前記アキュムレータが出力する累算値データをそのまま前記加算器に供給し、または前記アキュムレータが出力する累算値データに対し、前記乗算器の出力データと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を施して前記加算器に供給することを特徴とするデジタル信号処理装置を提供する。
かかる発明によれば、アキュムレータが出力する累算値データとは小数点の位置がずれたデータが乗算器から加算器に供給されるとき、アキュムレータと加算器との間に介挿された小数点位置合わせ処理手段が、乗算器から加算器へ供給されるデータと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理をアキュムレータが出力する累算値データに対して施し、加算器に供給することができる。従って、回路の大規模化、消費電力の増加を招くことなく、要求される演算精度での演算処理を実行することができ、かつ、演算サイクルを短縮化することができるデジタル信号処理装置を実現することができる。
なお、丸め処理に関する文献として、特許文献１があるが、この特許文献１は丸め処理の高速化に関するものであり、本発明のように加算器およびアキュムレータのビット幅の増加を防止するために丸め処理を利用するものではない。
【発明を実施するための最良の形態】
【０００６】
以下、図面を参照し、この発明の実施の形態を説明する。
図１はこの発明の一実施形態であるＤＳＰの構成を示すブロック図である。このＤＳＰは、大別すると、データパス部１００と、制御部２００とにより構成されている。ここで、制御部２００は、予め記憶したマイクロプログラムに従ってデータパス部１００の各部を制御し、固定小数点方式の演算により、ＩＩＲフィルタ処理、ＦＩＲ（Finite Impulse Response；有限インパルス応答）フィルタ処理等の各種の信号処理をデータパス部１００に実行させる装置である。
【０００７】
データパス部１００において、ワークメモリ１０１は例えばＲＡＭ（Random Access
Memory）であり、データパス部１００が例えばフィルタ処理を実行する場合には、フィルタのノードの信号値を記憶する役割を果たす。係数メモリ１０２は、例えばＥＥＰＲＯＭ（Electronic Erasable Programmable Read Only Memory）等の不揮発性メモリであり、フィルタ処理では、フィルタのノードの信号値に乗算されるフィルタ係数を記憶する役割を果たす。本実施形態では、単精度による演算処理と倍精度による演算処理をデータパス部１００に実行させることができる。単精度演算に用いる１ノード分の信号値や１個分のフィルタ係数は、ワークメモリ１０１や係数メモリ１０２の１アドレス分の各記憶エリアに格納される。これらの信号値やフィルタ係数は、先頭に符号ビットを持ったｎ＋１ビット（ｎは所定の整数）のデータである。また、倍精度演算に用いる１ノード分の信号値は、上位ビットと下位ビットに分けられる。そして、信号値の上位ビットの先頭に同信号値の正負を示す符号ビットを付加したｎ＋１ビットのデータと同信号値の下位ビットの先頭に同信号値の符号ビットを付加したｎ＋１ビットのデータがワークメモリ１０１の２アドレス分の各記憶エリアに格納される。倍精度演算に用いるフィルタ係数も同様であり、上位ビットと下位ビットに分けて、係数メモリ１０２の２アドレス分の各記憶エリアに格納される。信号値やフィルタ係数が負の値である場合の表現形式については、各種のものが考えられるが、本実施形態では２の補数形式により負の値が表現されるようになっている。
【０００８】
入力レジスタ１１１は、ワークメモリ１０１から読み出される１アドレス分（ｎ＋１ビット）のデータＰ０Ｒを記憶するレジスタである。また、入力レジスタ１１２は、係数メモリ１０２から読み出される１アドレス分（ｎ＋１ビット）のデータＰ０Ｌを記憶するレジスタである。乗算器１１３は、入力レジスタ１１１および１１２に記憶された各データＰ０ＲおよびＰ０Ｌの乗算を行い、乗算結果を示す２ｎ＋１ビット（２ｎ＋１の１は符号ビットのビット数）のデータを出力する。乗算結果レジスタ１２１は、乗算器１１３の出力データを取り込んで記憶し、データＰ２Ｌとして出力するレジスタである。
【０００９】
小数点位置合わせ処理部１１４は、後述するアキュムレータ１３１が出力する累算値データＰ３に対し、乗算結果レジスタ１２１の出力データＰ２Ｌと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を施して出力する回路である。セレクタ１２２は、制御部２００からの指示に従い、アキュムレータ１３１が出力する累算値データＰ３または小数点位置合わせ処理部１１４の出力データの一方を選択し、データＰ２Ｒとして出力する回路である。すなわち、小数点位置合わせ処理部１１４およびセレクタ１２２は、制御部２００からの指示に従い、アキュムレータ１３１が出力する累算値データＰ３をそのまま加算器１２３に供給し、またはアキュムレータ１３１が出力する累算値データＰ３に対し、乗算器１１３の出力データと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を施して加算器１２３に供給する小数点位置合わせ処理手段を構成している。
【００１０】
加算器１２３は、乗算結果レジスタ１２１の出力データＰ２Ｌとセレクタ１２２の出力データＰ２Ｒを加算し、加算結果を示す２ｎ＋ｍビット（ｍは１以上の整数）のデータを出力する回路である。シフタ１２４は、制御部２００からの指示に従い、加算器１２３の出力データにビットシフト処理を施して出力する回路である。なお、前述した小数点位置合わせ処理部１１４のビットシフト処理が小数点位置合わせを目的として行われるのに対し、このシフタ１２４のビットシフト処理は小数点位置合わせ以外の目的のために実行されるものである。アキュムレータ１３１は、加算器１２３からシフタ１２４を介して供給されるデータを取り込んで記憶し、前述した累算値データＰ３として出力する回路である。また、アキュムレータ１３１は、制御部２００からの指示に従い、累算値データＰ３を「０」に初期化する機能を有している。
【００１１】
丸め処理部１３２は、アキュムレータ１３１が出力する累算値データＰ３に対し、制御部２００から指示された丸め処理を施して出力する回路である。なお、前述した小数点位置合わせ処理部１１４の０方向丸め処理が小数点位置合わせを目的として行われるのに対し、この丸め処理部１３２の丸め処理は小数点位置合わせ以外の目的のために実行されるものである。出力レジスタ１４１は、丸め処理部１３２を介して供給されるデータを取り込んで記憶し、データＰ４として出力するレジスタである。この出力レジスタ１４１の出力データＰ４は、制御部２００によって指示されたワークメモリ１０１内のエリアに書き込まれる。
以上が本実施形態によるＤＳＰの構成の詳細である。
【００１２】
次に本実施形態の動作について説明する。例えば単精度演算によるＦＩＲフィルタ処理をデータパス部１００に実行させる場合、制御部２００は、ＦＩＲフィルタのタップとなる各ノードについて以下の処理をデータパス部１００に実行させる。
（１−１）ワークメモリ１０１の１アドレス分のエリアからＦＩＲフィルタの１つのタップの信号値を示すデータを読み出して入力レジスタ１１１に格納させ、係数メモリ１０２の１アドレス分のエリアから同信号値に乗算するフィルタ係数を読み出して入力レジスタ１１２に格納させる。
（１−２）乗算器１１３から得られる上記信号値（データＰ１Ｒ）とフィルタ係数（データＰ１Ｌ）の乗算結果を乗算結果レジスタ１２１に書き込む。
（１−３）アキュムレータ１３１が出力する累算値データＰ３に乗算結果レジスタ１２１の出力データＰ２Ｌを加える累算処理を加算器１２３およびアキュムレータ１３１に実行させる。
１サンプリング周期内において、以上の（１−１）〜（１−３）の処理がＦＩＲフィルタの全タップについて実行されることにより、アキュムレータ１３１が出力する累算値データは、そのサンプリング周期におけるＦＩＲフィルタ演算結果を示すデータとなる。
【００１３】
これに対し、ＩＩＲフィルタ処理のような信号処理を実行する場合、制御部２００は、この信号処理を倍精度演算によりデータパス部１００に実行させる。図２は、ワークメモリ１０１の２アドレスの記憶エリアから読み出される符号ビットＳと上位ビットＡと下位ビットＢとからなる信号値と、係数メモリ１０２の２アドレスの記憶エリアから読み出される符号ビットＳと上位ビットＣと下位ビットＤとからなるフィルタ係数との乗算を倍精度演算に行う場合の本実施形態の動作例を示すものである。本実施形態において行われる倍精度演算のためのデータパス部１００の制御は、第１の乗算累算過程と、第２の乗算累算過程と、並列に実行される第３の乗算累算過程および小数点位置合わせ処理過程とを有する。以下、図２を参照し、これらの各過程について説明する。
【００１４】
（２−１）第１の乗算累算過程
まず、第１の乗算累算過程において、制御部２００は、信号値の下位ビットＢ（より詳細には下位ビットＢの先頭に信号値の符号ビットＳを付加したもの。以下同様。）とフィルタ係数の上位ビットＣとの乗算を乗算器１１３に行わせ、アキュムレータ１３１の現在の累算値データＰ３に対して乗算器の乗算結果ＢＣを加える累算処理を加算器１２３およびアキュムレータ１３１に実行させる。
【００１５】
（２−２）第２の乗算累算過程
次に、第２の乗算累算過程において、制御部２００は、信号値の上位ビットＡとフィルタ係数の下位ビットＤとの乗算を乗算器１１３に行わせ、アキュムレータ１３１の現在の累算値データＰ３（＝ＢＣ）に対して乗算器１１３の乗算結果ＡＤを加える累算処理を加算器１２３およびアキュムレータ１３１に実行させる。この結果、アキュムレータ１３１が出力する累算値データＰ３は、ＢＣ＋ＡＤとなる。
【００１６】
次に制御部２００は、以下説明する第３の乗算累算過程と小数点位置合わせ処理過程とを並列に実行する。
【００１７】
（２−３）第３の乗算累算過程では、信号値の上位ビットＡとフィルタ係数の上位ビットＣとの乗算を乗算器１１３に行わせ、アキュムレータ１３１が出力する累算値データＰ３に対して乗算器１１３の乗算結果ＡＣを加える累算処理を加算器１２３およびアキュムレータ１３１に実行させる。
【００１８】
（２−４）第３の乗算累算過程と並列に進行する小数点位置合わせ処理過程では、第３の乗算累算過程において乗算器１１３から出力される乗算結果ＡＣに対して小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を、第２の乗算累算過程後であって、第３の乗算累算過程前にアキュムレータが出力する累算値データＰ３（＝ＢＣ＋ＡＤ）に施すための制御を行う。さらに詳述すると、この小数点位置合わせ処理過程では、データＡＣの各ビットとデータＰ３＝ＢＣ＋ＡＤの各ビットの同じ重みのビット同士が対向するように累算値データＰ３＝ＢＣ＋ＡＤのビットシフト処理（右方向シフト）を行う。そして、累算値データＰ３＝ＢＣ＋ＡＤにおいて、データＡＣの最下位ビットと同じ重みのビットとその次の重みを持った下位ビットとの境界を丸め位置とし、０方向丸め処理を実行する。
【００１９】
図３はこの０方向丸め処理の内容を示すものである。まず、データＢＣ＋ＡＤが正のデータまたは「０」であり、その先頭の符号ビットＳが“０”である場合、データＢＣ＋ＡＤから丸め位置よりも下位の全ビットを削除し、丸め位置よりも上位のビットを０方向丸め処理後のデータとする（図３（ａ）参照）。一方、データＢＣ＋ＡＤが負のデータであり、その先頭の符号ビットＳが“１”である場合、データＢＣ＋ＡＤから丸め位置よりも下位の各ビットの論理和を求め、この論理和を丸め位置よりも上位のビット列の最下位ビットに加算（算術加算）したものを０方向丸め処理後のデータとする（図３（ｂ）参照）。
【００２０】
以上の小数点位置合わせ処理過程が第３の乗算累算過程と並列に進行する結果、第３の乗算累算過程において最終的にアキュムレータ１３１から得られる累算値データＰ３は、データＡＣと、ビットシフト処理および０方向丸め処理後のデータＢＣ＋ＡＤとを加算した値となり、信号値ＡＢとフィルタ係数ＢＣとの乗算結果の有効桁分のデータとなる。
【００２１】
多くのＤＳＰと同様、本実施形態によるＤＳＰの演算処理もパイプライン制御により進められる。図４は、倍精度演算による信号値ＡＢとフィルタ係数ＣＤの乗算処理がパイプライ制御により進められる様子を具体的に示すタイムチャートである。このタイムチャートでは、横軸を演算サイクルとし、演算サイクルの切り換わりに伴って、データパス部１００の各部の出力データがどのように変化してゆくかが示されている。なお、図４では、図面が煩雑になるのを防止するため、乗算ＡＢ×ＣＤに関連した処理のみが図示されているが、勿論、図４において何も処理内容が図示されていない余白欄に相当するタイミングを利用して、パイプライン制御により乗算ＡＢ×ＣＤ以外の他の処理を進めることが可能である。また、図４に示す例では、説明を簡単にするため、乗算ＡＢ×ＣＤの開始前の初期状態において、アキュムレータ１３１が出力する累算値データＰ３の値を「０」としている。
【００２２】
図４に示す例において、演算サイクル０では、フィルタ係数の上位ビットＣ（先頭の符号ビットＳを含む。以下同様。）が係数メモリ１０２からデータＰ０Ｌとして読み出される。また、信号値の下位ビットＢがワークメモリ１０１からデータＰ０Ｒとして読み出される。
【００２３】
演算サイクル１では、演算サイクル１の開始時点における係数メモリ１０２の出力データＰ０Ｌ（＝Ｃ）が入力レジスタ１１２に書き込まれ、入力レジスタ１１２の出力データＰ１Ｌの内容がＣとなる。また、演算サイクル１の開始時点におけるワークメモリ１０１の出力データＰ０Ｒ（＝Ｂ）が入力レジスタ１１１に書き込まれ、入力レジスタ１１１の出力データＰ１Ｒの内容がＢとなる。これにより乗算器１１３は、データＢとデータＣの乗算を開始する。また、演算サイクル１では、フィルタ係数の下位ビットＤが係数メモリ１０２からデータＰ０Ｌとして読み出され、信号値の上位ビットＡがワークメモリ１０１からデータＰ０Ｒとして読み出される。
【００２４】
演算サイクル２では、その時点において乗算器１１３が出力している乗算結果ＢＣが乗算結果レジスタ１２１に書き込まれ、乗算結果レジスタ１２１から加算器１２３へデータＰ２Ｌ（＝ＢＣ）が出力される。また、演算サイクル２では、制御部２００は、アキュムレータ１３１が出力する累算値データＰ３（＝「０」）をセレクタ１２２に選択させる。このため、累算値データＰ３（＝「０」）がデータＰ２Ｒとして加算器１２３へ出力される。これにより加算器１２３は、データＰ２Ｌ（＝ＢＣ）と累算値データＰ３（＝「０」）の加算を開始する。また、演算サイクル２では、演算サイクル２の開始時点における係数メモリ１０２の出力データＰ０Ｌ（＝Ｄ）が入力レジスタ１１２に書き込まれ、入力レジスタ１１２の出力データＰ１Ｌの内容がＤとなる。また、演算サイクル２の開始時点におけるワークメモリ１０１の出力データＰ０Ｒ（＝Ａ）が入力レジスタ１１１に書き込まれ、入力レジスタ１１１の出力データＰ１Ｒの内容がＡとなる。これにより乗算器１１３は、データＡとデータＤの乗算を開始する。また、演算サイクル２では、フィルタ係数の上位ビットＣが係数メモリ１０２からデータＰ０Ｌとして読み出され、信号値の上位ビットＡがワークメモリ１０１からデータＰ０Ｒとして読み出される。
【００２５】
演算サイクル３では、加算器１２３の出力データ、すなわち、Ｐ２Ｌ（＝ＢＣ）＋Ｐ２Ｒ（＝「０」）＝ＢＣがアキュムレータ１３１に書き込まれ、アキュムレータ１３１が出力する累算値データＰ３の内容がＢＣとなる。また、乗算器１１３が出力する乗算結果ＡＤが乗算結果レジスタ１２１に書き込まれ、乗算結果レジスタ１２１から加算器１２３へデータＰ２Ｌ（＝ＡＤ）が出力される。また、演算サイクル３では、制御部２００は、アキュムレータ１３１が出力する累算値データＰ３（＝ＢＣ）をセレクタ１２２に選択させる。このため、加算器１２３は、データＡＤとデータＢＣの加算を開始する。また、演算サイクル３では、演算サイクル３の開始時点における係数メモリ１０２の出力データＰ０Ｌ（＝Ｃ）が入力レジスタ１１２に書き込まれ、入力レジスタ１１２の出力データＰ１Ｌの内容がＣとなる。また、演算サイクル３の開始時点におけるワークメモリ１０１の出力データＰ０Ｒ（＝Ａ）が入力レジスタ１１１に書き込まれ、入力レジスタ１１１の出力データＰ１Ｒの内容がＡとなる。これにより乗算器１１３は、データＡとデータＣの乗算を開始する。
【００２６】
演算サイクル４では、加算器１２３が出力する加算結果Ｐ２Ｌ（＝ＡＤ）＋Ｐ２Ｒ（＝ＢＣ）がアキュムレータ１３１に書き込まれ、アキュムレータ１３１が出力する累算値データＰ３の内容がＢＣ＋ＡＤとなる。また、乗算器１１３が出力する乗算結果Ｐ１Ｌ（＝Ｃ）×Ｐ１Ｒ（＝Ａ）が乗算結果レジスタ１２１に書き込まれ、乗算結果レジスタ１２１から加算器１２３へデータＰ２Ｌ（＝ＡＣ）が出力される。また、演算サイクル４において、小数点位置合わせ処理部１１４は、上述したように、アキュムレータ１３１が出力する累算値データＰ３（＝ＢＣ＋ＡＤ）に対し、乗算結果レジスタ１２１の出力データＰ２Ｌ（＝ＡＣ）と小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を施して出力する。そして、演算サイクル４において、制御部２００は、小数点位置合わせ処理部１１４が出力するビットシフト処理および０方向丸め処理後のデータＢＣ＋ＡＤをセレクタ１２２に選択させ、データＰ２Ｒとして加算器１２３に供給させる。これにより、加算器１２３は、データＡＣとビットシフト処理および０方向丸め処理後のデータＢＣ＋ＡＤとの加算を行う。
【００２７】
演算サイクル５では、データＡＣとビットシフト処理および０方向丸め処理後のデータＢＣ＋ＡＤとの加算結果が加算器１２３から得られ、これがシフタ１２４を介してアキュムレータ１３１に書き込まれる。このようにして、アキュムレータ１３１が出力する累算値データＰ３は、信号値ＡＢとフィルタ係数ＢＣとの乗算結果の有効桁分のデータ（ＡＢ）×（ＣＤ）となる。そして、演算サイクル６では、このアキュムレータ１３１が出力する累算値データＰ３（＝（ＡＢ）×（ＣＤ））が丸め処理部１３２を介して出力レジスタ１４１に書き込まれる。この出力レジスタ１４１に書き込まれたデータは、その後、制御部２００からの指示に従い、ワークメモリ１０１に書き込まれる。
以上が本実施形態の動作の詳細である。
【００２８】
以上説明したように、本実施形態によれば、アキュムレータ１３１が出力する累算値データＰ３とは小数点の位置がずれたデータＰ２Ｌ（上記の例では、累算値データＰ３＝ＢＣ＋ＡＤに対するデータＡＣ）が乗算結果レジスタ１２１から加算器１２３に供給されるとき、アキュムレータ１３１と加算器１２３との間に介挿された小数点位置合わせ処理部１１４が、乗算結果レジスタ１２１の出力データＰ２Ｌと小数点の位置を合わせるためのビットシフト処理および０方向丸め処理を累算値データＰ３に施し、加算器１２３に供給する。従って、加算器１２３およびアキュムレータ１３１のビット幅を不要に増加させることなく、倍精度演算を実行することができる。
【００２９】
また、本実施形態によれば、加算器１２３およびアキュムレータ１３１のビット幅を増加させる必要がないので、単精度演算による信号処理の処理効率を低下させることなく、倍精度演算による信号処理を行うことが可能になる。
【００３０】
また、本実施形態によれば、２つのデータ（上記の例では信号値とフィルタ係数）の上位ビットと下位ビットの組み合わせの乗算結果の累算過程では、ビットシフト処理も０方向丸め処理も行わず、上位ビット同士の乗算結果との加算の段階で、上位ビットと下位ビットの組み合わせの乗算結果の累算値のビットシフト処理および０方向丸め処理を行う。このため、上位ビット同士の乗算結果と加算する段階における上位ビットと下位ビットの組み合わせの乗算結果の累算値の丸め誤差を最小限に食い止めることができる。
【００３１】
また、本実施形態によれば、丸め処理として、０方向丸め処理を採用しているため、丸め処理の対象が正のデータであるか負のデータであるかにより丸め誤差の不均衡が発生するのを回避し、高い演算精度での信号処理を実現することができる。
【００３２】
また、本実施形態によれば、パイプライン制御を途切れさせることなく、倍精度演算を実行することができる。さらに詳述すると、まず、本実施形態において倍精度演算による乗算が正常に行われるためには、図４の例だと、演算サイクル３の開始点においてデータＢＣ＋ＡＤがアキュムレータ１３１に書き込まれた後、演算サイクル３の間にデータＢＣ＋ＡＤに対する小数点位置合わせ処理部１１４の処理（ビットシフト処理および０方向丸め処理）と、加算器１２３による小数点位置合わせ処理部１１４の処理結果とデータＡＣとの加算処理が終了する必要がある。ここで、データパス部１００の各部の処理の中では、乗算器１１３が行う乗算処理の所要時間が最も長いため、演算サイクルは、この乗算処理の所要時間以上の長さとされる。そして、上述した小数点位置合わせ処理部１１４の処理と加算器１２３の処理のトータルの所要時間は、このように決定された演算サイクルよりも短い。従って、本実施形態によれば、図４の例のように、パイプライン制御の流れを途切れさせることなく、倍精度演算を進めることができる。
【００３３】
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
（１）小数点位置合わせ処理部１１４とセレクタ１２２からなる部分を、アキュムレータ１３１と丸め処理部１３２との間の位置に移動してもよい。
（２）シフタ１２４や丸め処理部１３２はなくてもよい。
【図面の簡単な説明】
【００３４】
【図１】この発明の一実施形態であるＤＳＰの構成を示すブロック図である。
【図２】同実施形態において行われる倍精度演算の例を示す図である。
【図３】０方向丸め処理の内容を説明する図である。
【図４】同実施形態の動作例を示すタイムチャートである。
【符号の説明】
【００３５】
１００……データパス部、２００……制御部、１０１……ワークメモリ、１０２……係数メモリ、１１１，１１２……入力レジスタ、１１３……乗算器、１１４……小数点位置合わせ処理部、１２１……乗算結果レジスタ、１２２……セレクタ、１２３……加算器、１２４……シフタ、１３１……アキュムレータ、１３２……丸め処理部、１４１……出力レジスタ。
【図１】
2009282852.tif 000003
【図２】
2009282852.tif 000004
【図３】
2009282852.tif 000005
【図４】
2009282852.tif 000006