(57)【要約】【課題】  ２の補数表示数の乗算回路の回路規模を簡素化する。【解決手段】  それぞれ２の補数で表示されたｍビットの被乗数Ｘとｎビット（但し、ｍ≧ｎ）の乗数Ｙを乗算するときに、クロック信号ＣＬＫに従って乗数Ｙの最下位ビットｙ０から順に１ビットずつＡＮＤゲート１２に出力し、被乗数Ｘの全加算器１３の入力端子Ａへの入力を制御する。２ｍ＋ｎ−１ビットの全加算器１３の加算結果はデータラッチ回路１４に保持されると共に、１ビット右シフトされて全加算器１３の入力端子Ｂへ戻される。クロック信号ＣＬＫに従ってｍ＋ｎ−１回の累積加算を行った後、データラッチ回路１４の累積加算値の下位ｍ＋ｎ−１ビットがデータラッチ回路１６に保持され、２の補数表示の乗算結果Ｚとして出力される。【選択図】      図１
2007034500.tif 000002
【特許請求の範囲】
【請求項１】
２の補数表示のｍビットの被乗数と、２の補数表示のｎ（但し、ｍ≧ｎ）ビットの乗数とを乗算して２の補数表示の乗算結果を出力する乗算回路であって、
前記乗数をｍ＋ｎ−１ビットに拡張し、クロック信号の立ち上がり（または立ち下がり）に従って最下位ビットから順にシフトして出力するシフトレジスタと、
前記シフトレジスタの出力信号に従って前記被乗数の出力を制御するゲート回路と、
第１入力側の下位ｍ＋ｎ−２ビットが０に固定され、上位ｍ＋１ビットに前記ゲート回路を介してｍ＋１ビットに拡張された前記被乗数が与えられて、第２入力側に与えられる２進数との加算を行って加算結果を出力する２ｍ＋ｎ−１ビットの全加算回路と、
前記クロック信号の立ち下がり（または立ち上がり）に従って前記加算結果を保持すると共に、該加算結果の最下位ビットを除く上位の２ｍ＋ｎ−２ビットを２ｍ＋ｎ−１ビットに拡張して前記全加算回路の第２入力側に与える第１のデータラッチ回路と、
前記クロック信号に従って前記第１のデータラッチ回路から出力される加算結果のうちの下位ｍ＋ｎ−１ビットを保持して前記乗算結果として出力する第２のデータラッチ回路とを、
備えたことを特徴とする乗算回路。
【請求項２】
２の補数表示のｍビットの被乗数と、２の補数表示のｎ（但し、ｍ≦ｎ）ビットの乗数とを乗算して２の補数表示の乗算結果を出力する乗算回路であって、
前記乗数をｍ＋ｎ−１ビットに拡張し、クロック信号の立ち上がり（または立ち下がり）に従って最下位ビットから順にシフトして出力するシフトレジスタと、
前記シフトレジスタの出力信号に従って前記被乗数の出力を制御するゲート回路と、
第１入力側の下位ｍ＋ｎ−２ビットが０に固定され、上位ｍ＋１ビットに前記ゲート回路を介してｍ＋１ビットに拡張された前記被乗数が与えられて、第２入力側に与えられる２進数との加算を行って加算結果を出力するｍ＋２ｎ−１ビットの全加算回路と、
前記クロック信号の立ち下がり（または立ち上がり）に従って前記加算結果を保持すると共に、該加算結果の最下位ビットを除く上位のｍ＋２ｎ−２ビットをｍ＋２ｎ−１ビットに拡張して前記全加算回路の第２入力側に与える第１のデータラッチ回路と、
前記クロック信号に従って前記第１のデータラッチ回路から出力される加算結果のうちの下位ｍ＋ｎ−１ビットを保持して前記乗算結果として出力する第２のデータラッチ回路とを、
備えたことを特徴とする乗算回路。
【請求項３】
２の補数表示のｍビットの被乗数と、２の補数表示のｎビットの乗数とを乗算して２の補数表示の乗算結果を出力する乗算回路であって、
前記乗数をｍ＋ｎ−１ビットに拡張し、クロック信号の立ち上がり（または立ち下がり）に従って最上位ビットから順にシフトして出力するシフトレジスタと、
前記シフトレジスタの出力信号に従って前記被乗数の出力を制御するゲート回路と、
第１入力側に前記ゲート回路を介してｍ＋ｎ−１ビットに拡張された前記被乗数が与えられ、第２入力側に与えられる２進数との加算を行って加算結果を出力するｍ＋ｎ−１ビットの全加算回路と、
前記クロック信号の立ち下がり（または立ち上がり）に従って前記加算結果を保持すると共に、該加算結果を２倍にして前記全加算回路の第２入力側に与える第１のデータラッチ回路と、
前記クロック信号に従って前記第１のデータラッチ回路から出力される加算結果を保持して前記乗算結果として出力する第２のデータラッチ回路とを、
備えたことを特徴とする乗算回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２の補数表示の２進数同士を乗算して２の補数表示の乗算結果を出力するシフト加算型の乗算回路に関するものである。
【背景技術】
【０００２】
従来、２の補数表示の２進数同士を乗算する場合、まず２つの２進数の符号を判定して負のときは正の（符号のない）２進数に変換し、正の２進数同士を乗算し、その乗算結果を２つの２進数の元の符号に従って必要に応じて２の補数表示に変換するという手順で行うことが多かった。このため、符号のない２進数を乗算するシフト加算型の乗算器に、符号の判定回路や、２進数と２の補数表示との間の変換を行う回路を付加する必要があり、回路規模が大きくなるという課題があった。
【０００３】
一方、２の補数表示の２進数同士を直接乗算する乗算回路としては、下記特許文献１に記載されるようなものがあった。
【０００４】
図２は、下記特許文献１に記載された従来の乗算回路の構成図である。
この乗算回路は、７ビットの２の補数表示数Ｘを入力とする４段の部分積生成回路６1a〜６4aからなる部分積生成部６と、この４つの部分積生成回路にそれぞれ対応する４つのデコーダセル（ＺＤ）を持って７ビットの２の補数表示数Ｙを入力する２次のブースのデコーダ部５と、部分積生成回路６1a〜６4aの出力データを入力して積Ｐを出力する加算部７から構成されている。
【０００５】
２次のブースのデコーダ部５は、それぞれ乗数Ｙのビット列中の連続する３ビットｙ2j-1、ｙ2j，ｙ2j+1からなる情報Ｙｊを入力して、ブースのアルゴリズムに従ったデコード出力ｂｄ１，ｂｄ２，ｂｄｎを出力する４個のデコーダセルで構成されている。
【０００６】
部分積生成回路６1a〜６4aは、それぞれ被乗数Ｘの各ビットに対応するように横一列に並んだ７つの部分積生成・加算セルからなり、対応するデコーダセルＺＤのデコード出力ｂｄ１，ｂｄ２，ｂｄｎを入力し、部分積Ｐｊを生成するものである。なお、被乗数Ｘの最上位ビットｘ５の上位にビットｘ６に相当する“０”が追加されている。各部分積生成回路６1a〜６4aは順次、部分積生成・加算セルを２つ分ずつ横にずれて対向する形で並置されている。この部分積生成・加算セルを２つ分のずれは、被乗数Ｘの２ビット分の変移に相当し、当該部分積生成回路６j+1aが出力するビット列に２2jの重みを付し、結果としてこの部分積生成回路６j+1aが、部分積Ｐｊを生成するようになっている。
【０００７】
また、加算部７は、最終段の部分積生成回路６4aの出力側に位置すると共に、積Ｐのビット数に対応する個数分、横一列に並ぶ全加算器セルで構成されている。そして、この各全加算器セルは、配列の順に加算結果ビットとして、積Ｐの各ビットｐ１１，・・・，ｐ０を出力するようになっている。
【０００８】
【特許文献１】特開２０００−１８７５８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前記特許文献１に記載された従来の乗算回路は、２の補数表示数Ｘ，Ｙを直接乗算することによって、回路規模を簡素化することを目的としているが、複数の部分積生成回路やセルデコーダを必要とし、しかもＸ，Ｙのビット数が大きくなるに従って、これらの部分積生成回路やセルデコーダの数も増やす必要があった。このため、回路規模の簡素化としては、十分に満足できるものとはいえなかった。
【００１０】
本発明は、２の補数表示数の乗算回路の回路規模を簡素化することを目的としたものである。
【課題を解決するための手段】
【００１１】
本発明は、２の補数表示のｍビットの被乗数と、２の補数表示のｎ（但し、ｍ≧ｎ）ビットの乗数とを乗算して２の補数表示の乗算結果を出力する乗算回路を次のように構成している。
【００１２】
即ち、この乗算回路は、前記乗数をｍ＋ｎ−１ビットに拡張し、クロック信号の立ち上がり（または立ち下がり）に従って最下位ビットから順にシフトして出力するシフトレジスタと、前記シフトレジスタの出力信号に従って前記被乗数の出力を制御するゲート回路と、第１入力側の下位ｍ＋ｎ−２ビットが０に固定され、上位ｍ＋１ビットに前記ゲート回路を介してｍ＋１ビットに拡張された前記被乗数が与えられて、第２入力側に与えられる２進数との加算を行って加算結果を出力する２ｍ＋ｎ−１ビットの全加算回路と、前記クロック信号の立ち下がり（または立ち上がり）に従って前記加算結果を保持すると共に、該加算結果の最下位ビットを除く上位の２ｍ＋ｎ−２ビットを２ｍ＋ｎ−１ビットに拡張して前記全加算回路の第２入力側に与える第１のデータラッチ回路と、前記クロック信号に従って前記第１のデータラッチ回路から出力される加算結果のうちの下位ｍ＋ｎ−１ビットを保持して前記乗算結果として出力する第２のデータラッチ回路を備えている。
【発明の効果】
【００１３】
本発明では、ｍビットの被乗数とｎビットの乗数を乗算するときに、２ｍ＋ｎ−１ビットの全加算回路とデータラッチ回路を用いて加算結果を右シフトしながら、ｍ＋ｎ−１回の累積加算を行うようにしている。これにより、簡素化した回路構成で、２の補数表示の２進数同士の乗算ができるという効果がある。
【発明を実施するための最良の形態】
【００１４】
２の補数表示のｍビットの被乗数と、２の補数表示のｎビットの乗数とを乗算して２の補数表示の乗算結果を出力する乗算回路を、前記乗数をｍ＋ｎ−１ビットに拡張し、クロック信号の立ち上がり（または立ち下がり）に従って最上位ビットから順にシフトして出力するシフトレジスタと、前記シフトレジスタの出力信号に従って前記被乗数の出力を制御するゲート回路と、第１入力側に前記ゲート回路を介してｍ＋ｎ−１ビットに拡張された前記被乗数が与えられ、第２入力側に与えられる２進数との加算を行って加算結果を出力するｍ＋ｎ−１ビットの全加算回路と、前記クロック信号の立ち下がり（または立ち上がり）に従って前記加算結果を保持すると共に、該加算結果を２倍にして前記全加算回路の第２入力側に与える第１のデータラッチ回路と、前記クロック信号に従ってｍ＋ｎ−１回の加算が終了した時に、前記第１のデータラッチ回路から出力される加算結果を保持して前記乗算結果として出力する第２のデータラッチ回路とで構成することもできる。
【００１５】
この発明の前記並びにその他の目的と新規な特徴は、次の好ましい実施例の説明を添付図面と照らし合わせて読むと、より完全に明らかになるであろう。但し、図面は、もっぱら解説のためのものであって、この発明の範囲を限定するものではない。
【実施例１】
【００１６】
図１は、本発明の実施例１を示す乗算回路の構成図である。
この乗算回路は、ｍ（例えば、ｍ＝４）ビットの２の補数表示数Ｘ［３：０］と、ｎ（例えば、ｎ＝３）ビットの２の補数表示数Ｙ［２：０］を乗算して、ｍ＋ｎ−１（この場合は、６）ビットの２の補数表示数Ｚ［５：０］を乗算結果として出力するものである。なお、ここでは、ｍ≧ｎとする。
【００１７】
この乗算回路は、並列入力・直列出力型のシフトレジスタ１１を備えている。シフトレジスタ１１は、ｎ（この場合は、３）ビットの並列入力端子Ｐ２〜Ｐ０と直列入力端子ＳＩを有し、これらの並列入力端子Ｐ２〜Ｐ０には、それぞれ２の補数表示数Ｙ［２：０］のビットｙ０，ｙ１，ｙ２が接続され、直列入力端子ＳＩには符号ビットであるビットｙ２が接続されている。このシフトレジスタ１１は、ロード信号ＬＯＤが与えられたときに、並列入力端子Ｐ２〜Ｐ０に与えられたデータを並列に取り込み、クロック信号ＣＬＫの立ち上がりのタイミングで、並列入力端子Ｐ２〜Ｐ０から取り込んだデータと、直列入力端子ＳＩのデータをその順番に１ビットずつシフトして、シリアル出力端子ＳＯから出力するものである。
【００１８】
即ち、シフトレジスタ１１は、クロック信号ＣＬＫの立ち上がりに同期して、ｎビット以上に拡張した２の補数表示数Ｙを最下位ビットから順に直列に出力するものである。シフトレジスタ１１のシリアル出力端子ＳＯから出力されるデータＳＤは、ＡＮＤ（論理積）ゲート１２０〜１２３の第１の入力側に与えられるようになっている。
【００１９】
ＡＮＤゲート１２０〜１２３の第２の入力側には、補数表示数Ｘ［３：０］のビットｘ０〜ｘ３がそれぞれ与えられるようになっており、これらのＡＮＤゲート１２０〜１２３の出力側が、２ｍ＋ｎ−１（この場合は、１０）ビットの全加算器１３の第１の入力側に接続されている。即ち、全加算器１３の第１の入力端子Ａの内で、最上位の端子Ａ９と第２位の端子Ａ８にはＡＮＤゲート１２３の出力側が接続され、その下位の端子Ａ７，Ａ６，Ａ５にはＡＮＤゲート１２２，１２１，１２０の出力側がそれぞれ接続されている。更に、残りの最下位の端子Ａ０から端子Ａ４までのｍ＋ｎ−２（この場合は、５）個の端子は、接地電位ＧＮＤに接続され、２進数の“０”が与えられている。
【００２０】
なお、全加算器１３の最上位ビットは、演算途中のデータの符号を保持するためのもので、最下位の端子Ａ０から端子Ａ４までは、右にシフトして累積加算するデータを保持するためのものである。全加算器１３の出力端子Ｓ０〜Ｓ９は、２ｍ＋ｎ−１（この場合は、１０）ビットのデータラッチ回路１４の入力端子Ｉ０〜Ｉ９に、それぞれ接続されている。
【００２１】
データラッチ回路１４には、クロック信号ＣＬＫがインバータ１５で反転されてクロック信号／ＣＬＫとして与えられ、このクロック信号／ＣＬＫの立ち上がりのタイミングで、全加算器１３の出力信号を保持して出力端子Ｏ０〜Ｏ９から出力するようになっている。また、データラッチ回路１４は、クリア信号ＣＬＲが与えられたときに、保持しているデータをすべて“０”にクリアするようになっている。
【００２２】
データラッチ回路１４の出力端子Ｏ１〜Ｏ９は、全加算器１３の第２の入力端子Ｂの内の端子Ｂ０〜Ｂ８にそれぞれ接続されている。また、全加算器１３の端子Ｂ９には、端子Ｂ８と同じ信号が与えられている。即ち、全加算器１３の第２の入力端子Ｂには、データラッチ回路１４に保持されたデータが、１ビットだけ右にシフトして（１／２にして）与えられるようになっている。
【００２３】
更に、データラッチ回路１４の出力端子Ｏ０〜Ｏ５は、ｍ＋ｎ−１（この場合は、６）ビットのデータラッチ回路１６の入力端子Ｉ０〜Ｉ５にそれぞれ接続されている。データラッチ回路１６は、入力端子Ｉ０〜Ｉ５に与えられた信号をラッチ信号ＬＡＴに従って保持し、出力端子Ｏ０〜Ｏ５から出力するもので、この出力端子Ｏ０〜Ｏ５から乗算結果の２の補数表示数Ｚ［５：０］が出力されるようになっている。
【００２４】
図３は、図１の動作の説明図で、同図（ａ）は２の補数表示の２進数Ｘ，Ｙの乗算方法を説明するための図、及び同図（ｂ）は図１中の全加算器１３による演算の過程を示したものである。以下、この図３を参照しつつ、Ｘ＝“１００１”（＝−７）、Ｙ＝“１０１”（＝−３）を例として、図１の動作を説明する。
【００２５】
図３（ａ）に示すように、被乗数である２進数Ｘ（１００１）の符号ビット（最上位ビットの“１”）を拡張して１０ビットの被乗数Ｘ（１１１１１１１００１）とする。また、乗数である２進数Ｙ（１０１）の符号ビットを拡張して６ビットの乗数Ｙ（１１１１０１）とする。
【００２６】
被乗数Ｘと乗数Ｙの最下位ビットの位置を合わせ、乗数Ｙの最下位ビットｙ０と被乗数Ｘを乗算し、結果の値ａを得る。この場合、乗数Ｙの最下位ビットｙ０は“１”であるので、被乗数Ｘがそのまま結果の値ａとなる。
【００２７】
次に、乗数Ｙの第２ビットｙ１と被乗数Ｘを乗算し、結果の値ｂを得る。この場合、乗数Ｙの第２ビットｙ１は“０”であるので、結果の値ｂはオール“０”となる。
【００２８】
更に、乗数Ｙの第３ビットｙ２と被乗数Ｘを乗算し、結果の値ｃを得る。この場合、乗数Ｙの第３ビットｙ２は“１”であるので、結果の値ｃは被乗数Ｘを左に２ビットシフトしたものとなる。
【００２９】
乗数Ｙの第４ビットｙ３、第５ビットｙ４及び第６ビットｙ５についても、同様の乗算を行い、結果の値ｄ，ｅ，ｆを得る。これらのｙ３〜ｙ５は、乗数Ｙの符号ビット（＝“１”）であるので、結果の値ｄ，ｅ，ｆは、被乗数Ｘを左に、それぞれ３，４，５ビットシフトしたものとなる。
【００３０】
結果の値ａ〜ｆを加算し、有効桁である下位６ビットの値“０１０１０１”を取り出せば、これが乗算結果の２の補数表示の２進数Ｚとなる。
【００３１】
図１の乗算回路では、上記の演算処理が、全加算器１３とデータラッチ回路１４を中心にして行われる。
【００３２】
演算処理の開始により、ロード信号ＬＯＤによってシフトレジスタ１１に乗数Ｙが並列に取り込まれる。また、クリア信号ＣＬＲによってデータラッチ回路１４がクリアされてその保持内容がオール“０”になる。なお、ロード信号ＬＯＤとクリア信号ＣＬＲは同じ信号を用いても良い。
【００３３】
次に、１回目のクロック信号ＣＬＫの立ち上がりにより、シフトレジスタ１１の直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙの最下位ビットｙ０の“１”となる。これにより、全加算器１３の入力端子Ａのデータは“１１００１０００００”となる。この時、全加算器１３の入力端子Ｂには、データラッチ回路１４からオール“０”のデータが与えられている。従って、全加算器１３の出力端子Ｓのデータは、“１１００１０００００”となる。クロック信号ＣＬＫが立ち下がると、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれる。データラッチ回路１４に保持されたデータは、１ビットだけ右にシフトされて全加算器１３の入力端子Ｂに与えられ、次の加算処理に備えられる。なお、全加算器１３の入力端子Ｂの最上位ビットＢ９には、データラッチ回路１４から出力されるデータの符号ビットが拡張されて与えられる。
【００３４】
２回目のクロック信号ＣＬＫの立ち上がりで、シフトレジスタ１１の直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙの第２ビットｙ１の“０”となる。これにより、全加算器１３の入力端子Ａのデータはオール“０”となる。この時、全加算器１３の入力端子Ｂには、データラッチ回路１４から“１１１００１００００”のデータが与えられている。従って、全加算器１３の出力端子Ｓのデータは、“１１１００１００００”となる。これは、図３（ａ）において、結果の値ａ，ｂを加算し、その右側に“０”を４ビット付加したものである。クロック信号ＣＬＫが立ち下がると、全加算器１３の出力端子Ｓのデータがデータラッチ回路１４に取り込まれ、保持されたデータは１ビット右にシフトされて全加算器１３の入力端子Ｂに与えられる。
【００３５】
３回目以降のクロック信号ＣＬＫの立ち上がりでは、シフトレジスタ１１の直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙの第３ビットｙ２（即ち、符号ビット）の“１”となる。これにより、全加算器１３の入力端子Ａのデータは、常に“１１１００１００００”となる。
【００３６】
３回目のクロック信号ＣＬＫの立ち上がりでは、全加算器１３の入力端子Ｂには、データラッチ回路１４から“１１１１００１０００”のデータが与えられているので、全加算器１３の出力端子Ｓのデータは、“１０１１１０１０００”となる。これは、図３（ａ）において、結果の値ａ，ｂ，ｃを加算し、その右側に“０”を３ビット付加したものである。クロック信号ＣＬＫの立ち下がりで、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれ、１ビット右にシフトされて全加算器１３の入力端子Ｂに与えられる。
【００３７】
４回目のクロック信号ＣＬＫの立ち上がりでは、全加算器１３の入力端子Ｂには、データラッチ回路１４から“１１０１１１０１００”のデータが与えられているので、全加算器１３の出力端子Ｓのデータは、“１０１００１０１００”となる。これは、図３（ａ）において、結果の値ａ〜ｄを加算し、その右側に“０”を２ビット付加したものである。クロック信号ＣＬＫの立ち下がりで、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれ、１ビット右にシフトされて全加算器１３の入力端子Ｂに与えられる。
【００３８】
５回目のクロック信号ＣＬＫの立ち上がりでは、全加算器１３の入力端子Ｂには、データラッチ回路１４から“１１０１００１０１０”のデータが与えられているので、全加算器１３の出力端子Ｓのデータは、“１００１１０１０１０”となる。これは、図３（ａ）において、結果の値ａ〜ｅを加算し、その右側に“０”を１ビット付加したものである。クロック信号ＣＬＫの立ち下がりで、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれ、１ビット右にシフトされて全加算器１３の入力端子Ｂに与えられる。
【００３９】
６回目のクロック信号ＣＬＫの立ち上がりでは、全加算器１３の入力端子Ｂには、データラッチ回路１４から“１１００１１０１０１”のデータが与えられているので、全加算器１３の出力端子Ｓのデータは、“１００１０１０１０１”となる。これは、図３（ａ）において、結果の値ａ〜ｆを加算したものである。クロック信号ＣＬＫの立ち下がりで、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれる。
【００４０】
このように、ｍ＋ｎ−１（この場合は、６）回のクロック信号ＣＬＫによるシフト加算が完了した時点で、ラッチ信号ＬＡＴが出力され、データラッチ回路１４の下位６ビットのデータ“０１０１０１”がデータラッチ回路１６に取り込まれ、乗算結果の２の補数表示の２進数Ｚとして出力される。
【００４１】
なお、この動作説明では、Ｘ＝−７、Ｙ＝−３を例として説明したが、符号や値の組み合わせ、及びｍ，ｎの桁数に関わらず、同様の動作によって２の補数表示の２進数Ｚが得られる。
【００４２】
以上のように、この実施例１の乗算回路は、ｍビットの被乗数Ｘとｎビットの乗数Ｙを乗算するときに、２ｍ＋ｎ−１ビットの全加算器１３とデータラッチ回路１４を用いて加算結果を右シフトしながら、ｍ＋ｎ−１回の累積加算を行うようにしているので、簡素化した回路構成で、２の補数表示の２進数同士の乗算ができるという利点がある。
【００４３】
なお、本発明は、上記実施例１に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（１）  本実施例１では、ｍ≧ｎとしているが、ｍ≦ｎの場合には、全加算器１３とデータラッチ回路１４のビット数をｍ＋２ｎ−１とすれば良い。
（２）  シフトレジスタ１１は直列入力端子ＳＩを有しているが、ｍ＋ｎ−１ビットの並列入力・直列出力側のシフトレジスタを用いて、ｍ＋ｎ−１ビットに拡張した乗数Ｙを並列に入力するようにしても良い。
（３）  シフトレジスタ１１及びデータラッチ回路１４の動作タイミングは、クロック信号ＣＬＫの立ち下がりでも良い。
【実施例２】
【００４４】
図１は、本発明の実施例２を示す乗算回路の構成図であり、図１中の要素と共通の要素には共通の符号が付されている。
【００４５】
この乗算回路は、ｍ（例えば、ｍ＝４）ビットの２の補数表示の被乗数Ｘ［３：０］と、ｎ（例えば、ｎ＝４）ビットの２の補数表示の乗数Ｙ［３：０］を乗算して、ｍ＋ｎ−１（この場合は、７）ビットの２の補数表示の２進数Ｚ［６：０］を乗算結果として出力するものである。
【００４６】
この乗算回路は、並列入力・直列出力型のシフトレジスタ１１Ａを備えている。シフトレジスタ１１Ａは、ｍ＋ｎ−１（この場合は、７）ビットの並列入力端子Ｐ０〜Ｐ６と直列出力端子ＳＯを有している。並列入力端子Ｐ０〜Ｐ３には、それぞれ乗数Ｙ［３：０］のビットｙ０〜ｙ３が接続され、並列入力端子Ｐ４〜Ｐ６には、この乗数Ｙの符号ビットであるビットｙ３が拡張して接続されている。このシフトレジスタ１１Ａは、ロード信号ＬＯＤが与えられたときに、並列入力端子Ｐ０〜Ｐ６に与えられたデータを並列に取り込み、クロック信号ＣＬＫの立ち上がりのタイミングで、並列入力端子Ｐ６〜Ｐ０の順に取り込んだデータを１ビットずつ順次シフトして、シリアル出力端子ＳＯから出力するものである。
【００４７】
即ち、このシフトレジスタ１１Ａは、乗数Ｙをｍ＋ｎ−１ビットに拡張し、クロック信号ＣＬＫに従って最上位ビットから順にシフトして出力するものである。シフトレジスタ１１Ａのシリアル出力端子ＳＯから出力されるデータＳＤは、ＡＮＤゲート１２０〜１２３の第１の入力側に与えられるようになっている。
【００４８】
ＡＮＤゲート１２０〜１２３の第２の入力側には、被乗数Ｘ［３：０］のビットｘ０〜ｘ３がそれぞれ与えられるようになっており、これらのＡＮＤゲート１２０〜１２３の出力側が、ｍ＋ｎ−１（この場合は、７）ビットの全加算器１３の第１の入力側に接続されている。即ち、全加算器１３の第１の入力端子Ａの内で、下位の端子Ａ０〜Ａ３にＡＮＤゲート１２０〜１２３の出力側が接続され、上位の端子Ａ３〜Ａ６にはＡＮＤゲート１２３の出力側が拡張されて接続されている。全加算器１３の出力端子Ｓ０〜Ｓ６は、ｍ＋ｎ−１（この場合は、７）ビットのデータラッチ回路１４の入力端子Ｉ０〜Ｉ６に、それぞれ接続されている。なお、全加算器１３とデータラッチ回路１４のビット数であるｍ＋ｎ−１は、ｍビットとｎビットの２の補数表示の２進数を乗算したときの乗算結果の有効ビット数に相当するものである。
【００４９】
データラッチ回路１４には、クロック信号ＣＬＫがインバータ１５で反転されてクロック信号／ＣＬＫとして与えられ、このクロック信号／ＣＬＫの立ち上がりのタイミングで、全加算器１３の出力信号を保持して出力端子Ｏ０〜Ｏ６から出力するようになっている。また、データラッチ回路１４は、クリア信号ＣＬＲが与えられたときに、保持しているデータをすべて“０”にクリアするようになっている。
【００５０】
データラッチ回路１４の出力端子Ｏ０〜Ｏ８は、全加算器１３の第２の入力端子Ｂの内の端子Ｂ１〜Ｂ６にそれぞれ接続されている。また、全加算器１３の端子Ｂ０は、接地電位に接続され、２進数の“０”が与えられている。即ち、全加算器１３の第２の入力端子Ｂには、データラッチ回路１４に保持されたデータが、１ビットだけ左にシフトして（２倍にされて）与えられるようになっている。
【００５１】
更に、データラッチ回路１４の出力端子Ｏ０〜Ｏ６は、ｍ＋ｎ−１（この場合は、６）ビットのデータラッチ回路１６の入力端子Ｉ０〜Ｉ６にそれぞれ接続されている。データラッチ回路１６は、入力端子Ｉ０〜Ｉ６に与えられた信号をラッチ信号ＬＡＴに従って保持し、出力端子Ｏ０〜Ｏ６から出力するもので、この出力端子Ｏ０〜Ｏ６から、乗算結果が２の補数表示数Ｚ［６：０］として出力されるようになっている。
【００５２】
図５は、図４の動作の説明図で、同図（ａ）は２の補数表示の２進数Ｘ，Ｙの乗算方法を説明するための図、及び同図（ｂ）は図４中の全加算器１３による演算の過程を示したものである。以下、この図５を参照しつつ、Ｘ＝“０１０１”（＝５）、Ｙ＝“１０１０”（＝−６）を例として、図４の動作を説明する。
【００５３】
図５（ａ）に示すように、被乗数である２進数Ｘ（０１０１）の符号ビット（最上位ビットの“０”）を拡張して７ビットの被乗数Ｘ（００００１０１）とする。また、乗数である２進数Ｙ（１０１０）の符号ビットを拡張して７ビットの乗数Ｙ（１１１１０１０）とする。
【００５４】
被乗数Ｘと乗数Ｙの最下位ビットの位置を合わせ、乗数Ｙの最上位ビットｙ６と被乗数Ｘを乗算し、結果の値ａを得る。この場合、乗数Ｙの最上位ビットｙ６は“１”であるので、被乗数Ｘの右側に“０”を６個付加した２進数が結果の値ａとなる。但し、付加された６個の“０”は、図中には示されていない。
【００５５】
次に、乗数Ｙの第６ビットｙ５と被乗数Ｘを乗算し、結果の値ｂを得る。同様に、乗数Ｙのビットｙ４〜ｙ０と被乗数Ｘとをそれぞれ乗算し、結果の値ｃ〜ｇを得る。
【００５６】
結果の値ａ〜ｇを加算し、有効桁である下位７ビットの値“１１０００１０”を取り出せば、これが乗算結果の２の補数表示の２進数Ｚとなる。
【００５７】
図４の乗算回路では、上記の演算処理が、全加算器１３とデータラッチ回路１４を中心にして行われる。
【００５８】
演算処理の開始により、ロード信号ＬＯＤによってシフトレジスタ１１Ａにｍ＋ｎ−１ビットに拡張された乗数Ｙが並列に取り込まれる。また、クリア信号ＣＬＲによってデータラッチ回路１４がクリアされてその保持内容がオール“０”になる。
【００５９】
次に、１回目のクロック信号ＣＬＫの立ち上がりにより、シフトレジスタ１１Ａの直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙの最上位ビットｙ６の“１”となる。これにより、全加算器１３の入力端子Ａのデータは“００００１０１”となる。この時、全加算器１３の入力端子Ｂには、データラッチ回路１４からオール“０”のデータが与えられている。従って、全加算器１３の出力端子Ｓのデータは、被乗数Ｘの“００００１０１”となる。クロック信号ＣＬＫが立ち下がると、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれる。データラッチ回路１４に保持されたデータは、１ビットだけ左にシフトされて全加算器１３の入力端子Ｂに与えられ、次の加算処理に備えられる。なお、全加算器１３の入力端子Ｂの最下位ビットＢ０には、“０”が与えられる。
【００６０】
２回目のクロック信号ＣＬＫの立ち上がりで、シフトレジスタ１１Ａの直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙのビットｙ５の“１”となる。これにより、全加算器１３の入力端子Ａのデータは被乗数Ｘの“００００１０１”となる。この時、全加算器１３の入力端子Ｂには、データラッチ回路１４から“０００１０１０”のデータが与えられている。従って、全加算器１３の出力端子Ｓのデータは、“０００１１１１”となる。これは、図５（ａ）において、結果の値ａ，ｂを加算したものである。クロック信号ＣＬＫが立ち下がると、データラッチ回路１４に全加算器１３の出力端子Ｓのデータが取り込まれ、保持されたデータは１ビット左にシフトされて全加算器１３の入力端子Ｂに与えられる。
【００６１】
３回目のクロック信号ＣＬＫの立ち上がりでは、シフトレジスタ１１Ａの直列出力端子ＳＯから出力されるデータＳＤは、乗数Ｙのビットｙ４の“１”となる。これにより、全加算器１３の入力端子Ａのデータは被乗数Ｘの“００００１０１”となる。この時、全加算器１３の入力端子Ｂには、データラッチ回路１４から“００１１１１０”のデータが与えられている。従って、全加算器１３の出力端子Ｓのデータは、“０１０００１１”となる。これは、図５（ａ）において、結果の値ａ，ｂ，ｃを加算したものである。
【００６２】
以下同様に、４〜７回目のクロック信号ＣＬＫの立ち上がりで、それまでの累積加算値に結果の値ｄ〜ｆが順次累積加算される。そして、７回目のクロック信号ＣＬＫの立ち下がりで、データラッチ回路１４には、結果の値ａ〜ｇが加算されて、有効ビットである下位７ビットの値“１１０００１０”が保持される。
【００６３】
このように、ｍ＋ｎ−１（この場合は、７）回のクロック信号ＣＬＫによるシフト加算が完了した時点で、ラッチ信号ＬＡＴが出力され、データラッチ回路１４の７ビットのデータ“１１０００１０”がデータラッチ回路１６に取り込まれ、乗算結果の２の補数表示の２進数Ｚとして出力される。
【００６４】
なお、この動作説明では、Ｘ＝５、Ｙ＝−６を例として説明したが、符号や値の組み合わせ、及びｍ，ｎの桁数に関わらず、同様の動作によって２の補数表示の２進数Ｚが得られる。
【００６５】
以上のように、この実施例２の乗算回路は、ｍビットの被乗数Ｘとｎビットの乗数Ｙを乗算するときに、ｍ＋ｎ−１ビットの全加算器１３とデータラッチ回路１４を用いて加算結果を左シフトしながら、ｍ＋ｎ−１回の累積加算を行うようにしている。これにより、簡素化した回路構成で、２の補数表示の２進数同士の乗算ができるという利点がある。更に、全加算器１３とデータラッチ回路１４のビット数はｍ＋ｎ−１であるので、実施例１よりも回路規模を小さくすることができるという利点がある。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施例１を示す乗算回路の構成図である。
【図２】従来の乗算回路の構成図である。
【図３】図１の動作の説明図である。
【図４】本発明の実施例２を示す乗算回路の構成図である。
【図５】図４の動作の説明図である。
【符号の説明】
【００６７】
１１，１１Ａ    シフトレジスタ
１２    ＡＮＤゲート
１３    全加算器
１４，１６    データラッチ回路
１５    インバータ
【図１】
2007034500.tif 000003
【図２】
2007034500.tif 000004
【図３】
2007034500.tif 000005
【図４】
2007034500.tif 000006
【図５】
2007034500.tif 000007