(57)【特許請求の範囲】
【請求項１】
右シフトと左シフトができ、要求される演算精度分のビット幅を持つ複数本のシフトレジスタと、
これらシフトレジスタから二本を選択する入力セレクタと、
この入力セレクタで選択されたシフトレジスタについて１ビット幅を演算する１ビット演算ユニットと、
この１ビット演算ユニットの演算結果を、外部のシリアルデバイスに送ったり、前記入力レジスタを介して前記複数本のシフトレジスタの中で演算結果を格納するシフトレジスタに送る出力セレクタと、
を有することを特徴とするシリアル数値演算装置。
【請求項２】
前記入力レジスタは、外部のシリアルデバイスの出力を選択し、任意の演算用シフトレジスタに格納することを特徴とする請求項１記載のシリアル数値演算装置。
【請求項３】
前記シフトレジスタは、右シフトできる指数部レジスタと、右シフト及び左シフトできる仮数部レジスタと、指数部の符号ビットに該当する指数部符号ビットと、仮数部の符号ビットに該当する仮数部符号ビットとを有することを特徴とする請求項１記載のシリアル数値演算装置。
【請求項４】
前記シフトレジスタは、前記仮数部レジスタに対する演算用の拡張ビットを有することを特徴とする請求項３記載のシリアル数値演算装置。
【請求項５】
外部シリアルＲＯＭから送られる命令をプログラムカウンタに従い格納するコマンドバッファと、
当該命令に従って各アルゴリズムを実行して請求項１記載のシリアル数値演算装置を制御する演算制御回路と、
を有することを特徴とするシリアル数値演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アナログ信号入出力装置等に用いられるシリアル数値演算装置に掛り、特に低コストで製造できる改良に関する。
【０００２】
【従来の技術】
アナログ信号入出力装置は、４−２０ｍＡ等のアナログ信号を入出力するもので、入力されたアナログ信号を０−１００％への変換等の演算を行って上位バスに接続されるデータ収集装置に伝送したり、操作監視装置からの設定値等の指令をアナログ信号に変換して出力するものである。このような装置において、演算を行うために、市販の数値演算プロセッサや、汎用のマイクロコントローラにファームウェアを組み込んでいる。
【０００３】
【発明が解決しようとする課題】
しかし、数値演算プロセッサを使用する場合には、コストが高くなるという課題がある。また、ファームウェアを用いる構成によれば、電子部品を多用しており、製造コストが増大するという課題があった。本発明は、上述の課題を解決したもので、部品点数を削減しながら外部データを演算したり、必要な数値演算の行えるシリアル数値演算装置を提供することを目的とする。
【０００４】
上記の目的を達成するために、本発明は次のとおりの構成になったシリアル数値演算装置である。
（１）右シフトと左シフトができ、要求される演算精度分のビット幅を持つ複数本のシフトレジスタと、
これらシフトレジスタから二本を選択する入力セレクタと、
この入力セレクタで選択されたシフトレジスタについて１ビット幅を演算する１ビット演算ユニットと、
この１ビット演算ユニットの演算結果を、外部のシリアルデバイスに送ったり、前記入力レジスタを介して前記複数本のシフトレジスタの中で演算結果を格納するシフトレジスタに送る出力セレクタと、
を有することを特徴とするシリアル数値演算装置。
【０００５】
（２）前記入力レジスタは、外部のシリアルデバイスの出力を選択し、任意の演算用シフトレジスタに格納することを特徴とする（１）記載のシリアル数値演算装置。
【０００６】
（３）前記シフトレジスタは、右シフトできる指数部レジスタと、右シフト及び左シフトできる仮数部レジスタと、指数部の符号ビットに該当する指数部符号ビットと、仮数部の符号ビットに該当する仮数部符号ビットとを有することを特徴とする（１）記載のシリアル数値演算装置。
（４）前記シフトレジスタは、前記仮数部レジスタに対する演算用の拡張ビットを有することを特徴とする（３）記載のシリアル数値演算装置。
【０００７】
（５）外部シリアルＲＯＭから送られる命令をプログラムカウンタに従い格納するコマンドバッファと、
当該命令に従って各アルゴリズムを実行して（１）記載のシリアル数値演算装置を制御する演算制御回路と、
を有することを特徴とするシリアル数値演算装置。
【０００８】
【発明の実施の形態】
以下図面を用いて、本発明を説明する。図１は本発明の一実施例を示す構成ブロック図である。コマンドバッファ（ｃｍｄｂｕｆ）１０は、ＲＯＭ等から送られる数値演算命令をフェッチする。演算制御部２０は、プログラムカウンタＰＣとコマンドバッファ１０の命令に従って、演算レジスタ回路３０の制御を実行する。この命令の種類には、右シフト命令、左シフト命令、固定小数点による加減乗除演算、浮動小数点による加減乗除演算、バイナリをフロートに変換する命令、フロートをバイナリに変換する命令等がある。
【０００９】
シリアル演算レジスタ回路３０は、固定小数点データ又はバイナリーデータを取り扱うもので、複数のシフトレジスタｒ１〜ｒｎを有している。入力セレクタｓｅｌ１は、複数のシフトレジスタｒ１〜ｒｎのうち２個を選択する。１ビット演算ユニットＡＬＵは、セレクタｓｅｌで選択されたシフトレジスタの所定の１ビットについて演算を行う２入力１出力型になっている。出力セレクタｓｅｌ２は、１ビット演算ユニットＡＬＵで演算された結果を外部のシリアルデバイスに送ったり、入力セレクタｓｅｌ１を介して結果を格納するシフトレジスタｒｎに送る。
【００１０】
このように構成された装置の動作を説明する。例えば、シフトレジスタｒ１とｒ２間の足し算を行い、結果をシフトレジスタｒｎに格納する命令がフェッチされたとする。すると、出力セレクタｓｅｌ２は、シフトレジスタｒ１，ｒ２を選択し、ビットシリアルで１ビット演算ユニットＡＬＵへ入力する。１ビット演算ユニットＡＬＵの出力は、入力セレクタｓｅｌ１へ入力され、シフトレジスタｒｎにその結果が格納される。外部のデータを演算する場合は、入力セレクタｓｅｌ１で任意のシリアルデバイスの出力が選択され、任意の演算レジスタへ格納される。
【００１１】
さらに、演算レジスタは右シフト左シフトできるので、例えばシフトレジスタｒ１で左シフトしたデータをシフトレジスタｒ２に右シフトインしたり、シフトレジスタｒ１で右シフトしたデータをシフトレジスタｒ２に左シフトインしたりできる。この動作により、掛け算や割算等の演算も可能になる。
【００１２】
図２はレジスタ回路と演算ユニットの説明図で、（Ａ）はシリアル型、（Ｂ）はパラレル型を表している。シリアル型では、ｎビットのシリアルレジスタから１ビット演算ユニットＡＬＵに信号が１ビット毎に送られて、必要な演算が行われる。パラレル型では、ｎビットのパラレルレジスタからｎビット演算ユニットＡＬＵに信号が一括して送られて、必要な演算が行われる。
【００１３】
シリアル型のパラレル型に対する優位点は、１ビット毎に演算するのでバスラインが簡素化される点である。プロセス制御においては、制御周期毎に演算すれば良いので、シリアル型の１ビット演算ユニットＡＬＵを用いても演算は充分に間に合うのである。
【００１４】
図３は演算制御部２０の構成ブロック図である。命令デコーダ２１は、コマンドバッファ１０の命令に従って、各命令のシーケンス部２２〜２４に実行要求をする。シフトシーケンス部２２は、バイナリーデータに対する加減算を行うもので、シフト演算等に対処する。フロートシーケンス部２３は、浮動小数点データに対する加減演算（ａｄｓｂｆ）、乗除演算（ｍｌｄｖｆ）、を行うもので、バイナリーデータと浮動小数点データのデータ型式変換演算（ｂ２ｆ，ｆ２ｂ）を含んでいる。レジスタシーケンス部２４は、ＥＥＰＲＯＭのドライブシーケンス（ｅｅｐ＿ｄｒｖ）、ＲＡＭのドライブシーケンス（ｉｒａｍ＿ｄｒｖ）、シフトレズタのドライブシーケンス（ｓｆｒ＿ｄｒｖ）を含んでいる。演算レジスタ制御部（ｃａｌ＿ｃｔｌ）２５は、各シーケンス部２２〜２４から送られるシーケンス信号を演算レジスタ部３０に送る。
【００１５】
図４は浮動小数点演算用のシリアル演算レジスタの構成ブロック図である。ここでは、３本の演算用シフトレジスタを有している。各演算用シフトレジスタは、右シフトできる指数部レジスタｒｅ１と、右シフト及び左シフトできる仮数部レジスタｒｆ１＿ｌと、指数部の符号ビットに該当する指数部符号ビットｒｓ１と、仮数部の符号ビットに該当する仮数部符号ビットｒｅ１＿１と、仮数部レジスタに対する演算用の拡張ビットｒｆ１＿ｈを有している。
【００１６】
図５は単精度の浮動小数点型式を格納する場合のビット配置図である。単精度の浮動小数点型式は、ＩＥＥＥ７５４にＦＬＯＡＴ型式として規定されており、１ビットの符号と、８ビットの指数部と、２３ビットの仮数部を有している。各演算用シフトレジスタは、１ビットの指数部符号ビットｒｓ１〜３と、８ビットの指数部レジスタｒｅ１〜３と、２５ビットの仮数部レジスタｒｆ１〜３を有している。
ｒ１［３１：０］＝｛ｒｓ１，ｒｅ１［７：０］，ｒｆ１［２２：０］｝
ｒ２［３１：０］＝｛ｒｓ２，ｒｅ２［７：０］，ｒｆ２［２２：０］｝
ｒ３［３１：０］＝｛ｒｓ３，ｒｅ３［７：０］，ｒｆ３［２２：０］｝
【００１７】
このうち、指数部符号ビットは、指数部同士の演算で必要な符号ビットであり、ロードやストア等の初期化時は”０”である。また、演算用シフトレジスタの２５ビットの仮数部レジスタｒｆ１〜３は、例えばｒｆ１を例にすると次のように構成されている。
ｒｆ１＝｛ｒｆ１＿ｈ［２４：２３］，ｒｆ１＿ｌ［２２：０］｝
【００１８】
本来、ＦＬＯＡＴ型式の仮数部は２３ビットであるが、演算用に２ビット拡張している。ｒｆ１＿ｈ［２４］は仮数部同士の演算で必要な符号ビットであり、ｒｆ１＿ｈ［２３］は１の位の数である。小数点位置は、２３と２２ビットの間である。演算用シフトレジスタｒ１に、ＦＬＯＡＴ型式をロード／ストアする場合には、自動的にｒｆ１＿ｈ［２４：２３］＝｛０，１｝が挿入される。尚、バイナリＢＩＮ型式がロード／ストアされる場合には、自動的にｒｆ１＿ｈ［２４：２３］＝｛０，０｝が挿入される。尚、仮数部レジスタｒｆ１は左シフトも可能であり、例えば仮数部レジスタｒｆ１で左シフトしたデータを仮数部レジスタｒｆ２に右シフトインすることで、掛け算や割算等の演算も可能になる。
【００１９】
指数部レジスタ及び仮数部レジスタは、それぞれ独立した符号付き固定小数点バイナリデータとして指数部同士、或いは仮数部同士ビットシリアルで演算が実行されるため、ＡＬＵは１ビット演算回路ですむ。このようにして、ＩＥＥＥ７５４の浮動小数点形式及び固定小数点バイナリ形式の四則演算、ＦＬＯＡＴ型式とＢＩＮ型式変換等が容易に実現できる。
【００２０】
尚、上記実施例においては、演算レジスタ回路３０として演算用シフトレジスタが３本の場合を例を示したが、本発明はこれに限定されるものではなく、４本以上あっても差し支えない。
【００２１】
【発明の効果】
以上説明したように、本発明によれば次の効果が得られる。
請求項１記載の発明によれば、  右シフトと左シフトができ、要求される演算精度分のビット幅を持つ複数本のシフトレジスタと、
これらシフトレジスタから二本を選択する入力セレクタと、
この入力セレクタで選択されたシフトレジスタについて１ビット幅を演算する１ビット演算ユニットと、
この１ビット演算ユニットの演算結果を、外部のシリアルデバイスに送ったり、前記入力レジスタを介して前記複数本のシフトレジスタの中で演算結果を格納するシフトレジスタに送る出力セレクタと、
を有する構成とすると、シリアル演算なのでビットパラレルに演算器を構成する場合に比較して回路規模が小さくなり、ゲートアレイの集積化が容易になる。これによって、部品点数を削減しながら必要な数値演算の行えるシリアル数値演算装置を実現できる。
【００２２】
請求項２記載の発明によれば、前記入力レジスタは、外部のシリアルデバイスの出力を選択し、任意の演算用シフトレジスタに格納する構成とすると、外部データを演算できる。
【００２３】
請求項３記載の発明によれば、前記シフトレジスタは、右シフトできる指数部レジスタと、右シフト及び左シフトできる仮数部レジスタと、指数部の符号ビットに該当する指数部符号ビットと、仮数部の符号ビットに該当する仮数部符号ビットとを有する構成とすると、浮動小数点データの四則演算が行える。
請求項４記載の発明によれば、仮数部レジスタは演算用の拡張ビットを有する構成とすると、演算精度が高くなる。
【００２４】
請求項５記載の発明によれば、外部シリアルＲＯＭから送られる命令をプログラムカウンタに従い格納するコマンドバッファと、
当該命令に従って各アルゴリズムを実行して請求項１記載のシリアル数値演算装置を制御する演算制御回路と、
を有する構成とすると、命令に対応してシリアル数値演算を実行する装置が実現できる。
【図面の簡単な説明】
【図１】本発明の一実施例を示す構成ブロック図である。
【図２】レジスタ回路と演算ユニットの説明図である。
【図３】演算制御部２０の構成ブロック図である。
【図４】浮動小数点演算用のシリアル演算レジスタの構成ブロック図である。
【図５】単精度の浮動小数点型式を格納する場合のビット配置図である。
【符号の説明】
１０  コマンドバッファ
２０  演算制御部
３０  演算レジスタ回路
ＡＬＵ  １ビット演算ユニット
ｒ１〜ｒｎ  シフトレジスタ
ｓｅｌ  セレクタ
【図１】
0003551291.tif 000002
【図２】
0003551291.tif 000003
【図３】
0003551291.tif 000004
【図４】
0003551291.tif 000005
【図５】
0003551291.tif 000006