3.2 動作の主体と客体


SFL では,「レジスタA の内容とレジスタB の内容を加えて,その結果をレジスタC へ書き込んで,次に・・・」というような制御の流れをそのまま手続きとして記述します。そこでモジュールの要素は「制御を行う側;主体」と「制御を受ける側;客体」とに分けて考えることにします.

制御端子とステージは「動作の主体」,データ端子とレジスタは「動作の客体」

値の参照,演算,レジスタやメモリへの書き込みや,データ端子への出力など,すべてのデータ転送・加工動作は,「制御端子またはステージの制御により実施される」ものと考え,制御端子とステージを動作の主体と呼びます.一方,レジスタ,メモリ,データ端子は,「制御を受ける側の要素」と考え動作の客体と呼びます.

制御端子あるいはステージは,他の動作主体から起動されると,その制御端子あるいはステージに対応づけられた動作を行います.

ステージの動作と状態

制御端子の動作は起動されたマシンサイクル(クロックから次のクロックまでの時間)内で完了します.一方,ステージの動作は複数のマシンサイクルに渡って実行されます.

そこでステージが動作中であることを記憶するためのレジスタ(タスクレジスタ)を用意し,これをタスクと呼びます.したがって,

「ステージは,そのステージのタスクがセットされると動作を開始し,いったん動作を開始すると,タスクがリセットされるまで複数マシン・サイクルにわたって動作を続ける」

ということになります.

ステージのタスクは,「他の動作主体からジョブの生成またはジョブの転送を受けるとセット」され,「そのステージ自身のジョブの転送あるいはジョブの終了によりリセット」されます.つまりステージの起動はタスクのセットにより行うということです.ここで制御端子やステージの起動の方法をまとめると表3.1 のようになります.



<表3.1> 動作主体の起動


ステージの複数マシン・サイクルにわたる動作は,複数の状態状態遷移により表現します.ステージの状態は状態レジスタにより保持されていて,状態遷移はこのレジスタを更新することです.ステージが停止しているとき(タスクがリセットされているとき)は,ステージの状態は変化しません.ステージは,直前に停止したときの状態で再起動されます.

ステージのいくつかの状態をソフトウェアのサブルーチンのようにセグメントとしてまとめることができます.セグメントは,戻り状態を保持することにより,状態遷移の複数箇所から遷移してまた戻ることができるようにした状態と状態遷移の一かたまりです.

制御端子とステージは,起動するときに引き数により付加情報を与えることができます.


ハードウェア動作の記述言語〜 SFL のページへ戻る

ホームページに戻る