(57)【特許請求の範囲】
【請求項１】
半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器において、
最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁を全加算器および半加算器で構成し、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁を全加算器および半加算器のうち全加算器のみで構成する、
ことを特徴とする加算器。
【請求項２】
請求項１に記載の加算器において、
前記複数桁の入力は、符号付整数あるいは符号付小数である、
ことを特徴とする加算器。
【請求項３】
請求項１に記載の加算器において、
前記複数桁の入力は、乗算器の入力の部分積を演算する部分積演算回路の出力である、
ことを特徴とする加算器。
【請求項４】
請求項３に記載の加算器において、
前記乗算器の入力は、符号付整数あるいは符号付小数である、
ことを特徴とする加算器。
【請求項５】
請求項１に記載の加算器において、
前記複数桁の入力は、ＦＩＲ（Ｆｉｎｉｔｅ Ｉｍｐｕｌｓｅ Ｒｅｓｐｏｎｓｅ）フィルタにおける入力段の各乗算器の部分積を演算する部分積演算回路の出力である、
ことを特徴とする加算器。
【請求項６】
請求項５に記載の加算器において、
前記ＦＩＲフィルタの入力は、符号付整数あるいは符号付小数である、
ことを特徴とする加算器。
【請求項７】
請求項５に記載の加算器において、
前記ＦＩＲフィルタは、符号付整数あるいは符号付小数を係数とする、
ことを特徴とする加算器。
【請求項８】
請求項１に記載の加算器において、
前記演算ブロックの各段において、入力の個数が１つでない最も下位側の桁であって入力の個数が２つの桁に、半加算器を有する、
ことを特徴とする加算器。
【請求項９】
請求項８に記載の加算器において、
最終段の演算ブロックの１段前の演算ブロックに、半加算器を有する、
ことを特徴とする加算器。
【請求項１０】
請求項９に記載の加算器において、
最終段の演算ブロックの１段前の演算ブロックにおいて、入力の個数が１つである最も上位側の桁よりも下位側の桁に半加算器を有する、
ことを特徴とする加算器。
【請求項１１】
半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器の合成装置であって、
最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器を割り当て、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器のうち全加算器のみを割り当てる、
ことを特徴とする加算器の合成装置。
【請求項１２】
請求項１１に記載の加算器の合成装置において、
前記演算ブロックの各段において、入力の個数が１つでない最も下位側の桁であって入力の個数が２つの桁に、半加算器を割り当てる、
ことを特徴とする加算器の合成装置。
【請求項１３】
請求項１２に記載の加算器の合成装置において、
最終段の演算ブロックの１段前の演算ブロックに、半加算器を割り当てる、
ことを特徴とする加算器の合成装置。
【請求項１４】
請求項１３に記載の加算器の合成装置において、
最終段の演算ブロックの１段前の演算ブロックにおいて、入力の個数が１つである最も上位側の桁よりも下位側の桁に、半加算器を割り当てる、
ことを特徴とする加算器の合成装置。
【請求項１５】
半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器の合成方法であって、
最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器を割り当て、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器のうち全加算器のみを割り当てる工程を有する、
ことを特徴とする加算器の合成方法。
【請求項１６】
コンピュータに、請求項１５に記載の加算器の合成方法を実行させる、
ことを特徴とする加算器の合成プログラム。
【請求項１７】
請求項１６に記載の加算器の合成プログラムを記録した、
ことを特徴とする加算器の合成プログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２進数の演算回路、特に複数の２進数を入力して加算する多入力加算器の改良を図ったものに関する。
また、この改良された多入力加算器を自動的に合成する合成装置，合成方法，合成プログラムおよび合成プログラム記録媒体に関する。
【背景技術】
【０００２】
複数の入力データの加算を行う多入力加算器は、デジタル信号処理の基本演算回路として不可欠となっている。また、加算器などの基本演算回路がシステム全体の性能を決定する場合もあり、小型かつ高速な多入力加算器が要求されている。
【０００３】
これまでも加算器の構成については様々な特許が出願されている（例えば、特許文献１，特許文献２，特許文献３参照）。
【０００４】
図５は多入力加算器の従来例を示すものである。図５において、多入力加算器１は、演算ブロック２ａ，２ｂ，２ｃ，・・・，２ｎを有する。演算ブロック２ａは入力１から入力Ｎ（Ｎは２以上の整数）までの複数ビットのデータを入力とし、複数の演算ブロック２ａ，２ｂ，２ｃ，・・・，２ｎにおいて加算を行い、演算ブロック２ｎから出力ビットである出力１から出力Ｎまでの複数ビットのデータを出力する。多入力加算器においては、各ビット毎に複数のデータを取り扱う。
この入力の複数の２進数のデータは、例えば乗算器内で乗算結果を得る際に算出される部分積に相当する。
【０００５】
図６は乗算器の部分積の例を示すものである。この例では、２つの入力がともに６ビットの場合の乗算の部分積の例を示す。図６（ａ）に示すように、掛け算の筆算と同じように被乗数ａと乗数ｂのそれぞれの桁（ビット）ａi，ｂjで部分積ａiｂjが演算される。但し、ａi，ｂj＝０または１、ｉ，ｊ＝１〜６である。各ビットの重み付けを同じにしたまま、図６（ａ）を分かりやすい形に変形したものが図６（ｂ）である。
【０００６】
図６における部分積を加算し乗算結果を得るには、通常、半加算器あるいは全加算器が用いられる。図７は半加算器と全加算器の入出力を示したものである。この図７において、同図（ａ）は半加算器、同図（ｂ）は全加算器を示す。 
【０００７】
図７（ａ）の半加算器は２入力である。即ち、入力１，入力２に１桁の２進数（ビット）をそれぞれ入力し、これらの和と桁上がりの１桁の２進数をそれぞれ出力する。図７（ｂ）の全加算器は３入力である。即ち、入力１，入力２，入力３に２つの１桁の２進数および下位の桁からの１桁の桁上がりを入力し、これらの和と桁上がりの１桁の２進数をそれぞれ出力する。
【０００８】
図６の乗算器が出力する部分積同士の加算を行う場合に、図７の半加算器と全加算器とを用いて演算を行った例を図８に示す。図８において、同図（ａ）と（ｂ）の２つの例を示している。図８（ａ），（ｂ）は各演算ブロックの各ビット毎の入力と、加算器を適用可能な箇所を示している。また、演算ブロックの上の段から下の段の方へと時間的流れに従って順次加算が進行する様子を示している。
【０００９】
図８（ａ）の例は、演算ブロック２ａないし２ｄの各段において２ビット以上の桁、半加算器，全加算器を使用可能な桁すべてに半加算器と全加算器を割り当てるようにしたものである。
【００１０】
即ち、或る重み付けのビットが
１ビットからなる場合、半加算器も全加算器も割り当てず（ＭＳＢとＬＳＢの場合）、
２ビットからなる場合、半加算器を割り当て（２ビット目のＨＡ１と１０ビット目のＨＡ４）、
３ビットからなる場合、全加算器を割り当て（３ビット目のＦＡ１と９ビット目のＦＡ８）、
４ビットからなる場合、３ビットに全加算器を割り当て（４ビット目のＦＡ２と８ビット目のＦＡ７）、
５ビットからなる場合、全加算器と半加算器とを１つずつ割り当て（５ビット目のＦＡ３およびＨＡ２と７ビット目のＦＡ６およびＨＡ３）、
６ビットからなる場合、全加算器を２つ割り当てる（６ビット目のＦＡ４とＦＡ５）ようにしている。
【００１１】
この例では、演算ブロックは４段必要である。
この図８（ａ）において、演算ブロック１段目（２ａ）には半加算器ＨＡ１〜ＨＡ４および全加算器ＦＡ１〜ＦＡ８を割り当て、演算ブロック２段目（２ｂ）には半加算器ＨＡ５〜ＨＡ８および全加算器ＦＡ９〜ＦＡ１３を割り当て、演算ブロック３段目（２ｃ）には半加算器ＨＡ９〜ＨＡ１３および全加算器ＦＡ１４〜ＦＡ１６を割り当てている。
【００１２】
図８（ｂ）の例では、全加算器を使用可能な箇所すべてに割り当て、最下位のビットから見て半加算器が使用可能な最も下位のビット側にのみ半加算器を割り当てている。この例では、６段の演算ブロック２ａないし２ｆが必要である。
【００１３】
この図８（ｂ）において、演算ブロック１段目（２ａ）には半加算器ＨＡ１０１および全加算器ＦＡ１０１〜ＦＡ１０８を割り当て、演算ブロック２段目（２ｂ）には半加算器ＨＡ１０２および全加算器ＦＡ１０９〜ＦＡ１１４を割り当て、演算ブロック３段目（２ｃ）には半加算器ＨＡ１０３および全加算器ＦＡ１１５〜ＦＡ１１７を割り当て、演算ブロック４段目（２ｄ）には半加算器ＨＡ１０４および全加算器ＦＡ１１８〜ＦＡ１１９を割り当て、演算ブロック５段目（２ｅ）には半加算器ＨＡ１０５および全加算器ＦＡ１２０を割り当てている。
【００１４】
図８（ｂ）の構成では、演算ブロックの段数では図８（ａ）よりも多いが、半加算器と全加算器の合計個数は２５個であり、図８（ａ）の２９個よりも少ない。ここで、演算ブロックの段数は遅延時間を反映し、演算ブロックを構成する半加算器と全加算器の個数は回路規模を反映する。なお、全加算器の回路規模は半加算器より大きくなるが、１．５倍までにはならない。
【００１５】
このように、図８（ａ）の回路構成は使用可能な箇所すべてに全加算器および半加算器を使用するため演算ブロックの段数が最小になり高速動作に適するが、回路規模は大きくなる。
【００１６】
一方、図８（ｂ）の回路構成は、最下位ビットから見て半加算器を使用可能な最初のビットで使用するため、桁上がりを伴う入力ビット数が少なくて済み回路規模を抑えられるが、演算ブロックの段数は増加する。従って、小型化を必要とする回路には適するが、高速動作には適さない。
【００１７】
ここで、演算ブロックの２段目の構成の仕方について、図９および図１０を用いて説明する。図９および図１０は説明の簡単のため、図８（ａ）の演算ブロックの１段目の加算結果、およびこれに基づく２段目の構成の仕方を例にとって示している。図８（ａ）の２段目以降および図８（ｂ）の２段目以降も同様の手順により構成できる。
【００１８】
図９および図１０において、演算ブロック１段目の最下位ビットは１ビットであり、加算の対象が存在しないので、そのまま演算ブロック２段目の最下位ビットとなる。演算ブロック２段目の第２ビット目は演算ブロック１段目の第２ビットにおける半加算器ＨＡ１により得られた和がこれに充当される。この半加算器ＨＡ１により得られた桁上がりは演算ブロック２段目の第３ビット目に充当される。この第３ビット目は演算ブロック１段目の第３ビットの全加算器ＦＡ１により得られた和も充当される。従って、この演算ブロックの２段目の第３ビット目は２ビットで構成され、ここに半加算器を割り当てることができる。以下、同様の操作を順次繰り返すことで、この演算ブロック２段目およびそれ以降の各段を構成することができる。
【００１９】
本明細書では、この図９の中央に示すように、次段の演算ブロックの入力を確定することを「構成」と呼び、図９の下側に示すように、入力を確定した演算ブロックに加算器を割り当てることを「構築」と呼ぶ。即ち、構成が終了した段階では単に前段の演算ブロックと注目段の演算ブロックとの入出力関係が確定しただけである。一方、構築が終了した段階では注目段に加算器が割り当てられるため、実際に演算ブロックとして動作可能なものが得られる。
【００２０】
図１０はこの図９の演算ブロック２段目が構成された段階を実現するために必要なハードウエアの原理的な構成を示す。図において、演算ブロック１段目の最下位ビットはレジスタＲ１１１を有する。２ビット目はレジスタＲ１２１，Ｒ１２２およびこれらに一時記憶された１ビットのデータを加算する半加算器ＨＡ１を有する。３ビット目はレジスタＲ１３１，Ｒ１３２，Ｒ１３３およびこれらに一時記憶された１ビットのデータを加算する全加算器ＦＡ１を有する。
【００２１】
また、演算ブロック２段目の最下位ビットは、演算ブロック１段目のレジスタＲ１１１から出力される１ビットを記憶するレジスタＲ２１１を有する。演算ブロック２段目の２ビット目は、演算ブロック１段目の半加算器ＨＡ１から出力される和を記憶するレジスタＲ２２１を有する。演算ブロック２段目の３ビット目は、演算ブロック１段目の半加算器ＨＡ１から出力される桁上げ出力を記憶するレジスタＲ２３１と、演算ブロック１段目の全加算器ＦＡ１から出力される和を記憶するレジスタＲ２３２とを有する。この３ビット目より上位ビットの構成については説明を省略する。
【００２２】
ところで、図８（ａ）の演算ブロックの４段目（２ｄ）および図８（ｂ）の演算ブロックの６段目（２ｆ）では全ての桁の入力ビットが高々２ビットとなっている。本明細書では、これら演算ブロックの全ての桁の入力が高々２ビットとなっている段を、「最終段」と呼ぶ。
【００２３】
この最終段は、例えばＣＬＡ（Ｃａｒｒｙ  Ｌｏｏｋ  Ａｈｅａｄ）法を適用し、最終段の内部で加算を行うように構成することで、多入力加算器の最終的な和を得ることができる。
【００２４】
図１１はこの図８（ａ）の演算ブロック４段目（＝最終段）の出力の加算をＣＬＡ法により行う場合を示す。
この図１１に示すように、最下位ビットから第４ビット目までの各ビットは加数が存在しないので、各ビットをそのまま加算結果の最下位ビットから第４ビット目までとする。第５ビット目は被加数と加数とが１つずつ存在するので、その和を加算結果の第５ビット目とする。また、その桁上がりを第６ビットにおける加数の１つとする。第６ビットではこの第５ビットからの桁上がりに本来の被加数と加数とを加算し、その和を加算結果の第６ビット目とする。また、その桁上がりを第７ビットにおける加数の１つとする。
【００２５】
以下、同様の処理を繰り返し、第１２ビット目における和を第１２ビット目の加算結果とし、その桁上がりを加算結果の最上位ビットとして、これを第１２ビット目の加算結果から最下位ビットの加算結果の先頭に付加したものが最終的な加算結果となる。
【特許文献１】特開平５−６２６２公報（第２頁  図１）
【特許文献２】特開平５−２３３２２６公報（第２頁−第３頁  図１）
【特許文献３】特開平６−３４８４５７公報（第５頁−第７頁  図１）
【発明の開示】
【発明が解決しようとする課題】
【００２６】
ところで、従来の多入力加算器においては、回路の小型化と高速化を同時に実現することは容易ではなく、図８（ａ），図８（ｂ）に示すように、演算ブロックの段数と、半加算器および全加算器の個数のいずれか一方しか少なくできないという課題があった。
この発明は、前記従来技術における課題を解決するためになされたもので、回路の小型化と高速化を同時に達成でき、演算ブロックの段数と半加算器および全加算器の個数を同時に削減することが可能な、多入力加算器、およびその合成装置、合成方法、合成プログラム、合成プログラム記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００２７】
本願の請求項１の発明に係る加算器は、半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器において、最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁を全加算器および半加算器で構成し、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁を全加算器および半加算器のうち全加算器のみで構成することを特徴とするものである。
【００２８】
本発明の請求項１による加算器によれば、最終段の２段前の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００２９】
また、本願の請求項２の発明に係る加算器は、請求項１に記載の加算器において、前記複数桁の入力は、符号付整数あるいは符号付小数であることを特徴とするものである。
【００３０】
本発明の請求項２による加算器によれば、符号付整数あるいは符号付小数を入力とする加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００３１】
また、本願の請求項３の発明に係る加算器は、請求項１に記載の加算器において、前記複数桁の入力は、乗算器の入力の部分積を演算する部分積演算回路の出力であることを特徴とするものである。
【００３２】
本発明の請求項３による加算器によれば、部分積を入力とする加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００３３】
また、本願の請求項４の発明に係る加算器は、請求項３に記載の加算器において、前記乗算器の入力は、符号付整数あるいは符号付小数であることを特徴とするものである。
【００３４】
本発明の請求項４による加算器によれば、符号付整数あるいは符号付小数の部分積を入力とする加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００３５】
また、本願の請求項５の発明に係る加算器は、請求項１に記載の加算器において、前記複数桁の入力は、ＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタにおける入力段の各乗算器の部分積を演算する部分積演算回路の出力であることを特徴とするものである。
【００３６】
本発明の請求項５による加算器によれば、ＦＩＲフィルタの入力段の各乗算器の部分積を入力とする加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００３７】
また、本願の請求項６の発明に係る加算器は、請求項５に記載の加算器において、前記ＦＩＲフィルタの入力は、符号付整数あるいは符号付小数であることを特徴とするものである。
【００３８】
本発明の請求項６による加算器によれば、ＦＩＲフィルタの入力段の各乗算器の部分積として符号付整数あるいは符号付小数を入力する加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００３９】
また、本願の請求項７の発明に係る加算器は、請求項５に記載の加算器において、前記ＦＩＲフィルタは、符号付整数あるいは符号付小数を係数とすることを特徴とするものである。
【００４０】
本発明の請求項７による加算器によれば、ＦＩＲフィルタの入力段の各乗算器の部分積として符号付整数あるいは符号付小数を入力する加算器であっても回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００４１】
また、本願の請求項８の発明に係る加算器は、請求項１に記載の加算器において、前記演算ブロックの各段において、入力の個数が１つでない最も下位側の桁であって入力の個数が２つの桁に、半加算器を有することを特徴とするものである。
【００４２】
本願の請求項８の発明に係る加算器によれば、次段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００４３】
また、本願の請求項９の発明に係る加算器は、請求項８に記載の加算器において、最終段の演算ブロックの１段前の演算ブロックに、半加算器を有することを特徴とするものである。
【００４４】
本願の請求項９の発明に係る加算器によれば、最終段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００４５】
また、本願の請求項１０の発明に係る加算器は、請求項９に記載の加算器において、最終段の演算ブロックの１段前の演算ブロックにおいて、入力の個数が１つである最も上位側の桁よりも下位側の桁に半加算器を有することを特徴とするものである。
【００４６】
本願の請求項１０の発明に係る加算器によれば、入力の個数が１つである最上位のビットよりも下位のビットにおいて半加算器を有するようにしたので、最終段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器が得られる。
【００４７】
また、本願の請求項１１の発明に係る加算器の合成装置は、半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器の合成装置であって、最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器を割り当て、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器のうち全加算器のみを割り当てることを特徴とするものである。
【００４８】
本願の請求項１１の発明に係る加算器の合成装置によれば、最終段の２段前の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成装置が得られる。
【００４９】
また、本願の請求項１２の発明に係る加算器の合成装置は、請求項１１に記載の加算器の合成装置において、前記演算ブロックの各段において、入力の個数が１つでない最も下位側の桁であって入力の個数が２つの桁に、半加算器を割り当てることを特徴とするものである。
【００５０】
本願の請求項１２の発明に係る加算器の合成装置によれば、次段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成装置が得られる。
【００５１】
また、本願の請求項１３の発明に係る加算器の合成装置は、請求項１２に記載の加算器の合成装置において、最終段の演算ブロックの１段前の演算ブロックに、半加算器を割り当てることを特徴とするものである。
【００５２】
本願の請求項１３の発明に係る加算器の合成装置によれば、最終段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成装置が得られる。
【００５３】
また、本願の請求項１４の発明に係る加算器の合成装置は、請求項１３に記載の加算器の合成装置において、最終段の演算ブロックの１段前の演算ブロックにおいて、入力の個数が１つである最も上位側の桁よりも下位側の桁に、半加算器を割り当てることを特徴とするものである。
【００５４】
本願の請求項１４の発明に係る加算器の合成装置によれば、最終段の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成装置が得られる。
【００５５】
また、本願の請求項１５の発明に係る加算器の合成方法は、半加算器および全加算器の少なくとも一方を含みそれぞれ複数桁の入力を有する演算ブロックを複数段有する加算器の合成方法であって、最終段の演算ブロックの３段前の演算ブロックにおいて、全加算器の桁上がりが２つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器を割り当て、全加算器の桁上がりが１つある桁の一つ上位の桁であって入力の個数が５つである桁に全加算器および半加算器のうち全加算器のみを割り当てる工程を有することを特徴とするものである。
【００５６】
本願の請求項１５の発明に係る加算器の合成方法によれば、最終段の２段前の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成方法が得られる。
【００５７】
また、本願の請求項１６の発明に係る加算器の合成プログラムは、コンピュータに、請求項１５に記載の加算器の合成方法を実行させることを特徴とするものである。
【００５８】
本願の請求項１６の発明に係る加算器の合成プログラムによれば、最終段の２段前の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成プログラムが得られる。
【００５９】
また、本願の請求項１７の発明に係る加算器の合成プログラムは、請求項１６に記載の加算器の合成プログラムを記録したことを特徴とするものである。
【００６０】
本願の請求項１７の発明に係る加算器の合成プログラム記録媒体によれば、最終段の２段前の演算ブロックの該当ビットへの入力数、ひいては演算ブロックの段数が減少し、回路規模の縮小と高速化の両立が可能となる多入力加算器を自動合成できる合成プログラム記録媒体が得られる。
【発明の効果】
【００６１】
この発明に係る加算器によれば、多入力加算器を構成する際に、半加算器の使用箇所を限定するようにしたので、小型かつ高速な多入力加算器を実現することが可能となる効果がある。
【００６２】
また、この発明に係る加算器の合成装置，合成プログラム，合成プログラム記録媒体によれば、多入力加算器を合成する際に、半加算器の使用箇所を限定するようにしたので、小型かつ高速な多入力加算器を合成することが可能な合成装置，合成プログラム，合成プログラム記録媒体が得られる効果がある。
【発明を実施するための最良の形態】
【００６３】
以下、本発明の実施の形態について、図面を参照しながら説明する。
（実施の形態１）
まず、この発明の実施の形態１による多入力加算器について、図１，図２を用いて説明する。
図１はこの発明の実施の形態１による多入力加算器のブロック図である。図１において、多入力加算器１は演算ブロック２ａ，２ｂ，２ｃ，・・・，２ｎをこの順に縦続接続することで構成されている。部分積演算回路３は演算ブロック２ａの前段に設けられ、部分積を求める演算を行う。これら部分積演算回路３と多入力加算器１とは入力ａ，ｂの乗算を行う乗算器を構成している。
【００６４】
次に動作について説明する。部分積演算回路３は図６（ａ），図６（ｂ）に示すような例えば２つの多ビットのデータａ，ｂを入力としてその部分積ａiｂjを求め、演算ブロック２ａ，・・・，２ｎは入力１から入力Ｎ（＝部分積演算回路３の出力）の加算を出力ビットである出力１から出力Ｎまでのデータを出力する。この加算は、例えば図６（ａ），図６（ｂ）の２ビット目におけるａ2ｂ1＋ａ1ｂ2，３ビット目におけるａ3ｂ1＋ａ2ｂ2＋ａ1ｂ3のように、ビットの重みが同じ部分積同士の加算を行うものである。
【００６５】
次に演算ブロックの構築について説明する。図２は６ビットの多入力加算器の演算ブロックを構築する例を示している。
図２において、各演算ブロックの２進数のデータの加算においては、半加算器および全加算器を用いる。演算ブロック１段目（２ａ）は半加算器ＨＡ２０１，ＨＡ２０２を有するとともに、全加算器ＦＡ２０１ないしＦＡ２０８を有する。また、演算ブロック２段目（２ｂ）は半加算器ＨＡ２０３および全加算器ＦＡ２０９ないしＦＡ２１４を有する。さらに、演算ブロック３段目（２ｃ）はＨＡ２０４，ＨＡ２０５および全加算器ＦＡ２１５ないしＦＡ２１８を有する。
【００６６】
半加算器および全加算器は以下に示す条件で使用する。
i)  まず、全加算器を使用可能な箇所すべてで使用する。例えば、図２の演算ブロック１段目（２ａ）においては、３ビット以上の入力が存在する第３ビット目から第９ビット目において、全加算器ＦＡ２０１ないしＦＡ２０８を使用する。ここで、図７に示したように、全加算器は３つのデータを入力とし２つのデータを出力とする。即ち、本来の２ビットの入力および１ビットのキャリー（桁上がり）を入力とし、１ビットの加算出力および１ビットのキャリーアウトを出力する。従って各重み付けのビットにおいて、データを３つ毎に全加算器の入力とする。
【００６７】
ii)  次に、半加算器が使用可能な最も下位側のビットの箇所でのみ半加算器を使用する。
例えば、図２の演算ブロック１段目（２ａ）においては、下位から２ビット目の位置で半加算器ＨＡ２０１を使用する。ここまでは、図８（ｂ）の構成方法と同じである。
【００６８】
iii)  次に、
ａ）  演算ブロックの最終段の３段前の演算ブロックにおいて、
ｂ）  あるビットの入力数が５つで、
ｃ）  かつあるビットの下位からの桁上がりのデータの個数が２つであるビット位置において、全加算器を使用した後に半加算器を使用可能な箇所で使用する。
【００６９】
例えば図２の場合においては、演算ブロックの最終段（２ｄ）の３つ前の段である演算ブロック１段目（２ａ）における最下位ビットＬＳＢから７つ目のビット位置である。このビット位置においては、データの入力数が５つで、かつ下位からの桁上がりのデータの個数が２つ（６つ目のビット位置では全加算器を２つ使用しているため）であり、この箇所で半加算器ＨＡ２０２を使用する。
【００７０】
ｄ）  また、演算ブロックの最終段の１つ前の段において、半加算器を使用可能な箇所のすべてで使用する。
【００７１】
ｅ）  但しｄ）の場合に、下位のビットからの桁上がりがない桁では半加算器を使用しない。
【００７２】
図２の場合は、演算ブロック３段目（２ｃ）がｄ）に該当し、最下位ビットＬＳＢから６番目のビットの桁において半加算器ＨＡ２０５を使用する。また、１１番目のビットの桁においては半加算器を使用しない。これは１０番目のビットの桁においては入力数が１つなので、桁上がりが生じないことが理由である。
【００７３】
なお、演算ブロック３段目（２ｃ）において、半加算器ＨＡ２０４を４ビット目に使用しているのは、上記ii)の規則に基づくものである。
【００７４】
結果として、図２の場合においては、全加算器の個数が１８個、半加算器の個数が５個、演算ブロックの段数が４段となる。
【００７５】
このようにして得られた図２の構成例と、図８の（ａ），（ｂ）の構成例を比較すると、図２の構成例では、演算ブロックの段数は、図８（ａ）と同じで、半加算器および全加算器の個数は、図８（ｂ）より少ない、ということが分かる。つまり小型かつ高速のどちらも実現できる構成となっていることが分かる。
【００７６】
これは、図８（ｂ）の演算ブロック１段目（２ａ）において、５入力の箇所に半加算器を設けることにより、演算ブロック２段目（２ｂ）の当該ビットを４ビット以下にでき、また、図８（ｂ）の演算ブロック３段目（２ｃ）において、下位ビットからの桁上がりがある箇所においても半加算器を使用することにより、演算ブロック４段目の当該ビットを２ビット以下にでき、これらが演算ブロックの段数を減少させ、加算器の個数を減少させるからである。
【００７７】
このように、本実施の形態１によれば、複数段の演算ブロックからなる多入力加算器において、各演算ブロックにおいて使用可能な全ての箇所で全加算器を使用するとともに、各演算ブロックにおいて半加算器を最も下位ビット側のみで使用し、さらに、最終の演算ブロックの３段前の演算ブロックにおいて全加算器の桁上がりが２つある桁の１つ上位の桁で入力の個数が５つある箇所に半加算器を使用し、最終の演算ブロックの１段前の演算ブロックにおいて、下位ビットからの桁上がりがある桁で半加算器を使用するようにしたので、演算ブロックの段数が少なく遅延時間を短縮できるとともに、回路を構成する全加算器および半加算器の個数を減少でき、演算時間の削減および回路規模の削減を両立できる多入力加算器を実現できる効果がある。
【００７８】
なお、実施の形態１では入力が６ビットの多入力加算器を例にとって説明したが、入力ビット数が６ビット以上に増えた場合でも、半加算器および全加算器の使用条件として、上述の条件i)ないしiii)と同じ規則を使用することにより、小型かつ高速の回路が実現できる。この効果は入力ビット数が増えるほど大きくなり、演算速度を向上させながら回路規模を例えば従来の１／３に激減させることが可能となる。
【００７９】
この場合、後段の演算ブロックほど入力ビット数が減少するので、入力が６ビットとなった段以降は図２の演算ブロック（２ａ）ないし（２ｄ）と同様の構成にすればよい。
【００８０】
また、この発明の実施の形態１による多入力加算器の構成は、図３，図４に示す回路における多入力加算器にも適用できる。
【００８１】
図３は多入力加算器のブロック図である。図３において、１は多入力加算器、２ａ，２ｂ，２ｃ，・・・，２ｎは演算ブロック、３ａ，３ｂ，３ｃ，３ｄは部分積演算回路である。
【００８２】
図３において、図１の回路との違いは、部分積演算回路が複数存在することである。複数の部分積演算回路においてそれぞれ部分積を演算し、それぞれのビット毎の複数の出力を多入力加算器の入力とする。この構成は例えばＦＩＲフィルタなどの演算器において有効である。
【００８３】
図４は通常のＦＩＲフィルタの構成例である。図４において、４ａ，４ｂ，４ｃ，４ｄは乗算器、５ａ，５ｂ，５ｃは加算器である。通常のＦＩＲフィルタは図のように構成されており、各入力と各係数を各乗算器で乗算し、その出力を加算器で順次加算する。加算器は通常２入力であるのでＦＩＲフィルタの入力数（乗算器の出力）が増加するほど、加算器の段数および加算器の個数が増加する。つまりＦＩＲフィルタの回路規模が大きくなる。
【００８４】
しかしながら、加算器５ａ，５ｂ，５ｃからなる部分１は多入力加算器であるので、これを図２に示す多入力加算器と同様の構成とすることにより、その回路規模を削減できる。従って、ＦＩＲフィルタの回路規模の削減を行うことが可能となる。また、乗算器４ａ，４ｂ，４ｃ，４ｄを図３（あるいは図１）に示すように部分積演算回路と多入力加算器とから構成し、これら各乗算器内の多入力加算器を図２における多入力加算器と同様の構成とすることにより、その回路規模をさらに削減できる。
【００８５】
さらに、実施の形態１では多入力加算器の入力は正の２進数（整数）であるとしたが、符号付き整数や小数、さらには符号付き小数であるとしてもよい。
【００８６】
（実施の形態２）
以下では、このような回路規模の減少および演算速度の高速化を両立できる多入力加算器を自動的に合成する自動回路合成装置について説明する。
【００８７】
図１２および図１３は、本発明の実施の形態２による自動回路合成装置が実行する処理の流れを示す。
この図１２および図１３に示されたフローチャートは、いわゆる２パス方式により、回路規模が小さく高速処理が可能な多入力加算器を有する乗算器を出力する。
【００８８】
２パス方式としたのは、以下の理由による。即ち、実施の形態１のiii)において、最終段から３段目および最終段から１段目において、半加算器を図８（ｂ）の割り当て箇所以外でも使用することで演算段数の削減を図っているが、多入力加算器を自動合成する場合、この最終段が何段目となるかを事前に取得しておく必要がある。この前処理のために１パス目を設けている。この１パス目では、図８（ａ）の演算ブロック１段目ないし４段目を構築するのと同様の処理を実行している。
【００８９】
図１４はこの自動回路合成装置が実行するのと同様の自動回路合成方法を記述したプログラムを実行する情報処理装置を示す。この情報処理装置はワークステーションの他、パソコンやメインフレーム等であってもよい。
【００９０】
図において、ワークステーションＷＳはＣＰＵ  ＷＳ１，メモリ  ＷＳ２，ＨＤＤ  ＷＳ３，Ｉ／Ｏ  ＷＳ４およびこれらを接続するバス  ＷＳ５を有し、周辺機器としてモニタＭＮ，キーボードＫＢおよびマウスＭＳを有する。
【００９１】
図１５は図１４のワークステーションＷＳにおけるＣＰＵ  ＷＳ１，メモリ  ＷＳ２，ＨＤＤ  ＷＳ３，Ｉ／Ｏ  ＷＳ４およびバス  ＷＳ５により実現される自動回路合成装置のブロック構成を示す。
【００９２】
図において、この自動回路合成装置１００は、制御部１０１，入力部１０２，部分積演算部１０３，半加算器割当可能箇所検索部１０４，全加算器割当可能箇所検索部１０５，半加算器割当部１０６，全加算器割当部１０７，演算ブロック該当段構築部１０８，演算ブロック構成部１０９，演算ブロック次段構築部１１０，判定部１１１，最終段構築部１１２，出力部１１３を有する。
【００９３】
以下、図１２，図１３に示されたフローチャート、および図１４，図１５を用いて、自動回路合成装置が実行する処理の流れを説明する。
まず、図１２に示すフローチャートにより１パス目を実行する。この１パス目では、図１４に示すキーボードＫＢより自動回路合成しようとする乗算器の被乗数ｎと乗数ｍ（ｍ，ｎは正の整数）を入力する（ステップ２０１参照）。入力部１０２は、この乗算器の被乗数ｎと、乗数ｍを、自動回路合成装置１００内に取り込む。
【００９４】
部分積演算部１０３は、ｎ×ｍの部分積を演算し（ステップ２０２参照）、図６（ａ）に示すように、各重みのビットごとにビットの重みが等しい部分積を集めることにより、演算ブロック第１段目となるべき、全加算器および半加算器が割り当てられる以前の状態（図６（ａ），図６（ｂ）参照）を構成する（ステップ２０３参照）。この状態は実際には図６（ａ）または図６（ｂ）に対応するデータ構造として実現する。
【００９５】
このデータ構造として、例えば（ｉ，ｊ，ｋ）のようなベクトルを用いることが可能である。ここで、ｉは演算ブロック第ｉ段目を、ｊは演算ブロック第ｉ段目の第ｊビットを、ｋは演算ブロック第ｉ段目の第ｊビットの入力数を、それぞれ表わすものとする。
【００９６】
次に、制御部１０１はｉ＝１とし（ステップ２０４参照）、全加算器割当可能箇所検索部１０５、および半加算器割当可能箇所検索部１０４は、図６（ａ）（図６（ｂ）でもよい）の多入力加算に対応するデータ構造の中から全加算器および半加算器が割当て可能な箇所を検索する。この検索は図８（ａ）中の演算ブロック１段目に示すように使用可能な全ての箇所で全加算器および半加算器が検出されるように行う（ステップ２０５，２０６参照）。このステップ２０５，２０６は何れを先に実行してもよく、同時に実行してもよい。次に、全加算器割当部１０７および半加算器割当部１０６はこのように検出された全加算器および半加算器を割り当て、演算ブロック該当段構築部１０８はこの割り当てに基づいて演算ブロック１段目を構築する（ステップ２０７参照）。
【００９７】
次に制御部１０１はｊ＝ｉ＋１（＝２）とし（ステップ２０８参照）、演算ブロック構成部１０９は演算ブロック第２段目となるべき、全加算器および半加算器が割り当てられる以前の状態を構成する（ステップ２０９参照）。
【００９８】
判定部１１１は演算ブロック第２段目となるべき部分に３入力以上の箇所は存在しないか否かを判定する（ステップ２１０参照）。この第２段目となるべき部分では、３入力以上となる箇所が存在するので、制御部１０１はｉ＝ｊとして（ステップ２１１参照）、ステップ２０５に制御を戻し、第２段目となるべき部分に対し、第１段目と同様に全加算器と半加算器の割り当てを行い、第２段目の構築を行う。
【００９９】
以下、同様にして、第２段目以降の構成，構築を行い、ステップ２１０にて３入力以上の箇所が存在しないと判定された場合、最終段構築部１１２はＣＬＡ法により図１１に示すような演算ブロック最終段を構築する（ステップ２１２参照）。制御部１０１はこのときの演算ブロックの段数をｋ（ｋは２以上の整数）としてメモリ等に記憶する（ステップ２１２参照）。
【０１００】
以上で、多入力加算器の最終段が第何段目に該当するかを判定するための、１パス目が終了した。この１パス目で構築された演算ブロックの各段は、実際の自動合成出力としては使用しない。
【０１０１】
次に、図１３に示すフローチャートにより２パス目を実行する。この２パス目では、本来の処理、即ち、多入力加算器を構成する演算ブロックの各段を実際に構築するための処理を行う。
【０１０２】
ステップ２１３ないしステップ２１５はステップ２０３ないしステップ２０５と同様の処理を行う。次に、制御部１０１の制御により、半加算器割当可能箇所検索部１０４は、１パス目と異なり、演算ブロック第１段の最も下位ビット側の２入力の箇所のみに半加算器を割り当てる（ステップ２１６参照）。
【０１０３】
次に、判定部１１１はｉがｋ−３に等しいか否かを判定する（ステップ２１７参照）。演算ブロックの第１段目の場合、ｉがｋ−３に等しいので、半加算器割当可能箇所検索部１０４は演算ブロックの第１段の５入力で下位からの桁上がりが２つ存在する箇所に半加算器を割り当てる（ステップ２１８参照）。また、ｉがｋ−３に等しくない場合は、ステップ２１９に移行する。
【０１０４】
ステップ２１９では、判定部１１１はｉがｋ−１に等しいか否かを判定する。演算ブロックの第１段目の場合、ｉがｋ−１に等しくないため、ステップ２２１に移行する。ｉがｋ−１に等しい場合は、半加算器割当可能箇所検索部１０４は演算ブロックの当該段の桁上がりが存在しない桁以外の全ての使用可能な箇所に半加算器を割り当てる（ステップ２２０参照）。ステップ２２１では、演算ブロック該当段構築部１０８は以上の割り当てに基づいて演算ブロック１段目を構築する。
【０１０５】
次に、ステップ２２２ないしステップ２２５は１パス目のステップ２０８ないしステップ２１１と同様の処理を行う。
以下、同様にして、第２段目以降の構成，構築を行い、ステップ２２４にて３入力以上の箇所が存在しないと判定された場合、最終段構築部１１２はＣＬＡ法により図１１に示すような演算ブロック最終段を構築する（ステップ２２６参照）。このようにして構成，構築された演算ブロックの全ての段は出力部１１３からモニタＭＮやプリンタにより表示，印字されたり、ネットワーク等を介して外部に出力される。
【０１０６】
このように、本実施の形態２によれば、複数段の演算ブロックからなる多入力加算器の自動回路合成装置において、各演算ブロックにおいて使用可能な全ての箇所で全加算器を割り当てることで、最終段が何段目に該当するかを自動的に導出し、その後、改めて複数段の演算ブロックの各段を構成する際、前述のi)ないしiii)の規則、即ち、各演算ブロックにおいて使用可能な全ての箇所で全加算器を使用するとともに、各演算ブロックにおいて半加算器を最も下位ビット側のみで使用し、さらに、最終の演算ブロックの３段前の演算ブロックにおいて全加算器の桁上がりが２つある桁の１つ上位の桁で入力の個数が５つある箇所に半加算器を使用し、最終の演算ブロックの１段前の演算ブロックにおいて、下位ビットからの桁上がりがある桁で半加算器を使用する、という規則を自動的に適用して各演算ブロックを構築するようにしたので、煩瑣で長時間を要し誤りを生じ易い手作業によることなく、演算時間の削減および回路規模の削減を両立できる多入力加算器を有する乗算器を自動的に合成できる効果がある
【０１０７】
なお、実施の形態２では、多入力加算器を自動合成する自動回路合成装置を示したが、この装置が実行している合成方法と同様の方法として提供してもよく、またこの方法を記述したプログラム、あるいはこのプログラムを記録した媒体として提供してもよい。
【０１０８】
また、実施の形態２では、最終段が何段目となるかを得るために図８（ａ）の演算ブロックを構築する方法を採用したが、この方法以外の方法を用いてもよい。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかる多入力加算器、およびその合成装置、合成方法、合成プログラム、合成プログラム記録媒体は、半加算器と全加算器の使用箇所を限定することにより、小型かつ高速な多入力加算器を実現することが可能であり、得られた加算器は乗算器やＦＩＲフィルタにおける多入力加算器として有用である。また光学式記録情報装置等や、通信等の用途の他、あらゆるデジタル信号処理の基本演算装置として利用可能である。
【図面の簡単な説明】
【０１１０】
【図１】図１は、本発明の実施の形態１による多入力加算器の構成を示すブロック図である。
【図２】図２は、本発明の実施の形態１による多入力加算器の演算ブロックを示す図である。
【図３】図３は、本発明の実施の形態１，２による多入力加算器の構成を示すブロック図である。
【図４】図４は、ＦＩＲフィルタの構成を示す回路図である。
【図５】図５は、従来の多入力加算器の構成を示すブロック図である。
【図６】図６は、乗算器が行う部分積演算を示す模式図である。
【図７】図７は、半加算器および全加算器が行う演算を示す模式図である。
【図８】図８は、乗算器の演算ブロックの一例を示す図である。
【図９】図９は、演算ブロック１段目から２段目を構築する方法を示す図である。
【図１０】図１０は、演算ブロック２段目の構成を示す図である。
【図１１】図１１は、ＣＬＡ法により演算ブロック最終段に加算器を割り当てる方法を示す図である。
【図１２】図１２は、多入力加算器の自動回路合成装置が実行する処理の１パス目を示す図である。
【図１３】図１３は、多入力加算器の自動回路合成装置が実行する処理の２パス目を示す図である。
【図１４】図１４は、自動回路合成方法を記述したプログラムを実行する情報処理装置を示す図である。
【図１５】図１５は、多入力加算器の自動回路合成装置のブロック構成を示す図である。
【符号の説明】
【０１１１】
１  多入力加算器
２ａ，２ｂ，２ｃ，・・・，２ｎ  演算ブロック
３，３ａ，３ｂ，３ｃ，３ｄ  部分積演算回路
４ａ，４ｂ，４ｃ，４ｄ  乗算器
５ａ，５ｂ，５ｃ  加算器
ＦＡ２０１，ＦＡ２０２，ＦＡ２０３，ＦＡ２０４，ＦＡ２０５，ＦＡ２０６，ＦＡ２０７，ＦＡ２０８，ＦＡ２０９，ＦＡ２１０，ＦＡ２１１，ＦＡ２１２，ＦＡ２１３，ＦＡ２１４，ＦＡ２１５，ＦＡ２１６，ＦＡ２１７，ＦＡ２１８，ＦＡ１，ＦＡ２，ＦＡ３，ＦＡ４，ＦＡ５，ＦＡ６，ＦＡ７，ＦＡ８，ＦＡ９，ＦＡ１０，ＦＡ１１，ＦＡ１２，ＦＡ１３，ＦＡ１４，ＦＡ１５，ＦＡ１６，ＦＡ１０１，ＦＡ１０２，ＦＡ１０３，ＦＡ１０４，ＦＡ１０５，ＦＡ１０６，ＦＡ１０７，ＦＡ１０８，ＦＡ１０９，ＦＡ１１０，ＦＡ１１１，ＦＡ１１２，ＦＡ１１３，ＦＡ１１４，ＦＡ１１５，ＦＡ１１６，ＦＡ１１７，ＦＡ１１８，ＦＡ１１９，ＦＡ１２０  全加算器
ＨＡ２０１，ＨＡ２０２，ＨＡ２０３，ＨＡ２０４，ＨＡ２０５，ＨＡ１，ＨＡ２，ＨＡ３，ＨＡ４，ＨＡ５，ＨＡ６，ＨＡ７，ＨＡ８，ＨＡ９，ＨＡ１０，ＨＡ１１，ＨＡ１２，ＨＡ１３，ＨＡ１４，ＨＡ１５，ＨＡ１６，ＨＡ１０１，ＨＡ１０２，ＨＡ１０３，ＨＡ１０４，ＨＡ１０５  半加算器
１００  自動回路合成装置
１０１  制御部
１０２  入力部
１０３  部分積演算部
１０４  半加算器割当可能箇所検索部
１０５  全加算器割当可能箇所検索部
１０６  半加算器割当部
１０７  全加算器割当部
１０８  演算ブロック該当段構築部
１０９  演算ブロック構成部
１１０  演算ブロック次段構築部
１１１  判定部
１１２  最終段構築部
１１３  出力部
２０１，２０２，２０３，２０４，２０５，２０６，２０７，２０８，２０９，２１０，２１１，２１２，２１３，２１４，２１５，２１６，２１７，２１８，２１９，２２０，２２１，２２２，２２３，２２４，２２５，２２６  ステップ
【図１】
0004436412.tif 000002
【図２】
0004436412.tif 000003
【図３】
0004436412.tif 000004
【図４】
0004436412.tif 000005
【図５】
0004436412.tif 000006
【図６】
0004436412.tif 000007
【図７】
0004436412.tif 000008
【図８】
0004436412.tif 000009
【図９】
0004436412.tif 000010
【図１０】
0004436412.tif 000011
【図１１】
0004436412.tif 000012
【図１２】
0004436412.tif 000013
【図１３】
0004436412.tif 000014
【図１４】
0004436412.tif 000015
【図１５】
0004436412.tif 000016