(57)【特許請求の範囲】
【請求項１】
乗数をコード化するための乗数エンコーダと、
被乗数の下位ビットをビット反転して１を加算することにより２の補数化し、補数データと桁上げとを出力するための補数回路と、
前記乗数エンコーダのコード化出力と、前記被乗数と、前記補数回路の出力する補数データ及び桁上げとを用いて複数の部分積を生成するための部分積発生手段と、
前記部分積発生手段で生成された複数の部分積を加算するための加算器とを備えたことを特徴とする乗算装置。
【請求項２】
請求項１記載の乗算装置において、
前記部分積発生手段は、
前記乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットに応じて、前記被乗数の下位ビットと、前記補数回路の出力する補数データとのいずれか一方を選択するための選択回路と、
前記乗数エンコーダのコード化出力の一部と、前記被乗数とを用いて第１型の部分積データを生成し、該第１型の部分積データを含んだ部分積を前記加算器へ供給するための第１型の部分積発生器と、
前記乗数エンコーダのコード化出力の他の一部と、前記被乗数とを用いて第２型の部分積データを生成し、かつ前記補数回路の出力する桁上げを前記第２型の部分積データの上位ビット位置に付加し、該桁上げが付加された第２型の部分積データを含んだ部分積を前記加算器へ供給するための第２型の部分積発生器と、前記乗数エンコーダのコード化出力の最上位部分と、前記被乗数の上位ビットとを用いて第３型の部分積データのうちの上位ビットを、前記乗数エンコーダのコード化出力の最上位部分と、前記選択回路の出力データとを用いて前記第３型の部分積データのうちの下位ビットをそれぞれ生成し、該第３型の部分積データを含んだ部分積を前記加算器へ供給するための第３型の部分積発生器とを備えたことを特徴とする乗算装置。
【請求項３】
第１の被乗数をＸＡ、第１の乗数をＹＡとした第１の積ＸＡ×ＹＡと、第２の被乗数をＸＢ、第２の乗数をＹＢとした第２の積ＸＢ×ＹＢとの和を算出するための積和演算装置であって、
前記第１の乗数ＹＡをコード化するための第１の乗数エンコーダと、
前記第２の乗数ＹＢをコード化するための第２の乗数エンコーダと、
前記第１の被乗数ＸＡの下位ビットをビット反転して１を加算することにより２の補数化し、補数データと桁上げとを出力するための補数回路と、
前記第１の乗数エンコーダのコード化出力と、前記第２の乗数エンコーダのコード化出力と、前記第１の被乗数ＸＡと、前記補数回路の出力する補数データ及び桁上げとを用いて複数の部分積を生成するための第１の部分積発生手段と、
前記第２の乗数エンコーダのコード化出力と、前記第２の被乗数ＸＢとを用いて複数の部分積を生成するための第２の部分積発生手段と、
前記第１の部分積発生手段で生成された複数の部分積と、前記第２の部分積発生手段で生成された複数の部分積とを加算するための加算器とを備えたことを特徴とする積和演算装置。
【請求項４】
請求項３記載の積和演算装置において、
前記第１の部分積発生手段は、
前記第１の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットに応じて、前記第１の被乗数ＸＡの下位ビットと、前記補数回路の出力する補数データとのいずれか一方を選択するための選択回路と、
前記第１の乗数エンコーダのコード化出力の一部と、前記第１の被乗数ＸＡとを用いて第１型の部分積データを生成し、該第１型の部分積データを含んだ部分積を前記加算器へ供給するための第１型の部分積発生器と、
前記第１の乗数エンコーダのコード化出力の他の一部と、前記第１の被乗数ＸＡとを用いて第２型の部分積データを生成し、かつ前記補数回路の出力する桁上げを前記第２型の部分積データの上位ビット位置に付加し、該桁上げが付加された第２型の部分積データを含んだ部分積を前記加算器へ供給するための第２型の部分積発生器と、
前記第１の乗数エンコーダのコード化出力の最上位部分と、前記第１の被乗数ＸＡの上位ビットとを用いて第３型の部分積データの上位ビットを、前記第１の乗数エンコーダのコード化出力の最上位部分と、前記選択回路の出力データとを用いて前記第３型の部分積データの下位ビットをそれぞれ生成し、かつ前記第２の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットを前記第３型の部分積データの下位ビット位置に付加し、該部分積補数化ビットが付加された第３型の部分積データを含んだ部分積を前記加算器へ供給するための第３型の部分積発生器とを備え、
前記第２の部分積発生手段は、
前記第２の乗数エンコーダのコード化出力の一部と、前記第２の被乗数ＸＢとを用いて第４型の部分積データを生成し、該第４型の部分積データを含んだ部分積を前記加算器へ供給するための第４型の部分積発生器と、
前記第２の乗数エンコーダのコード化出力の最上位部分と、前記第２の被乗数ＸＢとを用いて第５型の部分積データを生成し、かつ前記第２の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットを前記第５型の部分積データの下位ビット位置に付加し、該部分積補数化ビットが付加された第５型の部分積データを含んだ部分積を前記加算器へ供給するための第５型の部分積発生器とを備えたことを特徴とする乗算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乗算装置と、それを用いた積和演算装置とに関するものである。
【０００２】
【従来の技術】
近年、半導体集積回路の高速化への要求は高まっており、演算要素の１つである乗算装置について、高速の乗算装置が必要になっている。高速の乗算装置を実現するためのアルゴリズムの１つとして、乗数をコード化して部分積を生成するブース（Ｂｏｏｔｈ）のアルゴリズムがある。乗算装置では、一般に、乗数、被乗数入力を用いて発生させた複数の部分積を加算することにより、積を算出する。ブースのアルゴリズムによれば、乗数をコード化して部分積を生成することにより、部分積の数を減らすことができる。例えば、２次のブースのアルゴリズムでは部分積の数を約半分にすることができる。部分積の加算を行う加算器の動作速度は、部分積の数に依存し、部分積の数が多ければ動作速度は遅くなる。部分積の数、すなわち加算器の入力数が約半分になれば、加算器の負担が軽減される結果、加算の高速化が達成される。
【０００３】
さて、乗数をコード化して生成された負の部分積データは、１の補数形式のデータである。したがって、負の部分積データに符号拡張を施す処理と、負の部分積データを２の補数化するための論理値“１”のビットを該部分積データの最下位ビットに加算する処理とが必要である。正の部分積データでは、その最下位ビットに論理値“０”のビットが加算される。以下の説明では、部分積データの最下位ビットに加算されるべき論理値“１”又は“０”のビットを補数化ビットという。
【０００４】
特開昭５８−５６０３３号には、２次のブースのアルゴリズムを実現するための乗数エンコーダと、符号拡張省略機構とを備えた８ビット×８ビットの乗算装置が開示されている。その部分積発生方法に係る動作の概要を、図２５に示す。図２５において、Ｘ［０］  〜Ｘ［７］  は被乗数の８ビットを、Ｙ［０］  〜Ｙ［７］  は乗数の８ビットを、Ｍ［０］  〜Ｍ［１５］は積の１６ビットをそれぞれ表している。加算器の第１入力は、乗数エンコーダのコード化出力の第１の部分（最下位部分）と、被乗数とを用いて生成された第１部分積データＰ０［０］  〜Ｐ０［７］  （ビット位置Ｍ［０］  〜Ｍ［７］  ）と、第１部分積の符号の反転ビットＩＳ０（ビット位置Ｍ［８］  ）とで構成される。加算器の第２入力は、乗数エンコーダのコード化出力の第２の部分と、被乗数とを用いて生成された第２部分積データＰ１［０］  〜Ｐ１［７］  （ビット位置Ｍ［２］  〜Ｍ［９］  ）と、第２部分積の符号の反転ビットＩＳ１（ビット位置Ｍ［１０］）と、第１部分積データの最下位ビットに加算されるべき補数化ビットＢＣ０（ビット位置Ｍ［０］  ）とで構成される。加算器の第３入力は、乗数エンコーダのコード化出力の第３の部分と、被乗数とを用いて生成された第３部分積データＰ２［０］  〜Ｐ２［７］  （ビット位置Ｍ［４］  〜Ｍ［１１］）と、第３部分積の符号の反転ビットＩＳ２（ビット位置Ｍ［１２］）と、第２部分積データの最下位ビットに加算されるべき補数化ビットＢＣ１（ビット位置Ｍ［２］  ）とで構成される。加算器の第４入力は、乗数エンコーダのコード化出力の第４の部分（最上位部分）と、被乗数とを用いて生成された第４部分積データＰ３［０］  〜Ｐ３［７］  （ビット位置Ｍ［６］  〜Ｍ［１３］）と、第４部分積の符号の反転ビットＩＳ３（ビット位置Ｍ［１４］）と、第３部分積データの最下位ビットに加算されるべき補数化ビットＢＣ２（ビット位置Ｍ［４］  ）とで構成される。加算器の第５入力は、ビット位置Ｍ［８］  ，Ｍ［９］  ，Ｍ［１１］，Ｍ［１３］，Ｍ［１５］の５個の論理値“１”のビットと、第４部分積データの最下位ビットに加算されるべき補数化ビットＢＣ３（ビット位置Ｍ［６］  ）とで構成される。第１〜第４部分積の各々の符号の反転ビットＩＳ０〜ＩＳ３と、桁上げ伝播のための５個の論理値“１”のビットとは、各部分積の符号拡張を省略するためのビットである。補数化ビットＢＣ３は、乗数エンコーダのコード化出力の最上位部分の中に含まれていたビットであり、第４部分積データを２の補数化するためのビット、すなわち最上位部分積補数化ビットである。そして、上記第１〜第５入力を加算することにより、２の補数形式の１６ビットの積Ｍ［０］  〜Ｍ［１５］が求められる。
【０００５】
【発明が解決しようとする課題】
上記従来の８ビット×８ビットの乗算装置は、５入力の加算器を必要とした。つまり、一部のビット位置Ｍ［６］  ，Ｍ［８］  のみのために、加算器の負担が十分には軽減されない問題があった。また、乗数のコード化処理のための時間は、被乗数側では空き時間となっていた。
【０００６】
本発明の目的は、乗数のコード化処理の際に生じる被乗数側の空き時間を有効利用して、乗算装置の中の部分積の加算のための加算器の入力数を低減することにある。
【０００７】
本発明の他の目的は、本発明の乗算装置を用いることにより加算器の入力数を低減した積和演算装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記従来の８ビット×８ビットの乗算装置において加算器の第５入力を構成する６ビットのうち、ビット位置Ｍ［８］  ，Ｍ［９］  ，Ｍ［１１］，Ｍ［１３］，Ｍ［１５］の５個の論理値“１”のビットは、加算器の第１〜第４入力の中へ容易に移動させることができる。本発明は、ビット位置Ｍ［６］  への最上位部分積補数化ビットＢＣ３の加算と同等の効果を、被乗数の下位ビットを補数回路で２の補数化することにより得られる補数データと桁上げとを用いて、加算器の第１〜第４入力の中で達成することとしたものである。すなわち、従来は第４部分積データへの最上位部分積補数化ビットＢＣ３の加算が加算器の中で行われていたのに対して、本発明では補数回路の中で被乗数の下位ビットの反転データに１を加算して補数データを求めておき、最上位部分積補数化ビットＢＣ３の論理値が“１”である場合には、第４部分積データの下位ビットを補数データに差し替え、かつ第４部分積データの上位ビットへの補数回路の桁上げの影響を加算器の第１及び第２入力の中で達成することとした。これにより、加算器の入力数が低減される。補数データと桁上げとを求める補数化処理は、乗数のコード化処理の際に生じる被乗数側の空き時間を利用して実行される。
【０００９】
詳細に説明すると、本発明の乗算装置は、上記目的を達成するために、乗数をコード化するための乗数エンコーダと、被乗数の下位ビットをビット反転して１を加算することにより２の補数化して補数データと桁上げとを出力するための補数回路と、乗数エンコーダのコード化出力と被乗数と補数回路の出力する補数データ及び桁上げとを用いて複数の部分積を生成するための部分積発生手段と、該部分積発生手段で生成された複数の部分積を加算するための加算器とを備えた構成を採用したものである。
【００１０】
上記部分積発生手段は、少なくとも、次のような選択回路と、第１〜第３型の部分積発生器とで構成される。すなわち、選択回路は、乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットに応じて、被乗数の下位ビットと、補数回路の出力する補数データとのいずれか一方を選択するための回路である。第１型の部分積発生器は、乗数エンコーダのコード化出力の一部と、被乗数とを用いて第１型の部分積データを生成し、該第１型の部分積データを含んだ部分積を加算器へ供給する。第２型の部分積発生器は、乗数エンコーダのコード化出力の他の一部と、被乗数とを用いて第２型の部分積データを生成し、かつ補数回路の出力する桁上げを第２型の部分積データの上位ビット位置に付加し、該桁上げが付加された第２型の部分積データを含んだ部分積を加算器へ供給する。第３型の部分積発生器は、乗数エンコーダのコード化出力の最上位部分と、被乗数の上位ビットとを用いて第３型の部分積データのうちの上位ビットを、乗数エンコーダのコード化出力の最上位部分と、選択回路の出力データとを用いて第３型の部分積データのうちの下位ビットをそれぞれ生成し、該第３型の部分積データを含んだ部分積を加算器へ供給するものである。
【００１１】
上記本発明の乗算装置によれば、乗数のコード化処理と並行して被乗数の補数化処理が行われるので、被乗数の補数化ビット数があまり大きくない限り、乗数のコード化処理に要する時間と、被乗数の補数化処理に要する時間とが釣り合って好都合である。なお、補数回路の出力する補数データが選択回路によって選択される場合には第３型の部分積データの下位ビットの生成に際して桁上げが生じるが、この桁上げは第２型の部分積データの上位ビット位置に付加された桁上げとして反映されている。
【００１２】
さて、第１の被乗数をＸＡ、第１の乗数をＹＡとした複数の部分積を上記本発明の乗算装置で求め、第２の被乗数をＸＢ、第２の乗数をＹＢとした複数の部分積を同じ構成の乗算装置で求め、かつ全ての部分積を多入力加算器で加算することとすれば、第１の積ＸＡ×ＹＡと第２の積ＸＢ×ＹＢとの和、すなわち積和Ｕを算出するための、加算器の入力数を低減した演算装置を実現できる。ただし、乗数及び被乗数ＸＡ，ＹＡ，ＸＢ，ＹＢがいずれも８ビットである場合には、第１の乗数ＹＡのコード最上位部分と第１の被乗数ＸＡとを用いて生成された部分積データを含んだ加算器入力と、第２の乗数ＹＢのコード最上位部分と第２の被乗数ＸＢとを用いて生成された部分積データを含んだ加算器入力との各々のビット位置Ｕ［５］  に空きが生じる。本発明の積和演算装置は、このビット位置Ｕ［５］  の２つの空きを利用して、ビット位置Ｕ［６］  への第２の積ＸＢ×ＹＢに係る最上位部分積補数化ビットの付加と同等の効果を実現することとしたものである。
【００１３】
詳細に説明すると、本発明の積和演算装置は、第１の乗数ＹＡをコード化するための第１の乗数エンコーダと、第２の乗数ＹＢをコード化するための第２の乗数エンコーダと、第１の被乗数ＸＡの下位ビットをビット反転して１を加算することにより２の補数化して補数データと桁上げとを出力するための補数回路と、第１の乗数エンコーダのコード化出力と第２の乗数エンコーダのコード化出力と第１の被乗数ＸＡと補数回路の出力する補数データ及び桁上げとを用いて複数の部分積を生成するための第１の部分積発生手段と、第２の乗数エンコーダのコード化出力と第２の被乗数ＸＢとを用いて複数の部分積を生成するための第２の部分積発生手段と、第１の部分積発生手段で生成された複数の部分積と第２の部分積発生手段で生成された複数の部分積とを加算するための加算器とを備えた構成を採用したものである。
【００１４】
上記第１の部分積発生手段は、少なくとも、次のような選択回路と、第１〜第３型の部分積発生器とで構成される。すなわち、選択回路は、第１の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットに応じて、第１の被乗数ＸＡの下位ビットと、補数回路の出力する補数データとのいずれか一方を選択するための回路である。第１型の部分積発生器は、第１の乗数エンコーダのコード化出力の一部と、第１の被乗数ＸＡとを用いて第１型の部分積データを生成し、該第１型の部分積データを含んだ部分積を加算器へ供給する。第２型の部分積発生器は、第１の乗数エンコーダのコード化出力の他の一部と、第１の被乗数ＸＡとを用いて第２型の部分積データを生成し、かつ補数回路の出力する桁上げを第２型の部分積データの上位ビット位置に付加し、該桁上げが付加された第２型の部分積データを含んだ部分積を加算器へ供給する。第３型の部分積発生器は、第１の乗数エンコーダのコード化出力の最上位部分と、第１の被乗数ＸＡの上位ビットとを用いて第３型の部分積データのうちの上位ビットを、第１の乗数エンコーダのコード化出力の最上位部分と、選択回路の出力データとを用いて第３型の部分積データのうちの下位ビットをそれぞれ生成し、かつ第２の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットを第３型の部分積データの下位ビット位置に付加し、該部分積補数化ビットが付加された第３型の部分積データを含んだ部分積を加算器へ供給するものである。上記第２の部分積発生手段は、少なくとも、次のような第４及び第５型の部分積発生器で構成される。すなわち、第４型の部分積発生器は、第２の乗数エンコーダのコード化出力の一部と、第２の被乗数ＸＢとを用いて第４型の部分積データを生成し、該第４型の部分積データを含んだ部分積を加算器へ供給する。第５型の部分積発生器は、第２の乗数エンコーダのコード化出力の最上位部分と、第２の被乗数ＸＢとを用いて第５型の部分積データを生成し、かつ第２の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットを第５型の部分積データの下位ビット位置に付加し、該部分積補数化ビットが付加された第５型の部分積データを含んだ部分積を加算器へ供給するものである。
【００１５】
上記本発明の積和演算装置によれば、第２の乗数エンコーダのコード化出力の最上位部分の中の部分積補数化ビットが、第３型の部分積データの下位ビット位置と、第５型の部分積データの下位ビット位置とに二重に付加される。これにより、加算器の入力数が低減される。
【００１６】
【発明の実施の形態】
以下、本発明に係る乗算装置及び積和演算装置の具体例について、図面を参照しながら説明する。
【００１７】
図１は、被乗数をＸ、乗数をＹとして積Ｍを算出するための本発明に係る８ビット×８ビットの乗算装置の概略構成例を示している。図１の乗算装置は、２次のブースのアルゴリズムと符号拡張の省略とを採用した乗算装置であって、乗数エンコーダ１０１と、補数回路１０２と、選択回路１０３と、第１〜第４の部分積発生器１１０〜１１３と、多入力加算器１０４とで構成される。
【００１８】
乗数エンコーダ１０１は、２次のブースのアルゴリズムに従って乗数Ｙをコード化し、第１（最下位）、第２、第３及び第４（最上位）の部分を備えたコード化出力を供給するものである。
【００１９】
補数回路１０２は、被乗数Ｘの下位５ビットデータをビット反転して１を加算することによって２の補数化し、５ビットの補数データ（ＩＸ＋１）と、桁上げとを出力するものである。ここに、“Ｉ”はビット反転操作を意味するものとする。
【００２０】
選択回路１０３は、乗数エンコーダ１０１のコード化出力の第４の部分（最上位部分）の中の部分積補数化ビット、すなわち最上位部分積補数化ビットに応じて、被乗数Ｘの下位５ビットデータと、補数回路１０２の出力する５ビットの補数データとのいずれか一方を選択するものである。最上位部分積補数化ビットの論理値が“０”ならば被乗数Ｘの下位５ビットデータが、最上位部分積補数化ビットの論理値が“１”ならば補数回路１０２の出力する５ビットの補数データがそれぞれ選択される。
【００２１】
第１〜第４の部分積発生器１１０〜１１３は、それぞれ第１（最下位）部分積データＰ０と、第２部分積データＰ１と、第３部分積データＰ２と、第４（最上位）部分積データＰ３とを生成するものである。このうち、第１の部分積発生器１１０は、乗数エンコーダ１０１のコード化出力の第１の部分（最下位部分）と、被乗数Ｘとを用いて第１部分積データＰ０を生成し、第１部分積データＰ０の最下位ビットに加算されるべき補数化ビットを第２部分積データＰ１の下位ビット位置に付加し、かつ第１部分積の符号ビットと、その反転ビットと、最上位部分積補数化ビットを反映した補数化ビットとを第１部分積データＰ０の上位ビット位置に付加する。第２の部分積発生器１１１は、乗数エンコーダ１０１のコード化出力の第２の部分と、被乗数Ｘとを用いて第２部分積データＰ１を生成し、第２部分積データＰ１の最下位ビットに加算されるべき補数化ビットを第３部分積データＰ２の下位ビット位置に付加し、かつ第２部分積の符号の反転ビットと、補数回路１０２の出力する桁上げを反映した補数化ビットとを第２部分積データＰ１の上位ビット位置に付加する。第３の部分積発生器１１２は、乗数エンコーダ１０１のコード化出力の第３の部分と、被乗数Ｘとを用いて第３部分積データＰ２を生成し、第３部分積データＰ２の最下位ビットに加算されるべき補数化ビットを第４部分積データＰ３の下位ビット位置に付加し、かつ第３部分積の符号の反転ビットと、論理値“１”のビットとを第３部分積データＰ２の上位ビット位置に付加する。第４の部分積発生器１１３は、乗数エンコーダ１０１のコード化出力の第４の部分（最上位部分）と、被乗数Ｘの上位３ビットとを用いて第４部分積データＰ３のうちの上位３ビットを生成し、乗数エンコーダ１０１のコード化出力の第４の部分（最上位部分）と、選択回路１０３の出力データとを用いて第４部分積データＰ３のうちの下位５ビットを生成し、かつ第４部分積の符号の反転ビットと、論理値“１”のビットとを第４部分積データＰ３の上位ビット位置に付加する。
【００２２】
多入力加算器１０４は、第１〜第４の部分積発生器１１０〜１１３の出力の加算を行い、２の補数形式の積Ｍを出力するための加算器であって、ワレス（Ｗａｌｌａｃｅ）のトリー回路と、桁上げ伝搬加算器（ＣＰＡ）とで構成される。
【００２３】
図２は、乗数エンコーダ１０１の内部構成を示している。図２の乗数エンコーダ１０１は、４つのブースエンコーダＢＥより構成される。各ブースエンコーダＢＥには、乗数Ｙを構成する８ビットＹ［０］  〜Ｙ［７］  のうちの３ビット、すなわちＹ［ｉ＊２＋１］  ，Ｙ［ｉ＊２］  ，Ｙ［ｉ＊２−１］  が入力される。ここに、“＊”は乗算を意味し、ｉは０、１、２又は３であり、Ｙ［−１］＝“０”である。図２に示されたコード化出力のうちのＢＣＰ［０］  〜ＢＣＰ［３］  は、各部分積データの最下位ビットに加算されるべき補数化ビットである。ＢＣＰ［３］  は、前述の最上位部分積補数化ビットである。
【００２４】
図３は、補数回路１０２及び選択回路１０３の詳細を示している。補数回路（ＣＯＭＰ）１０２は、被乗数Ｘの下位５ビットデータＸ［０］  〜Ｘ［４］  をビット反転して１を加算することにより２の補数化し、５ビットの補数データＸＣ［０］  〜ＸＣ［４］  と桁上げＸＣ［５］  とを出力する。選択回路（ＳＥＬ）１０３は、最上位部分積補数化ビットＢＣＰ［３］  に応じて、被乗数の下位５ビットデータＸ［０］  〜Ｘ［４］  と、５ビットの補数データＸＣ［０］  〜ＸＣ［４］  とのいずれか一方を、被選択データＸＳ［０］  〜ＸＳ［４］  として出力する。
【００２５】
図４（ａ）及び（ｂ）は第１の部分積発生器１１０の内部構成を、図５（ａ）及び（ｂ）は第２の部分積発生器１１１の内部構成を、図６（ａ）及び（ｂ）は第３の部分積発生器１１２の内部構成を、図７（ａ）及び（ｂ）は第４の部分積発生器１１３の内部構成をそれぞれ示している。第１〜第４の部分積発生器１１０〜１１３は、７種類の単位部分積発生器ＰＰＧ１〜ＰＰＧ７の組み合わせで構成される。図４（ａ）に示されたＳ３Ｃ及びＩＳ３Ｃは、最上位部分積補数化ビットＢＣＰ［３］  から生成された補数化ビットと、その反転ビットである。図５（ａ）に示されたＣ３［０］  は、最上位部分積補数化ビットＢＣＰ［３］  と、補数回路１０２の桁上げＸＣ［５］  と、選択回路１０３の出力データの最上位ビットＸＳ［４］  とから生成された補数化ビットである。また、図５（ａ）に示されたＣ３［１］  は、最上位部分積補数化ビットＢＣＰ［３］  と、補数回路１０２の桁上げＸＣ［５］  とから生成された補数化ビットである。
【００２６】
図８は各ブースエンコーダＢＥの内部構成を、図９は各ブースエンコーダＢＥの真理値表をそれぞれ示している。図９中のＸ［７：０］  は、被乗数Ｘを構成する８ビットＸ［０］  〜Ｘ［７］  を意味する簡略表記である。「ＢＸ１＝“１”」は部分積として被乗数Ｘの１倍数を発生すべきことを、「ＢＸ２＝“１”」は部分積として被乗数Ｘの２倍数を発生すべきことを、「ＢＣ＝“１”」は負の部分積を発生すべきことをそれぞれ表している。
【００２７】
図１０は補数回路ＣＯＭＰの内部構成を、図１１は選択回路ＳＥＬの内部構成を、図１２〜図１８は第１〜第７の単位部分積発生器ＰＰＧ１〜ＰＰＧ７の内部構成をそれぞれ示している。各構成の詳細説明は省略する。
【００２８】
図１９は、図１の乗算装置における部分積発生方法を示している。図１９において、加算器１０４の第１入力は、第１部分積データＰ０［０］  〜Ｐ０［７］  （ビット位置Ｍ［０］  〜Ｍ［７］  ）と、第１部分積の符号ビットＳ０（ビット位置Ｍ［８］  及びＭ［９］  ）と、その反転ビットＩＳ０（ビット位置Ｍ［１０］）と、最上位部分積補数化ビットＢＣＰ［３］  から生成された補数化ビットＳ３Ｃ（ビット位置Ｍ［１２］）と、その反転ビットＩＳ３Ｃ（ビット位置Ｍ［１１］）とで構成される。加算器１０４の第２入力は、第２部分積データＰ１［０］  〜Ｐ１［７］  （ビット位置Ｍ［２］  〜Ｍ［９］  ）と、第２部分積の符号の反転ビットＩＳ１（ビット位置Ｍ［１０］）と、補数回路（ＣＯＭＰ）１０２の桁上げＸＣ［５］  から生成された補数化ビットＣ３［０］  ，Ｃ３［１］  （それぞれビット位置Ｍ［１１］，Ｍ［１２］）と、第１部分積データの最下位ビットに加算されるべき補数化ビットＢＣ０（ビット位置Ｍ［０］  ）とで構成される。加算器１０４の第３入力は、第３部分積データＰ２［０］  〜Ｐ２［７］  （ビット位置Ｍ［４］  〜Ｍ［１１］）と、第３部分積の符号の反転ビットＩＳ２（ビット位置Ｍ［１２］）と、論理値“１”のビット（ビット位置Ｍ［１３］）と、第２部分積データの最下位ビットに加算されるべき補数化ビットＢＣ１（ビット位置Ｍ［２］  ）とで構成される。加算器１０４の第４入力は、第４部分積データＰ３［０］  〜Ｐ３［７］  （ビット位置Ｍ［６］  〜Ｍ［１３］）と、第４部分積の符号の反転ビットＩＳ３（ビット位置Ｍ［１４］）と、論理値“１”のビット（ビット位置Ｍ［１５］）と、第３部分積データの最下位ビットに加算されるべき補数化ビットＢＣ２（ビット位置Ｍ［４］  ）とで構成される。４つのビットＳ３Ｃ，ＩＳ３Ｃ，Ｃ３［１］  ，Ｃ３［０］  は、第４部分積データのうちの上位３ビットデータＰ３［５］  〜Ｐ３［７］  を２の補数化するために付加されたビットである。なお、必要に応じて（最上位部分積補数化ビットＢＣＰ［３］  の論理値が“１”ならば）、補数回路（ＣＯＭＰ）１０２で２の補数化された５ビットの補数データＸＣ［０］  〜ＸＣ［４］  が、第４部分積データのうちの下位５ビットデータＰ３［０］  〜Ｐ３［４］  として使われる。そして、上記第１〜第４入力を加算器１０４で加算することにより、２の補数形式の１６ビットの積Ｍ［０］  〜Ｍ［１５］が求められる。
【００２９】
図２０は第ｉ＋１部分積（０≦ｉ≦２）、すなわち第１（最下位）、第２及び第３部分積の発生に係る真理値表を、図２１は第４（最上位）部分積の発生に係る真理値表をそれぞれ示している。ここに、“＊”は乗算を、“Ｉ”はビット反転操作を、“＜＜１”は１ビット左シフト操作（２倍操作）をそれぞれ意味するものとする。Ｙ［−１］は常に論理値“０”である。Ｐｉ［７：０］  、Ｐ３［７：６］  、Ｐ３［４：０］  などの表記は、図９中の被乗数Ｘ［７：０］  と同様の簡略表記である。
【００３０】
図２０によれば、例えば、Ｙ［３］  ＝“０”、Ｙ［２］  ＝“０”、かつＹ［１］  ＝“１”ならば、発生すべき部分積は被乗数Ｘ［７：０］  の１倍数である。このとき、第２の部分積発生器１１１により、第２部分積の符号ビットＳ１に被乗数の最上位ビットＸ［７］  が設定され（実際には、第２部分積の符号の反転ビットＩＳ１に被乗数の最上位反転ビットＩＸ［７］  が設定される）、第２部分積データＰ１［７：０］  に被乗数Ｘ［７：０］  が設定され、第２部分積データの最下位ビットに加算されるべき補数化ビットＢＣ１に論理値“０”が設定される。また、Ｙ［３］  ＝“１”、Ｙ［２］  ＝“０”、かつＹ［１］  ＝“０”ならば、発生すべき部分積は被乗数Ｘ［７：０］  の−２倍数である。このとき、第２の部分積発生器１１１により、第２部分積の符号ビットＳ１に被乗数の最上位反転ビットＩＸ［７］  が設定され（実際には、第２部分積の符号の反転ビットＩＳ１に被乗数の最上位ビットＸ［７］  が設定される）、第２部分積データＰ１［７：０］  に被乗数の下位６ビットデータＸ［６：０］  の２倍数の反転データが設定され、第２部分積データの最下位ビットに加算されるべき補数化ビットＢＣ１に論理値“１”が設定される。なお、図２０中の“ＦＦ（１６進数表示）”は、８個の論理値“１”のビットを表している。
【００３１】
図２１によれば、例えば、Ｙ［７］  ＝“０”、Ｙ［６］  ＝“０”、かつＹ［５］  ＝“１”ならば、発生すべき部分積は被乗数Ｘ［７：０］  の１倍数である。このとき、選択回路１０３は、被選択データＸＳ［４：０］  に被乗数の下位５ビットデータＸ［４：０］  を設定する。第４の部分積発生器１１３は、第４部分積の符号ビットＳ３に被乗数の最上位ビットＸ［７］  を設定し（実際には、第４部分積の符号の反転ビットＩＳ３に被乗数の最上位反転ビットＩＸ［７］  が設定される）、第４部分積データＰ３［７：０］  に被乗数Ｘ［７：０］  を設定する。第１の部分積発生器１１０は、補数化ビットＳ３Ｃに論理値“０”を、その反転ビットＩＳ３Ｃに論理値“１”をそれぞれ設定する。第２の部分積発生器１１１は、補数化ビットＣ３［１］  ，Ｃ３［０］  にそれぞれ論理値“０”を設定する。また、Ｙ［７］  ＝“１”、Ｙ［６］  ＝“１”、かつＹ［５］  ＝“０”ならば、発生すべき部分積は被乗数Ｘ［７：０］  の−１倍数である。このとき、選択回路１０３は、被選択データＸＳ［４：０］  に被乗数の下位５ビットの補数データＸＣ［４：０］  を設定する。第４の部分積発生器１１３は、第４部分積の符号ビットＳ３に被乗数の最上位反転ビットＩＸ［７］  を設定し（実際には、第４部分積の符号の反転ビットＩＳ３に被乗数の最上位ビットＸ［７］  が設定される）、第４部分積データの上位３ビットＰ３［７：５］  に被乗数の上位反転３ビットＩＸ［７：５］  を、第４部分積データの下位５ビットＰ３［４：０］  に補数データＸＣ［４：０］  をそれぞれ設定する。第１の部分積発生器１１０は、補数化ビットＳ３Ｃに論理値“０”を、その反転ビットＩＳ３Ｃに論理値“１”をそれぞれ設定する。第２の部分積発生器１１１は、補数化ビットＣ３［１］  に論理値“０”を、補数化ビットＣ３［０］  に補数回路１０２の桁上げＸＣ［５］  をそれぞれ設定する。なお、図２１中の“３（１６進数表示）”は、２個の論理値“１”のビットを表している。
【００３２】
以上説明してきたとおり、図１の乗算装置によれば、従来の乗算装置におけるビット位置Ｍ［６］  への最上位部分積補数化ビットＢＣ３の付加と同等の効果を、被乗数の下位５ビットデータＸ［４：０］  を２の補数化することにより得られる補数データＸＣ［４：０］  と桁上げＸＣ［５］  とを用いて、加算器１０４の第１〜第４入力の中で達成することとしたので、加算器１０４の入力数が低減される結果、加算の高速化が達成される。
【００３３】
なお、演算Ｘ×Ｙ＋Ａのための演算装置は、図１中の加算器１０４を５入力加算器に置き換え、該５入力加算器へ加数Ａに応じた１６ビットデータを第５入力として供給することによって実現できる。
【００３４】
また、第１の被乗数（８ビット）をＸＡ、第１の乗数（８ビット）をＹＡとした第１の積ＸＡ×ＹＡと、第２の被乗数（８ビット）をＸＢ、第２の乗数（８ビット）をＹＢとした第２の積ＸＢ×ＹＢとの和、すなわち積和ＸＡ×ＹＡ＋ＸＢ×ＹＢを算出するための積和演算装置は、図１中の加算器１０４を除く構成要素を二重に設け、かつ８つの部分積を加算するための多入力加算器を追加することによって実現できる。
【００３５】
図２２は、本発明に係る８ビット・４入力の積和演算装置の他の構成例を示している。図２２の積和演算装置は、第１の乗数エンコーダ１０１ａと、第２の乗数エンコーダ１０１ｂと、補数回路１０２ａと、選択回路１０３ａと、第１〜第３の部分積発生器１１０ａ〜１１２ａと、第４の部分積発生器２１３と、第５〜第８の部分積発生器３１０〜３１３と、多入力加算器３０４とで構成される。
【００３６】
第１の乗数エンコーダ１０１ａは、２次のブースのアルゴリズムに従って第１の乗数ＹＡをコード化するものである。第２の乗数エンコーダ１０１ｂは、２次のブースのアルゴリズムに従って第２の乗数ＹＢをコード化するものである。第１及び第２の乗数エンコーダ１０１ａ，１０１ｂの各々の内部構成は、図１の乗数エンコーダ１０１と同様である。
【００３７】
補数回路１０２ａは、第１の被乗数ＸＡの下位５ビットデータをビット反転して１を加算することによって２の補数化し、５ビットの補数データ（ＩＸＡ＋１）と、桁上げとを出力するものである。
【００３８】
選択回路１０３ａは、第１の乗数エンコーダ１０１ａのコード化出力の最上位部分の中の部分積補数化ビット、すなわち第１の最上位部分積補数化ビットに応じて、第１の被乗数ＸＡの下位５ビットデータと、補数回路１０２ａの出力する５ビットの補数データとのいずれか一方を選択するものである。
【００３９】
第１〜第４の部分積発生器１１０ａ〜１１２ａ，２１３は、第１の積ＸＡ×ＹＡに係る部分積を生成するものであって、それぞれ第１部分積データＰ０と、第２部分積データＰ１と、第３部分積データＰ２と、第４部分積データＰ３とを生成する。第５〜第８の部分積発生器３１０〜３１３は、第２の積ＸＢ×ＹＢに係る部分積を生成するものであって、それぞれ第５部分積データＰ４と、第６部分積データＰ５と、第７部分積データＰ６と、第８部分積データＰ７とを生成する。このうち、第１〜第３の部分積発生器１１０ａ〜１１２ａの各々の内部構成は、図１の第１〜第３の部分積発生器１１０〜１１２と同様である。第４の部分積発生器２１３は、第１の乗数エンコーダ１０１ａのコード化出力の最上位部分と、第１の被乗数ＸＡの上位３ビットとを用いて第４部分積データＰ３のうちの上位３ビットを生成し、第１の乗数エンコーダ１０１ａのコード化出力の最上位部分と、選択回路１０３ａの出力データとを用いて第４部分積データＰ３のうちの下位５ビットを生成し、第２の乗数エンコーダ１０１ｂのコード化出力の最上位部分の中の部分積補数化ビット、すなわち第２の最上位部分積補数化ビットを第４部分積データＰ３の下位ビット位置に付加し、かつ第４部分積の符号の反転ビットと、論理値“１”のビットとを第４部分積データＰ３の上位ビット位置に付加するものである。第４の部分積発生器２１３の内部構成は、図１の第４の部分積発生器１１３とほぼ同様である。
【００４０】
第５の部分積発生器３１０は、第２の乗数エンコーダ１０１ｂのコード化出力の第１の部分（最下位部分）と、第２の被乗数ＸＢとを用いて第５部分積データＰ４を生成し、第５部分積データＰ４の最下位ビットに加算されるべき補数化ビットを第６部分積データＰ５の下位ビット位置に付加し、かつ第５部分積の符号ビットと、その反転ビットとを第５部分積データＰ４の上位ビット位置に付加する。第６の部分積発生器３１１は、第２の乗数エンコーダ１０１ｂのコード化出力の第２の部分と、第２の被乗数ＸＢとを用いて第６部分積データＰ５を生成し、第６部分積データＰ５の最下位ビットに加算されるべき補数化ビットを第７部分積データＰ６の下位ビット位置に付加し、かつ第６部分積の符号の反転ビットと、論理値“１”のビットとを第６部分積データＰ５の上位ビット位置に付加する。第７の部分積発生器３１２は、第２の乗数エンコーダ１０１ｂのコード化出力の第３の部分と、第２の被乗数ＸＢとを用いて第７部分積データＰ６を生成し、第７部分積データＰ６の最下位ビットに加算されるべき補数化ビットを第８部分積データＰ７の下位ビット位置に付加し、かつ第７部分積の符号の反転ビットと、論理値“１”のビットとを第７部分積データＰ６の上位ビット位置に付加する。第８の部分積発生器１１３は、第２の乗数エンコーダ１０１ｂのコード化出力の第４の部分（最上位部分）と、第２の被乗数ＸＢとを用いて第８部分積データＰ７を生成し、第８部分積データＰ７の最下位ビットに加算されるべき補数化ビット、すなわち前記第２の最上位部分積補数化ビットを第８部分積データＰ７の下位ビット位置に付加し、かつ第８部分積の符号の反転ビットと、論理値“１”のビットとを第８部分積データＰ７の上位ビット位置に付加する。第５〜第８の部分積発生器３１０〜３１３は、前記７種類の単位部分積発生器ＰＰＧ１〜ＰＰＧ７のうちの第１及び第２の単位部分積発生器ＰＰＧ１，ＰＰＧ２の組み合わせで構成される。
【００４１】
多入力加算器３０４は、第１〜第８の部分積発生器１１０ａ〜１１２ａ，２１３，３１０〜３１３の出力の加算を行い、２の補数形式の積和ＸＡ×ＹＡ＋ＸＢ×ＹＢを出力するための加算器であって、ワレス（Ｗａｌｌａｃｅ）のトリー回路と、桁上げ伝搬加算器（ＣＰＡ）とで構成される。
【００４２】
図２３は、図２２の積和演算装置における第１の積ＸＡ×ＹＡに係る部分積の発生方法を示している。図２３に示された加算器３０４の第１〜第４入力は、図１９に示された加算器１０４の第１〜第４入力と同様である。ただし、加算器３０４の第４入力では、第４部分積データの最下位ビットＰ３［０］  と、第３部分積データの最下位ビットに加算されるべき補数化ビットＢＣ２との間に、第２の最上位部分積補数化ビットＢＣ７が挿入される。
【００４３】
図２４は、図２２の積和演算装置における第２の積ＸＢ×ＹＢに係る部分積の発生方法を示している。加算器３０４の第５入力は、第５部分積データＰ４［０］  〜Ｐ４［７］  と、第５部分積の符号ビットＳ４と、その反転ビットＩＳ４とで構成される。加算器３０４の第６入力は、第６部分積データＰ５［０］  〜Ｐ５［７］  と、第６部分積の符号の反転ビットＩＳ５と、論理値“１”のビットと、第５部分積データの最下位ビットに加算されるべき補数化ビットＢＣ４とで構成される。加算器３０４の第７入力は、第７部分積データＰ６［０］  〜Ｐ６［７］  と、第７部分積の符号の反転ビットＩＳ６と、論理値“１”のビットと、第６部分積データの最下位ビットに加算されるべき補数化ビットＢＣ５とで構成される。加算器３０４の第８入力は、第８部分積データＰ７［０］  〜Ｐ７［７］  と、第８部分積の符号の反転ビットＩＳ７と、論理値“１”のビットと、第７部分積データの最下位ビットに加算されるべき補数化ビットＢＣ６と、第２の最上位部分積補数化ビットＢＣ７とで構成される。加算器３０４の第８入力において、第２の最上位部分積補数化ビットＢＣ７は、第８部分積データの最下位ビットＰ７［０］  と、第７部分積データの最下位ビットに加算されるべき補数化ビットＢＣ６との間に挿入される。そして、上記第１〜第８入力を加算器３０４で加算することにより、２の補数形式の１６ビットの積和ＸＡ×ＹＡ＋ＸＢ×ＹＢが求められる。
【００４４】
図２２の積和演算装置は、図２０の真理値表に従って第１〜第３部分積を、図２１の真理値表に従って第４部分積を、図２０の真理値表に従って第５〜第８部分積を生成するものである。しかも、第８部分積データの最下位ビットＰ７［０］  に加算されるべき補数化ビット、すなわち第２の最上位部分積補数化ビットＢＣ７を第８部分積データの最下位ビットＰ７［０］  の１ビット下位の位置に二重に付加することによって、該第２の最上位部分積補数化ビットＢＣ７を第８部分積データの最下位ビットＰ７［０］  の位置に付加したのと同等の効果をあげている。これにより、８入力の加算器３０４で高速加算が達成される。
【００４５】
以上、本発明に係る図１の乗算装置と、図２２の積和演算装置との詳細を説明した。
【００４６】
なお、図１の乗算装置では第４の部分積発生器１１３と選択回路１０３とを別の回路ブロックとしたが、第４の部分積発生器１１３の中の５個の単位部分積発生器ＰＰＧ３の中に選択回路１０３の機能を持たせてもよい。図２２の積和演算装置の第４の部分発生器２１３と選択回路１０３ａとについても同様である。
【００４７】
また、図１の乗算装置の乗数エンコーダ１０１では２次のブースのアルゴリズムを採用したが、これに代えて、３次以上のブースのアルゴリズムや、その他の乗数コード化アルゴリズムを採用してもよい。図２２の積和演算装置の第１及び第２の乗数エンコーダ１０１ａ，１０１ｂについても同様である。
【００４８】
図１の乗算装置では、第４部分積データの最下位ビットＰ３［０］  （ビット位置Ｍ［６］  ）に加算されるべき補数化ビットに代わる補数化ビットＩＳ３Ｃを加算器１０４の第１入力のビット位置Ｍ［１１］（これは、ビット位置Ｍ［６］  に最も近い空きビット位置である）に付加するように、補数回路１０２で８ビット被乗数の下位５ビットデータＸ［４：０］  を２の補数化することとした。ただし、補数化ビットＩＳ３Ｃの付加ビット位置を変更すれば、これに応じて補数回路１０２における被乗数の補数化ビット数が変更され、かつ該補数回路１０２の桁上げに基づく補数化ビットＣ３［０］  ，Ｃ３［１］  の付加ビット位置が変更される。８ビット被乗数Ｘ［７：０］  の全体を２の補数化するようにしてもよい。被乗数Ｘ及び乗数Ｙのビット数は任意に変更可能である。図２２の積和演算装置でも、同様の変更が可能である。
【００４９】
【発明の効果】
以上説明してきたとおり、本発明の乗算装置によれば、最上位部分積データの最下位ビットと同じビット位置への最上位部分積補数化ビットの付加と同等の効果を、被乗数の下位ビットを２の補数化することにより得られる補数データと桁上げとを用いて、各部分積データの中で達成することとしたので、乗数のコード化処理の際に生じる被乗数側の空き時間を有効利用して、部分積の加算のための加算器の入力数を低減することができる。
【００５０】
また、本発明の積和演算装置によれば、第１の積ＸＡ×ＹＡの算出に上記本発明の乗算装置を用いたので、加算器の入力数が低減される。しかも、第２の積ＸＢ×ＹＢに係る最上位部分積補数化ビットの二重付加を採用したので、第２の積に係る加算器の入力数が低減され、かつ第２の積を算出するための乗算装置の構成が簡略化される。
【図面の簡単な説明】
【図１】本発明に係る乗算装置の構成例を示す概略ブロック図である。
【図２】図１中の乗数エンコーダの内部構成を示すブロック図である。
【図３】図１中の補数回路及び選択回路の詳細を示すブロック図である。
【図４】（ａ）及び（ｂ）は、図１中の第１の部分積発生器の内部構成を示すブロック図である。
【図５】（ａ）及び（ｂ）は、図１中の第２の部分積発生器の内部構成を示すブロック図である。
【図６】（ａ）及び（ｂ）は、図１中の第３の部分積発生器の内部構成を示すブロック図である。
【図７】（ａ）及び（ｂ）は、図１中の第４の部分積発生器の内部構成を示すブロック図である。
【図８】図２中の各ブースエンコーダの内部構成を示す回路図である。
【図９】図８のブースエンコーダの真理値表を示す図である。
【図１０】図３中の補数回路の内部構成を示す回路図である。
【図１１】図３中の選択回路の内部構成を示す回路図である。
【図１２】第１の単位部分積発生器の内部構成を示す回路図である。
【図１３】第２の単位部分積発生器の内部構成を示す回路図である。
【図１４】第３の単位部分積発生器の内部構成を示す回路図である。
【図１５】第４の単位部分積発生器の内部構成を示す回路図である。
【図１６】第５の単位部分積発生器の内部構成を示す回路図である。
【図１７】第６の単位部分積発生器の内部構成を示す回路図である。
【図１８】第７の単位部分積発生器の内部構成を示す回路図である。
【図１９】図１の乗算装置における部分積発生方法を示す図である。
【図２０】図１の乗算装置の第１、第２及び第３部分積の発生に係る真理値表を示す図である。
【図２１】図１の乗算装置の第４部分積の発生に係る真理値表を示す図である。
【図２２】本発明に係る積和演算装置の構成例を示す概略ブロック図である。
【図２３】図２２の積和演算装置における第１の積に係る部分積の発生方法を示す図である。
【図２４】図２２の積和演算装置における第２の積に係る部分積の発生方法を示す図である。
【図２５】従来の乗算装置における部分積発生方法を示す図である。
【符号の説明】
１０１，１０１ａ，１０１ｂ  乗数エンコーダ
１０２，１０２ａ  補数回路（ＣＯＭＰ）
１０３，１０３ａ  選択回路（ＳＥＬ）
１０４，３０４  多入力加算器
１１０〜１１３  部分積発生器
１１０ａ〜１１２ａ，２１３  部分積発生器
３１０〜３１３  部分積発生器
【図１】
0003558436.tif 000002
【図２】
0003558436.tif 000003
【図３】
0003558436.tif 000004
【図４】
0003558436.tif 000005
【図５】
0003558436.tif 000006
【図６】
0003558436.tif 000007
【図７】
0003558436.tif 000008
【図８】
0003558436.tif 000009
【図９】
0003558436.tif 000010
【図１０】
0003558436.tif 000011
【図１１】
0003558436.tif 000012
【図１２】
0003558436.tif 000013
【図１３】
0003558436.tif 000014
【図１４】
0003558436.tif 000015
【図１５】
0003558436.tif 000016
【図１６】
0003558436.tif 000017
【図１７】
0003558436.tif 000018
【図１８】
0003558436.tif 000019
【図１９】
0003558436.tif 000020
【図２０】
0003558436.tif 000021
【図２１】
0003558436.tif 000022
【図２２】
0003558436.tif 000023
【図２３】
0003558436.tif 000024
【図２４】
0003558436.tif 000025
【図２５】
0003558436.tif 000026