JP2559924B2 - プログラマブルコントローラ - Google Patents
プログラマブルコントローラInfo
- Publication number
- JP2559924B2 JP2559924B2 JP3174158A JP17415891A JP2559924B2 JP 2559924 B2 JP2559924 B2 JP 2559924B2 JP 3174158 A JP3174158 A JP 3174158A JP 17415891 A JP17415891 A JP 17415891A JP 2559924 B2 JP2559924 B2 JP 2559924B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- source code
- instruction
- source
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Programmable Controllers (AREA)
Description
別に命令実行専用のコプロセッサを設けたプログラマブ
ルコントローラに関するものである。
の処理速度を向上させることなどを目的として、図5に
示すように、従来から用いられている汎用のメインプロ
セッサ11と並行動作する命令実行専用のコプロセッサ
21を設けることが提案されている。コプロセッサ21
としては、処理の高速化を図るために、縮小命令セット
プロセッサ(RISCプロセッサ)が用いられる。この
場合、ユーザ等により設計されてソースプログラムメモ
リ12に格納されたシーケンスプログラムのソースコー
ドは、コンパイルされて縮小命令に変換された後にオブ
ジェクトプログラムメモリ22に格納され、基本命令や
応用命令はオブジェクトプログラムメモリ22に格納さ
れた縮小命令よりなるオブジェクトコードに基づいてコ
プロセッサ21で実行される。ソースコードのコンパイ
ルは、システムメモリ13に格納されたコンパイラを用
いてメインプロセッサ11によって行われる。また、メ
インプロセッサ11は、シーケンスプログラムの命令の
実行には用いられず、ソースコードのコンパイルのほ
か、インタフェース14を通して行われる周辺装置の制
御や通信の制御に用いられる。メインプロセッサ11と
コプロセッサ21との間の通信はバスコントローラ15
を介して行われる。ここに、メインプロセッサ11のデ
ータバスは16ビットであり、コプロセッサ21のデー
タバスは、オブジェクトプログラムメモリ22との間で
は32ビット、データメモリ23との間では16ビット
になっている。バスコントローラ15は、メインプロセ
ッサ11の16ビットのデータバスとコプロセッサ21
の32ビットのデータバスとを結合する機能を有してい
る。コプロセッサ21の内部処理は32ビットで行われ
るから、RISCプロセッサであることとあいまって命
令をメインプロセッサ11よりも高速に実行できるので
ある。
係は、図6のようになる。たとえば、ソースコードでは
3命令であって、各命令のワード数が2、4、4である
とき、縮小命令を用いたオブジェクトコードのワード数
は、ソースコードの各命令に対して、たとえば、3、
7、5などとなる。オブジェクトコードでは、1ワード
が1命令に対応するのであって、上述した例では、ソー
スコードで2ワードを用いる1命令が、オブジェクトコ
ードでは3命令などとなっている。
うに、ソースコードの1つの命令のワード数に対応した
オブジェクトコードのブロックを構成する命令コードの
ワード数とは異なるものであるから、次ような場合に問
題が生じるものである。まず、コプロセッサ21での実
行中にエラーが発生してコプロセッサ21が実行を中断
してメインプロセッサ11に制御を受け渡したときや、
ブレーク命令によって実行を中断したときに、メインプ
ロセッサ11では、ソースコードのどの命令で実行が中
断したのかが把握できないという問題がある。また、デ
バッグなどの際には、1ステップずつ実行して動作状態
を確認したい場合があり、動作状態を把握するという目
的に鑑みれば、ソースコードを1単位ずつ実行すること
が必要であるが、オブジェクトコードの何ワードがソー
スコードの1単位に対応するのかがわからないから、ソ
ースコードの1単位ずつの実行ができないという問題が
ある。
ソースコードを見てデバッグしようとする際には、訂正
の必要な箇所をソースコードのプログラムの中から見つ
けるのが困難であるという問題がある。また、プログラ
ムの開発や編集を行う際であって、ソースコードのプロ
グラム中に命令の挿入や削除をするときに、オブジェク
トコードの対応する箇所がわからないから、ソースコー
ドの全プログラムをコンパイルしなおす必要が生じる。
すなわち、プログラムの修正と実行とを繰り返してプロ
グラムをデバッグする際に、修正から実行までにコンパ
イルに要する時間が多くなるから、デバッグに長時間を
要するという問題がある。
のであり、オブジェクトコードにソースコードの対応す
る箇所に関する情報を持たせることによって、ソースコ
ードとオブジェクトコードとの対応箇所の検出が短時間
で行えるようにしたプログラマブルコントローラを提供
しようとするものである。
達成するために、シーケンスプログラムを実行する命令
実行専用のコプロセッサをメインプロセッサとは別に備
え、シーケンスプログラムのソースコードをソースプロ
グラムメモリに格納するとともに、メインプロセッサに
よってシーケンスプログラムのソースコードをコンパイ
ルして得たコプロセッサ用のオブジェクトコードをオブ
ジェクトプログラムメモリに格納したプログラマブルコ
ントローラにおいて、オブジェクトコードの各命令コー
ドには、ソースコードの各単位のワード数を設定するこ
とができるコード数フィールドと、ソースコードの各単
位に対応したオブジェクトコードのブロックの最後の命
令コードを示す終了位置指定フィールドとが設けられて
いて、ソースコードの各単位に対応するオブジェクトコ
ードのブロック内のコード数フィールドの合計値がその
ブロックに対応するソースコードの単位のワード数にな
るようにコード数フィールドの値が設定され、コプロセ
ッサは、コード数フィールドの値を積算する加算器と、
加算器の出力値を保持する一時レジスタと、終了位置指
定フィールドの値によりブロックの終了が示されると一
時レジスタの出力値を取り込むアドレスレジスタとを備
えているのである。
コードにソースコードの各単位を構成するワード数を格
納するコード数フィールドを設けて、オブジェクトコー
ドの実行時にソースコードの単位ごとのワード数を順次
加算してアドレスレジスタに格納しているので、コプロ
セッサによるオブジェクトコードの実行中に、ソースコ
ードのどの箇所に対応するオブジェクトコードを実行し
ているのかをアドレスレジスタの出力値によって知るこ
とができ、コプロセッサの実行停止時などに、ソースコ
ードのどの位置で実行が停止したのかを容易に知ること
ができるのである。また、逆にソースコードの指定箇所
が、オブジェクトコードのどの位置に対応するのかも容
易に知ることができるのである。その結果、デバッグや
編集などの際にソースコードとオブジェクトコードとの
アドレスの対応関係を容易に知ることができるのであ
る。
示すような4種類の形式がある。ここに、src1、src2、
dst1は、コプロセッサ21の内部レジスタを指定するた
めのフィールドである。図3(a)は、オブジェクトプ
ログラムメモリ22やデータメモリ23と内部レジスタ
との間のデータの移動命令に対応するMタイプと称する
形式の命令である。上位6ビットは命令コードフィール
ド(op-code)、次の3ビットは移動元を指定するソース
レジスタ指定フィールド(src1)、次の3ビットは移動先
を指定するディスティネーションレジスタ指定フィール
ド(dst1)、次の4ビットはソースコードとオブジェクト
コードとの対応関係を示すステータスタグコードを格納
するステータスタグフィールド(St) 、下位16ビット
はメモリアドレスのオフセット値を格納するオフセット
フィールド(offset)になっている。ここに、移動元や
移動先が内部レジスタであれば指定された内部レジスタ
が移動元や移動先になり、移動元や移動先がオブジェク
トプログラムメモリ22やデータメモリ23であれば指
定された内部レジスタに格納されたデータが移動元や移
動先のアドレスになる。
された値の間での論理演算や算術演算の結果を他の内部
レジスタに格納するRタイプと称する形式の命令であ
る。上位ビットから命令コードフィールド(op-code)に
6ビット、2個の被演算値がそれぞれ格納された2個の
内部レジスタを指定するソースレジスタ指定フィールド
(src1),(src2)に3ビットずつ、ステータスタグフィー
ルド(St) に4ビット、演算結果を格納する内部レジス
タを指定するディスティネーションレジスタ指定フィー
ルド(dst1)に3ビットを用いている。残りの下位13ビ
ットはファンクションフィールド(function)として高機
能化などの目的で利用される空フィールドになってい
る。
値と、設定された値との間での論理演算や算術演算の結
果を他の内部レジスタに格納するIタイプと称する形式
の命令である。この形式の命令では、Mタイプの形式の
命令のオフセットフィールドに代えて即値用フィールド
(immediate) を設けている点が形式上の相違点である。
この命令では、ソースレジスタ指定フィールド(src1)に
格納された値と即値用フィールド(immediate) に設定さ
れた値との間で、論理演算や算術演算が行われるのであ
る。したがって、演算すべき2つの値の一方が即値用フ
ィールド(immediate) に設定に格納される点を除けば、
Rタイプの命令と同様の処理を行うことになる。
された値の大小関係に応じてプログラムカウンタで設定
されたアドレスにジャンプしたり、1個の内部レジスタ
に格納されたアドレスにジャンプしたりするJタイプと
称する形式の命令である。形式的には、Mタイプの形式
の命令のディスティネーションレジスタ指定フィールド
(dst1)に代えて、ソースレジスタ指定フィールド(src2)
を設けた形式になっている。すなわち、2個の内部レジ
スタを指定するソースレジスタ指定フィールド(src1),
(src2)に格納された値の大小関係を比較してプログムカ
ウンタで指定されたアドレスにジャンプしたり、いずれ
か一方のソースレジスタ指定フィールド(src1),(src2)
に格納された値をジャンプ先のアドレスとしてジャンプ
したりするのである。また、この形式の命令には無演算
命令も含まれる。
は4ビットであって、図4に示すように、ソースコード
の1単位を構成するワード数を格納するための3ビット
のコード数フィールド(code)と、ソースコードの各単位
に対応したオブジェクトコードのブロックの最後の命令
コードの位置を示す1ビットの終了位置指定フィールド
(end) とを備えている。ソースコードの1単位が複数ワ
ードであって対応するオブジェクトコードのブロックが
複数ワードである場合に、コンパイラはソースコードの
1単位に対応するオブジェクトコードのブロックの先頭
の命令コードのコード数フィールド(code)に、ソースコ
ードの1単位のワード数を設定する。また、同一ブロッ
ク内の他の命令コードについてはコード数フィールド(c
ode)を0に設定する。ここに、コード数フィールド(cod
e)は、3ビットであるから最大数は7になるが、ソース
コードの1単位が8ワード以上である場合もある。この
場合には、ソースコードの1単位に対応したオブジェク
トコードのブロックの先頭の命令コードから順にコード
数フィールド(code)にワード数を設定し、同一ブロック
内の合計のワード数が、ソースコードの1単位のワード
数になるようにすればよい。たとえば、ソースコードの
1単位が15ワードであれば、オブジェクトコードの対
応するブロックの命令コードのコード数フィールド(cod
e)は、ブロックの先頭の命令コードから順に、7、7、
1となる。
ロックの終了位置は、終了位置指定フィールド(end) の
内容により指定される。すなわち、終了位置指定フィー
ルド(end) が、「0」のときにはブロックの途中の命令
コードを示し、「1」のときには最終位置の命令コード
を示すのである。以上をまとめて、ソースコードとオブ
ジェクトコードの命令コードのステータスタグフィール
ド(St)の設定内容との対応関係の一例を示すと、表1の
ようになる。
のようなステータスタグフィールド(St)を設けたことに
より、コプロセッサ21の内部に、図1のような構成を
設けてオブジェクトコードに対応するソースコードのア
ドレスを簡単に求めることができる。すなわち、命令の
実行が開始されると、各命令コードにおけるコード数フ
ィールド(code)に設定された値が加算器31の前の出力
結果と順次積算される。加算器31の出力結果は一時レ
ジスタ32に格納され、次のコード数フィールド(code)
に設定された値に加算される。また、終了位置指定フィ
ールド(end) に対応する信号endはアンド回路33にク
ロック信号clk とともに入力され、図2(a)のように
終了位置指定フィールド(end) が1になるとアンド回路
33への入力はHレベルになり、図2(c)に示すよう
にアンド回路33の出力はクロック信号clk (図2
(b)参照)の立ち上がりに同期して立ち上がる。アン
ド回路33の出力が立ち上がると、アドレスレジスタ3
4は一時レジスタ32の出力値を読み込んで保持する。
すなわち、アドレスレジスタ34は、ソースコードの命
令の1単位に対応したオブジェクトコードのブロックの
実行が終了した時点で、それまでに実行されたソースコ
ードの全ワード数を格納するのである。このようにし
て、ソースコードの1単位に対応するオブジェクトコー
ドのブロックの実行が終了すると、アドレスレジスタ3
4にはソースコードの対応するアドレスが格納されるこ
とになる。ここに、アドレスにオフセット値が設定され
ている場合には、アドレスレジスタ34の出力値にオフ
セット値を加算すればよい。また、ソースコードは順次
実行されるのであって、分岐等は含まないものと仮定し
ている。
ェクトコードのアドレスと、ステータスタグフィールド
の内容と、一時レジスタ32の出力値と、アドレスレジ
スタ34の出力値とは、表2のような関係になる。した
がって、たとえば、オブジェクトコードの実行中にアド
レス13で演算エラーが生じて実行が停止したり、ブレ
ーク命令によって実行が停止したりしたときには、アド
レスレジスタ34の出力値は22になるから、この出力
値によってソースコードのどの命令が実行されたときに
実行が停止したのかを知ることができるのである。
行う場合であって、挿入や削除を行うために、ソースコ
ードのアドレスによって挿入や削除の箇所を指定する場
合には次のような処理を行う。この場合には、ソースコ
ードにおいて挿入や削除を行う箇所のアドレスをターゲ
ットアドレスレジスタ35に設定する。次に、オブジェ
クトコードの命令コードを先頭から順次読み込んで実行
時と同様に加算器31によってコード数フィールド(cod
e)の設定値を順次積算する。また、オブジェクトコード
の命令コードの終了位置指定フィールド(end) が1にな
れば、アドレスレジスタ34に一時レジスタ32の出力
値を読み込む。ここまでは、オブジェクトコードの実行
時と同じである。アドレスレジスタ34の出力値は、一
致検出回路36においてターゲットアドレスレジスタ3
5に設定されたソースコードのアドレスと比較され、両
者が一致すると一致検出回路36から一致信号が出力さ
れる。また、一致信号が出力された時点のオブジェクト
コードのアドレスに1を加えた値が、ソースコードに対
応したオブジェクトコードの求めるアドレスになる。た
とえば、表2において、ソースコードのターゲットアド
レスが22であるとすれば、オブジェクトコードの対応
するアドレスが12になった時点で一致信号が出力され
ることになる。そこで、12に1を加えて13とすれ
ば、ソースコードのターゲットアドレスに対応したオブ
ジェクトコードのアドレスになるのである。
ードの命令コードにソースコードの各単位を構成するワ
ード数を格納するコード数フィールドを設けて、オブジ
ェクトコードの実行時にソースコードの単位ごとのワー
ド数を順次加算してアドレスレジスタに格納しているの
で、コプロセッサによるオブジェクトコードの実行中
に、ソースコードのどの箇所に対応するオブジェクトコ
ードを実行しているのかをアドレスレジスタの出力値に
よって知ることができ、コプロセッサの実行停止時など
に、ソースコードのどの位置で実行が停止したのかを容
易に知ることができるという利点を有するのである。ま
た、逆にソースコードの指定箇所が、オブジェクトコー
ドのどの位置に対応するのかも容易に知ることができる
とう効果がある。その結果、デバッグや編集などの際に
ソースコードとオブジェクトコードとのアドレスの対応
関係を容易に知ることができるのである。
である。
フィールドの構成例を示す説明図である。
ロック図である。
ソースコードとオブジェクトコードとの関係の例を示す
説明図である。
Claims (1)
- 【請求項1】 シーケンスプログラムを実行する命令実
行専用のコプロセッサをメインプロセッサとは別に備
え、シーケンスプログラムのソースコードをソースプロ
グラムメモリに格納するとともに、メインプロセッサに
よってシーケンスプログラムのソースコードをコンパイ
ルして得たコプロセッサ用のオブジェクトコードをオブ
ジェクトプログラムメモリに格納したプログラマブルコ
ントローラにおいて、オブジェクトコードの各命令コー
ドには、ソースコードの各単位のワード数を設定するこ
とができるコード数フィールドと、ソースコードの各単
位に対応したオブジェクトコードのブロックの最後の命
令コードを示す終了位置指定フィールドとが設けられて
いて、ソースコードの各単位に対応するオブジェクトコ
ードのブロック内のコード数フィールドの合計値がその
ブロックに対応するソースコードの単位のワード数にな
るようにコード数フィールドの値が設定され、コプロセ
ッサは、コード数フィールドの値を積算する加算器と、
加算器の出力値を保持する一時レジスタと、終了位置指
定フィールドの値によりブロックの終了が示されると一
時レジスタの出力値を取り込むアドレスレジスタとを備
えて成ることを特徴とするプログラマブルコントロー
ラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3174158A JP2559924B2 (ja) | 1991-07-15 | 1991-07-15 | プログラマブルコントローラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3174158A JP2559924B2 (ja) | 1991-07-15 | 1991-07-15 | プログラマブルコントローラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0519821A JPH0519821A (ja) | 1993-01-29 |
JP2559924B2 true JP2559924B2 (ja) | 1996-12-04 |
Family
ID=15973709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3174158A Expired - Lifetime JP2559924B2 (ja) | 1991-07-15 | 1991-07-15 | プログラマブルコントローラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2559924B2 (ja) |
-
1991
- 1991-07-15 JP JP3174158A patent/JP2559924B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH0519821A (ja) | 1993-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5867726A (en) | Microcomputer | |
KR100327776B1 (ko) | 다중 명령세트를 사용하는 데이터 처리방법 | |
US6560697B2 (en) | Data processor having repeat instruction processing using executed instruction number counter | |
JP2005317023A (ja) | データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法 | |
JP2004164554A (ja) | プログラム実行監視装置および方法 | |
JP2009536769A (ja) | ハードウェアエンドループ情報の命令へのコード化 | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
JP2559924B2 (ja) | プログラマブルコントローラ | |
US5212779A (en) | System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction | |
US7631166B1 (en) | Processing instruction without operand by inferring related operation and operand address from previous instruction for extended precision computation | |
US5463747A (en) | Microprogram data processor processing operand address calculation and instruction execution with common hardware | |
JP3740321B2 (ja) | データ処理装置 | |
JPH0222413B2 (ja) | ||
JP2559929B2 (ja) | プログラマブルコントローラ | |
JP2607319B2 (ja) | プログラマブルコントローラ | |
JP2853647B2 (ja) | デバッガ付きインタプリタへの機能付加方式 | |
JPH1196001A (ja) | プログラム実行装置及びプログラム変換方法 | |
JP3060917B2 (ja) | プロセッサ | |
JP2764947B2 (ja) | 命令制御方式 | |
JP2001184227A (ja) | シミュレーション装置 | |
JPH02110636A (ja) | タグ・アーキテクチャマシンのデバッグ装置とそのコンパイラ | |
Güran | A simulation tool for mc6811 | |
JPH05265755A (ja) | 並列命令実行方式 | |
JPH05233283A (ja) | 並列命令実行方式 | |
JPH10289125A (ja) | マイクロプロセッサのプログラムデバッグ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19960723 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080905 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080905 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090905 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090905 Year of fee payment: 13 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090905 Year of fee payment: 13 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090905 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100905 Year of fee payment: 14 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 15 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 15 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 15 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |