(57)【特許請求の範囲】
【請求項１】
２入力の乗算の部分積を半加算してサムとキャリーを出力する第一の乗算部と、
２入力の乗算の部分積を半加算してサムとキャリーを出力する第二の乗算部と、
前記第一の乗算部の出力と、前記第二の乗算部の出力と、第二の最終結果加算部の出力とを入力し加算を行い積和結果を出力する第一の最終結果加算部と、
前記第二の乗算部の出力と、前記第一の乗算部の出力と、前記第一の最終結果加算部の出力とを入力し加算を行い積和結果を出力する第二の最終結果加算部とを
備えたことを特徴とする積和器。
【請求項２】
請求項１記載の積和器において、
前記第一の乗算部と第二の乗算部においては、交互に２入力を取り込み乗算を行うことを特徴とする積和器。
【請求項３】
請求項１記載の積和器において、
前記第一の最終結果加算部においては、前々サイクルの入力に対する第二の最終結果加算部の出力と、前サイクルの入力に対する第二の乗算部の出力と、現サイクルの入力に対する第一の乗算部の出力とを加算し、現サイクルの入力に対する積和結果として出力することを特徴とする積和器。
【請求項４】
請求項１記載の積和器において、
前記第一の乗算部と前記第二の乗算部の代りに、単一の乗算部を時分割で使用することを特徴とする積和器。
【請求項５】
請求項１記載の積和器において、
前記第一の最終結果加算部と第二の最終結果加算部の代りに、単一の最終結果加算部を時分割で使用することを特徴とする積和器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は積和器に関し、高速の積和処理を行う積和器に関する。
近年、ＤＳＰ（Digital Signal Processor) が幅広い分野で適用されている。
ＤＳＰは信号処理演算によく現われる積和処理を高速に実行することが求められており、このため、ＤＳＰ内で積和処理を実行する積和器の高速動作が要望されている。
【０００２】
【従来の技術】
図７は並列乗算器の構成図を示す。同図中、乗算器１０は入力Ａ，Ｂの部分積を作り、その部分積を加算して乗算結果を得ている。部分積の加算はキャリの伝播の発生しないように考慮されたツリー状の構成の加算器回路（ワレサのツリー）によって行われる。具体的には部分積を半加算していき、ビット数をしぼりこんでいく。
【０００３】
例えば部分積の生成にＢｏｏｔｈのアルゴリズムを用いれば１６ビット×１６ビット乗算の場合、部分積は１６×８ビット発生する。この１２８ビット（１６×８）を３入力２出力の半加算器により各桁を計算することで最終的には２つ（サム，キャリー）のデータが得られる。この２つのデータをキャリ伝播のある全加算器１２で加算することで最終結果が得られる。
【０００４】
この乗算器を使用して積和器も作られる。積和器はΣＡｉ・Ｂｉのように乗算結果を加算し続けるように構成される。図８に積和器の構成図を示す。積和器は乗算器とほぼ同じ構成をとるが、乗算器１４の乗算結果がサム（Ｓ），キャリー（Ｃ）にしぼりこまれた２つのデータと直前までの積和処理の結果Ａｃｃとを加算する必要があるため、ここでもう一度、３入力２出力の半加算器１６でサム＋キャリー＋直前の積和結果を行い、最終のサム，キャリーを計算する。最後にこれを全加算器１８で全加算して積和結果を得る。この積和器では図９に示す積和のサイクル時間ＴＳは部分積の生成及び半加算器による絞り込みを行う時間Ｔ１と、得られた結果と直前の積和結果を加算する時間Ｔ２で決定される。
【０００５】
この積和のサイクル時間を短くして積和サイクルの低減を図る方法としてパイプライン化が従来行われてきた。この方法は図１０に示すように、部分積の生成・絞り込みの部分と全加算の部分で処理をレジスタ１９，２０で時間的に分けることにより、レイテンシは増加するものの処理サイクルは短くなり、全体の処理時間を短くすることができる。図１１に示すように、部分積の生成・絞り込みの時間Ｔ１と、最終結果計算の時間Ｔ２のうちの長い方の時間をサイクルとしてパイプライン化することができる。つまり、部分積の絞り込みの時間と最終結果の加算の時間が等しい場合には、積和処理のサイクル時間は、１／２になる。
【０００６】
また別の方法として図１２に示すように単純に２つの積和器を設け、デュアル化する構成がある。この構成ではそれぞれの積和器に積和結果記憶用のレジスタ２２Ａ，２２Ｂを設け、積和演算を２つの積和器１４Ａ，１６Ａ，１８Ａと１４Ｂ，１６Ｂ，１８Ｂとに分けて求める。それぞれの積和処理が終了した時点で、この２つの積和結果を全加算器２４で加算し最終結果を得てレジスタ２６に格納する。この方法では積和に要する時間は部分積生成や最終結果加算の時間に関係なく１／２とすることができる。
【０００７】
【発明が解決しようとする課題】
図８に示す構成のパイプライン化では、一般的に部分積の絞り込みの時間Ｔ１と、最終結果の加算の時間Ｔ２とが一致せず、いずれか長い方の時間がサイクル時間となって、パイプライン化によりサイクル時間を１／２とすることはできない。
【０００８】
図１２に示す構成のデュアル化では、サイクル時間を１／２とすることができるが、最終結果を得るためにレジスタ２２Ａ，２２Ｂと、全加算器２４とを設ける必要があり、ハードウェア規模が大きくなり、また、積和処理終了後に加算処理が必要になるという問題がある。また、積和器はＤＳＰの命令により制御され、積和器のレジスタ構成が変わる（レジスタ２２Ａ，２２Ｂが増す）ことは命令セットの変更を意味し、ファームウェア資産を生かせないという問題が発生する。
【０００９】
本発明は上記の点に鑑みなされたもので、サイクル時間を半分にできると共に、ハードウェア規模が大きくなることを抑制でき、レジスタ構成の変更がない積和器を提供することを目的とする。
【００１０】
【課題を解決するための手段】
請求項１に記載の発明は、２入力の乗算の部分積を半加算してサムとキャリーを出力する第一の乗算部と、
２入力の乗算の部分積を半加算してサムとキャリーを出力する第二の乗算部と、
前記第一の乗算部の出力と、前記第二の乗算部の出力と、第二の最終結果加算部の出力とを入力し加算を行い積和結果を出力する第一の最終結果加算部と、
前記第二の乗算部の出力と、前記第一の乗算部の出力と、前記第一の最終結果加算部の出力とを入力し加算を行い積和結果を出力する第二の最終結果加算部とを
備える。
【００１１】
このように、第一、第二の最終結果加算部で第一、第二の乗算部からの今回の入力に対するサム及びキャリーと、第二、第一の乗算部からの前回の入力に対するサム及びキャリーと、第二、第一の最終結果加算部からの前前回の入力に対する積和結果を加算して、今回の入力に対する積和結果を得ることができ、従来のデュアル化と同様にサイクル時間を半分にすることができると共に、従来のデュアル化に対して半加算器を削減でき、ハードウェア規模の増大を抑制でき、かつ、レジスタ構成の変更が生じない。
【００１２】
請求項４に記載の発明は、請求項１記載の積和器において、
前記第一の乗算部と前記第二の乗算部の代りに、単一の乗算部を時分割で使用する。
このため、乗算部が単一で済み、更にハードウェア規模を小さくできる。
請求項５に記載の発明は、請求項１記載の積和器において、
前記第一の最終結果加算部と第二の最終結果加算部の代りに、単一の最終結果加算部を時分割で使用する。
【００１３】
このため、最終結果加算部が単一で済み、更にハードウェア規模を小さくできる。
【００１４】
【発明の実施の形態】
図１は本発明の第１実施例の構成図を示す。同図中、入力Ａ，Ｂは図２（Ａ）に示すタイミングで供給され、このうち奇数番目の入力Ａ，Ｂはレジスタ３０Ａ，３２Ａにラッチされて乗算器３４Ａに供給され、偶数番目の入力Ａ，Ｂはレジスタ３０Ｂ，３２Ｂにラッチされて乗算器３４Ｂに供給される。
【００１５】
乗算器（乗算部）３４Ａ，３４Ｂ夫々は入力Ａ，Ｂの部分積を作り、その部分積を加算して絞り込み、サム（Ｓ）とキャリー（Ｃ）の２つのデータを生成する。図２（Ｂ），（Ｃ）は乗算器３４Ａ，３４Ｂ夫々のデータＳ，Ｃの出力タイミングを示す。乗算器３４Ａの出力データＳ，Ｃは半加算器３６Ａ及びレジスタ３８Ｂに供給され乗算器３４Ｂの出力データＳ，Ｃは半加算器３６Ｂ及びレジスタ３８Ａに供給される。
【００１６】
半加算器３６Ａに乗算器３４Ａからｎ＋１番目の入力に対する乗算データＳ，Ｃが供給されるとき、レジスタ３８Ａからは図２（Ｅ）に示すｎ番目の入力に対する乗算データＳ，Ｃが供給され、レジスタ４０Ａからは図２（Ｇ）に示すｎ−１番目の入力に対する積和データが供給され、これらのデータに対するサム（Ｓ），キャリー（Ｃ）の２つのデータが出力される。全加算器４２Ａでは上記のデータＳ，Ｃの加算が行われ最終結果つまりｎ＋１番目の入力に対する積和データが求められる。この積和データはセレクタ４４で選択されてレジスタ４６，４０Ｂ夫々に格納される。図２（Ｈ）はレジスタ４６の内容を示す。
【００１７】
半加算器３６Ｂに乗算器３４Ｂからｎ＋２番目の入力に対する乗算データＳ，Ｃが供給されるとき、レジスタ３８Ｂからは図２（Ｄ）に示すｎ＋１番目の入力に対する乗算データＳ，Ｃが供給され、レジスタ４０Ｂからは図２（Ｆ）に示すｎ番目の入力に対する積和データが供給され、これらのデータに対するサム（Ｓ），キャリー（Ｃ）の２つのデータが出力される。全加算器４２Ｂでは上記のデータＳ，Ｃの加算が行われ最終結果つまりｎ＋２番目の入力に対する積和データが求められる。この積和データはセレクタ４４で選択されてレジスタ４６，４０Ａ夫々に格納される。図２（Ｈ）はレジスタ４６の内容を示す。
【００１８】
上記の乗算器３４Ａが第一の乗算部に対応し、乗算器３４Ｂが第二の乗算部に対応し、半加算器３６Ａと全加算器４２Ａ及びレジスタ４０Ａ，３８Ａが第一の最終結果加算部に対応し、半加算器３６Ｂと全加算器４２Ｂ及びレジスタ４０Ｂ，３８Ｂが第二の最終結果加算部に対応する。
図３は半加算器３６Ａ，３６Ｂとして使用される４ビット５入力半加算器の構成図を示す。端子５０にはレジスタ４０Ａより積和データが入来し、端子５１，５２にはレジスタ３８Ａから２つのデータＳ，Ｃが入来し、これらのデータは半加算器５４ａ〜５４ｄで加算され、これらで得られたデータＳは半加算器５６ａ〜５６ｄに供給され、またデータＣは半加算器５８ａ，５６ａ〜５６ｃ夫々に供給される。半加算器５６ａ〜５６ｄには端子５３より乗算器３４Ａ出力のデータＳが供給されて加算される。半加算器５６ａ〜５６ｄの出力するデータＳは半加算器５８ｂ〜５８ｅに供給され、半加算器５８ａ〜５８ｄの出力するデータＣは半加算器５８ａ〜５８ｄに供給される。また、半加算器５８ｂ〜５８ｅには端子５５より乗算器３４Ａ出力のデータＣが供給されて加算される。上記の半加算器５８ａ〜５８ｅ夫々の出力するデータＣ，Ｓが全加算器４２Ａに供給される。
【００１９】
ここでは、端子５０〜５２に入力するデータの加算は段数が多く遅延時間が大きいと考えられるが、レジスタ４０Ａ，３８Ａ夫々のデータは加算サイクルの開始時点で既に値が決定しており、乗算器３４Ａの出力データＳ，Ｃの加算はこれより遅れて開始されることを考慮すると、上記半加算器５８ａ〜５８ｄにおける遅延は全体に何ら影響を与えない。
【００２０】
このように乗算器３４Ａ，３４Ｂ，半加算器３６Ａ，３６Ｂ，全加算器４２Ａ，４２Ｂで構成される２つの積和回路を１８０度位相をずらして交互に動作させることで、積和処理に必要なサイクル時間をデュアル化と同様に半分にすることができる。また、デュアル化のように余分なレジスタ２２Ａ，２２Ｂ及び全加算器２４が必要ないためハードウェアが大規模化することがなく、かつ、レジスタ構成の変更が生じない。
【００２１】
図４は本発明の第２実施例の構成図を示す。同図中、入力Ａ，Ｂは図５（Ａ）に示すタイミングで供給され、乗算器３３に供給される。乗算器３３は入力Ａ，Ｂの部分積を作り、その部分積を加算して絞り込み、サム（Ｓ）とキャリー（Ｃ）の２つのデータを生成する。図５（Ｂ）は乗算器３３のデータＳ，Ｃの出力タイミングを示す。乗算器３３の出力データＳ，Ｃはレジスタ３５Ａ，３５Ｂに供給される。
【００２２】
レジスタ３５Ａは図５（Ｃ）に示すラッチクロックのローレベル期間に奇数番目の入力に対する乗算器３３出力Ｓ，Ｃを図５（Ｄ）に示すように格納し、レジスタ３５Ｂは上記ラッチクロックのハイレベル期間に偶数番目の入力に対する乗算器３３出力Ｓ，Ｃを図５（Ｇ）に示すように格納する。レジスタ３５Ａに格納された奇数番目の２つのデータＳ，Ｃは半加算器３６Ａ及びレジスタ３８Ｂに供給され、レジスタ３５Ｂに格納された偶数番目の２つのデータは半加算器３６Ｂ及びレジスタ３８Ａに供給される。
【００２３】
半加算器３６Ａにレジスタ３５Ａからｎ＋１番目の入力に対する乗算データＳ，Ｃが供給されるとき、レジスタ３８Ａからは図５（Ｅ）に示すｎ番目の入力に対する乗算データＳ，Ｃが供給され、レジスタ４０Ａからは図５（Ｆ）に示すｎ−１番目の入力に対する積和データが供給され、これらのデータに対するサム（Ｓ），キャリー（Ｃ）の２つのデータが出力される。全加算器４２Ａでは上記のデータＳ，Ｃの加算が行われ最終結果つまりｎ＋１番目の入力に対する積和データが求められる。この積和データはセレクタ４４で選択されてレジスタ４６，４０Ｂ夫々に格納される。図５（Ｊ）はレジスタ４６の内容を示す。
【００２４】
半加算器３６Ｂにレジスタ３５Ｂからｎ＋２番目の入力に対する乗算データＳ，Ｃが供給されるとき、レジスタ３８Ｂからは図５（Ｈ）に示すｎ＋１番目の入力に対する乗算データＳ，Ｃが供給され、レジスタ４０Ｂからは図５（Ｉ）に示すｎ番目の入力に対する積和データが供給され、これらのデータに対するサム（Ｓ），キャリー（Ｃ）の２つのデータが出力される。全加算器４２Ｂでは上記のデータＳ，Ｃの加算が行われ最終結果つまりｎ＋２番目の入力に対する積和データが求められる。この積和データはセレクタ４４で選択されてレジスタ４６，４０Ａ夫々に格納される。図５（Ｊ）はレジスタ４６の内容を示す。
【００２５】
部分積の絞り込みの時間が最終結果の加算時間よりも短いとした場合、乗算器３３は積和サイクルの半分以下の時間で動作することになり、この実施例では乗算器３３を時分割で使用することで乗算器を１つに削除でき回路規模を小さくしている。この実施例でも従来のデュアル化と同様に積和処理に必要なサイクル時間を半分にすることができる。
【００２６】
これとは逆に、部分積の絞り込みの時間が最終結果の加算時間よりも長い場合は図６に示す第３実施例の回路構成とする。図６において、入力Ａ，Ｂのうち奇数番目の入力Ａ，Ｂはレジスタ３０Ａ，３２Ａにラッチされて乗算器３４Ａに供給され、偶数番目の入力Ａ，Ｂはレジスタ３０Ｂ，３２Ｂにラッチされて乗算器３４Ｂに供給される。
【００２７】
乗算器３４Ａ，３４Ｂ夫々は入力Ａ，Ｂの部分積を作り、その部分積を加算して絞り込み、サム（Ｓ）とキャリー（Ｃ）の２つのデータを生成する。乗算器３４Ａの出力データＳ，Ｃ夫々はセレクタ３７，３９に供給され乗算器３４Ｂの出力データＳ，Ｃ夫々はセレクタ３７，３９に供給される。
セレクタ３７，３９は２つのデータＳ，Ｃを奇数番目、偶数番目で順次選択して半加算器４１に供給する。半加算器４１にはレジスタ４５から前サイクルで得られた積和データが供給されており、半加算器４１はこれらのデータに対するＳ，Ｃの２つのデータを出力する。全加算器４３は上記のデータＳ，Ｃの加算を行い、最終結果の積和データがレジスタ４５に格納される。
【００２８】
この場合は最終結果の加算時間が短いため、時分割多重を行って１つの半加算器４１及び１つの全加算器４３で処理している。逆に部分積の絞り込みの時間が長いため、２つの乗算器３４Ａ，３４Ｂを使用してサイクルタイムの短縮を行っている。この実施例でも従来のデュアル化と同様に積和処理に必要なサイクル時間を半分にすることができる。
【００２９】
【発明の効果】
上述の如く、請求項１に記載の発明によれば、第一、第二の最終結果加算部で第一、第二の乗算部からの今回の入力に対するサム及びキャリーと、第二、第一の乗算部からの前回の入力に対するサム及びキャリーと、第二、第一の最終結果加算部からの前前回の入力に対する積和結果を加算して、今回の入力に対する積和結果を得ることができ、従来のデュアル化と同様にサイクル時間を半分にすることができると共に、従来のデュアル化に対して半加算器を削減でき、ハードウェア規模の増大を抑制でき、かつ、レジスタ構成の変更が生じない。
【００３１】
また、請求項４に記載の発明によれば、乗算部が単一で済み、更にハードウェア規模を小さくできる。
また、請求項５に記載の発明によれば、最終結果加算部が単一で済み、更にハードウェア規模を小さくできる。
【図面の簡単な説明】
【図１】本発明の構成図である。
【図２】図１の信号タイミングチャートである。
【図３】半加算器の構成図である。
【図４】本発明の構成図である。
【図５】図４の信号タイミングチャートである。
【図６】本発明の構成図である。
【図７】従来の乗算器の構成図である。
【図８】従来の積和器の構成図である。
【図９】図７の乗算サイクルを説明するための図である。
【図１０】従来の積和器の構成図である。
【図１１】図１０の乗算サイクルを説明するための図である。
【図１２】従来の積和器の構成図である。
【符号の説明】
３０Ａ，３０Ｂ，３２Ａ，３２Ｂ，３５Ａ，３５Ｂ，３８Ａ，３８Ｂ，４０Ａ，４０Ｂ，４５，４６  レジスタ
３３，３４Ａ，３４Ｂ  乗算器
３６Ａ，３６Ｂ，４１  半加算器
４２Ａ，４２Ｂ，４３  全加算器
【図１】
0003695561.tif 000002
【図２】
0003695561.tif 000003
【図３】
0003695561.tif 000004
【図４】
0003695561.tif 000005
【図５】
0003695561.tif 000006
【図６】
0003695561.tif 000007
【図７】
0003695561.tif 000008
【図８】
0003695561.tif 000009
【図９】
0003695561.tif 000010
【図１０】
0003695561.tif 000011
【図１１】
0003695561.tif 000012
【図１２】
0003695561.tif 000013