アダルト・ヴァイオリン May the force be with you..

2009年3月15日

sfl2vlの新しい構文

Filed under: Weblog — い~ぐる @ 4:57 PM

procとfunctionという新しい概念を入れる。
新しいといっても、functionはinstrselfの異形であり、
procは、stage+taskの簡易版である。つまり、functionは同一クロック内でのアクションを定義し、procは起動した次のクロックにおけるアクションを定義する。
1クロックで終了するfunctionと異なり、procは明示的にfinishするか、別のprocもしくはstageを起動するまで、実行を続ける。

どちらも、構文上の分り易さをねらったものだ。

functionを定義するには、

func_name 名前(引数リスト);

で定義する。引数リストには、sel変数を指定する。

procを定義するには、

proc_name 名前(引数リスト);

で定義する。引数リストには、レジスタ変数を指定する。

実行本体は、制御実行文として、
function 名前 アクション
proc 名前 アクション
のように記述する。

これらを用いる例を↓に示す。

module t {
input a;
output f;
sel b,c;
reg d,e,g;
func_name x(b,c);
proc_name y(d,e);
{  x(a,a);  } /* 共通動作で、function xを起動 */
function x { f= b&c; y(b,c);} /* xから、proc yを起動 */
proc y { g := d|e; if(g) finish;} /* gが1ならyをfinish */
}

プロトタイプはできているが、もう少し確認してから、アップロード予定

追記

procやfunctionの書式を使うと、instr_argという書式が不恰好に思えてきて、instroutやinstrinなどの引数定義をfunc_nameに合わせてみる。
(従来通りのやり方も使える)

declare文では、例えば、

declare test1 {
input a,b;
output f;
instrin exe(a,b);
}

のように、従来のように、引数を別に記述していたのに比べて、
記述量も減るし、分り易くなったと思う。

instroutも同様の拡張をした。

FPGA入門コース 例題追加

Filed under: Weblog — い~ぐる @ 12:18 AM

FPGA開発入門コースの記事に、メモリを用いるサンプルプログラムを追加した。

Powered by WordPress