(57)【要約】【課題】回路面積の増大を抑えた１０進数の乗算を行う演算装置及び乗算装置を提供すること。【解決手段】４ビットで構成された２進数の値を信号Ａｉｎ［３：０］及び信号Ｂｉｎ［３：０］として２進数乗算器２１に入力する。２進数乗算器２１は入力された２つの値を乗算し、その積を信号Ｘｏｕｔ［７：０］として出力する。６倍補正器２２は信号Ｘｏｕｔ［７：４］を６倍し、信号Ｃｉｎ［７：０］として出力する。ＢＣＤ変換器２３は信号Ｘｏｕｔ［７：０］の下位４ビットが１０以上の場合、（６）ｄを加算して信号Ｄｉｎ［７：０］として出力する。１０進数加算器２４は信号Ｃｉｎ［７：０］と信号Ｄｉｎ［７：０］とを加算し、その和を信号ＢｃｄＦａＯｕｔ［７：０］として出力する。【選択図】    図２
2004295345.tif 000002
【特許請求の範囲】
【請求項１】
複数の数値データを２進数で乗算する２進数乗算手段と、
この２進数乗算手段による乗算結果の所定上位桁の値を６倍する６倍補正手段と、
前記２進数乗算手段による乗算結果を１０進数に変換する１０進変換手段と、
前記６倍補正手段によって６倍された値と、前記１０進変換手段によって変換された値とを１０進数で加算する１０進数加算手段と、
を備えることを特徴とする演算装置。
【請求項２】
前記１０進変換手段は、前記２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算する６加算手段を有し、この６加算手段による加算結果を１０進数に変換して出力する手段であることを特徴とする請求項１に記載の演算装置。
【請求項３】
４ビットで構成される複数の数値データを２進数で乗算し、乗算結果を８ビットで出力する２進数乗算手段と、
この２進数乗算手段による乗算結果の上位４ビットの値を６倍する６倍補正手段と、
前記２進数乗算手段による乗算結果を１０進数に変換する１０進変換手段と、
前記６倍補正手段によって６倍された値と、前記１０進変換手段によって変換された値とを１０進数で加算する１０進数加算手段と、
を備えることを特徴とする演算装置。
【請求項４】
前記１０進変換手段は、前記２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算する６加算手段を有し、この６加算手段による加算結果を１０進数に変換して出力する手段であることを特徴とする請求項３に記載の演算装置。
【請求項５】
前記２進数乗算手段による乗算結果と、前記１０進数加算手段による加算結果との何れか一方を選択して出力する選択手段を更に備えることを特徴とする請求項１〜４の何れか一項に記載の演算装置。
【請求項６】
ｎが２以上の整数から成るｎ桁の１０進数で表される被乗数と、１桁の１０進数で表される乗数とを乗算する乗算装置であって、
ｎ段で構成される請求項１〜４の何れか一項に記載の演算装置と、
この各々の演算装置から出力された値を１０進数で加算する第２の１０進数加算手段と、
を備え、ｉが１以上ｎ以下の整数から成るｉ段目の演算装置には、前記被乗数のｉ桁目の数値データと、前記乗数とが入力されることを特徴とする乗算装置。
【請求項７】
前記ｎ段の演算装置は、
奇数桁の前記被乗数と前記乗数とを乗算するａが小数点以下を切り上げたｎ／２の整数から成るａ段の演算装置と、
偶数桁の前記被乗数と前記乗数とを乗算するｂが小数点以下を切り捨てたｎ／２の整数から成るｂ段の演算装置と、
を有し、
前記第２の１０進数加算手段は、
前記ａ段の演算装置の各々より出力された値を所定の連結方式で連結する第１の連結手段と、
前記ｂ段の演算装置の各々より出力された値を所定の連結方式で連結する第２の連結手段と、
前記第１の連結手段によって連結された値と、前記第２の連結手段によって連結された値とを所定の１０進数加算で加算する第３の１０進数加算手段と、
を有することを特徴とする請求項６に記載の乗算装置。
【請求項８】
前記被乗数は、４桁の１０進数で表される数であり、前記演算装置を４段備えることを特徴とする請求項６又は７に記載の乗算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、１０進数の乗算を行う演算装置及び乗算装置に関するものである。
【０００２】
【従来の技術】
従来の１０進数乗算器は、乗算するそれぞれの１０進数の値を２進数に変換し、変換した値同士を乗算し、その乗算結果を再度１０進数に変換して出力していた。又は、予め限定された桁数の１０進数乗算テーブルをメモリ等に記憶させておき、この１０進乗算テーブルを必要桁数回検索し、検索結果を合成（加算）して１０進数乗算を実現させていた。
【０００３】
更に、次のような特許文献１の技術も知られている。即ち、ｊ桁（ｊは１以上の整数）の被乗数Ａにおいて、ＢＣＤコード化された１桁の被乗数Ａｐ（ｐは１以上ｊ以下の整数）と乗数Ｂｑとを入力し、その積の上位桁を出力値Ｃｐｑ、下位桁を出力値Ｍｐｑとして出力する１０進数乗算器をｊ個直列に接続する。ｐ番目の１０進数乗算器から出力される出力値Ｃｐｑは（ｐ＋１）番目の１０進数乗算器に入力されて当該１０進数乗算器で求められた積に加算され、各１０進数乗算器から出力された出力値Ｍｐｑを組み合わせることによって、全体の積を求める。
【０００４】
【特許文献１】
特開平７−６０２４号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、上述したような１０進数乗算器の場合、２進数と１０進数の変換が必要になるため乗数及び被乗数の桁数増大に伴って処理が煩雑になっていた。また、メモリに記憶させた１０進乗算テーブルを必要桁数検索する場合には、検索回数（桁数）の増加に伴って、演算時間が増大していた。更に、特許文献１のような技術を適用するとなると、素子数が増加し、回路面積が増大するため、コストアップが問題となっていた。
【０００６】
本発明の目的は、回路面積の増大を抑えた１０進数の乗算を行う演算装置及び乗算装置を提供することである。
【０００７】
【課題を解決するための手段】
以上の課題を解決するために、請求項１に記載の発明の演算装置は、複数の数値データを２進数で乗算する２進数乗算手段（例えば、図２の２進数乗算器２１）と、この２進数乗算手段による乗算結果の所定上位桁の値を６倍する６倍補正手段（例えば、図２の６倍補正器２２）と、前記２進数乗算手段による乗算結果を１０進数に変換する１０進変換手段（例えば、図２のＢＣＤ変換器２３）と、前記６倍補正手段によって６倍された値と、前記１０進変換手段によって変換された値とを１０進数で加算する１０進数加算手段（例えば、図２の１０進数加算器２４）と、を備えることを特徴としている。
【０００８】
また、請求項３に記載の発明の演算装置のように、４ビットで構成される複数の数値データを２進数で乗算し、乗算結果を８ビットで出力する２進数乗算手段（例えば、図２の２進数乗算器２１）と、この２進数乗算手段による乗算結果の上位４ビットの値を６倍する６倍補正手段（例えば、図２の６倍補正器２２）と、前記２進数乗算手段による乗算結果を１０進数に変換する１０進変換手段（例えば、図２のＢＣＤ補正器２３）と、前記６倍補正手段によって６倍された値と、前記１０進変換手段によって変換された値とを１０進数で加算する１０進数加算手段（例えば、図２の１０進数加算器２４）と、を備えることとしてもよい。
【０００９】
この請求項１又は３に記載の発明によれば、２進数乗算手段による乗算結果を、一方では６倍補正手段によって１０進数補正し、他方ではＢＣＤ変換手段によって１０進数変換し、それらを１０進数加算手段によって１０進数で加算することによって、１０進数の乗算結果を簡単に得ることができる。従って、１０進数乗算器を実現するために必要な回路数の増加を抑えることができ、回路面積の増大を最小限にすることができる。
【００１０】
請求項２に記載の発明は、請求項１に記載の演算装置であって、前記１０進変換手段は、前記２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算する６加算手段（例えば、図２のＢＣＤ補正器２３）を有し、この６加算手段による加算結果を１０進数に変換して出力する手段であることを特徴としている。
【００１１】
また、請求項４に記載の発明のように、請求項３に記載の演算装置であって、前記１０進変換手段は、前記２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算する６加算手段（例えば、図２のＢＣＤ補正器２３）を有し、この６加算手段による加算結果を１０進数に変換して出力する手段であることとしてもよい。
【００１２】
この請求項２又は４に記載の発明によれば、２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算することにより、２進数の乗算結果を簡単にＢＣＤコード化することができる。
【００１３】
請求項５に記載の発明は、請求項１〜４の何れか一項に記載の演算装置であって、前記２進数乗算手段による乗算結果と、前記１０進数加算手段による加算結果との何れか一方を選択して出力する選択手段（例えば、図７のセレクタ回路７１）を更に備えることを特徴としている。
【００１４】
この請求項５に記載の発明によれば、選択手段によって２進数の乗算結果と１０進数の乗算結果とを簡単に切り換えて出力させることができる。
【００１５】
請求項６に記載の発明の乗算装置は、ｎが２以上の整数から成るｎ桁の１０進数で表される被乗数と、１桁の１０進数で表される乗数とを乗算する乗算装置であって、ｎ段の請求項１〜４の何れか一項に記載の演算装置（例えば、図８の演算装置２００−１、２００−２、２００−３及び２００−４）と、前記演算装置の各々より出力された値を１０進数で加算する第２の１０進数加算手段（例えば、図８の加算回路８１）と、を備え、ｉが１以上ｎ以下の整数から成るｉ段目の演算装置には、前記被乗数のｉ桁目の数値データと、前記乗数とが入力されることを特徴としている。
【００１６】
この請求項６に記載の発明によれば、ｎ段の演算装置を設置し、当該演算装置より出力された値を１０進数で加算することにより、被乗数が１０進数ｎ桁、乗数が１０進数１桁である値同士を乗算する乗算装置を実現することができる。従って、第２の１０進数加算手段と、被乗数の桁数に応じて演算装置をｎ個設置すればよいため、乗算装置を簡単に設計することができる。
【００１７】
請求項７に記載の発明は、請求項６に記載の乗算装置であって、前記ｎ段の演算装置は、奇数桁の前記被乗数と前記乗数とを乗算するａが小数点以下を切り上げたｎ／２の整数から成るａ段の演算装置（例えば、図８の演算装置２００−３及び２００−４）と、偶数桁の前記被乗数と前記乗数とを乗算するｂが小数点以下を切り捨てたｎ／２の整数からなるｂ段の演算装置（例えば、図８の演算装置２００−１及び２００−２）と、を有し、前記第２の１０進数加算手段は、前記ａ段の演算装置の各々より出力された値を所定の連結方式で連結する第１の連結手段（例えば、図８の第１連結部８１１）と、前記ｂ段の演算装置の各々より出力された値を所定の連結方式で連結する第２の連結手段（例えば、図８の第２連結部８１２）と、前記第１の連結手段によって連結された値と、前記第２の連結手段によって連結された値とを所定の１０進数加算で加算する第３の１０進数加算手段（例えば、図８の加算部８１３）と、を有することを特徴としている。
【００１８】
この請求項７に記載の発明によれば、ｎ段の演算装置から出力された乗算結果を順番に加算して１０進数の乗算結果を得るよりも、簡単に１０進数の乗算結果を得ることができる。具体的には、キャリー処理等を考慮しなくてもよいため、煩雑な処理を省くことができる。従って、演算処理時間を短縮することができる。
【００１９】
また請求項８に記載の発明のように、請求項６又は７に記載の乗算装置は、前記被乗数は、４桁の１０進数で表される数であり、前記演算装置を４段備えることとしてもよい。
【００２０】
この請求項８に記載の発明によれば、１０進数４桁×１０進数１桁の乗算装置を実現することができる。
【００２１】
【発明の実施の形態】
〔第１の実施の形態〕
以下、図１〜図１０を参照して、本発明に係る実施の形態について詳細に説明する。尚、以下においては、本発明を、計算機能を有する関数電卓に適用した場合を例にとって説明するが、本発明が適用可能な実施形態は、これに限定されるものではなく、パソコンやＰＤＡ（パーソナルデジタルアシスタント）等、関数電卓以外の各種演算装置にも適用することができる。
【００２２】
図１は、関数電卓１の構成を示すブロック図である。同図に示すように、関数電卓１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、入力部１２、表示部１３、通信制御部１４、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６及び外部記憶メモリ１７によって構成されており、各部はバス１８によって接続されている。
【００２３】
ＣＰＵ１１は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送等を行う。具体的には、ＣＰＵ１１は、入力部１２から入力される操作信号に応じてＲＯＭ１５に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、処理結果をＲＡＭ１６に格納するとともに、当該処理結果を表示するための表示信号を適宜出力して、当該表示信号に対応した表示情報を表示部１３に表示させる。
【００２４】
またＣＰＵ１１は演算制御回路１１０を備える。演算制御回路部１１０は演算装置２００を有する。演算装置２００は、４ビットで構成された２進数の数値データを入力して乗算し、乗算結果を１０進数で出力する。演算装置２００の詳細は後述する。
【００２５】
入力部１２は、ユーザが数値や演算処理の実行指示等を入力する手段である。そしてユーザに操作されたキーに対応する操作信号がＣＰＵ１１に出力される。
【００２６】
表示部１３は、入力部１２の操作によって入力された文字や符号、ＣＰＵ１１から出力される表示信号に基づいた演算結果やグラフ表示等、関数電卓１を使用するために必要な各種データが表示される部分である。
【００２７】
通信制御部１４は、外部機器と通信回線網を介して各種データを送受信するためのインターフェースであり、ＣＰＵ１１からの信号によって動作する。
【００２８】
ＲＯＭ１５は、各種設定処理、各種演算処理等の関数電卓１の動作に係る各種処理プログラムや、関数電卓１の備える種々の機能を実現するためのアプリケーション等を記憶する。
【００２９】
ＲＡＭ１６は、ＣＰＵ１１が実行する各種プログラムや、これらのプログラムの実行にかかるデータ等を一時的に保持するメモリ領域を備える。
【００３０】
外部記憶メモリ１７は、例えば、メモリカード、ハードディスク等の記憶媒体であって、ＣＰＵ１１からの指示信号に従って、各種データの読み書きを行う。
【００３１】
図２は演算制御回路１１０に含まれる演算装置２００の一例を示す回路ブロック図である。演算装置２００は、２進数乗算器２１、６倍補正器２２、ＢＣＤ変換器２３及び１０進数加算器２４を備えて構成されている。
【００３２】
２進数乗算器２１には信号Ａｉｎ［３：０］及び信号Ｂｉｎ［３：０］が入力される。信号Ａｉｎ［３：０］及び信号Ｂｉｎ［３：０］は４ビットで構成された２進数の数値データである。つまり、信号Ａｉｎ［３：０］及び信号Ｂｉｎ［３：０］は（００００）ｂ〜（１００１）ｂ、即ち（０）ｄ〜（９）ｄの範囲の値を持つ。２進数乗算器２１は入力された２つの信号を乗算し、その積を８ビットの信号Ｘｏｕｔ［７：０］として出力する。
【００３３】
６倍補正器２２には、信号Ｘｏｕｔ［７：０］の上位４ビットである信号Ｘｏｕｔ［７：４］が入力される。６倍補正器２２は入力された信号を６倍し、６倍した値をＢＣＤコード化して信号Ｃｉｎ［７：０］として出力する。
【００３４】
ここで、信号Ａｉｎ［３：０］及び信号Ｂｉｎ［３：０］の最大値は（１００１）ｂ＝（９）ｄであるため、信号Ｘｏｕｔ［７：０］の最大値は（８１）ｄ＝（５１）ｈである。つまり、信号Ｘｏｕｔ［７：４］は（０）ｈ〜（５）ｈ、即ち（００００）ｂ〜（０１０１）ｂの何れかの値を持つこととなる。そこで信号Ｘｏｕｔ［７：４］の値と、信号Ｘｏｕｔ［７：４］の値を６倍した信号Ｃｉｎ［７：０］の値との対応関係を、取り得る全組み合わせ分、予め６倍補正器２２の備える記憶部に記憶させておく。そして６倍補正器２２は、信号Ｘｏｕｔ［７：４］の値に応じた信号Ｃｉｎ［７：０］の値を適宜読み出して出力する。
【００３５】
図３は信号Ｘｏｕｔ［７：４］と信号Ｃｉｎ［７：０］との対応関係を記憶した乗算テーブル３１の一例を示した図である。例えば信号Ｘｏｕｔ［７：４］＝（００１０）ｂの場合、６倍補正器２２は信号Ｃｉｎ［７：０］＝（０００１００１０）ｂを出力する。
【００３６】
尚、６倍補正器２２は、入力された信号Ｘｏｕｔ［７：４］の値の回数分、（０１１０）ｂを足し合わせて、足し合わせた結果をＢＣＤコード化して信号Ｃｉｎ［７：０］として出力するようにしてもよい。
【００３７】
ＢＣＤ変換器２３には信号Ｘｏｕｔ［７：０］が入力される。ＢＣＤ変換器２３は、図４に示すように、信号Ｘｏｕｔ［７：０］の下位４ビットが（１００１）ｂ＝（９）ｄ以下の場合、信号Ｘｏｕｔ［７：０］をそのまま信号Ｄｉｎ［７：０］として出力する。一方、信号Ｘｏｕｔ［７：０］の下位４ビットが（１０１０）ｂ＝（１０）ｄ以上の場合、信号Ｘｏｕｔ［７：０］に（０００００１１０）ｂを加算し、その和を信号Ｄｉｎ［７：０］として出力する。
【００３８】
１０進数加算器２４には信号Ｃｉｎ［７：０］と信号Ｄｉｎ［７：０］が入力される。１０進数加算器２４は入力された２つの信号を１０進数で加算し、その和を信号ＢｃｄＦａＯｕｔ［７：０］として出力する。
【００３９】
図５は演算装置２００の動作を説明するための図である。まず図５（ａ）を用いて、信号Ａｉｎ［３：０］＝（０１１０）ｂ及び信号Ｂｉｎ［３：０］＝（０１１１）ｂが入力された場合を説明する。
【００４０】
まず２進数乗算器２１は入力された２つの信号を乗算する。（０１１０）ｂ×（０１１１）ｂ＝（００１０１０１０）ｂとなり、２進数乗算器２１はこの積（乗算結果）を信号Ｘｏｕｔ［７：０］として出力する。
【００４１】
６倍補正器２２には信号Ｘｏｕｔ［７：４］＝（００１０）ｂが入力される。６倍補正器２２は入力された（００１０）ｂに対応する値を乗算テーブル３１から読み出す。この場合（０００１００１０）ｂとなり、６倍補正器２２は信号Ｃｉｎ［７：０］＝（０００１００１０）ｂを出力する。即ち、当該２進数の値をＢＣＤコード化した（１２）ｄを出力する。
【００４２】
ＢＣＤ変換器２３には信号Ｘｏｕｔ［７：０］＝（００１０１０１０）ｂが入力される。ＢＣＤ変換器２３は入力された信号Ｘｏｕｔ［７：０］の下位３ビットが（１０１０）ｂ以上であるか否かを判定する。この場合、信号Ｘｏｕｔ［３：０］＝（１０１０）ｂであるため、ＢＣＤ変換器２３は信号Ｘｏｕｔ［７：０］に（０００００１１０）ｂを加算する。（００１０１０１０）ｂ＋（０００００１１０）ｂ＝（００１１００００）ｂとなり、ＢＣＤ変換器２３は信号Ｄｉｎ［７：０］＝（００１１００００）ｂを出力する。即ち、当該２進数の値をＢＣＤコード化した（３０）ｄを出力する。
【００４３】
１０進数加算器２４には信号Ｃｉｎ［７：０］＝（０００１００１０）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１２）ｄと、信号Ｄｉｎ［７：０］＝（００１１００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（３０）ｄが入力される。１０進数加算器２４は入力された２つの信号を加算する。（０００１００１０）ｂ＋（００１１００００）ｂ＝（０１００００１０）ｂ、即ちＢＣＤコード化して表すと（１２）ｄ＋（３０）ｄ＝（４２）ｄとなり、この和を信号ＢｃｄＦａＯｕｔ［７：０］として出力する。
【００４４】
次に、図５（ｂ）を用いて、信号Ａｉｎ［３：０］＝（１０００）ｂ及び信号Ｂｉｎ［３：０］＝（１００１）ｂが入力された場合を説明する。
【００４５】
まず２進数乗算器２１は入力された２つの信号を乗算する。（１０００）ｂ×（１００１）ｂ＝（０１００１０００）ｂとなり、２進数乗算器２１はこの積（乗算結果）を信号Ｘｏｕｔ［７：０］として出力する。
【００４６】
６倍補正器２２には信号Ｘｏｕｔ［７：４］＝（０１００）ｂが入力される。６倍補正器２２は入力された（０１００）ｂに対応する値を乗算テーブル３１から読み出す。この場合（００１００１００）ｂとなり、６倍補正器２２は信号Ｃｉｎ［７：０］＝（００１００１００）ｂを出力する。即ち、当該２進数の値をＢＣＤコード化した（２４）ｄを出力する。
【００４７】
ＢＣＤ変換器２３には信号Ｘｏｕｔ［７：０］＝（０１００１０００）ｂが入力される。ＢＣＤ変換器２３は入力された信号Ｘｏｕｔ［７：０］の下位３ビットが（１０１０）ｂ以上であるか否かを判定する。この場合、信号Ｘｏｕｔ［３：０］＝（１０００）ｂであるため、ＢＣＤ変換器２３は信号Ｄｉｎ［７：０］＝（０１００１０００）ｂを出力する。即ち、当該２進数の値をＢＣＤコード化した（４８）ｄとして出力する。
【００４８】
１０進数加算器２４には信号Ｃｉｎ［７：０］＝（００１００１００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（２４）ｄと、信号Ｄｉｎ［７：０］＝（０１００１０００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（４８）ｄが入力される。１０進数加算器２４は入力された２つの信号を加算する。ここで（００１００１００）ｂ＋（０１００１０００）ｂ＝（０１１０１１００）ｂとなるが、下位４ビットが（１０１０）以上となるため、（０００００１１０）ｂを加算し、（０１１１００１０）ｂとする。つまりＢＣＤコード化して表すと、（２４）ｄ＋（４８）ｄ＝（７２）ｄとなり、この和を信号ＢｃｄＦａＯｕｔ［７：０］として出力する。
【００４９】
図６は、演算装置２００の動作の流れを示したフローチャートである。まず２進数乗算器２１は、入力された信号Ａｉｎ［３：０］と信号Ｂｉｎ［３：０］を乗算し、その積を信号Ｘｏｕｔ［７：０］として出力する（ステップＡ１）。
【００５０】
そして６倍補正器２２は入力された信号Ｘｏｕｔ［７：４］に基づいて乗算テーブル３１より対応する値を読み出し、読み出した値を信号Ｃｉｎ［７：０］として出力する（ステップＡ２）。
【００５１】
一方、ＢＣＤ変換器２３は入力された信号Ｘｏｕｔ［７：０］の下位４ビットが（１０１０）ｂ＝（１０）ｄ以上であるか否かを判定する（ステップＡ３）。（１０１０）ｂ＝（１０）ｄ以上の場合（ステップＡ３；Ｙｅｓ）、ＢＣＤ変換器２３は信号Ｘｏｕｔ［７：０］に（０１１０）ｂ＝（６）ｄを加算し、その和を信号Ｄｉｎ［７：０］として出力する（ステップＡ４）。
【００５２】
信号Ｘｏｕｔ［７：０］の下位４ビットが（１０１０）ｂ＝（１０）ｄより小さい場合（ステップＡ３；Ｎｏ）、ＢＣＤ変換器２３は信号Ｘｏｕｔ［７：０］を信号Ｄｉｎ［７：０］として出力する（ステップＡ５）。
【００５３】
そして１０進数加算器２４は入力された信号Ｃｉｎ［７：０］と信号Ｄｉｎ［７：０］とを加算し、その和を信号ＢｃｄＦａＯｕｔ［７：０］として出力する（ステップＡ６）。
【００５４】
以上説明したように、２進数乗算器２１に２進数の値を入力して乗算し、その乗算結果を６倍補正器２２及びＢＣＤ変換器２３によって補正した後、それぞれを出力した信号を１０進数加算器２４で加算することによって、１０進数の乗算結果を得ることができる。従って、関数電卓１に本来備わっていた２進数乗算器を用い、６倍補正器２２、ＢＣＤ変換器２３及び１０進数加算器２４を新しく追加することによって、１０進数の乗算を行う機能を簡単に実現することができる。これにより、乗算のために新たに必要となる回路数（素子数）を抑えることができ、回路面積の増大を抑制することができる。
【００５５】
以上、本発明を適用した第１の実施の形態を説明したが、本発明は上述の実施の形態についてのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００５６】
図７は、２進数乗算器２１から出力される信号Ｘｏｕｔ［７：０］と、１０進数加算器２４から出力される信号ＢｃｄＦａＯｕｔ［７：０］とを入力し、信号ｓｅｌｅｃｔに従って、入力した２つの信号のうち何れか一方の信号を出力するセレクタ回路７１を備えた演算装置７００の一例を示す回路ブロック図である。
【００５７】
尚、図７の演算装置７００は、図２の演算装置２００にセレクタ回路７１を追加した構成と同様であり、以下、同一の構成要素には同一の符号を付して、その説明を省略する。
【００５８】
セレクタ回路７１には信号Ｘｏｕｔ［７：０］、信号ＢｃｄＦａＯｕｔ［７：０］及び信号ｓｅｌｅｃｔが入力される。セレクタ回路７１は信号ｓｅｌｅｃｔの内容に従って、入力された信号Ｘｏｕｔ［７：０］及び信号ＢｃｄＦａＯｕｔ［７：０］のうち何れか一方の信号を選択して出力する。信号ｓｅｌｅｃｔの内容は、ＣＰＵ１１等の指示によって変化する。
【００５９】
即ち、演算装置７００から出力する演算結果として、２進数の乗算結果を出力するか、或いは１０進数の乗算結果を出力するかを、信号ｓｅｌｅｃｔによって簡単に切り換えることができる。従って、セレクタ回路７１を追加するだけで、演算装置２００は２進数の乗算機能と１０進数の乗算機能を備えることなる。即ち、回路数の増加を最小限に抑えて、２進数と１０進数の乗算結果の出力を切り換え可能な関数電卓１を実現できる。
【００６０】
〔第２の実施の形態〕
第１の実施の形態では、４ビット（１０進数１桁）で構成された２進数の数値データを２つ入力して乗算し、乗算結果を１０進数で出力する演算回路について説明したが、本実施の形態では、１６ビット（１０進数４桁）で構成された２進数の被乗数と４ビット（１０進数１桁）で構成された２進数の乗数を用いて乗算を行い、その乗算結果を１０進数で出力する乗算装置８００について説明する。
【００６１】
乗算装置８００は、図１の演算制御回路部１１０に含まれる。尚、第２の実施の形態における関数電卓の構成は、図１の関数電卓１の構成と同様である。従って、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【００６２】
図８は乗算装置８００の一例を示す回路ブロック図である。乗算装置８００は、演算装置２００−１、２００−２、２００−３及び２００−４と、加算回路８１とを備える。演算装置２００−１〜２００−４は、第１の実施の形態における演算装置２００と同一の構成・機能を持つ。
【００６３】
乗算装置８００には１６ビットの信号Ａｉｎ２［１５：０］と４ビットの信号Ｂｉｎ［３：０］が入力される。そして演算装置２００−１には信号Ａｉｎ２［１５：１２］と信号Ｂｉｎ［３：０］が、演算装置２００−２には信号Ａｉｎ２［７：４］と信号Ｂｉｎ［３：０］が、演算装置２００−３には信号Ａｉｎ２［１１：８］と信号Ｂｉｎ［３：０］が、演算装置２００−４には信号Ａｉｎ２［３：０］と信号Ｂｉｎ［３：０］が、それぞれ入力される。つまり、演算装置２００−１〜２００−４のそれぞれには、４ビットで構成された信号が２つずつ入力される。
【００６４】
演算装置２００−１は入力された２つの信号を乗算し、乗算結果を信号ＢｃｄＦａＯｕｔ４［７：０］として出力する。演算装置２００−２は入力された２つの信号を乗算し、乗算結果を信号ＢｃｄＦａＯｕｔ２［７：０］として出力する。演算装置２００−３は入力された２つの信号を乗算し、乗算結果を信号ＢｃｄＦａＯｕｔ３［７：０］として出力する。演算装置２００−４は入力された２つの信号を乗算し、乗算結果を信号ＢｃｄＦａＯｕｔ１［７：０］として出力する。
【００６５】
加算回路８１は、信号ＢｃｄＦａＯｕｔ１［７：０］、信号ＢｃｄＦａＯｕｔ２［７：０］、信号ＢｃｄＦａＯｕｔ３［７：０］及び信号ＢｃｄＦａＯｕｔ４の示す値を加算し、その和を出力する回路であり、第１連結部８１１、第２連結部８１２及び加算部８１３によって構成される。
【００６６】
第１連結部８１１には、信号ＢｃｄＦａＯｕｔ４［７：０］及び信号ＢｃｄＦａＯｕｔ２［７：０］が入力される。第１連結部８１１は入力された信号ＢｃｄＦａＯｕｔ４［７：０］が示す１０進数の２桁の数と、信号ＢｃｄＦａＯｕｔ２［７：０］が示す１０進数の２桁の数とを連結して４桁１０進数の値とする。
【００６７】
第２連結部８１２には、信号ＢｃｄＦａＯｕｔ３［７：０］及び信号ＢｃｄＦａＯｕｔ１［７：０］が入力される。第２連結部８１２は入力された信号ＢｃｄＦａＯｕｔ３［７：０］が示す１０進数の２桁の数と、信号ＢｃｄＦａＯｕｔ２［７：０］が示す１０進数の２桁の数とを連結して４桁１０進数の値とする。
【００６８】
加算部８１３には、第１連結部８１１によって連結された値と、第２連結部８１２によって連結された値とが入力される。加算部８１３は第１連結部８１１から入力された値を１０進数で１桁（ＢＣＤ化されたコードで４ビット分）上位にシフトし、第２連結部８１２から入力された値と加算し、その和を信号ＦａＯｕｔ［１９：０］として出力する。
【００６９】
加算回路８１について、図９を用いて具体的に説明する。例えば、「１２３４×５」の計算をする場合、まず乗算装置８００には信号Ａｉｎ２［１５：０］＝（０００１００１０００１１０１００）ｂ、即ち、ＢＣＤコード化した（１２３４）ｄと、信号Ｂｉｎ［３：０］＝（０１０１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（５）ｄが入力される。
【００７０】
そして演算装置２００−１から信号ＢｃｄＦａＯｕｔ４［７：０］＝（０１０１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（５）ｄ、演算装置２００−２から信号ＢｃｄＦａＯｕｔ２［７：０］＝（０００１０１０１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１５）ｄ、演算装置２００−３から信号ＢｃｄＦａＯｕｔ３［７：０］＝（０００１００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１０）ｄ、演算装置２００−４から信号ＢｃｄＦａＯｕｔ１［７：０］＝（００１０００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（２０）ｄがそれぞれ出力される。
【００７１】
第１連結部８１１は、信号ＢｃｄＦａＯｕｔ４［７：０］＝（０１０１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（５）ｄを１０進数４、５桁目、信号ＢｃｄＦａＯｕｔ２［７：０］＝（０００１０１０１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１５）ｄを１０進数２、３桁目として２つの値を連結する。１桁目は“０”であるから、連結によって（０１０１０００１０１０１００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（５１５０）ｄという値が生成される。即ち、この（５１５０）ｄは、図９において数値９１と数値９３を加算した値である。
【００７２】
更に第２連結部８１２は、信号ＢｃｄＦａＯｕｔ３［７：０］＝（０００１００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１０）ｄを１０進数３、４桁目、信号ＢｃｄＦａＯｕｔ１［７：０］＝（００１０００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（２０）ｄを１０進数１、２桁目として２つの値を連結する。連結によって（０００１００００００１０００００）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１０２０）ｄという値が生成される。即ち（１０２０）ｄは、図９において数値９２と数値９４を加算した値である。
【００７３】
そして連結によって生成された２つの値（５１５０）ｄと（１０２０）ｄとを加算することによって、（６１７０）ｄが求められ、加算回路８１はこの値を信号ＦａＯｕｔ［１９：０］として出力する。
【００７４】
このように、演算装置２００−１〜２００−４から出力された乗算結果を小さい桁から順番に加算せず、被乗数（信号Ａｉｎ２［１５：０］）の１０進数の偶数桁に当たる数と乗数（信号Ｂｉｎ［３：０］）との積を連結し、更に被乗数の奇数桁に当たる数と乗数との積を連結し、最後に連結によって生成された２つの値を加算することによって、１０進数４桁と１０進数１桁の値同士を乗算するための回路に必要な回路規模を縮小できる。
【００７５】
また、演算装置２００−１〜２００−４から出力された乗算結果を小さい桁から順番に加算することにより発生するキャリー処理等といった煩雑な処理を省くことができるため、演算処理速度を速めることができる。
【００７６】
図１０は乗算装置８００の動作を説明するための図である。以下「１２３４×３」を行う場合を例に説明する。まず信号Ａｉｎ２［１５：１２］＝（０００１）ｂと信号Ｂｉｎ［３：０］＝（００１１）ｂが演算装置２００−１に、信号Ａｉｎ２［７：４］＝（００１１）ｂと信号Ｂｉｎ［３：０］＝（００１１）ｂが演算装置２００−２に、信号Ａｉｎ２［１１：８］＝（００１０）ｂと信号Ｂｉｎ［３：０］＝（００１１）ｂが演算装置２００−３に、信号Ａｉｎ２［３：０］＝（０１００）ｂと信号Ｂｉｎ［３：０］＝（００１１）ｂが演算装置２００−４にそれぞれ入力される。
【００７７】
演算装置２００−１〜２００−４はそれぞれに入力された２つの値を乗算する。そして、乗算結果を出力する。つまり演算装置２００−１からは信号ＢｃｄＦａＯｕｔ４［７：０］＝（００００００１１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（３）ｄ、演算装置２００−２からは信号ＢｃｄＦａＯｕｔ２［７：０］＝（００００１００１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（９）ｂ、演算装置２００−３からは信号ＢｃｄＦａＯｕｔ３［７：０］＝（０００００１１０）ｂ、即ち、当該２進数の値をＢＣＤコード化した（６）ｂ、演算装置２００−４からは信号ＢｃｄＦａＯｕｔ１［７：０］、即ち、当該２進数の値をＢＣＤコード化した（０００１００１０）ｂ＝（１２）ｄがそれぞれ出力される。
【００７８】
続いて第１連結部８１１は、信号ＢｃｄＦａＯｕｔ４［７：０］＝（００００００１１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（３）ｄを１０進数５、４桁目、信号ＢｃｄＦａＯｕｔ２［７：０］＝（００００１００１）ｂ、即ち、当該２進数の値をＢＣＤコード化した（９）ｄを１０進数２、３桁目として２つの値を連結する。つまり（００００００１１００００１００１００００）ｂ、即ち、当該２進数の値をＢＣＤコード化すると（３０９０）ｄとなる。
【００７９】
更に第２連結部８１２は、信号ＢｃｄＦａＯｕｔ３［７：０］＝（０００００１１０）ｂ、即ち、当該２進数の値をＢＣＤコード化した（６）ｄを３、４桁目、信号ＢｃｄＦａＯｕｔ１［７：０］＝（０００１００１０）ｂ、即ち、当該２進数の値をＢＣＤコード化した（１２）ｄを１、２桁目として２つの値を連結する。つまり（０００００１１００００１００１０）ｂ、即ち、当該２進数の値をＢＣＤコード化すると（６１２）ｄとなる。
【００８０】
そして加算部８１３は連結によって生成された２つの値を入力して加算し、その和を信号ＦａＯｕｔ［１９：０］として出力する。即ち、（００００００１１００００１００１００００）ｂ＋（０００００１１００００１００１０）ｂ＝（００００００１１０１１０１０１０００１０）ｂとなる。
【００８１】
この場合１０進数２桁目に対応する４ビットが（１０１０）ｂであるため、１０進数２桁目の４ビットに（０１１０）ｂを加算して、１つ上の桁を繰り上げて、（００００００１１０１１１００００００１０）ｂとする。つまり（３０９０）ｄ＋（６１２）ｄ＝（３７０２）ｄが信号ＦａＯｕｔ［１９：０］として出力される。
【００８２】
以上説明したように、演算装置２００を４つ組み合わせることによって、１０進数４桁の被乗数と１０進数１桁の乗数による乗算を行い、乗算結果を１０進数で出力することができる。
【００８３】
以上、本発明を適用した第２の実施の形態を説明したが、本発明は上述の実施の形態についてのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００８４】
本実施の形態では、乗算装置８００は４桁の１０進数で表される被乗数と１桁の１０進数で表される乗数を入力し、その乗算結果を４つの演算装置２００を用いて算出することとして説明したが、ｎが２以上の整数から成るｎ桁の１０進数で表される被乗数と、１桁の１０進数で表される乗数とを乗算する場合、乗算装置は演算装置２００をｎ段と、各々の演算装置２００から出力された値を１０進数で加算する加算回路を備え、ｉが１以上ｎ以下の整数から成るｉ段目の演算装置２００には、被乗数のｉ桁目の数値データと、乗数とが入力されることとして構成する。
【００８５】
この場合、ｎ段の演算装置２００は、奇数桁の被乗数と乗数とを乗算するａが小数点以下を切り上げたｎ／２の整数から成るａ段の演算装置２００と、偶数桁の被乗数と乗数とを乗算するｂが小数点以下を切り捨てたｎ／２の整数から成るｂ段の演算装置２００からなり、加算回路は、ａ段の演算装置２００の各々より出力された値を所定の連結方式で連結し、更にｂ段の演算装置の各々より出力された値を所定の連結方式で連結し、この２つの連結された値を所定の１０進数加算で加算して出力することとする。
【００８６】
また、加算部８１３において第１連結部８１１から入力された値を１０進数で１桁上位にシフトし、第２連結部８１２から入力された値と加算することとしたが、第１連結部８１１において連結した値を１０進数で１桁上位にシフトし、シフト後の値を加算部８１３に出力するようにしてもよい。
【００８７】
【発明の効果】
請求項１又は３に記載の発明によれば、２進数乗算手段による乗算結果を、一方では６倍補正手段によって１０進数補正し、他方ではＢＣＤ変換手段によって１０進数変換し、それらを１０進数加算手段によって１０進数で加算することによって、１０進数の乗算結果を簡単に得ることができる。従って、１０進数乗算器を実現するために必要な回路数の増加を抑えることができ、回路面積の増大を最小限にすることができる。
【００８８】
請求項２又は４に記載の発明によれば、２進数乗算手段による乗算結果の下位４ビットが１０以上の場合、当該乗算結果に６を加算することにより、２進数の乗算結果を簡単にＢＣＤコード化することができる。
【００８９】
請求項５に記載の発明によれば、選択手段によって２進数の乗算結果と１０進数の乗算結果とを簡単に切り換えて出力させることができる。
【００９０】
請求項６に記載の発明によれば、ｎ段の演算装置を設置し、当該演算装置より出力された値を１０進数で加算することにより、被乗数が１０進数ｎ桁、乗数が１０進数１桁である値同士を乗算する乗算装置を実現することができる。従って、第２の１０進数加算手段と、被乗数の桁数に応じて演算装置をｎ個設置すればよいため、乗算装置を簡単に設計することができる。
【００９１】
請求項７に記載の発明によれば、ｎ段の演算装置から出力された乗算結果を順番に加算して１０進数の乗算結果を得るよりも、簡単に１０進数の乗算結果を得ることができる。具体的には、キャリー処理等を考慮しなくてもよいため、煩雑な処理を省くことができる。従って、演算処理時間を短縮することができる。
【００９２】
請求項８に記載の発明によれば、１０進数４桁×１０進数１桁の乗算装置を実現することができる。
【図面の簡単な説明】
【図１】関数電卓の内部構成を示すブロック図。
【図２】第１の実施の形態における演算回路の回路ブロック図の一例を示す図。
【図３】第１の実施の形態における乗算テーブルの一例を示す図。
【図４】第１の実施の形態におけるＢＣＤ変換器の入出力の対応関係を示す図。
【図５】第１の実施の形態における演算回路の動作を説明するための図。
【図６】第１の実施の形態における演算回路の動作を説明するためのフローチャート。
【図７】第１の実施の形態における演算回路の変形例を示す図。
【図８】第２の実施の形態における演算制御回路部の回路ブロック図の一例を示す図。
【図９】第２の実施の形態における加算回路の動作を説明するための図。
【図１０】第２の実施の形態における演算制御回路部の動作を説明するための図。
【符号の説明】
１    関数電卓
１１    ＣＰＵ
１１０    演算制御回路部
２００    演算装置
２１      ２進数乗算器
２２      ６倍補正器
２３      ＢＣＤ変換器
２４      １０進数加算器
１２    入力部
１３    表示部
１４    通信制御部
１５    ＲＯＭ
１６    ＲＡＭ
１７    外部記憶メモリ
【図１】
2004295345.tif 000003
【図２】
2004295345.tif 000004
【図３】
2004295345.tif 000005
【図４】
2004295345.tif 000006
【図５】
2004295345.tif 000007
【図６】
2004295345.tif 000008
【図７】
2004295345.tif 000009
【図８】
2004295345.tif 000010
【図９】
2004295345.tif 000011
【図１０】
2004295345.tif 000012