(57)【特許請求の範囲】
【請求項１】
１０進データを２０倍する１０進２０倍数生成回路と、
１０進データを４倍する１０進４倍数生成回路と、
変換の対象となる２進数値を格納し演算サイクルに従って上位４ビットの２進数値を出力すると次の演算サイクルに備え２進数値を左へ４ビットシフトさせる２進データレジスタと、
前記２進データレジスタの左端上位の４ビットを入力して５ビットの１０進数値に変換する４ビット２進１０進変換器と、
前記１０進２０倍数生成回路の出力データと前記４ビット２進１０進変換器の出力データとを第１のデータ入力とし前記１０進４倍数生成回路の出力データを反転したデータを第２のデータ入力とし且つ１のキャリを入力して第１のデータ入力と第２のデータ入力との加算を行う１０進加算器と、
前記１０進加算器の演算結果を保持し次の演算サイクルに前記１０進２０倍数生成回路と前記１０進４倍数生成回路とに保持したデータを出力する１０進データレジスタと、を備え、
前記２進データレジスタからの４ビットの２進数値の出力と前記１０進データレジスタからの１０進数値の出力とを１演算サイクルにおいて同期して行うことを特徴とする２進１０進変換回路。
【請求項２】
前記１０進２０倍数生成回路の出力する１０進２０倍数データと前記１０進２０倍数データの下位５ビットは０であることを利用し前記４ビット２進１０進変換器の出力データを前記下位５ビットの位置に取り込んで第１のデータ入力とし、前記１０進４倍数生成回路による１０進４倍数を反転したデータを第２のデータ入力とし、前記１０進２０倍数データと前記４ビット２進１０進変換器の出力データと前記１０進４倍数データとを１回の演算で加算する１０進加算器を備えることを特徴とする請求項１記載の２進１０進変換回路。
【請求項３】
前記第１のデータ入力と前記第２のデータ入力とを元に前演算サイクルでの演算結果の１０進１６倍数に前記４ビット２進１０進変換器の出力結果を合計する数値を出力する１０進加算器を備えることを特徴とする請求項１または２記載の２進１０進変換回路。
【請求項４】
１０進データを２倍する１０進２倍数生成回路を２段に直列に接続した構成からなる前記１０進４倍数生成回路を備えることを特徴とする請求項１記載の２進１０進変換回路。
【請求項５】
１０進２倍数を前記１０進２倍数生成回路で生成しその結果を４ビット左へシフトする事で１０進２０倍数を生成する前記１０進２０倍数生成回路を備えることを特徴とする請求項１記載の２進１０進変換回路。
【請求項６】
前記２進データレジスタに格納された２進数値の変換後の１０進数値を格納する前記１０進データレジスタを備えることを特徴とする請求項１記載の２進１０進変換回路。
【請求項７】
変換の対象となる２進数値の上位から４ビットを出力すると当該２進数値を左へ４ビットシフトして次の演算サイクルの準備をする第１のステップと、
第１のステップで出力された４ビットの２進数値を５ビットの１０進数値に変換する第２のステップと、
前演算サイクルで生成された１０進数の２０倍数と４倍数とを生成する第３のステップと、
第３のステップで生成された４倍数に対して反転を行う第４のステップと、
第２のステップによる１０進数値と前記第３のステップの２０倍数とを第１の入力とし前記第４のステップで反転された４倍数を第２の入力としキャリに１を入力して加算を行い１０進数を生成する第５のステップと、
第５のステップで生成された結果を保持し次の演算サイクルにおいて第３のステップへの出力を行う第６のステップと、
を備えることを特徴とする２進１０進変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置における２進数を１０進数に変換する回路に関し、特に２進数を４ビットずつ１０進数に変換する事で変換速度の高速化を図った２進１０進変換回路に関する。
【０００２】
【従来の技術】
従来の２進１０進変換回路においては、たとえば、「特開昭５９−１６８５４３号公報」記載の技術のように、２進データの各ビットを１ビット毎に検査することにより変換を行っている。
【０００３】
図９は、この従来の技術を示すブロック図である。図９を参照すると、この２進１０進変換回路は、２進データセレクタ１１と、２進データレジスタ１２と、１０進加算器１３と、１０進データレジスタ１４とから構成される。
【０００４】
変換対象２進データ０００と２進データレジスタ１２を１ビット左にシフトしたデータ３００とを２進データセレクタ１１に入力し、２進データセレクタ１１の出力１００を２進データレジスタ１２に入力し、１０進データレジスタ１４の出力５００を１０進加算器１３の両方の入力に入力し、２進データレジスタ１２の最上位１ビット２００を１０進加算器１３のキャリー入力に入力し、１０進加算器１３の出力４００を１０進データレジスタ１４に入力する。
【０００５】
まず、変換対象の２進データ０００を２進データセレクタ１１を経由して２進データレジスタ１２にロードし、同時に１０進データレジスタ１４をリセットする。
【０００６】
次に、２進データレジスタ１２の最上位ビット２００と１０進データレジスタ１４のデータ５００とを１０進加算器１３で加算することにより、１０進データレジスタ１４の値５００の２倍数と２進データレジスタ１２の最上位ビット２００との加算を行う。また、１０進加算器１３の出力４００を１０進データレジスタ１４に格納すると同時に、２進データレジスタ１２のデータを１ビット左シフトしたデータ３００を、２進データセレクタ１１を経由して２進データレジスタ１２に格納する。
【０００７】
この動作を２進データのビット数分だけ繰り返すことにより２進１０進変換を行っている。
【０００８】
【発明が解決しようとする課題】
上述した従来の２進１０進変換回路では、２進データがｎ（正整数）ビットとすると、ｎ回の加算動作が演算回路に要求される。このため２進１０進変換に必要な実行時間が大きくなり、演算速度の低下および処理時間の増大を招くという欠点がある。このため本発明者による特開２０００−２００１７４号公報によって一演算サイクルにおいて３ビットずつの２進１０進変換を行う改善を行ったが本発明ではさらにそれを４ビットずつ処理することで、一層の高速化を図るものである。
【０００９】
【課題を解決するための手段】
本発明の第１の２進１０進変換回路は、１０進データを２０倍する１０進２０倍数生成回路と、
１０進データを４倍する１０進４倍数生成回路と、
変換の対象となる２進数値を格納し演算サイクルに従って上位４ビットの２進数値を出力すると次の演算サイクルに備え２進数値を左へ４ビットシフトさせる２進データレジスタと、
前記２進データレジスタの左端上位の４ビットを入力して５ビットの１０進数値に変換する４ビット２進１０進変換器と、
前記１０進２０倍数生成回路の出力データと前記４ビット２進１０進変換器の出力データとを第１のデータ入力とし前記１０進４倍数生成回路の出力データを反転したデータを第２のデータ入力とし且つ１のキャリを入力して第１のデータ入力と第２のデータ入力との加算を行う１０進加算器と、
前記１０進加算器の演算結果を保持し次の演算サイクルに前記１０進２０倍数生成回路と前記１０進４倍数生成回路とに保持したデータを出力する１０進データレジスタと、を備え、
前記２進データレジスタからの４ビットの２進数値の出力と前記１０進データレジスタからの１０進数値の出力とを１演算サイクルにおいて同期して行うことを特徴とする。
【００１０】
本発明の第２の２進１０進変換回路は、第１の発明において、前記１０進２０倍数生成回路の出力する１０進２０倍数データと前記１０進２０倍数データの下位５ビットは０であることを利用し前記４ビット２進１０進変換器の出力データを前記下位５ビットの位置に取り込んで第１のデータ入力とし、前記１０進４倍数生成回路による１０進４倍数を反転したデータを第２のデータ入力とし、前記１０進２０倍数データと前記４ビット２進１０進変換器の出力データと前記１０進４倍数データとを１回の演算で加算する１０進加算器を備える。
【００１１】
本発明の第３の２進１０進変換回路は、第１または第２の発明において、前記第１のデータ入力と前記第２のデータ入力とを元に前演算サイクルでの演算結果の１０進１６倍数に前記４ビット２進１０進変換器の出力結果を合計する数値を出力する１０進加算器を備える。
【００１２】
本発明の第４の２進１０進変換回路は、第１の発明において、１０進データを２倍する１０進２倍数生成回路を２段に直列に接続した構成からなる前記１０進４倍数生成回路を備える。
【００１３】
本発明の第５の２進１０進変換回路は、第１の発明において、１０進２倍数を前記１０進２倍数生成回路で生成しその結果を４ビット左へシフトする事で１０進２０倍数を生成する前記１０進２０倍数生成回路を備える。
【００１４】
本発明の第６の２進１０進変換回路は、第１の発明において、前記２進データレジスタに格納された２進数値の変換後の１０進数値を格納する前記１０進データレジスタを備える。
【００１５】
本発明の第１の２進１０進変換方法は、変換の対象となる２進数値の上位から４ビットを出力すると当該２進数値を左へ４ビットシフトして次の演算サイクルの準備をする第１のステップと、
第１のステップで出力された４ビットの２進数値を５ビットの１０進数値に変換する第２のステップと、
前演算サイクルで生成された１０進数の２０倍数と４倍数とを生成する第３のステップと、
第３のステップで生成された４倍数に対して反転を行う第４のステップと、
第２のステップによる１０進数値と前記第３のステップの２０倍数とを第１の入力とし前記第４のステップで反転された４倍数を第２の入力としキャリに１を入力して加算を行い１０進数を生成する第５のステップと、
第５のステップで生成された結果を保持し次の演算サイクルにおいて第３のステップへの出力を行う第６のステップと、
を備える。
【００１６】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１７】
図１は本発明の構成を示すブロック図である。
【００１８】
図１を参照すると、２進数データであって１０進数への変換が行われる変換対象２進データ０００と２進データレジスタ１２の出力データを４ビット左にシフトしたデータ３００とを選択して取り込む２進データセレクタ１１を備え、２進データセレクタ１１の出力１００を２進データレジスタ１２に入力する。
【００１９】
２進データレジスタ１２の上位４ビットは、演算サイクルに対応して４ビット２進１０進変換器１８に逐次取り込まれ、４ビットの２進数が５ビットからなる１０進数に変換されて１０進加算器１３に供給される。
【００２０】
また、１０進データレジスタ１４の出力９００は、２０倍する１０進数値を生成する１０進２０倍数生成回路１５と、同じく出力９００を４倍する１０進数値を生成する１０進４倍数生成回路１６と、に入力される。
【００２１】
そして、１０進２０倍数生成回路１５の出力４００（２０倍数は最下位５ビットが０００００となっている。）を１０進加算器１３の２つある入力の１つの入力位置に入力し、４ビット２進１０進変換器１８から出力された５ビットからなる１０進数値を１０進２０倍数４００を入力した入力の最下位５ビットにそのまま取り込み、１０進４倍数生成回路１６の出力５００を反転回路１７で反転したデータ６００を１０進加算器１３のもう一つの入力に入力し、１０進加算器１３のキャリ入力７００には常に１を入力して１０進加算器１３による１０進数値の加算演算を実行する。１０進加算器１３の出力８００は、１０進データレジスタ１４に格納される。
【００２２】
図２を参照すると、入力された数値の２倍の１０進数値を生成する１０進２倍数生成回路は、
ｊ桁（ｊは正整数）の１０進データ
ｄ０（０），ｄ０（１），ｄ０（２），ｄ０（３），・・・，
ｄｉ−１（０），ｄｉ−１（１），ｄｉ−１（２），ｄｉ−１（３），
ｄｉ（０），ｄｉ（１），ｄｉ（２），ｄｉ（３），
ｄｉ＋１（０），ｄｉ＋１（１），ｄｉ＋１（２），ｄｉ＋１（３），・・・，
ｄｊ−１（０），ｄｊ−１（１），ｄｊ−１（２），ｄｊ−１（３）
から、１０進２倍数データ
Ｄ−１（３），Ｄ０（０），Ｄ０（１），Ｄ０（２），・・・、
Ｄｉ−２（３），Ｄｉ−１（０），Ｄｉ−１（１），Ｄｉ−１（２），
Ｄｉ−１（３）、Ｄｉ（０），Ｄｉ（１），Ｄｉ（２），
Ｄｉ（３）、Ｄｉ＋１（０），Ｄｉ＋１（１），Ｄｉ＋１（２），・・・，
Ｄｊ−２（３）、Ｄｊ−１（０），Ｄｊ−１（１），Ｄｊ−１（２）
を生成するように、１桁の１０進２倍数生成回路２０〜２４から構成される（これらはすべて同一の構成を持つ）。
【００２３】
図３は、図２の１桁の１０進２倍数生成回路２０〜２４の詳細回路図である。
【００２４】
図４は、１桁の１０進２倍数生成回路２０〜２４の変換表である。
【００２５】
図４に示すとおり、１０進データの４ビットからなる１桁は、１０進数の“０”から“９”までであることから、その２倍数は“０”から“１８”までであり、１０進２倍数生成結果の変換桁の最下位ビットＤ（３）は必ず“０”となる。図５は、複数桁の１０進数の１０進２倍数生成回路の１桁単位の変換表である。複数桁の１０進数の１０進２倍数の生成においては、下位桁からの桁上がりが１ビット生じるが、図４で説明した通り、各桁の最下位ビットは２倍されることにより“０”となるため、下位桁からの桁上がり１ビットをそのまま入れることができる。
【００２６】
したがって、ｊ桁（ｊは正整数）の１０進数の任意の１桁のｄｉ（０），ｄｉ（１），ｄｉ（２），ｄｉ（３）を１０進２倍数Ｄｉ−１（３），Ｄｉ（０），Ｄｉ（１），Ｄｉ（２），Ｄｉ（３）に変換する場合（ｉは０からｊ−１の正整数）、
0003592242.tif 000002
の論理により生成できる。
（ここで、「＊」は論理積、「＋」は論理和、「’」は反転（コンプリメント）を示している。）
よって、図３の１０進１桁の１０進２倍数生成回路を、図２のように並列に接続して１０進２倍数生成回路を構成することにより、複数桁の１０進数の１０進２倍数を生成することができる。この２倍数生成回路を直列に２段組み合わせることで１０進４倍数生成回路１６を実現する。
【００２７】
図７を参照すると、１０進２０倍数生成回路１５は、
ｊ桁（ｊは正整数）の１０進データ
ｄ０（０），ｄ０（１），ｄ０（２），ｄ０（３）・・・
ｄｉ−１（０），ｄｉ−１（１），ｄｉ−１（２），ｄｉ−１（３），
ｄｉ（０），ｄｉ（１），ｄｉ（２），ｄｉ（３），
ｄｉ＋１（０），ｄｉ＋１（１），ｄｉ＋１（２），ｄｉ＋１（３），・・・，
ｄｊ−１（０），ｄｊ−１（１），ｄｊ−１（２），ｄｊ−１（３）
から、１０進２０倍数データ
Ｅ０（０），Ｅ０（１），Ｅ０（２），Ｅ０（３）・・・
Ｅｉ−１（０），Ｅｉ−１（１），Ｅｉ−１（２），Ｅｉ−１（３），
Ｅｉ（０），Ｅｉ（１），Ｅｉ（２），Ｅｉ（３），
Ｅｉ＋１（０），Ｅｉ＋１（１），Ｅｉ＋１（２），Ｅｉ＋１（３），・・・，
Ｅｊ−１（０），Ｅｊ−１（１），Ｅｊ−１（２），Ｅｊ−１（３），
Ｅｊ（０），Ｅｊ（１），Ｅｊ（２），Ｅｊ（３）
を生成する。
【００２８】
１０進２０倍数データは上記１０進２倍数生成回路を使用し、その出力を１０倍することで得られる。１０進データレジスタ１４の出力１０進データ９００を１０進２倍数生成回路に入力し１０進２倍数を生成し、その出力を１桁分（４ｂｉｔ）左へシフト（１０進数の特徴として１０進数の１０倍は最下位桁に４ｂｉｔの０を付加するだけで得られる。）することで１０進数の１０進２０倍数を生成することができる。
【００２９】
次に、本発明の実施の形態の動作について図面を参照して説明する。
【００３０】
本発明の実施例の動作について、図１と図６を参照して説明する。
【００３１】
図６は、２進データの例として例えば“００００１１１００１００００１１０１１０”を１０進データに変換する場合の演算動作を、演算サイクル毎に各構成回路の出力値を示した状態推移表である。（尚、この２進数値を１０進数にすると５桁の５８４２２となる。）
まず、変換対象２進データ０００を２進データセレクタ１１を経由して２進データレジスタ１２にロードし、２進データレジスタの先頭の４ビットを取りだし４ビット２進１０進変換器１８に入力して５ビットからなる１０進数に変換をする。図８にその変換の内容を示す。
【００３２】
同時に１０進データレジスタ１４を０でリセットする。
【００３３】
次に、１０進データレジスタ１４の１０進データ９００から１０進２０倍数生成回路１５により１０進２０倍数データ４００（最下位５ビットは除いたデータ）を生成する。また、１０進４倍数生成回路１６により１０進４倍数５００を生成し、反転回路１７により反転したデータ６００を生成する。
【００３４】
４ビット２進１０進変換器１８によって図８に示すように変換された５ビットのデータを１０進２０倍数生成回路１５の出力４００の下位５ビットの位置に挿入し、１０進４倍数生成回路１５の出力５００の出力したデータを反転させた反転データ６００とを１０進加算器１３で加算する。このとき１０進加算器１３のキャリ入力７００には”１”を常に入力する。よって３つの１０進数値の加算を１回の演算処理で実行したことになるわけである。
【００３５】
これにより、１０進２０倍数生成回路の出力した数値に４ビット２進１０進変換器によって変換された１０進数値が足し込まれこの数値から１０進４倍数生成回路１６の出力した数値が減算されることになる。結果として１０進データレジスタ１４の値の１６倍数（２０倍数−４倍数）に、２進データレジスタ１２の最上位４ビットの加算が行われたことになる。
【００３６】
また、１０進加算器１３の出力８００を１０進データレジスタ１４に格納すると同時に、２進データレジスタ１２のデータを４ビット左シフトしたデータ３００を、２進データレジスタ１２に格納する。
【００３７】
図６によれば、最初の演算サイクルにおいて、１０進データレジスタ１４の初期化された状態の”０００００”（１０進）が取り出され１０進２０倍数生成回路５と１０進４倍数生成回路１６とに入力されることによってそれぞれ１０進の２０倍数と４倍数とが生成される。１０進２０倍数（０００００）と２進データレジスタ１２の先頭の４ビット（００００）が１０進数に変換された（００）と１０進４倍数には反転が施されて２の補数（００００）とされ１のキャリ入力のもと１０進加算器１３で１０進２０倍数から１０進４倍数の減算が行われる。この加算処理の結果、最初の演算サイクルでは１０進数（０００００）が求められる。
【００３８】
２回目の演算サイクルでは、１０進２０倍数生成回路１５と１０進４倍数生成回路１６からの出力は、最初の演算サイクルと同じ１０進数（０００００）であるが、２進データレジスタ１２の内容は左に４ビットシフトされているため、２進数（１１１０）が出力されるため４ビット２進１０進変換器１８の変換結果として１０進数（１４）が出力される。それによって、１０進加算器１３の演算結果として１０進数（１４）が１０進データレジスタ１４に出力される。
【００３９】
３回目の演算サイクルでは、１０進データレジスタ１４の内容である１０進（１４）が取り出され、それぞれ１０進２０倍数生成回路１５によって１０進（２８０＝１４Ｘ２０）が、１０進４倍数生成回路１６によって１０進（５６＝１４Ｘ４）が生成される。２進データレジスタ１２からはさらに左に４ビットシフトした２進数（０１００）が取り出され４ビット２進１０進変換器１８によって１０進数（０４）に変換される。以上の数値が１０進加算器１３によって演算され（２８０＋４−５６）結果として２２８が１０進データレジスタ１４に出力される。
【００４０】
以上の処理を繰り返し、結果として図６に示すような５８４２２を１０進データレジスタ１４に得ることができる。
【００４１】
この動作を２進データのビット数の４分の１の回数だけ繰り返すことにより、変換対象の２進データ０００が１０進１０進データ９００に２進１０進変換される。このようにして、本発明により、２進データ“００００１１１００１００００１１０１１０”を１０進データ“５８４２２”に変換する動作が、変換対象２進データのビット数の１／４回のサイクル数で実現できる。
【００４２】
【発明の効果】
本発明には、ｎビットの２進データを４ビット単位に１０進データに変換することにより、従来必要とした１ビット毎ｎ回の演算数がｎ／４回となり、演算速度の向上を達成できるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態の構成を示すブロック図である。
【図２】本発明の１０進２倍数を生成する回路の構成を示すブロック図である。
【図３】本発明の１桁の１０進２倍数を生成する回路図である。
【図４】本発明の１桁の１０進２倍数生成時の変換表である。
【図５】本発明の複数桁変換時の１０進２倍数生成時の変換表である。
【図６】本発明の２進数を１０進数に変換する時の実施例を用いた状態推移表である。
【図７】本発明の１０進２０倍数を生成する回路の構成を示すブロック図である。
【図８】本発明の４ビット２進１０進変換器の変換結果を表す変換表である。
【図９】従来の２進１０進変換回路を示すブロック図である。
【符号の説明】
０００    変換対象２進データ
１１    ２進データセレクタ
１２    ２進データレジスタ
１３    １０進加算器
１４    １０進データレジスタ
１５    １０進２０倍数生成回路
１６    １０進４倍数生成回路
１７    反転回路
１８    ４ビット２進１０進変換器
４００    １０進２０倍数
５００    １０進４倍数
７００    キャリ入力
９００    １０進データ
【図１】
0003592242.tif 000003
【図２】
0003592242.tif 000004
【図３】
0003592242.tif 000005
【図４】
0003592242.tif 000006
【図５】
0003592242.tif 000007
【図６】
0003592242.tif 000008
【図７】
0003592242.tif 000009
【図８】
0003592242.tif 000010
【図９】
0003592242.tif 000011