(57)【要約】  乗算器は、ＣＳＤ形式の選択された定数を入力データ値に乗算することができる。選択された定数は、複数のビット対を具え、乗算器は、選択された定数のビット対の各々によって制御されるマルチプレクサを有する。マルチプレクサの各々は、複数の入力部を有し、入力データ値、入力データ値の逆及び全て零を入力部で受信するように接続され、選択された定数のビット対の各々の値に応じて、入力データ値、入力データ値の逆及び全て零を出力するように制御される。可変シフトブロックは、各々がマルチプレクサの各々からの入力を受信するように接続され、選択された定数のビット対の各々に応じて、受信した入力を第１のビットシフト値又は第２のビットシフト値だけシフトするように適合され、第１のビットシフト値と前記第２のビットシフト値が１だけ異なる。乗算器は、複数の可変シフトブロックからの出力を受信し、複数の可変シフトブロックからの出力を結合し、他のビットシフトを発生して、選択された定数を入力データ値に乗算した結果に等しい出力値を形成する結合回路を更に具える。
2008535077.tif 000002
【特許請求の範囲】
【請求項１】
ＣＳＤ形式の選択された定数を入力データ値に乗算する乗算器であって、前記選択された定数が、複数のビット対を具え、
各々が前記選択された定数のビット対の各々によって制御され、各々が複数の入力部を有し、前記入力データ値、前記入力データ値の逆及び全て零を前記入力部で受信するように接続され、前記選択された定数のビット対の各々の値に応じて、前記入力データ値、前記入力データ値の逆及び全て零を出力するように制御される複数のマルチプレクサと、
各々が前記マルチプレクサの各々からの入力を受信するように接続され、前記選択された定数のビット対の各々に応じて、受信した入力を第１のビットシフト値又は第２のビットシフト値だけシフトするように適合され、前記第１のビットシフト値と前記第２のビットシフト値が１だけ異なる複数の可変シフトブロックと、
前記複数の可変シフトブロックからの出力を受信し、前記複数の可変シフトブロックからの出力を結合し、他のビットシフトを発生して、前記選択された定数を前記入力データ値に乗算した結果に等しい出力値を形成する結合回路とを具える乗算器。
【請求項２】
請求項１記載の乗算器において、前記結合回路が、前記複数の可変シフトブロックの二つからの出力を受信するように接続された加算器と、前記加算器からの出力を入力として受信するとともに受信した入力を固定されたビットシフト値だけシフトするように適合した固定シフトブロックとを具えることを特徴とする乗算器。
【請求項３】
請求項１又は２記載の乗算器において、前記選択された定数のビット対の各々に対して一つのマルチプレクサを具えることを特徴とする乗算器。
【請求項４】
請求項１記載の乗算器において、前記選択された定数のビット対の各々によって制御される少なくとも一つのマルチプレクサを更に具え、前記マルチプレクサが、少なくとも一つの入力部を有し、前記入力データ値、前記入力データ値の逆及び全て零の一つ以上を前記少なくとも一つの入力部で受信するように接続され、前記選択された定数のビット対の各々の値に応じて、前記入力データ値、前記入力データ値の逆及び全て零を出力するように制御されることを特徴とする乗算器。
【請求項５】
請求項１又は４記載の乗算器において、前記マルチプレクサの各々からの入力を受信するように接続されるとともに受信した入力を固定ビットシフト値の各々によってシフトするように適合された少なくとも一つの他の固定シフトブロックを更に具えることを特徴とする乗算器。
【請求項６】
請求項１から５のうちのいずれか１項に記載の乗算器において、前記可変シフトブロックの少なくとも一つが、切り捨てなく入力を１ビット位置以上左にシフトする左シフタを具えることを特徴とする乗算器。
【請求項７】
請求項２から６のうちのいずれか１項に記載の乗算器において、前記固定シフトブロックが、切り捨てなく入力を１ビット位置以上左にシフトする左シフタを具えることを特徴とする乗算器。
【請求項８】
ＣＳＤ形式の選択された定数を入力データ値に乗算する方法であって、
前記選択された定数を複数のビット対に分割し、
複数のマルチプレクサの各々を、前記選択された定数の前記ビット対の各々のビット値に基づいて制御し、
前記選択された定数のビット対の各々のビット値に応じて、前記入力データ値、前記入力データ値の逆又は全て零を前記複数のマルチプレクサの各々から出力し、
前記複数のマルチプレクサからの出力を可変シフトブロックの各々に供給し、
前記選択された定数のビット対の各々のビット値に基づいて前記可変シフトブロックの各々を制御して、前記可変シフトブロックが、受信した入力を第１のビットシフト値又は第２のビットシフト値だけそれぞれシフトし、前記第１のビットシフト値と前記第２のビットシフト値とが１だけ異なり、
前記複数のシフトブロックからの出力を結合し、他のビットシフトを発生して、前記選択された定数を前記入力データ値に乗算した結果に等しい出力値を形成する方法。
【請求項９】
請求項８記載の方法において、前記結合するステップが、前記複数の可変シフトブロックの二つからの出力を加算するとともに固定ビットシフトを前記加算の結果に適用するステップを有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乗算器に関し、特に、複数の定数を入力データに乗算する乗算器に関する。
【背景技術】
【０００２】
多くのデジタル信号処理アプリケーションにおいて、複数の定数を入力データに乗算する必要がある。例えば、有限インパルス応答（ＦＩＲ）フィルタ又は高速フーリエ変換（ＦＦＴ）プロセッサの場合、一定の係数を入力データに乗算する必要がある。ＦＩＲフィルタ及びＦＦＴプロセッサは、多くのデジタル信号処理アプリケーション、例えば、無線通信アプリケーションで用いられる。
【０００３】
乗算を行うためには演算負荷が増大するので、カノニカル形式で署名された数字の（canonical signed digit:ＣＳＤ）乗算器により係数を表すことによって必要な計算を行うことが知られている。これによって、一連のシフト演算及び加算演算によって必要な乗算を行うことができる。ｂ０ｂ１ｂ２．．．ｂＮ−１の形式、すなわち、ｂｉ（ｉ＝０，１，２，．．，Ｎ−１）である場合のＣＳＤ形式の番号は、０，＋１，−１の値の一つをとり、ｂｉは、二つ続けて零でない値とならない。
【０００４】
文献“Implementation of Orthogonal Frequency Division Multiplexing Modem Using Radix-N Pipeline Fast Fourier Transform (FFT) Processor”, Oh, et al, Jpn. J. Appl. Phys. Vol. 42 (2003) pp.1-6は、ＣＳＤ符号化乗算器を実現するハードウェア構造を開示する。入力信号は、右シフト素子のセットを通じて並列にスイッチングネットワークに供給される。スイッチングネットワークは、必要な乗算係数に基づいて、右シフトされた入力を出力マルチプレクサのセットに供給するよう動作する。出力マルチプレクサは、処理されたデータを順次出力できるよう選択信号によって制御される。
【０００５】
この構造は、必要な乗算係数の数が増大すると複雑になる。特に、スイッチングネットワークの設計は、必要な乗算係数の数が増大すると複雑になり、同時に、出力マルチプレクサの各々のサイズも、必要な乗算係数の数が増大すると増大する。
【０００６】
この構造は、出力値が累積される前に低次のビットが破棄されるために構造が比較的大きな切捨て誤差を有するという不都合がある。
【発明の開示】
【０００７】
本発明によれば、ＣＳＤ形式の選択された定数を入力データ値に乗算する乗算器であって、前記選択された定数が、複数のビット対を具え、
各々が前記選択された定数のビット対の各々によって制御され、各々が複数の入力部を有し、前記入力データ値、前記入力データ値の逆及び全て零を前記入力部で受信するように接続され、前記選択された定数のビット対の各々の値に応じて、前記入力データ値、前記入力データ値の逆及び全て零を出力するように制御される複数のマルチプレクサと、
各々が前記マルチプレクサの各々からの入力を受信するように接続され、前記選択された定数のビット対の各々に応じて、受信した入力を第１のビットシフト値又は第２のビットシフト値だけシフトするように適合され、前記第１のビットシフト値と前記第２のビットシフト値が１だけ異なる複数の可変シフトブロックと、
前記複数の可変シフトブロックからの出力を受信し、前記複数の可変シフトブロックからの出力を結合し、他のビットシフトを発生して、前記選択された定数を前記入力データ値に乗算した結果に等しい出力値を形成する結合回路とを具える乗算器を提供する。
【０００８】
これは、許容される切捨て誤差のレベルでＣＤＳ符号化乗算器をハードウェア内で有効に実現することができる利点を有する。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明による乗算器１０の一般形態を示す。周知のように、カノニカル形式で署名された数字（ＣＳＤ）の乗算器の機能は、一連の入力データ値に一つ以上の予め決定された定数を乗算することであり、この場合、入力データ値は２値形式であり、定数はＣＳＤ形式である。すなわち、入力データ値は、ｄ０ｄ１ｄ２．．．ｄＭ−１の形式、すなわち、ｄｉ（ｉ＝０，１，２，．．，Ｍ−１）であり、０又は＋１の値のうちの一方をとり、それに対して、定数は、ｂ０ｂ１ｂ２．．．ｂＮ−１の形式、すなわち、ｂｉ（ｉ＝０，１，２，．．．，Ｎ−１）であり、０，＋１，−１の値の一つをとり、ｂｉは、二つ続けて零でない値とならない。
【００１０】
したがって、ＣＳＤ乗算器は、入力データ値を受信し、予め決定された定数のうちの選択したものを入力データ値に乗算し、結果を出力値として生じる必要がある。
【００１１】
乗算の結果は、従来と同様にｄ０ｄ１ｄ２．．．ｄＭ−１ｘｂ０ｂ１ｂ２．．．ｂＮ−１となり、乗算器１０は、この結果を適切な加算及びシフト演算によって計算する。
【００１２】
図１において、入力データ値は、データ線１２上で受信される。入力データ値がｍビット値である場合、データ線１２はｍビット線となる。データ線１２上で受信した入力データ値は、ｎ個のマルチプレクサ１４０，１４１，．．．，１４ｎ−１の各々の第１の入力部の各々に供給される。
【００１３】
第２の入力線１６は、ｍ個の零値を搬送し、これらｍ個の零値は、ｎ個のマルチプレクサ１４０，１４１，．．．，１４ｎ−１の第２の入力部の各々に供給される。
【００１４】
データ線１２で受信した入力データ値は、インバータ１８にも供給され、入力データ値の二つの補数を形成し、入力データ値の結果的に得られる二つの補数の形態が、インバース線２０を通じてマルチプレクサ１４０，１４１，．．．，１４ｎ−１の第３の入力部の各々に供給される。
【００１５】
マルチプレクサ１４０，１４１，．．．，１４ｎ−１は、第１の制御線２２の制御信号によって制御される。既に説明したように、ｎ個のマルチプレクサ１４０，１４１，．．．，１４ｎ−１が存在し、これは、ＣＳＤ形式の定数がそれぞれ２ｎビットを有する場合である。すなわち、定数は、ｂ０ｂ１ｂ２．．．ｂ２Ｎ−２ｂ２Ｎ−１の形式、すなわち、ｂｉ（ｉ＝０，１，２，．．．，Ｎ−１）であり、０，＋１，−１の値の一つをとり、ｂｉは、二つ続けて零でない値とならない。
【００１６】
したがって、第１のマルチプレクサ１４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２のマルチプレクサ１４１は、この瞬時に用いられる定数の第３及び第４のビットｂ２ｂ３によって制御され、等々。その間、最後のマルチプレクサ１４ｎ−１は、この瞬時に用いられる定数の最後から２番目及び最後のビットｂ２ｎ−２ｂ２ｎ−１によって制御される。
【００１７】
この瞬時に用いられる定数において、零でないビットが二つ連続しないと考えることができる。その理由は、これがＣＳＤ形式の状態だからである。したがって、一例として第１のマルチプレクサ１４０をとると、この組合せは、ＣＳＤ表示のあり得る五つの値、すなわち、００，０１，１０，−１０及び０−１を有する。
【００１８】
ｂ０ｂ１が００に等しい場合、第１のマルチプレクサ１４０が第２入力部の値を出力部に送り出す、すなわち、全て零を送り出すように、第１のマルチプレクサ１４０が制御される。ｂ０ｂ１が０１又は１０に等しい場合、第１のマルチプレクサ１４０が第１入力部の値を出力部に送り出す、すなわち、入力データ値を出力部に送り出すように、第１のマルチプレクサ１４０が制御される。ｂ０ｂ１が０−１又は−１０に等しい場合、第１のマルチプレクサ１４０が第３入力部の値を出力部に送り出す、すなわち、入力データ値の二つの補数の形態を出力部に送り出すように、第１のマルチプレクサ１４０が制御される。
【００１９】
他のマルチプレクサは、この瞬時に用いられる定数からの各ビット対により対応する方法で制御される。
【００２０】
マルチプレクサ１４０，１４１，．．．，１４ｎ−１からの出力は、各可変シフトブロック２４０，２４１，．．．，２４ｎ−１に送り出され、各可変シフトブロック２４０，２４１，．．．，２４ｎ−１は、第２制御線２６の制御信号によって制御される。
【００２１】
特に、第１の可変シフトブロック２４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２の可変シフトブロック２４１は、この瞬時に用いられる定数の第３及び第４のビットｂ２ｂ３によって制御され、等々。その間、最後の可変シフトブロック２４ｎ−１は、この瞬時に用いられる定数の最後から２番目及び最後のビットｂ２ｎ−２ｂ２ｎ−１によって制御される。
【００２２】
可変シフトブロック２４０，２４１，．．．，２４ｎ−１を、右シフタ、左シフタ、又は右シフタと左シフタの組合せとすることができる。いずれにせよ、可変シフトブロック２４０，２４１，．．．，２４ｎ−１の各々の入力は、  マルチプレクサ１４０，１４１，．．．，１４ｎ−１の各々からの出力となる。各ケースにおいて、可変シフトブロックの出力が入力データ値と定数の適切なビット対との乗算の結果に比例するのが望ましい。
【００２３】
この出力の符号は、マルチプレクサの制御によって決定され、同時に、出力の大きさは、可変シフトブロック２４によって供給されるシフトの制御によって決定される。可変シフトブロック２４０，２４１，．．．，２４ｎ−１の各々がＳ０，Ｓ１，．．．，Ｓｎ−１のシフト値のそれぞれを発生するように、可変シフトブロック２４０，２４１，．．．，２４ｎ−１の各々が制御され、これらシフト値の各々が、定数の適切なビット対の零でないビットが上位ビットであるか下位ビットであるかに応じて、１だけ異なる第１又は第２の値をとることができる。
【００２４】
したがって、可変シフトブロック２４０を考察すると、これは、ビット対ｂ０ｂ１の値に基づいて入力データをシフトする。上位ビットｂ０が零でない場合、上位ビットｂ０は、右シフトせずにそのまま入力部に送り出される。下位ビットｂ１が零でない場合、下位ビットｂ１は、１ビット位置だけ右シフトする。ｂ０及びｂ１がいずれも零である場合、シフタが１ビット位置だけ右シフトするかそのまま入力部に送り出すかは重要でない。その理由は、既に説明したように、入力が全て零から構成されるからである。
【００２５】
ここで説明したように上位ビットｂ０が零でない場合に可変シフトブロック２４０が右シフトを行わないとともに下位ビットｂ１が零でない場合に可変シフトブロック２４０が１ビット位置だけ右シフトを行うとしても、重要なのは、あり得る二つのシフト値の絶対値ではなくこれらシフト値の相対的なサイズである。したがって、例えば、上位ビットｂ０が零でない場合に可変シフトブロック２４０が２ビット位置だけ右シフトを行うとともに下位ビットｂ１が零でない場合に可変シフトブロック２４０が３ビット位置だけ右シフトを行うことができる。また、上位ビットｂ０が零でない場合に可変シフトブロック２４０が３ビット位置だけ左シフトを行うとともに下位ビットｂ１が零でない場合に可変シフトブロック２４０が２ビット位置だけ左シフトを行うこともできる。いずれも場合でも、上位ビットｂ０が零でない場合のビットシフトは、下位ビットｂ１が零でない場合のビットシフトに対して左に１ビット多く（又は右に１ビット少なく）なる。
【００２６】
同じことは、他の可変シフトブロック２４１，．．．，２４ｎ−１にも当てはまる。
【００２７】
可変シフトブロック２４０，２４１，．．．，２４ｎ−１の出力は、結合回路２８に送り出され、結合回路２８は、これら出力を結合して出力線３０に送出する。結合回路２８の機能は、正確な最終結果が得られるよう適切な他のビットシフトを行う間に可変シフトブロック２４０，２４１，．．．，２４ｎ−１の出力を互いに加えることである。
【００２８】
可変シフトブロック２４０は、定数の二つの上位ビットを入力データに乗算した結果を発生し、可変シフトブロック２４０は、定数の最初の二つの上位ビットを入力データに乗算した結果を発生し、可変シフトブロック２４１は、定数の次の二つの上位ビットを入力データに乗算した結果を発生し、等々。同時に、可変シフトブロック２４ｎ−１は、定数の二つの下位ビットを入力データに乗算した結果を発生する。したがって、可変シフトブロック２４０の出力が、可変シフトブロック２４ｎ−１の出力に対して全体に更に２（ｎ−２）ビット多く左に（又は全体で更に２（ｎ−１）ビット少なく右に）シフトされるまで、可変シフトブロック２４０の出力を、可変シフトブロック２４１の出力に対して全体で更に２ビット多く左に（又は全体で更に２ビット少なく右に）シフトする必要がある、等々。
【００２９】
これを、可変シフトブロック２４０，２４１，．．．，２４ｎ−１に対するあり得る種々のシフト値を設定し、種々のシフト値を可変シフトブロックの出力に適用し、又はこれら二つの要素を組み合わせることによって達成することができる。
【００３０】
その結果、比較的少ないハードウェアを用いるとともに要求される結果を生成するために要望に応じて制御することができる乗算器となる。
【００３１】
図２は、データに８ビットの定数を乗算する、本発明による乗算器の一般形態を示すとともに結合回路の操作方法を示すブロック線形図である。
【００３２】
図２において、乗算器２１０への入力データ値は、データ線２１２で受信される。定数は、８ビットの各々であり、その結果、データ線２１２で受信した入力値が、四つのマルチプレクサ２１４０，２１４１，．．．，２１４３の各々の各入力部に供給される。
【００３３】
第２の入力線２１６は、全ての零を搬送し、これらの零は、マルチプレクサ２１４０，２１４１，．．．，２１４３の第２の入力部にそれぞれ供給される。データ線２１２で受信した入力データ値は、インバータ２１８にも供給され、入力データ値の二つの補数を形成し、入力データ値の結果的に得られる二つの補数形態は、インバース線２２０を通じてマルチプレクサ２１４０，２１４１，．．．，２１４３の第３の入力部にそれぞれ供給される。
【００３４】
マルチプレクサ２１４０，２１４１，．．．，２１４３は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。したがって、第１のマルチプレクサ２１４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２のマルチプレクサ２１４１は、この瞬時に用いられる定数の第３及び第４の２ビットｂ２ｂ３によって制御され、第３のマルチプレクサ２１４２は、この瞬時に用いられる定数の第５及び第６の２ビットｂ４ｂ５によって制御され、第４のマルチプレクサ２１４３は、この瞬時に用いられる定数の第７及び第８の２ビットｂ６ｂ７によって制御される。
【００３５】
ｂ０ｂ１が００に等しい場合、第１のマルチプレクサ２１４０が第２入力部の値を出力部に送り出す、すなわち、全て零を送り出すように、第１のマルチプレクサ２１４０が制御される。ｂ０ｂ１が０１又は１０に等しい場合、第１のマルチプレクサ２１４０が第１入力部の値を出力部に送り出す、すなわち、入力データ値を出力部に送り出すように、第１のマルチプレクサ２１４０が制御される。ｂ０ｂ１が０−１又は−１０に等しい場合、第１のマルチプレクサ２１４０が第３入力部の値を出力部に送り出す、すなわち、入力データ値の二つの補数の形態を出力部に送り出すように、第１のマルチプレクサ２１４０が制御される。
【００３６】
他のマルチプレクサは、この瞬時に用いられる定数からの各ビット対により対応する方法で制御される。
【００３７】
マルチプレクサ２１４０，２１４１，．．．，２１４３からの出力は、各可変シフトブロック２２４０，２２４１，．．．，２２４３に送り出され、各可変シフトブロック２２４０，２２４１，．．．，２２４３は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。
【００３８】
特に、第１の可変シフトブロック２２４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２の可変シフトブロック２２４１は、この瞬時に用いられる定数の第３及び第４のビットｂ２ｂ３によって制御され、等々。
【００３９】
既に説明したように、可変シフトブロック２２４０，２２４１，．．．，２２４３を、右シフタ、左シフタ、又は右シフタと左シフタの組合せとすることができる。
【００４０】
第１及び第２の可変シフトブロック２２４０及び２２４１の出力は、第１の加算器２３２に送り出され、それに対して、第３及び第４の可変シフトブロック２２４２及び２２４３の出力は、第２の加算器２３４に送り出される。
【００４１】
第１の加算器２３２の出力は、第１の固定シフトブロック２３６に送り出され、第１の固定シフト値を発生する。第２の加算器２３４の出力は、第２の固定シフトブロック２３８に送り出され、第２の固定シフト値を発生する。第１の固定シフトブロック２３６及び第２の固定シフトブロック２３８の出力は、第３の加算器２４０に送り出され、第３の加算器２４０の出力は、データ出力として出力線２４２に供給される。
【００４２】
第１の可変シフトブロック２２４０の出力が第２の可変シフトブロック２２４１の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）し、第２の可変シフトブロック２２４１の出力が第３の可変シフトブロック２２４２の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）し、第３の可変シフトブロック２２４２の出力が第４の可変シフトブロック２２４３の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）するように、四つの可変シフトブロック２２４０，２２４１，．．．，２２４３及び二つの固定シフトブロック２３６，２３８によって供給されるシフト値が設定される。
【００４３】
図３は、データに１２ビットの定数を乗算する、本発明による乗算器の一般形態を示すとともに結合回路の操作方法を示すブロック線形図である。
【００４４】
図３において、乗算器３１０への入力データ値は、データ線３１２で受信される。定数は、１２ビットの各々であり、その結果、データ線３１２で受信した入力値が、六つのマルチプレクサ３１４０，３１４１，．．．，３１４５の各々の各入力部に供給される。
【００４５】
第２の入力線３１６は、全ての零を搬送し、これらの零は、マルチプレクサ３１４０，３１４１，．．．，３１４５の第２の入力部にそれぞれ供給される。データ線３１２で受信した入力データ値は、インバータ３１８にも供給され、入力データ値の二つの補数を形成し、入力データ値の結果的に得られる二つの補数形態は、インバース線３２０を通じてマルチプレクサ３１４０，３１４１，．．．，３１４３の第３の入力部にそれぞれ供給される。
【００４６】
マルチプレクサ３１４０，３１４１，．．．，３１４３は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。したがって、第１のマルチプレクサ３１４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２のマルチプレクサ３１４１は、この瞬時に用いられる定数の第３及び第４の２ビットｂ２ｂ３によって制御され、第３のマルチプレクサ３１４２は、この瞬時に用いられる定数の第５及び第６の２ビットｂ４ｂ５によって制御され、第４のマルチプレクサ３１４３は、この瞬時に用いられる定数の第７及び第８の２ビットｂ６ｂ７によって制御され、第５のマルチプレクサ３１４４は、この瞬時に用いられる定数の第９及び第１０の２ビットｂ８ｂ９によって制御され、第６のマルチプレクサ３１４５は、この瞬時に用いられる定数の第１１及び第１２の２ビットｂ１０ｂ１１によって制御される。
【００４７】
ｂ０ｂ１が００に等しい場合、第１のマルチプレクサ３１４０が第２入力部の値を出力部に送り出す、すなわち、全て零を送り出すように、第１のマルチプレクサ３１４０が制御される。ｂ０ｂ１が０１又は１０に等しい場合、第１のマルチプレクサ３１４０が第１入力部の値を出力部に送り出す、すなわち、入力データ値を出力部に送り出すように、第１のマルチプレクサ３１４０が制御される。ｂ０ｂ１が０−１又は−１０に等しい場合、第１のマルチプレクサ３１４０が第３入力部の値を出力部に送り出す、すなわち、入力データ値の二つの補数の形態を出力部に送り出すように、第１のマルチプレクサ３１４０が制御される。
【００４８】
他のマルチプレクサは、この瞬時に用いられる定数からの各ビット対により対応する方法で制御される。
【００４９】
マルチプレクサ３１４０，３１４１，．．．，３１４５からの出力は、各可変シフトブロック３２４０，３２４１，．．．，３２４５に送り出され、各可変シフトブロック３２４０，３２４１，．．．，２２４５は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。
【００５０】
特に、第１の可変シフトブロック３２４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２の可変シフトブロック３２４１は、この瞬時に用いられる定数の第３及び第４のビットｂ２ｂ３によって制御され、等々。
【００５１】
既に説明したように、可変シフトブロック３２４０，３２４１，．．．，３２４３を、右シフタ、左シフタ、又は右シフタと左シフタの組合せとすることができる。
【００５２】
第１及び第２の可変シフトブロック３２４０及び３２４１の出力は、第１の加算器３３２に送り出され、それに対して、第３及び第４の可変シフトブロック３２４２及び３２４３の出力は、第２の加算器３３４に送り出され、第５及び第６の可変シフトブロック３２４４及び３２４５の出力は、第３の加算器３３６に送り出される。
【００５３】
第１の加算器３３２の出力は、第１の固定シフトブロック３３８に送り出され、第１の固定シフト値を発生する。第２の加算器３３４の出力は、第２の固定シフトブロック３４０に送り出され、第２の固定シフト値を発生する。第３の固定シフトブロック３３６の出力は、第３の加算器３４２に送り出され、第３の固定シフト値を発生する。
【００５４】
第１の固定シフトブロック３３６及び第２の固定シフトブロック３４０の出力は、第４の加算器３４４に送り出される。第３の固定シフトブロック３４２及び第４の固定シフトブロック３４４の出力は、第５の加算器３４６に送り出され、第５の加算器３４６の出力は、データ出力として出力線３４８に供給される。
【００５５】
第１の可変シフトブロック３２４０の出力が第２の可変シフトブロック３２４１の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）し、第２の可変シフトブロック３２４１の出力が第３の可変シフトブロック３２４２の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）し、第３の可変シフトブロック３２４２の出力が第４の可変シフトブロック３２４３の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）し、第４の可変シフトブロック３２４３の出力が第５の可変シフトブロック３２４４の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）、第５の可変シフトブロック３２４４の出力が第６の可変シフトブロック３２４５の出力に対して全体的に２ビット多く左にシフト（又は２ビット少なく右にシフト）するように、六つの可変シフトブロック２２４０，２２４１，．．．，２２４５及び三つの固定シフトブロック３３８，３４０，３４２によって供給されるシフト値が設定される。
【００５６】
図４は、データに８ビットの定数を乗算する、本発明による乗算器の特別な形態を示すブロック線形図である。
【００５７】
図４において、乗算器４１０への入力データ値は、データ線４１２で受信される。定数は、８ビットの各々であり、その結果、データ線４１２で受信した入力値が、四つのマルチプレクサ４１４０，４１４１，．．．，４１４３の各々の各入力部に供給される。
【００５８】
第２の入力線４１６は、全ての零を搬送し、これらの零は、マルチプレクサ４１４０，４１４１，．．．，４１４３の第２の入力部にそれぞれ供給される。データ線４１２で受信した入力データ値は、インバータ４１８にも供給され、入力データ値の二つの補数を形成し、入力データ値の結果的に得られる二つの補数形態は、インバース線４２０を通じてマルチプレクサ４１４０，４１４１，．．．，４１４３の第３の入力部にそれぞれ供給される。
【００５９】
マルチプレクサ４１４０，４１４１，．．．，４１４３は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。したがって、第１のマルチプレクサ４１４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２のマルチプレクサ４１４１は、この瞬時に用いられる定数の第３及び第４の２ビットｂ２ｂ３によって制御され、第３のマルチプレクサ４１４２は、この瞬時に用いられる定数の第５及び第６の２ビットｂ４ｂ５によって制御され、第４のマルチプレクサ４１４３は、この瞬時に用いられる定数の第７及び第８の２ビットｂ６ｂ７によって制御される。
【００６０】
ｂ０ｂ１が００に等しい場合、第１のマルチプレクサ４１４０が第２入力部の値を出力部に送り出す、すなわち、全て零を送り出すように、第１のマルチプレクサ４１４０が制御される。ｂ０ｂ１が０１又は１０に等しい場合、第１のマルチプレクサ４１４０が第１入力部の値を出力部に送り出す、すなわち、入力データ値を出力部に送り出すように、第１のマルチプレクサ４１４０が制御される。ｂ０ｂ１が０−１又は−１０に等しい場合、第１のマルチプレクサ４１４０が第３入力部の値を出力部に送り出す、すなわち、入力データ値の二つの補数の形態を出力部に送り出すように、第１のマルチプレクサ４１４０が制御される。
【００６１】
他のマルチプレクサは、この瞬時に用いられる定数からの各ビット対により対応する方法で制御される。
【００６２】
マルチプレクサ４１４０，４１４１，．．．，４１４３からの出力は、各可変シフトブロック４２４０，４２４１，．．．，４２４３に送り出され、各可変シフトブロック４２４０，４２４１，．．．，４２４３は、図１を参照して説明したように制御線（図示せず）の制御信号によって制御される。
【００６３】
特に、第１の可変シフトブロック４２４０は、この瞬時に用いられる定数の最初の２ビットｂ０ｂ１によって制御され、第２の可変シフトブロック４２４１は、この瞬時に用いられる定数の第３及び第４のビットｂ２ｂ３によって制御され、等々。
【００６４】
第１の可変シフトブロック２２４０は、シフトを行わなくすることができ又はデータを右に１ビットすることができ、第２の可変シフトブロック２２４１は、データを２ビット又は３ビットだけ右にシフトすることができ、第３の可変シフトブロック２２４２は、シフトを行わなくすることができ又はデータを右に１ビットすることができ、第４の可変シフトブロック２２４３は、データを２ビット又は３ビットだけ右にシフトすることができる。
【００６５】
第１及び第２の可変シフトブロック４２４０及び４２４１の出力は、第１の加算器４３２に送り出され、それに対して、第３及び第４の可変シフトブロック４２４２及び４２４３の出力は、第２の加算器４３４に送り出される。
【００６６】
第１の加算器２３２の出力の固定シフトを零にする。第２の加算器４３４の出力は、固定シフトブロック４３８に送り出され、右に４ビットの固定シフトを行う。第１の加算器及び固定シフトブロック４３８の出力は、第３の加算器４４０に送り出され、第３の加算器４４０の出力は、データ出力として出力線４４２に供給される。
【００６７】
したがって、必要に応じて、第１の可変シフトブロック４２４０の出力は、右に０又は１ビットシフトされ、第２の可変シフトブロック４２４１の出力は、右に２又は３ビットシフトされ、第３の可変シフトブロック４２４２の出力は、（可変シフトブロック４２４２及び固定シフトブロック４３８によって）右に４又は５ビットシフトされ、第４の可変シフトブロック４２４３の出力は、右に６又は７ビットシフトされる。
【００６８】
この構造は、従来の装置より小さい切捨て誤差を有する。しかしながら、本発明によれば、切捨て誤差を更に減少することができる。
【００６９】
図５は、データに８ビットの定数を乗算する、本発明による乗算器の特別な形態を示すブロック線形図である。
【００７０】
図５において、乗算器５１０への入力データ値は、データ線５１２で受信される。データ線５１２で受信した入力データ値は、四つのマルチプレクサ５１４０，５１４１，．．．，５１４３の各々の第１の入力部にそれぞれ供給される。
【００７１】
第２の入力線５１６は、全ての零を搬送し、データ線５１２で受信した入力データ値は、インバータ５１８にも供給され、インバータ出力は、インバース線５２０を通じてマルチプレクサ５１４０，５１４１，．．．，５１４３の各々の第３の入力部にそれぞれ供給される。
【００７２】
マルチプレクサ５１４０，５１４１，．．．，５１４３の動作は、図４のマルチプレクサ４１４０，４１４１，．．．，４１４３の動作と同一であり、ここで再び説明しない。
【００７３】
マルチプレクサ５１４０，５１４１，．．．，５１４３の出力は、可変シフトブロック５２４０，５２４１，．．．，５２４３の各々に送り出され、可変シフトブロック５２４０，５２４１，．．．，５２４３の動作の原理は、図４の可変シフトブロック４２４０，４２４１，．．．，４２４３の動作の原理と同一であり、ここで再び説明しない。
【００７４】
しかしながら、この場合、第１の可変シフトブロック５２４０は、切り捨てなくデータを左に２又は３ビットシフトすることができ、第２の可変シフトブロック５２４１は、切り捨てなくデータを左に１ビットシフトし又はデータのシフトを零にすることができ、第３の可変シフトブロック５２４２は、切り捨てなくデータを右に１又は２ビットシフトすることができ、第４の可変シフトブロック５２４３は、切り捨てなくデータを右に３又は４ビットシフトすることができる。
【００７５】
第１の可変シフトブロック５２４０及び第２の可変シフトブロック５２４１が切り捨てなくデータを左にシフトできることによって、ハードウェアをやや複雑にするだけで装置の精度を上げる。
【００７６】
第１の可変シフトブロック５２４０及び第２の可変シフトブロック５２４１の出力は、第１の加算器５３２に送り出され、それに対して、第３の可変シフトブロック５２４２及び第４の可変シフトブロック５２４３の出力は、第２の加算器５３４に送り出される。
【００７７】
第１の加算器５３２及び第２の加算器５３４の出力の固定シフトを零にする。第１の加算器５３２及び第２の加算器５３４の出力は、第３の加算器５４０に送り出され、第３の加算器５４０の出力は、データ出力として出力線５４２に供給される。
【００７８】
したがって、必要に応じて、第１の可変シフトブロック５２４０の出力は、左に３又は２ビットシフトされ、第２の可変シフトブロック５２４１の出力は、左に１又は０ビットシフトされ、第３の可変シフトブロック５２４２の出力は、右に１又は２ビットシフトされ、第４の可変シフトブロック５２４３の出力は、右に３又は４ビットシフトされる。
【００７９】
図６は、データに８ビットの定数を乗算する、本発明による乗算器の他の特別な形態を示すブロック線形図であり、この場合も、図４に示す実施の形態より切捨て誤差が小さくなる。
【００８０】
図６において、乗算器６１０への入力データ値は、データ線６１２で受信される。データ線６１２で受信した入力データ値は、四つのマルチプレクサ６１４０，６１４１，．．．，６１４３の各々の第１の入力部にそれぞれ供給される。
【００８１】
第２の入力線６１６は、全ての零を搬送し、データ線６１２で受信した入力データ値は、インバータ６１８にも供給され、インバータ出力は、インバース線６２０を通じてマルチプレクサ６１４０，６１４１，．．．，６１４３の各々の第３の入力部にそれぞれ供給される。
【００８２】
マルチプレクサ６１４０，６１４１，．．．，６１４３の動作は、図４のマルチプレクサ４１４０，４１４１，．．．，４１４３の動作と同一であり、ここで再び説明しない。
【００８３】
マルチプレクサ６１４０，６１４１，．．．，６１４３の出力は、可変シフトブロック６２４０，６２４１，．．．，６２４３の各々に送り出され、可変シフトブロック６２４０，６２４１，．．．，６２４３の動作の原理は、図４の可変シフトブロック４２４０，４２４１，．．．，４２４３の動作の原理と同一であり、ここで再び説明しない。
【００８４】
しかしながら、この場合、第１の可変シフトブロック６２４０は、切り捨てなくデータを左に２又は３ビットシフトすることができ、第２の可変シフトブロック６２４１は、切り捨てなくデータを左に１ビットシフトし又はデータのシフトを零にすることができ、第３の可変シフトブロック６２４２は、切り捨てなくデータを左に２又は３ビットシフトすることができ、第４の可変シフトブロック６２４３は、切り捨てなくデータを左に１ビットシフトし又はデータのシフトを零にすることができる。
【００８５】
この場合も、第１〜４の可変シフトブロック６２４０〜６２４３が切り捨てなくデータを左にシフトできることによって、ハードウェアをやや複雑にするだけで装置の精度を上げる。
【００８６】
第１の可変シフトブロック６２４０及び第２の可変シフトブロック６２４１の出力は、第１の加算器６３２に送り出され、それに対して、第３の可変シフトブロック６２４２及び第４の可変シフトブロック６２４３の出力は、第２の加算器６３４に送り出される。
【００８７】
第１の加算器６３２の出力の固定シフトを零にし、それに対して、第２の加算器６３４の出力は、固定シフトブロック６３８に供給され、右に４ビットのシフトを行う。第１の加算器６３２及び固定シフトブロック６３８の出力は、第３の加算器６４０に送り出され、第３の加算器６４０の出力は、データ出力として出力線６４２に供給される。
【００８８】
したがって、必要に応じて、第１の可変シフトブロック６２４０の出力は、左に３又は２ビットシフトされ、第２の可変シフトブロック６２４１の出力は、左に１又は０ビットシフトされ、第３の可変シフトブロック６２４２の出力は、（第３の可変シフトブロック６２４２及び固定シフトブロック６３８の影響を考慮すると）右に１又は２ビットシフトされ、第４の可変シフトブロック６２４３の出力は、（第４の可変シフトブロック６２４３及び固定シフトブロック６３８の影響を考慮すると）右に３又は４ビットシフトされる。
【００８９】
出力のビット精度を向上する必要があるため、ハードウェアをやや複雑にするだけで切捨て誤差のない構造を用いることができる。図７は、切捨て誤差なくデータに８ビットの定数を乗算する、本発明による乗算器の他の特別な形態を示すブロック線形図であり、
【００９０】
図７において、乗算器７１０への入力データ値は、データ線７１２で受信される。データ線７１２で受信した入力データ値は、四つのマルチプレクサ７１４０，７１４１，．．．，７１４３の各々の第１の入力部にそれぞれ供給される。
【００９１】
第２の入力線７１６は、全ての零を搬送し、データ線７１２で受信した入力データ値は、インバータ７１８にも供給され、インバータ出力は、インバース線７２０を通じてマルチプレクサ７１４０，７１４１，．．．，７１４３の各々の第３の入力部にそれぞれ供給される。
【００９２】
マルチプレクサ７１４０，７１４１，．．．，７１４３の動作は、図４のマルチプレクサ４１４０，４１４１，．．．，４１４３の動作と同一であり、ここで再び説明しない。
【００９３】
マルチプレクサ７１４０，７１４１，．．．，７１４３の出力は、可変シフトブロック７２４０，７２４１，．．．，７２４３の各々に送り出され、可変シフトブロック７２４０，７２４１，．．．，７２４３の動作の原理は、図４の可変シフトブロック４２４０，４２４１，．．．，４２４３の動作の原理と同一であり、ここで再び説明しない。
【００９４】
しかしながら、この場合、第１の可変シフトブロック７２４０は、切り捨てなくデータを左に２又は３ビットシフトすることができ、第２の可変シフトブロック７２４１は、切り捨てなくデータを左に１ビットシフトし又はデータのシフトを零にすることができ、第３の可変シフトブロック７２４２は、切り捨てなくデータを左に２又は３ビットシフトすることができ、第４の可変シフトブロック７２４３は、切り捨てなくデータを左に１ビットシフトし又はデータのシフトを零にすることができる。
【００９５】
第１の可変シフトブロック７２４０及び第２の可変シフトブロック７２４１の出力は、第１の加算器７３２に送り出され、それに対して、第３の可変シフトブロック７２４２及び第４の可変シフトブロック７２４３の出力は、第２の加算器７３４に送り出される。
【００９６】
第３の加算器７３４の出力の固定シフトを零にし、それに対して、第１の加算器７３２の出力は、固定シフトブロック７３６に供給され、左に４ビットのシフトを行う。
【００９７】
この場合も、可変シフトブロック７２４０〜７２４３が切り捨てなくデータを左にシフトできることによって、ハードウェアをやや複雑にするだけで装置の精度を上げる。
【００９８】
したがって、必要に応じて、第１の可変シフトブロック７２４０の出力は、（第１の可変シフトブロック７２４０及び固定シフトブロック７３６の影響を考慮すると）左に７又は６ビットシフトされ、第２の可変シフトブロック７２４１の出力は、（第２の可変シフトブロック７２４１及び固定シフトブロック７３６の影響を考慮すると）左に５又は４ビットシフトされ、第３の可変シフトブロック７２４２の出力は、（第３の可変シフトブロック７２４２及び固定シフトブロック７３６の影響を考慮すると）左に３又は２ビットシフトされ、第４の可変シフトブロック７２４３の出力は、左に１ビットシフトされ又はシフトされない。
【００９９】
８ビットの定数の任意のセットをデータに乗算する特定の実施の形態を説明したが、同一の原理を任意の長さの定数に適用できることは明らかである。
【０１００】
乗算器を、予め知られた定数のセットとともに用いるとき、簡素化を行うことができる。その理由は、乗算器があり得る値の一部を用いて演算を行う必要がないからである。
【０１０１】
特に、連続的な２ビットの対（すなわち、ｂ２ｎｂ２ｎ＋１）の各々を、ＣＤＳ乗算器によってサポートすべき定数の完全なセットに対して検査する必要がある。ｎの各値（すなわち、８ビットの定数の場合にｎ＝０，１，２，３）に対して、ｂ２ｎｂ２ｎ＋１の値の全てをリストすることができる。ｎの各値に対しても、対応するマルチプレクサ、シフタ及び加算器の簡素化が可能であるか否かを決定するために、リスト値が検査される。
【０１０２】
マルチプレクサに関して、連続する２ビットの値のあり得る五つの対が存在することを説明した。これらを、三つのサブセット：サブセット０＝｛００｝；サブセット１＝｛１０，０１｝；サブセット２＝｛−１０，０−１｝に分けることができる。ｂ２ｎｂ２ｎ＋１のリスト値が上記サブセットの一つから来る場合、必要なマルチプレクサ出力を、サブセットに応じて常に零、データ入力又はデータ入力の二つの補数とするので、各マルチプレクサを取り除くことができる。リスト値が上記サブセットの二つから来る場合、あり得るマルチプレクサ入力の一つが選択されることがないので、対応するマルチプレクサは３：１から２：１まで減少する。
【０１０３】
可変ビットシフタに関して、連続する２ビットの値のあり得る五つの対を、上記サブセットとは異なる三つのサブセット：サブセット０＝｛００｝；サブセット１＊＝｛１０，−１０｝；サブセット２＊＝｛０１，０−１｝に分けることができる。サブセット１＊とサブセット２＊の一方の値のみが、リスト値に含まれ、一つのシフト値のみが適用されるので、ビット対ｂ２ｎｂ２ｎ＋１によって制御されたシフタが、固定シフタに対して最適化される。リスト値がサブセット０のみから来る場合、シフタを取り除くことができる。
【０１０４】
加算器に関して、上記のようにシフタが取り除かれた場合、シフタからの入力の一つを受信した対応する加算器も取り除くことができる。
【０１０５】
したがって、大幅なハードウェアの要求なく要求される精度を有する出力を生じることができる乗算器が存在する。
【図面の簡単な説明】
【０１０６】
【図１】図１は、本発明による乗算器の一般的な形態を示すブロック線形図である。
【図２】図２は、８ビットの定数をデータに乗算する、本発明による乗算器の一般的な形態を更に詳細に示すブロック線形図である。
【図３】図３は、１２ビットの定数をデータに乗算する、本発明による乗算器の一般的な形態を更に詳細に示すブロック線形図である。
【図４】図４は、８ビットの定数をデータに乗算する、本発明による第１の乗算器を示すブロック線形図である。
【図５】図５は、８ビットの定数をデータに乗算する、本発明による第２の乗算器を示すブロック線形図である。
【図６】図６は、８ビットの定数をデータに乗算する、本発明による第３の乗算器を示すブロック線形図である。
【図７】図７は、８ビットの定数をデータに乗算する、本発明による第４の乗算器を示すブロック線形図である。
【図１】
2008535077.tif 000003
【図２】
2008535077.tif 000004
【図３】
2008535077.tif 000005
【図４】
2008535077.tif 000006
【図５】
2008535077.tif 000007
【図６】
2008535077.tif 000008
【図７】
2008535077.tif 000009
【国際調査報告】
2008535077.tif 000010
2008535077.tif 000011
2008535077.tif 000012