(57)【特許請求の範囲】
【請求項１】
入力データと、累積加算結果である現累積加算データとを受け、第１のビットシフト制御信号に応答して前記入力データをビットシフトし、第２のビットシフト制御信号に応答して前記現累積加算データをビットシフトし、ビットシフトされた前記入力データとビットシフトされた前記現累積加算データとから次累積加算データを発生し、又次累積加算データの一部のデータを出力する為の累積加算部と、
現累積加算データの一部のデータを受け、前記現累積加算データの一部のデータに応答して前記第１のビットシフト制御信号と、前記第２のビットシフト制御信号とを発生する為のシフトビットサーチ部とを具備することを特徴とする累積加算回路。
【請求項２】
前記累積加算部が、前記入力データ及び前記現累積加算データを各々受け、これらを保持して第１の出力データ及び第２の出力データとを各々出力する為のデータ保持手段と、
前記第１の出力データを受け、前記第１のビットシフト制御信号に応答して前記第１の出力データをＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向へビットシフトして第１のシフト出力データを出力し、又前記第２の出力データを受け、前記第２のビットシフト制御信号に応答して前記第２の出力データをＬＳＢ方向へビットシフトして第２のシフト出力データを出力する為のデータシフト手段と、
前記第１のシフト出力データと前記第２のシフト出力データを各々受け、これらを加算して前記次累積加算データ及び前記次累積加算データの一部のデータを出力する為のデータ加算手段とを具備することを特徴とする請求項１記載の累積加算回路。
【請求項３】
前記シフトビットサーチ部が、前記現累積加算データの一部のデータを受け、前記現累積加算データの一部のデータの変化に応答して第３の出力データを出力する為のデータサーチ手段と、
前記第３の出力データを受け、前記第１のビットシフト制御信号と前記第２のビットシフト制御信号とを発生する為の制御データ発生手段とを具備することを特徴とする請求項１記載の累積加算回路。
【請求項４】
前記データ加算手段が、前記第１のシフト出力データと前記第２のシフト出力データとを加算して前記次累積加算データを出力する為の第１の加算器と、
前記次累積加算データを格納する為のＲＡＭとを具備することを特徴とする請求項２記載の累積加算回路。
【請求項５】
前記データ加算手段が、前記第１のシフト出力データと前記第２のシフト出力データとを加算して前記次累積加算データを出力する為の前記第１の加算器を具備することを特徴とする請求項２記載の累積加算回路。
【請求項６】
前記データサーチ手段が、論理和演算回路と、
前記論理和演算回路の出力データである論理和出力データを受け、前記論理和出力データを保持し前記第３の出力データを出力する為の第３のフリップフロップ回路から成り、
前記論理和演算回路に前記現累積加算データの一部のデータと前記第３の出力データが入力されることを特徴とする請求項３記載の累積加算回路。
【請求項７】
前記データサーチ手段が、前記現累積加算データの一部のデータを受け、論理積出力データを出力する為の論理積演算回路と、
前記論理和演算回路と、
前記論理和演算回路の出力である前記論理和出力データを受け、前記論理和出力データを保持し前記第３の出力データを出力する為の前記第３のフリップフロップ回路から成り、前記論理和演算回路に前記現累積加算データの一部のデータと前記第３の出力データが入力されることを特徴とする請求項３記載の累積加算回路。
【請求項８】
前記データ保持手段が、前記入力データを受けて前記第１の出力データを出力する為の第１のフリップフロップ回路と、
前記現累積加算データを受けて前記第２の出力データを出力する為の第２のフリップフロップ回路とを具備することを特徴とする請求項２記載の累積加算回路。
【請求項９】
前記データシフト手段が、前記第１の出力データを受け、前記第１のビットシフト制御信号に基づいて前記第１のシフト出力データを出力する為の第１のシフタと、前記第２の出力データを受け、前記第２のビットシフト制御信号に基づいて前記第２のシフト出力データを出力する為の第２のシフタとを具備することを特徴とする請求項２記載の累積加算回路。
【請求項１０】
前記制御データ発生手段が、前記第３の出力データを受け、前記第２のビットシフト制御信号を出力する為の第４のフリップフロップ回路と、第２の加算器と、前記第２の加算器の出力データであるシフトビットデータを受け、前記第１のビットシフト制御信号を出力する為の第５のフリップフロップ回路とから成り、前記第２の加算器に前記第３の出力データと前記第１のビットシフト制御信号が入力されることを特徴とする請求項３記載の累積加算回路。
【請求項１１】
現累積加算データの一部のデータに基づいて第１のビットシフト制御信号と、第２のビットシフト制御信号とを発生する制御信号発生ステップと、
前記第１のビットシフト制御信号に応答して入力データをビットシフトするステップと、又前記第２のビットシフト制御信号に応答して前記現累積加算データをビットシフトするビットシフトステップと、
ビットシフトされた前記入力データとビットシフトされた前記現累積加算データとから次累積加算データを発生する累積加算ステップとから成ることを特徴とする累積加算方法。
【請求項１２】
前記制御信号発生ステップが、
前記現累積加算データの一部のデータの変化に基づいて第３の出力データを出力するステップと、
前記第３の出力データを受け、前記第１のビットシフト制御信号と前記第２のビットシフト制御信号とを発生するステップとから成ることを特徴とする請求項１１記載の累積加算方法。
【請求項１３】
前記ビットシフトステップが、
前記入力データ及び前記現累積加算データを各々受け、これらを保持して第１の出力データ及び第２の出力データとを各々出力するステップと、
前記第１の出力データを前記第１のビットシフト制御信号に基づいてＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向へビットシフトして第１のシフト出力データを出力し、又前記第２の出力データを前記第２のビットシフト制御信号に基づいて、ＬＳＢ方向へビットシフトして第２のシフト出力データを出力するステップとから成り、
前記累積加算ステップが、
前記第１のシフト出力データと前記第２のシフト出力データとを各々受け、これらを加算して前記次累積加算データを出力するステップとから成ることを特徴とする請求項１１記載の累積加算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディジタルシステムにおける、累積加算回路に関する。
【０００２】
【従来の技術】
ディジタル信号処理システムにおいては、一般に入力されたディジタル信号を畳み込み積分によりフイルタリング等の処理を行う。この畳み込み積分は、積和演算により実行されるものであり、大量の演算をより高速及び高精度に実行する事が望まれる。累積加算回路は複数のディジタルデータを加算する為の用途に加えて上述の積和演算における処理速度及び演算精度の向上に寄与するものである。
【０００３】
図７に第１の従来の技術として一般的な累積加算回路を示す。本構成は、ｋビットの入力データをＬＳＢ方向にビットシフトして（ｍ−ｎ）ビットのデータとして出力する為のシフタ７０１と、（ｍ−ｎ）ビットの入力データと現在の累積加算結果である累積加算データを加算してｍビットの累積加算データを新たに出力する為の加算器７０３と、累積加算データを一時的に格納する為のＲＡＭ７０５とから成る。
【０００４】
図７を参照して、ｋビットの複数の正のデータを累積加算し、そのデータをＲＡＭ７０５に保持しながらａ回累積加算してｍビットの累積加算値を得る場合、オーバーフローを起こすことなく、情報の切り捨てを無くす為には、ｎ−１＜ｌｏｇ（ａ）≦ｎとして（ｌｏｇの底は２）ｍ＝ｋ＋ｎである必要がある。この場合、ｎが大きくなるほどｍが大きくなり、値を保持するのに必要なＲＡＭ７０５の容量が増大する。
【０００５】
次に、図８に第２の従来技術として特開平９−６２６５３の図３４に提供されている、積和演算装置内部における累積加算回路を示す。図８を参照して、本構成は累積加算器の出力データにおいて下位８ビットの演算の為に設けられた第１の加算器８０１と、累積加算器の出力データにおいて中位８ビットの演算の為に設けられた第２の加算器８０３と、累積加算器の出力データにおいて上位８ビットの演算の為に設けられた第３の加算器８０５と、累積加算結果を一時的に格納する為のレジスタ８０９と、第３の入力端子８１４からの信号に基づいて累積加算回路の出力データを出力する為のマルチプレクサ８０７とから成る。
【０００６】
上記累積加算回路の動作について示す。図８を参照して、データ変換器８１８により第２の入力端子８１３からの８ビットデータは桁移動情報を与える桁移動情報データ８１６として変換される。バレルシフタ８１１は桁移動情報データ８１６に基づいて第１の入力端子８１２からの信号を桁移動して１６ビットデータを出力する。これにより乗算処理が実行される。次に累積加算処理はバレルシフタ８１１からの１６ビットデータの下位８ビットデータを第１の加算器８０１に入力し、上位８ビットデータを第２の加算器８０３に入力することから始まる。
【０００７】
第１の加算器８０１は、バレルシフタ８１１からの下位８ビットデータとマルチプレクサ８０７から入力される２４ビットのデータにおける下位８ビットデータとを加算して加算結果のデータを累積加算器の下位８ビットデータとしてレジスタ８０９に出力する一方、下位キャリー（桁上げ）信号をレジスタ８０９に出力する。ここで、第１の加算器８０１は加算結果のデータに桁あふれが生じた場合にはビット状態が“０”である下位キャリー信号をレジスタ８０９に出力する。
【０００８】
第２の加算器８０３は、入力されるキャリー信号に基づいて、バレルシフタ８１１から入力される１６ビットのデータの上位８ビットデータとマルチプレクサ８０７から入力される２４ビットのデータにおける中位８ビットデータとを加算して加算結果のデータを累積加算器の中位８ビットデータとしてレジスタ８０９に出力する一方、中位キャリー信号をレジスタ８０９に出力する。ここで、第２の加算器８０３は入力されるキャリー信号のビット状態が“１”の場合には、入力される１６ビットの入力データの上位８ビットデータとマルチプレクサ８０７から入力される２４ビットのデータの中位８ビットの加算データの最下位桁に更に１を加算して加算結果のデータとしてレジスタ８０９に出力し、キャリー信号のビット状態が“０”の場合には、上位８ビットデータとマルチプレクサ８０７から入力される２４ビットのデータにおける中位８ビットデータとの加算データをレジスタ８０９に出力する。又第２の加算器８０３は、加算結果のデータに桁あふれが生じた場合にはビット状態が“１”である中位キャリー信号をレジスタ８０９に出力し、加算結果のデータに桁あふれが生じていない場合にはビット状態が“０”である中位キャリー信号をレジスタ８０９に出力する。
【０００９】
第３の加算器８０５は、入力されるキャリー信号に基づいて、キャリー信号のビット状態が“１”の場合には、マルチプレクサ８０７から入力される２４ビットのデータにおける上位８ビットのデータの最下位桁に１を加算して加算結果のデータとしてレジスタ８０９に出力し、当該キャリー信号のビット状態が“０”の場合には、マルチプレクサ８０７から入力されるデータをそのまま加算結果のデータとしてレジスタ８０９に出力する。ここで、第３の加算器８０５の一方の入力端子は接地され、当該入力端子には常に０のデータが入力される。レジスタ８０９は、第１の加算器８０１から入力される加算結果のデータと、下位キャリー信号と、第２の加算器８０３から入力される加算結果のデータと、中位キャリー信号と、第３の加算器８０５から入力される加算結果のデータとをクロックの１周期分の時間だけ保持してマルチプレクサ８０７に出力する。
【００１０】
マルチプレクサ８０７は、第３の入力端子８１４を介して入力される信号とレジスタ８０９から入力されるデータとを切り替えて出力する。即ちマルチプレクサ８０７は、第１番目のクロック信号に応答して第３の入力端子８１４を介して入力される０である入力データを選択的に第１の加算器８０１の他方の入力端子と、第２の加算器８０３のキャリー入力端子と、第２の加算器８０３の他方の入力端子と、第３の加算器８０５のキャリー入力端子と、第３の加算器８０５の他方の入力端子とに出力する。又マルチプレクサ８０７は、第２番目以降のクロック信号に応答して、レジスタ８０９から入力される各データを第１、第２及び第３の加算器に以下のように入力する。マルチプレクサ８０７は、第１の加算器８０１から出力される加算結果のデータを第１の加算器８０１の他方の入力端子に入力し、第１の加算器８０１から出力される下位キャリー信号を第２の加算器８０３のキャリー入力端子に入力し、第２の加算器８０３から出力される加算結果のデータを第２の加算器８０３の他方の入力端子に入力し、第２の加算器８０３から出力される中位キャリー信号を第３の加算器８０５のキャリー入力端子に入力し、第３の加算器８０５から出力される加算結果のデータを第３の加算器８０５の他方の入力端子に入力する。
【００１１】
以上の累積加算回路は、３つの８ビット加算器とレジスタとを備えることにより２４ビットの加算器を構成し、第１の加算器８０１の下位キャリー信号と第２の加算器８０３の中位キャリー信号とを各々レジスタでクロックの１周期分の時間だけ保持した後、即ち次のクロックの加算時に上位側の加算器に伝播されるように構成している。これによって、１回の加算におけるキャリー伝播が短くなることで、累積加算時間を短くできるという特徴を有する。
【００１２】
【発明が解決しようとする課題】
図７に示した第１の従来の技術においては、ＲＡＭの容量（データ語長）に制約がある場合にはｍ＜ｋ＋ｎとなり、オーバーフローを防ぐ為に、加算前に各データの情報を切り捨てる必要が生じる。これは予め各入力データの下位ビットを切り捨てて（ｍ−ｎ）ビットにして加算するものであるが、この方法では（ｋ＋ｎ−ｍ）が大きい場合には精度の低下が大きくなる。
【００１３】
一方、図８に示した第２の従来の技術においては、積和演算器内部にデータ変換器及びバレルシフタを用いる事で累積加算器におけるオーバーフローを防いでいるが、これは乗算処理の為の機能に含まれるものであり、累積加算回路がその内部機能として有するものではない。
【００１４】
本発明の目的は上述した問題点を解決し、累積加算値の保持に必要なＲＡＭの容量を増大させることなく精度の低下を減少させた累積加算回路を提供することにある。
【００１５】
【課題を解決するための手段】
上記課題を解決する為に本発明の累積加算回路は、入力データと、累積加算結果である現累積加算データとを受け、第１のビットシフト制御信号に応答して前記入力データをビットシフトし、第２のビットシフト制御信号に応答して前記現累積加算データをビットシフトし、ビットシフトされた前記入力データとビットシフトされた前記現累積加算データとから次累積加算データを発生し、又次累積加算データの一部のデータを出力する為の累積加算部と、
現累積加算データの一部のデータを受け、前記現累積加算データの一部のデータに応答して前記第１のビットシフト制御信号と、前記第２のビットシフト制御信号とを発生する為のシフトビットサーチ部とを具備することを特徴とする。
【００１６】
又前記累積加算部が、前記入力データ及び前記現累積加算データを各々受け、これらを保持して第１の出力データ及び第２の出力データとを各々出力する為のデータ保持手段と、
前記第１の出力データを受け、前記第１のビットシフト制御信号に応答して前記第１の出力データをＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向へビットシフトして第１のシフト出力データを出力し、又前記第２の出力データを受け、前記第２のビットシフト制御信号に応答して前記第２の出力データをＬＳＢ方向へビットシフトして第２のシフト出力データを出力する為のデータシフト手段と、
前記第１のシフト出力データと前記第２のシフト出力データを各々受け、これらを加算して前記次累積加算データ及び前記次累積加算データの一部のデータを出力する為のデータ加算手段とを具備することを特徴とする。
【００１７】
更に前記シフトビットサーチ部が、前記現累積加算データの一部のデータを受け、前記現累積加算データの一部のデータの変化に応答して第３の出力データを出力する為のデータサーチ手段と、
前記第３の出力データを受け、前記第１のビットシフト制御信号と前記第２のビットシフト制御信号とを発生する為の制御データ発生手段とを具備することを特徴とする。
【００１８】
更に前記データ加算手段が、前記第１のシフト出力データと前記第２のシフト出力データとを加算して前記次累積加算データを出力する為の第１の加算器と、前記次累積加算データを格納する為のＲＡＭとを具備することを特徴とする。
【００１９】
更に前記データ加算手段が、前記第１のシフト出力データと前記第２のシフト出力データとを加算して前記次累積加算データを出力する為の前記第１の加算器を具備することを特徴とする。
【００２０】
更に前記データサーチ手段が、論理和演算回路と、
前記論理和演算回路の出力データである論理和出力データを受け、前記論理和出力データを保持し前記第３の出力データを出力する為の第３のフリップフロップ回路から成り、
前記論理和演算回路に前記現累積加算データの一部のデータと前記第３の出力データが入力されることを特徴とする。
【００２１】
更に前記データサーチ手段が、前記現累積加算データの一部のデータを受け、論理積出力データを出力する為の論理積演算回路と、
前記論理和演算回路と、
前記論理和演算回路の出力である前記論理和出力データを受け、前記論理和出力データを保持し前記第３の出力データを出力する為の前記第３のフリップフロップ回路から成り、前記論理和演算回路に前記現累積加算データの一部のデータと前記第３の出力データが入力されることを特徴とする。
【００２２】
更に前記データ保持手段が、前記入力データを受けて前記第１の出力データを出力する為の第１のフリップフロップ回路と、
前記現累積加算データを受けて前記第２の出力データを出力する為の第２のフリップフロップ回路とを具備することを特徴とする。
【００２３】
更に前記データシフト手段が、前記第１の出力データを受け、前記第１のビットシフト制御信号に基づいて前記第１のシフト出力データを出力する為の第１のシフタと、前記第２の出力データを受け、前記第２のビットシフト制御信号に基づいて前記第２のシフト出力データを出力する為の第２のシフタとを具備することを特徴とする。
【００２４】
更に前記制御データ発生手段が、前記第３の出力データを受け、前記第２のビットシフト制御信号を出力する為の第４のフリップフロップ回路と、第２の加算器と、前記第２の加算器の出力データであるシフトビットデータを受け、前記第１のビットシフト制御信号を出力する為の第５のフリップフロップ回路とから成り、前記第２の加算器に前記第３の出力データと前記第１のビットシフト制御信号が入力されることを特徴とする。
【００２５】
【発明の実施の形態】
次に本発明の累積加算回路について、添付図面を参照して以下に詳細を説明する。図１に本発明の累積加算回路の実施の形態をブロック図により示す。尚本図に示すブロック図の概念は後述する第１、第２及び第３の実施の形態における構成を包含するものである。図１を参照して、本構成は累積加算部１０１とシフトビットサーチ部１０３とから成る。累積加算部１０１は入力データ１０５と、現在の累積加算結果である累積加算データ（現累積加算データ）１０７とを受け、第１のビットシフト制御信号１１１に応答して前記入力データ１０５をビットシフトし、第２のビットシフト制御信号１１３に応答して現累積加算データ１０７をビットシフトし、ビットシフトされた前記入力データ１０５とビットシフトされた現累積加算データ１０７とから次累積加算データ（図示せず）を発生して、又次累積加算データ一部のデータ（図示せず）を出力する。ビットシフトサーチ部１０３は現累積加算データの一部のデータ１０９を受け、前記現累積加算データの一部のデータ１０９に応答して第１のビットシフト制御信号１１１と、前記第２のビットシフト制御信号１１３とを発生する。
【００２６】
即ち本発明は、シフトビットサーチ部１０３が累積加算データ１０７の変化（トランザクション）を現累積加算データの一部のデータ１０９を用いて参照しながら入力データ１０５に対するビットシフト情報である第１のビットシフト制御信号１１１と、現累積加算データ１０７に対するビットシフト情報である第２のビットシフト制御信号１１３を発生し、又累積加算部１０１は新たに算出される次累積加算データの格納に際してオーバーフローを避ける為に第１のビットシフト制御信号１１１及び第２のビットシフト制御信号１１３に応答して、入力データ１０５及び現累積加算データ１０７を各々ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）方向にビットシフトし、シフト後の各データを累積加算するというものである。以下具体的に各実施の形態について示す。
【００２７】
最初に本発明の第一の実施の形態に係る累積加算回路について説明する。図２に累積加算回路の構成を示す。図２を参照して、本構成は累積加算部２０１とシフトビットサーチ部２０３から成り、累積加算部２０１はデータ保持手段２５１と、データシフト手段２５３及びデータ加算手段２５５から成る。シフトビットサーチ部２０３はデータサーチ手段２５７及び制御データ発生手段２５９とから成る。
【００２８】
累積加算部２０１において、データ保持手段２５１は入力データ（ｋビット）２０５を受けて第１の出力データ（ｋビット）２３７を出力する為の第１のフリップフロップ回路２１５と、現累積加算データ（ｍビット）２０７を受けて第２の出力データ（ｍビット）２３９を出力する為の第２のフリップフロップ回路２１７からなる。データシフト手段２５３は第１の出力データ２３７を受け、第１のビットシフト制御信号２１１の情報に基づいて第１の出力データ２３７をＬＳＢ方向へビットシフトして第１のシフト出力データ（最大ｍ−１ビット）２４１を出力する為の第１のシフタ２１９と、第２の出力データ２３９を受け、前記第２のビットシフト制御信号２１３の情報に基づいて第２のシフト出力データ（ｍ−１ビット）２４３を出力する為の第２のシフタ２２１から成る。データ加算手段２５５は第１のシフト出力データ２４１と第２のシフト出力データ２４３とを加算して新たな次累積加算データ（ｍビット）（図示せず）を出力する為の第１の加算器２２３と、次累積加算データを一時的に蓄積する為のＲＡＭ（データ語長ｍビット）２２５とから成る。
【００２９】
又シフトビットサーチ部２０３において、データサーチ手段２５７は論理和演算回路２２７と、この出力データである論理和出力データ２４５を受け、論理和出力データ２４５を保持し第３の出力データ２４７を出力する為の第３のフリップフロップ回路２２９から成る。又論理和演算回路２２７は現累積加算データのＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）データ２０９と第３の出力データ２４７を入力としている。制御データ発生手段２５９は第３の出力データ２４７を受け、第２のビットシフト制御信号２１３を出力する為の第４のフリップフロップ回路２３１と、第２の加算器２３３と、この出力データであるシフトビットデータ２４９を受け、第１のビットシフト制御信号２１１を出力する為の第５のフリップフロップ回路２３５とから成る。又第２の加算器２３３は第３の出力データ２４７と第１のビットシフト制御信号２１１を入力としている。
【００３０】
図２及び図３を参照して、本発明の動作を説明する。図３は、本発明に係る入力信号の形態を表すタイミングチャートである。本発明は、図３のタイミングチャートに示す順序で入力されるｋビットのａ個×ｆの正のデータＤをｂ（１≦ｂ≦ｆ）の各々についてａ（１≦ｉ≦ａ）個加算した累積加算値ΣＤ（ｂ，ｉ）が次式に基づいて、ｆ個算出される。
ΣＤ（ｂ，ｉ）＝Ｄ（ｂ，１）＋Ｄ（ｂ，２）＋Ｄ（ｂ，３）＋．．．＋Ｄ（ｂ，ａ）
図２に示す回路では、第１のフリップフロップ回路２１５に取り込まれた入力データが、第５のフリップフロップ回路２３５に保持された指数だけ第１のシフタ２１９によりＬＳＢ方向にビットシフトされ、第１のシフト出力データ２４１に変換される。ＲＡＭ２２５から読み込まれた現累積加算データ２０７は、第２のフリップフロップ回路２１７に取り込まれ、第４のフリップフロップ回路２３１に保持された値だけ第２のシフタ２２１によりＬＳＢ方向にビットシフトされ、第２のシフト出力データ２４３に変換される。第１のシフト出力データ２４１及び第２のシフト出力データ２４１は、第１の加算器２２３にて加算され、次累積加算データとして新たにＲＡＭ２２５に書き込まれる。第１のシフタ２１９及び第２のシフタ２２１によるビットシフトは、オーバーフローを防ぎ、桁を合わせる働きをする。
【００３１】
指数のインクリメントが必要であるか否かを調べる為に、論理和演算回路２２７と第３のフリップフロップ回路２２９は、ｉが一定である間の現累積加算データ２０７のＭＳＢをサーチし、１回以上１になると第３のフリップフロップ回路２２９の値は１に設定される。ｉのインクリメント時、第４のフリップフロップ回路２３１は、第３のフリップフロップ回路２２９から第３の出力データ２４７を取り込み、第５のフリップフロップ回路２３５の値に第３の出力データ２４７の値が加算される。第５のフリップフロップ回路２３５と第４のフリップフロップ回路２３１に保持された値は、各々第１のシフタ２１９及び第２のシフタ２２１でシフトする桁数となる。ここで第１のシフタ２１９及び第２のシフタ２２１でのシフトにおいてアンダーフローする桁は切り捨て、値の無い上位の桁は０とする。又第５のフリップフロップ回路２３５に保持された指数は、ｆの値によらず１個であり、ｆが大きい値になっても累積加算器の回路規模が変化することはない。即ち、指数を保持するためにフリップフロップ回路をｆ個用意する必要が無い。
【００３２】
次に、本発明の第一の実施の形態に係る累積加算回路の動作について説明する。図２及び図４に示すタイミングチャートを参照して、
Ｓ（ｂ，ｉ１）＝Ｄ（ｂ，１）＋Ｄ（ｂ，２）＋．．．＋Ｄ（ｂ，ｉ１）
の演算動作の過程を説明する。始めに、第５のフリップフロップ回路２３５が示す指数の値だけＬＳＢ方向にビットシフトさせることを考慮して指数の値の初期値を設定する。ｋ＜ｍの場合は指数の初期値は０で、第１のシフタ２１９の出力はｋビット（≦ｍ−１）である。ｋ≧ｍの場合は指数の初期値はｋ−ｍ＋１で、第１のシフタ２１９の出力はｍ−１ビットである。従ってｋの値に依らず第１のシフタ２１９の出力は最大（ｍ−１）ビットとなる。
【００３３】
入力データ２０５がＤ（ｂ，ｉ１）の時、第１のクロック信号２６１の立ち上がりによりＤ（ｂ，ｉ１）が第１のフリップフロップ回路２１５に取り込まれる。このとき、第１のシフタ２１９において、第５のフリップフロップ回路２３５に保持された指数ｆ５（ｉ１−１）だけ第１の出力データ２３７がＬＳＢ方向にビットシフトされる。又、同じく第１のクロック信号２６１の立ち上がりによりＲＡＭ２２５から同じ添字ｂでｉ＝ｉ１−１番までの累積加算値Ｓ（ｂ，ｉ１−１）が第２のフリップフロップ回路２１７に読み込まれる。このとき、第２のシフタ２２１において、第４のフリップフロップ回路２３１に保持されたｆ４（ｉ１−１）の値だけＬＳＢ方向にビットシフトされる。但し、ｉ＝ｉ１の時は第２のフリップフロップ回路２１７及び第４のフリップフロップ回路２３１の値は０を示し、ＬＳＢ方向にビットシフトした結果も０を示す。第１のシフタ２１９及び第２のシフタ２２１の出力を第１の加算器２２３にて加算し、その結果Ｓ（ｂ，ｉ１）は、新たな累積加算データとしてＲＡＭ２２５に書き込まれる。
【００３４】
第３のフリップフロップ回路２２９の初期値は０に設定されており、リセット信号２６５によりｉが変化する毎に０になる。ｉ＝ｉ１になってからｉ１＋１になるまでは第３のフリップフロップ回路２２９が保持する値と、第１の加算器２２３の加算結果のＭＳＢの論理和を論理和演算回路２２７で求める。この処理によりＭＳＢが１回以上１になると、第３のフリップフロップ回路２２９の値は１になる。第４のフリップフロップ回路２３１は、第２のクロック信号２６３の立ち上がりで第３のフリップフロップ回路２２９の値を取り込む。ｉ＝ｉ１になってからｉ１＋１になるまでにＭＳＢが１回以上１になると、第４のフリップフロップ回路２３１の値は１になり、全て０の場合は０になる。第４のフリップフロップ回路２３１の値ｆ４（ｉ１）はｉ＝ｉ１＋１の時に第２のシフタ２２１のシフト量となる。第５のフリップフロップ回路２３５は、第２のクロック信号２６３の立ち上がりで保持している値と、第３のフリップフロップ回路２２９の出力との加算値を取り込む。第５のフリップフロップ回路２３５の値ｆ５（ｉ１）は、Ｓ（ｂ，ｉ１）に対する指数であり、ｉ＝ｉ１＋１に変化した時の第１のシフタ２１９におけるシフト量となる。
【００３５】
更に図４を参照して、ｉ＝ｉ１＋１の時の処理について説明する。ｆ４（ｉ１）が０の場合、第２のシフタ２２１のシフト量は０でシフトされない。この場合ｆ５（ｉ１）＝ｆ５（ｉ１−１）であり、ｉ＝ｉ１＋１の時の第１のシフタ２１９におけるシフト量はｉ＝ｉ１の時から変化しないので第１のシフタ２１９及び第２のシフタ２２１の出力の指数は一致する。又、ＲＡＭ２２５から読み込む累積加算データのＭＳＢは全て０なので第２のシフタ２２１の出力はｍ−１ビットでよい。ｆ４（ｉ１）が１の場合は第２のシフタ２２１のシフト量は１となる。この場合はｆ５（ｉ１）＝ｆ５（ｉ１−１）＋１であり、ｉ＝ｉ１＋１の時の第１のシフタ２１９のシフト量はｉ＝ｉ１の時から１増加する。従って、第１のシフタ２１９及び第２のシフタ２２１の出力の指数は一致する。又、第２のシフタ２２１でＬＳＢ方向に１ビットシフトする為の第２のシフタ２２１の出力はｍ−１ビットでよい。以上から第２のシフタ２２１の出力はｍ−１ビットとなる。本章の最初に述べたように第１のシフタ２１９の出力もｍ−１ビットなので第１の加算器２２３の出力はｍビットでオーバーフローすることはない。
【００３６】
ｆ４（ｉ１）が０の場合はｉ＝ｉ１＋１の時にシフト量をインクリメントしなくても第１の加算器２２３の加算結果はオーバーフローしないので、シフト量を増やさないでＲＡＭ２２５に加算結果である累積加算データを保持できる。シフト量を増やさない分ＲＡＭ２２５に精度のよい累積加算データを保持することができる。ｆ４（ｉ１）が１の場合は、ｉ＝ｉ１＋１の時にシフト量をインクリメントしないと第１の加算器２２３の出力がオーバーフローする可能性があるためビットシフトする。
【００３７】
以上により入力データとＲＡＭから読み込んだ累積加算データから値の指数を合わせ、オーバーフローを防ぎながら切り捨てるデータ（情報）を減少させた累積加算を行うことができる。尚、ＲＡＭに保持された累積加算データは指数の分だけ右シフトされているが、シフトされていない値が必要な場合はフリップフロップ回路に保持されている指数の値だけ左シフトすればよい。
【００３８】
次に、本発明の第二の実施の形態に係る累積加算回路について説明する。図５に累積加算回路の構成を示す。図５を参照して、本構成は累積加算データの格納の為にＲＡＭを使用せず、第２のフリップフロップ回路５１７で現累積加算データ５０７を保持する。本図ではｆ＝１の例を挙げているが、累積加算データを保持する為のフリップフロップ回路を複数設けて随時切り替えることによりｆ＞１の場合にも適用できる。本第二の実施の形態における利点はＬＳＩの外部にＲＡＭが不要となり、使用するＬＳＩの個数を減らすことができる点である。ｆが大きくなると累積加算データを保持する為のフリップフロップ回路が多くなる為本実施の形態はｆが比較的小さい場合に有用である。
【００３９】
更に、本発明の第三の実施の形態に係る累積加算回路について説明する。図６に累積加算回路の構成を示す。図６を参照して、本構成は図２に示した第一の実施の形態における構成に加え、論理積演算回路６２８を論理和演算回路６２７の前に挿入している。これはｋ＜ｍの場合に適用が可能で切り捨てる情報を第１の実施の形態より減らすことができる。但し、ｋ＝ｍ−１の場合には第１の実施の形態と等価である。本実施の形態では現累積加算データ６０７のＭＳＢの１ビットだけでなく、上位ｋ−ｍビットを参照することにより次回加算時にオーバーフローを起こす条件をより限定している。
【００４０】
【発明の効果】
本発明の累積加算回路により、オーバーフローを起こす可能性のない時に切り捨てる桁を減少させて、ＲＡＭを有効に用いることにより精度の低下を減少させた累積加算を行うことができる。又本発明の累積加算回路は累積加算すべき入力データの数に依存せず、その回路規模は不変である。
【００４１】
例として、８ビットの入力データ（ｋ＝８）を各々１０００個（ａ＝１０００）加算して１６ビットの累積加算値（ｍ＝１６）をＲＡＭに保持して累積加算値を得る場合、第１の従来の技術において示した累積加算回路では全ての入力データに対して下位２ビットを切り捨てて６ビットにしなければオーバーフローを防ぐことができないが、本発明の累積加算回路は累積加算値のＭＳＢの一つが１になるまで切り捨てを行うことなく累積加算を行うことができる。最も早く切り捨てを行う必要が生じる場合、即ち図３に示した特定のｂにおける入力データが常に最大値を取る場合においても最初の１２９個（ｉ≦１２９）の累積加算では切り捨てを行う必要はない。特定のｂにおける入力データが常に最大値もしくは最大値に近い値をとる、ということがなければ切り捨てを行う必要が生じるのはより後になり、より精度の低下を抑えることができる。特に第３の実施の形態に係る累積加算回路を用いた場合、最も早く切り捨てを行う必要が生じる場合でも２５７個の累積加算までは切り捨てを行う必要がなく、本実施の形態はｍ−ｋが大きい場合には特に有効である。
【図面の簡単な説明】
【図１】図１は本発明の実施の形態を説明する為のブロック図である。
【図２】図２は本発明の第一の実施の形態を説明する為の構成図である。
【図３】図３は図２に示した構成の処理を説明する為の入力データのタイミングチャートである。
【図４】図４は図３においてｉがインクリメントする時の図２に示す構成のタイミングチャートである。
【図５】図５は本発明の第二の実施の形態を説明する為の構成図である。
【図６】図６は本発明の第三の実施の形態を説明する為の構成図である。
【図７】図７は第一の従来の技術を説明する為の構成図である。
【図８】図８は第二の従来の技術を説明する為の構成図である
【符号の説明】
１０１：  累積加算部
１０３：  シフトビットサーチ部
１０５：  入力データ
１０７：  現累積加算データ
１０９：  現累積加算データの一部のデータ
１１１：  第１のビットシフト制御信号
１１３：  第２のビットシフト制御信号
２０１：  累積加算部
２０３：  シフトビットサーチ部
２０５：  入力データ
２０７：  現累積加算データ
２０９：  現累積加算データのＭＳＢデータ
２１１：  第１のビットシフト制御信号
２１３：  第２のビットシフト制御信号
２１５：  第１のフリップフロップ回路
２１７：  第２のフリップフロップ回路
２１９：  第１のシフタ
２２１：  第２のシフタ
２２３：  第１の加算器
２２５：  ＲＡＭ
２２７：  論理和演算回路
２２９：  第３のフリップフロップ回路
２３１：  第４のフリップフロップ回路
２３３：  第２の加算器
２３５：  第５のフリップフロップ回路
２３７：  第１の出力データ
２３９：  第２の出力データ
２４１：  第１のシフト出力データ
２４３：  第２のシフト出力データ
２４５：  論理和出力データ
２４７：  第３の出力データ
２４９：  シフトビットデータ
２５１：  データ保持手段
２５３：  データシフト手段
２５５：  データ加算手段
２５７：  データサーチ手段
２５９：  制御データ発生手段
２６１：  第１のクロック信号
２６３：  第２のクロック信号
２６５：  リセット信号
５０１：  累積加算部
５０３：  シフトビットサーチ部
５０５：  入力データ
５０７：  現累積加算データ
５０９：  現累積加算データのＭＳＢデータ
５１１：  第１のビットシフト制御信号
５１３：  第２のビットシフト制御信号
５１５：  第１のフリップフロップ回路
５１７：  第２のフリップフロップ回路
５１９：  第１のシフタ
５２１：  第２のシフタ
５２３：  第１の加算器
５２７：  論理和演算回路
５２９：  第３のフリップフロップ回路
５３１：  第４のフリップフロップ回路
５３３：  第２の加算器
５３５：  第５のフリップフロップ回路
５３７：  第１の出力データ
５３９：  第２の出力データ
５４１：  第１のシフト出力データ
５４３：  第２のシフト出力データ
５４５：  論理和出力データ
５４７：  第３の出力データ
５４９：  シフトビットデータ
５５１：  データ保持手段
５５３：  データシフト手段
５５５：  データ加算手段
５５７：  データサーチ手段
５５９：  制御データ発生手段
５６１：  第１のクロック信号
５６３：  第２のクロック信号
５６５：  リセット信号
６０１：  累積加算部
６０３：  シフトビットサーチ部
６０５：  入力データ
６０７：  現累積加算データ
６０９：  現累積加算データの上位（ｍ−ｋ）ビットデータ
６１１：  第１のビットシフト制御信号
６１３：  第２のビットシフト制御信号
６１５：  第１のフリップフロップ回路
６１７：  第２のフリップフロップ回路
６１９：  第１のシフタ
６２１：  第２のシフタ
６２３：  第１の加算器
６２５：  ＲＡＭ
６２７：  論理和演算回路
６２８：  論理積演算回路
６２９：  第３のフリップフロップ回路
６３１：  第４のフリップフロップ回路
６３３：  第２の加算器
６３５：  第５のフリップフロップ回路
６３７：  第１の出力データ
６３９：  第２の出力データ
６４１：  第１のシフト出力データ
６４３：  第２のシフト出力データ
６４５：  論理和出力データ
６４６：  論理積出力データ
６４７：  第３の出力データ
６４９：  シフトビットデータ
６５１：  データ保持手段
６５３：  データシフト手段
６５５：  データ加算手段
６５７：  データサーチ手段
６５９：  制御データ発生手段
６６１：  第１のクロック信号
６６３：  第２のクロック信号
６６５：  リセット信号
７０１：  シフタ
７０３：  加算器
７０５：  ＲＡＭ
８０１：  第１の加算器
８０３：  第２の加算器
８０５：  第３の加算器
８０７：  マルチプレクサ
８０９：  レジスタ
８１１：  バレルシフタ
８１２：  第１の入力端子
８１３：  第２の入力端子
８１４：  第３の入力端子
８１５：  出力端子
８１６：  桁移動情報データ
８１７：  累積加算回路
８１８：  データ変換器
【図１】
0003595449.tif 000002
【図２】
0003595449.tif 000003
【図３】
0003595449.tif 000004
【図４】
0003595449.tif 000005
【図５】
0003595449.tif 000006
【図６】
0003595449.tif 000007
【図７】
0003595449.tif 000008
【図８】
0003595449.tif 000009