3.9 引き数


制御端子やステージは,それらを起動することにより特定の動作を行わせることができます.起動時に,動作の内容やその対象を指定できるとさらに記述性が高まります.このための形式が引き数です.

引き数には,

があり,仮引き数は「あらかじめ制御端子ごと,タスクごとに,どの端子やレジスタを上記指定データの中継点とするか」を定義しておくものです.実引き数は「指定データ」そのもので,制御端子やステージの起動時に記述します.

引き数の記述例

ステージに対するデータは,レジスタを経由するので,タスクの仮引き数はレジスタとなります.制御端子に対するデータは,データ端子を経由するので,制御端子の仮引き数はデータ端子となります.

たとえば,

 1:	instr_arg abc ( xyz );
2: ...
3: state st1 {
4: ...
5: abc ( lmn );
6: ...
7: }
8: ...
9: instruct abc par {
10: opq := xyz;
11: }

では, 1行目で「制御端子 abc の仮引き数はデータ端子 xyz である」と定義しています.また 5行目では制御端子 abc を起動しており,そのときの実引き数は lmn です.この起動により,実引き数 lmnの値は仮引き数 xyz へ設定され,10行目の制御端子 abc の動作のなかで仮引き数 xyz へ設定された値はレジスタ opq に書き込まれます.

引き数を使うときの注意

仮引き数と実引き数の数やビット幅はすべて同じでなければなりません.また,引き数の数は13個までと決められています.

制御端子の仮引き数の定義はその制御端子を起動する側のモジュールで行います.たとえば制御入力端子を起動するのは外側のモジュールですから,その仮引き数の定義は外側のモジュールの定義の中か,このモジュールの使われ方を宣言するモジュールの宣言 (declare ...) の中で行います.すなわち,同じことを指定する形式が 2つあるということになります.モジュールの宣言で定義するとその部品種に対する指定となります.モジュールの定義のなかではインスタンスごとの定義となり、インスタンスごとの指定となります.両方で定義した場合は,同一の内容でなければなりません.


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

ホームページに戻る