(57)【要約】【課題】絶対ジャンプだけでなく相対ジャンプを可能とするプログラマブルコントローラの演算部たるロジックソルバーおよびその演算方法を提供する。【解決手段】レジスタエリア１０にプログラムカウンタエリア１１およびプログラムステータスワードエリア１２を置き、プログラムカウンタエリア１１の値をレジスタとして読み出し、前記読み出したプログラムカウンタエリア１１の値に一定値を加算し、プログラムステータスワードエリア１２から得たリザルトレジスタ６の情報に基づき前記加算した値をプログラムカウンタエリア１１に書き込む。【選択図】    図１
2006285421.tif 000002
【特許請求の範囲】
【請求項１】
レジスタであるＲＡＭ（１）と、次に実行する命令のアドレスを記憶するプログラムカウンタエリア（１１）と、制御情報を保持するプログラムステータスワードエリア（１２）と、演算や論理操作を行なうＡＬＵ（３）およびアキュムレータ（４）と、を有するロジックソルバーにおいて、
前記ＲＡＭ（１）のレジスタを指定するＲＡＭアドレスからビットアドレスで指定されたビットを抽出するビット抽出回路（２）と、
前記ビット抽出回路（２）で抽出したビットを入力、もしくは前記抽出したビットと演算を行ないその結果を入力したリザルトレジスタ（６）と、
前記リザルトレジスタ（６）の内容を前記アキュムレータ（４）に書き込まれたレジスタの内容に挿入するビット挿入回路（５）と、を備え、
前記ＲＡＭ（１）のレジスタエリア（１０）は、前記プログラムカウンタエリア（１１）および前記プログラムステータスワードエリア（１２）を構成してあり、前記プログラムカウンタエリア（１１）の値をレジスタとして読み出し、前記読み出した前記プログラムカウンタエリア（１１）の値に一定値を加算し、前記プログラムステータスワードエリア（１２）から得た前記リザルトレジスタ（６）の情報に基づき前記加算した値を前記プログラムカウンタエリア（１１）に書き込むことにより相対ジャンプさせるようにしたことを特徴とするロジックソルバー。
【請求項２】
レジスタであるＲＡＭ（１）と、次に実行する命令のアドレスを記憶するプログラムカウンタエリア（１１）と、制御情報を保持するプログラムステータスワードエリア（１２）と、演算や論理操作を行なうＡＬＵ（３）およびアキュムレータ（４）と、を有するロジックソルバーの演算方法において、
前記ＲＡＭ（１）のレジスタを指定するＲＡＭアドレスからビットアドレスで指定されたビットを抽出するビット抽出回路（２）と、
前記ビット抽出回路（２）で抽出したビットを入力、もしくは前記抽出したビットと演算を行ないその結果を入力したリザルトレジスタ（６）と、
前記リザルトレジスタ（６）の内容を前記アキュムレータ（４）に書き込まれたレジスタの内容に挿入するビット挿入回路（５）と、を備えるものとし、
前記プログラムカウンタエリア（１１）および前記プログラムステータスワードエリア（１２）を前記ＲＡＭ（１）のレジスタエリア（１０）に構成し、
前記プログラムカウンタエリア（１１）の値をレジスタとして読み出し、
前記読み出した前記プログラムカウンタエリア（１１）の値に一定値を加算し、
前記プログラムステータスワードエリア（１２）から得た前記リザルトレジスタ（６）の情報に基づき前記加算した値を前記プログラムカウンタエリア（１１）に書き込むことにより相対ジャンプさせることを特徴とするロジックソルバーの演算方法。  
【請求項３】
前記相対ジャンプの条件として、前記プログラムステータスワードエリア（１２）のリザルトレジスタ情報を前記リザルトレジスタ（６）に転送する事で、演算結果の条件分枝を決定したことを特徴とする請求項２に記載のロジックソルバーの演算方法。
【請求項４】
前記プログラムカウンタエリア（１１）の値を他のレジスタに待避させ、
爾後書き直し、
特定の番地にジャンプさせ、
その後前記待避させた値を引き出す事でサブルーチンコールさせることを特徴とする請求項２に記載のロジックソルバーの演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ（以下、ＰＬＣと称す）の演算部たるロジックソルバーおよびその演算方法に関し、特に、バイト、もしくはワード長のレジスタを多数有し、このレジスタの値をビット単位に読み書き可能で１ｂｉｔの論理演算を主たる目的とし、ワード単位の演算も可能なロジックソルバーおよびその演算方法に関する。
【背景技術】
【０００２】
従来技術のＰＬＣのロジックソルバーは、１つの命令で、その命令の実行に必要なより細分化された基本動作を指示する命令、すなわちマイクロインストラクションを順次実行させることにより、複数の動作を行なっていた（例えば、特許文献１参照）。
図８は、従来技術を示すロジックソルバーのマイクロインストラクションの構成図であり、レジスタＲ１とレジスタＲ２の値を加算してレジスタＲ２に結果を格納する場合を例として示したものである。
以下、図８を用いて従来技術のロジックソルバーのマイクロインストラクションの構成について説明する。
ロジックソルバーは「ＡＤＤ  Ｒ１、Ｒ２」の命令を読み込むと、内部でこの命令に決まっているマイクロインストラクションを逐次実行する。すなわち、レジスタＲ１の内容をアキュムレータに移し、次のステップでレジスタＲ２の内容とアキュムレータの値とを加算し、結果をアキュムレータに移し、最後のステップでアキュムレータの内容をレジスタＲ２に格納する。最後のステップを表す信号（図８ではＡｃｃ→Ｒ２の左端の黒印で示す）で、次の命令の動作を行なう。この場合、命令を読み込み、この命令でマイクロインストラクションを更に読み出すというステップが必要となる。
【０００３】
図９は、最近の技術であり本発明を示すロジックソルバーのインストラクションの構成図であり、レジスタＲ１とレジスタＲ２の値を加算してレジスタＲ２に結果を格納する場合を例として示している。
図９に示す様に、最近は高速化を図る為に、マイクロインストラクションに相当するものをそのままロジックソルバーに読み込ませている。この方法だと、このマイクロインストラクションを更に読み出すステップは無いものの、メモリの使用量は大幅に増えてしまう。しかし、近年の高集積化でそれは問題にならなくなってきている。
【特許文献１】特開昭５５−０９１０２９号公報  （第２−３頁）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術および最近技術のロジックソルバーでは、単にプログラムカウンタの値を一定の値に書き換えること、すなわち固定のアドレスにジャンプさせる絶対ジャンプしか出来ず、相対ジャンプおよびサブルーチンコールはできないといった問題があった。
【０００５】
そこで本発明は上記問題点に鑑みてなされたものであり、絶対ジャンプだけでなく相対ジャンプを可能とし、さらにサブルーチンコールをも可能とするロジックソルバーおよびその演算方法を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記問題を解決するため請求項１に記載の発明は、レジスタであるＲＡＭと、次に実行する命令のアドレスを記憶するプログラムカウンタエリアと、制御情報を保持するプログラムステータスワードエリアと、演算や論理操作を行なうＡＬＵおよびアキュムレータと、を有するロジックソルバーにおいて、前記ＲＡＭのレジスタを指定するＲＡＭアドレスからビットアドレスで指定されたビットを抽出するビット抽出回路と、前記ビット抽出回路で抽出したビットを入力、もしくは前記抽出したビットと演算を行ないその結果を入力したリザルトレジスタと、前記リザルトレジスタの内容を前記アキュムレータに書き込まれたレジスタの内容に挿入するビット挿入回路と、を備え、前記ＲＡＭのレジスタエリアは、前記プログラムカウンタエリアおよび前記プログラムステータスワードエリアを構成してあり、前記プログラムカウンタエリアの値をレジスタとして読み出し、前記読み出した前記プログラムカウンタエリアの値に一定値を加算し、前記プログラムステータスワードエリアから得た前記リザルトレジスタの情報に基づき前記加算した値を前記プログラムカウンタエリアに書き込むことにより相対ジャンプさせるようにしたことを特徴としている。  
【０００７】
また、請求項２に記載の発明は、レジスタであるＲＡＭと、次に実行する命令のアドレスを記憶するプログラムカウンタエリアと、制御情報を保持するプログラムステータスワードエリアと、演算や論理操作を行なうＡＬＵおよびアキュムレータと、を有するロジックソルバーの演算方法において、前記ＲＡＭのレジスタを指定するＲＡＭアドレスからビットアドレスで指定されたビットを抽出するビット抽出回路と、前記ビット抽出回路で抽出したビットを入力、もしくは前記抽出したビットと演算を行ないその結果を入力したリザルトレジスタと、前記リザルトレジスタの内容を前記アキュムレータに書き込まれたレジスタの内容に挿入するビット挿入回路と、を備えるものとし、前記プログラムカウンタエリアおよび前記プログラムステータスワードエリアを前記ＲＡＭのレジスタエリアに構成し、前記プログラムカウンタエリアの値をレジスタとして読み出し、前記読み出した前記プログラムカウンタエリアの値に一定値を加算し、前記プログラムステータスワードエリアから得た前記リザルトレジスタの情報に基づき前記加算した値を前記プログラムカウンタエリアに書き込むことにより相対ジャンプさせることを特徴とするロジックソルバーの演算方法。  
【０００８】
また、請求項３に記載の発明は、請求項２に記載のロジックソルバーの演算方法において、前記相対ジャンプの条件として、前記プログラムステータスワードエリアのリザルトレジスタ情報を前記リザルトレジスタに転送する事で、演算結果の条件分枝を決定したことを特徴としている。
【０００９】
また、請求項４に記載の発明は、請求項２に記載のロジックソルバーの演算方法において、前記プログラムカウンタエリアの値を他のレジスタに待避させ、爾後書き直し、特定の番地にジャンプさせ、その後前記待避させた値を引き出す事でサブルーチンコールさせることを特徴としている。
【発明の効果】
【００１０】
請求項１または２に記載の発明によれば、レジスタエリアにプログラムカウンタエリアおよびプログラムステータスワードエリアを置き、プログラムカウンタエリアの値をレジスタとして読み出し、この値に一定値を演算部で加算し、この値をプログラムカウンタエリアに書き込む事で、相対ジャンプを可能とすることができる。
【００１１】
また、請求項３に記載の発明によれば、相対ジャンプを可能とし、リザルトレジスタに事前に情報を入れる事で、絶対ジャンプと相対ジャンプの条件分技を可能とすることができる。
【００１２】
また、請求項４に記載の発明によれば、相対ジャンプを可能とし、さらにサブルーチンコールを可能とすることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の具体的実施例について、図に基づいて説明する。
【実施例１】
【００１４】
図１は、本発明を示すロジックソルバーの構成図であり、且つデータの流れを示したものである。
図１において、１はレジスタであるＲＡＭ、２はビット抽出回路、３はＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）、４はアキュムレータ（以下、Ａｃｃと称す）、５はビット挿入回路、６はリザルトレジスタ（以下、ＲＲと称す）である。
また、図２は、本発明を示すロジックソルバーのレジスタの構成図である。
図２において、１０はハードウエアのレジスタエリア、１１はプログラムカウンタ（以下、ＰＣと称す）エリア、１２はプログラムステータスワード（以下、ＰＳＷと称す）エリアである。
図２に示すように、ＲＡＭ１の後部エリアには、ＰＣエリア１１とＰＳＷエリア１２などのハードウエアのレジスタエリア１０が有る。尚、図２ではＰＣエリア１１とＰＳＷエリア１２以外のエリアについての詳細は省略している。ＰＳＷエリア１２には、ＺＥＲＯ，キャリー（Ｃ）、ネガチブフラグ（ＮＥＧ）、ＲＲなどのフラグ情報がある。
図１および図２に示す本発明の特徴とする点は以下のとおりである。
すなわち、本発明のロジックソルバーは、レジスタエリア１０にＰＣエリア１１やＰＳＷエリア１２を置き、ＰＣエリア１１の値をレジスタとして読み出し、前記ＰＣエリア１１の値にロジックソルバーの演算部で一定値を加算し、ＰＳＷエリア１２から得たＲＲ６の情報に基づき、該加算した値をＰＣエリア１１に書き込むようにしている点である。
【００１５】
図３は、本発明を示すロジックソルバーのビット単位の演算における命令フォーマットの説明図である。
以下、図３を用いて、本発明のロジックソルバーのビット単位の演算における命令フォーマットについて説明する。
命令フォーマットは、命令、ビットアドレスおよびレジスタを指定するＲＡＭアドレスから成っており、命令でＡＬＵ３のファンクションを決め、シーケンスの制御を行なっている。マイクロインストラクションに相当する動作を単一の命令として、これを複数組み合わせて、本来の命令として動作させている。本発明のロジックソルバーは、ワード単位の演算とビット単位の演算が行われるが、ワード単位の演算は公知の技術と同じであるので省略し、ビット単位の演算について以下図１乃至３を用いて説明する。
ビット単位の演算においては、図３の命令フォーマットから判るように、レジスタを指定するＲＡＭアドレスから、ビットアドレスで指定されたビットをビット抽出回路２で抽出しＲＲ６に入力、もしくは、ＲＲ６と演算を行ないＲＲ６にその結果を入れる。
ＲＡＭ１は全てレジスタであり、ここへの書き込みはアキュムレータ４に書き込まれたレジスタの内容にＲＲ６の内容をビット挿入回路５により入れ、レジスタに転送する事で行われる。なお、ロジックソルバーにおけるレジスタ間の演算では、ＲＲ６の値が０だとレジスタへの書き込みは行なわない。
【００１６】
図４は、本発明を示すロジックソルバーの相対ジャンプの説明図である。
以下、図４を用いて本発明のロジックソルバーにおける相対ジャンプについて説明する。
ＰＣエリア１１に一定の値を書き込むと絶対ジャンプとなる。一方、相対ジャンプは図４に示す様に、ＰＣエリア１１の値を読み出し、これに一定の値を加算してＰＣエリア１１に書き込む事で行なわれる。これらの演算は図１に示すロジックソルバーにおいて普通のレジスタ間の演算となる。これはＰＣエリア１１がレジスタエリア１０に展開されているからである。同様にＰＳＷエリア１２も、図２に示したようにレジスタエリアで読み出すことができる。
【００１７】
図５は、本発明を示すロジックソルバーにおける絶対ジャンプ命令（ＲＲ＝０の場合）と相対ジャンプ命令（ＲＲ＝１の場合）の条件分岐の説明図である。
図５に示すように、ＰＳＷエリア１２のＲＲ情報を最初にＲＲ６に入れる事で、ＰＳＷエリア１２のＲＲ条件によるジャンプ命令、すなわち、絶対ジャンプ命令（ＲＲ＝０の場合）と相対ジャンプ命令（ＲＲ＝１の場合）の条件分岐が可能となる。相対ジャンプの場合は、アドレスＰＣをＡｃｃ４に読み込み、これにＩｍｍｅｄｉａｔｅデータ（以下、Ｉと略す）を加算したアドレスをＰＣエリア１１に書き込むことで行なう。
このように、ジャンプの条件は１ｂｉｔの演算結果たるＲＲ６の内容で行ない、又ＰＳＷをＲＲ６に転送する事で、演算結果の条件分枝を決定する事が出来る。
【００１８】
図６は、本発明を示すロジックソルバーにおけるサブルーチンを呼ぶ場合の命令構成の説明図である。
図６に示すように、ＣＡＬＬ命令の頭で、ＣＡＬＬ命令群の次の命令が書かれたアドレスＰＣに「Ｉ＝５」を加えた値を演算し、サブルーチンが終了した時の戻り番地の書かれたレジスタＲｍにこの値を書き込み（但し、ＲＲ＝「１」の場合）、サブルーチンのアドレスをＰＣエリア１１に書き込む（但し、ＲＲ＝「１」の場合）。
【００１９】
図７は、本発明を示すロジックソルバーにおけるサブルーチンから戻る場合の命令構成の説明図である。
図７に示すように、ＲＥＴ命令の頭に、ＲＲに「１」が設定されていない場合は、条件リターンとなる。一方、ＲＲに「１」が設定されている場合は、サブルーチンの最後にレジスタＲｍの内容を読み出し、ＰＣエリア１１に書き込む事でサブルーチンから戻る事が出来る。
このように、ＰＣの値を他のレジスタに待避させ、爾後書き直し、特定の番地にジャンプさせその後待避させた値を引き出す事で、サブルーチンコールを可能としている。
【００２０】
以上述べたように、本発明の実施例に係るロジックソルバーおよびその演算方法は、ＰＣエリア１１、及び演算結果であるＰＳＷエリア１２を、ロジックソルバー自体がアクセス出来るレジスタエリア１０のメモリ空間に展開する事で、ロジックソルバーの演算部で、ＰＣの値をレジスタとして読み出し、この値に一定の値を加算し、この値をＰＣエリア１１に書き込むようにしているので、相対ジャンプやサブルーチンコールが可能であり、自由度が多いプログラムのフロー制御が可能となる。
また、本発明を応用し、更にレジスタの位置を管理するポインタを特定のレジスタに与える事により、サブルーチンの中でサブルーチンを呼ぶネスティング動作も可能である。
【産業上の利用可能性】
【００２１】
本発明の高速ビット演算に特化したロジックソルバーをラダープログラムの解読に用いることにより、高速のＰＬＣを実現することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明を示すロジックソルバーの構成図
【図２】本発明を示すロジックソルバーのレジスタの構成図
【図３】本発明を示すロジックソルバーのビット単位の演算における命令フォーマットの説明図
【図４】本発明を示すロジックソルバーの相対ジャンプの説明図
【図５】本発明を示すロジックソルバーにおける絶対ジャンプ命令（ＲＲ＝０の場合）と相対ジャンプ命令（ＲＲ＝１の場合）の条件分岐の説明図
【図６】本発明を示すロジックソルバーにおけるサブルーチンを呼ぶ場合の命令構成の説明図
【図７】本発明を示すロジックソルバーにおけるサブルーチンから戻る場合の命令構成の説明図
【図８】従来技術を示すロジックソルバーのマイクロインストラクションの構成図
【図９】最近の技術であり本発明を示すロジックソルバーのインストラクションの構成図
【符号の説明】
【００２３】
１  ＲＡＭ(レジスタ)
２  ビット抽出回路
３  ＡＬＵ
４  アキュムレータ（Ａｃｃ）
５  ビット挿入回路
６  リザルトレジスタ（ＲＲ）
１０  レジスタエリア
１１  プログラムカウンタ（ＰＣ）エリア
１２  プログラムステータスワード（ＰＳＷ）エリア
【図１】
2006285421.tif 000003
【図２】
2006285421.tif 000004
【図３】
2006285421.tif 000005
【図４】
2006285421.tif 000006
【図５】
2006285421.tif 000007
【図６】
2006285421.tif 000008
【図７】
2006285421.tif 000009
【図８】
2006285421.tif 000010
【図９】
2006285421.tif 000011