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

2009年9月29日

シリアル通信モジュールの例題

Filed under: Weblog — い~ぐる @ 7:04 AM

私が、最近、for文だの、なんだのとごちゃごちゃやっていたのは、
次のようなモジュールの記述をするためです。(自分でも書き下ろしただけで未確認)
このモジュールは調歩同期(RS232C)の送信モジュールです。
こういった記述ができると、ずいぶん分かりやすいと思ってますが、どうでしょう?


細かな話をすると、送信を開始するときには、start信号とdiをセットします。
外部に、タイマモジュールを用意し、ackが入ったら、送信タイミングごとに
sckが入るとしています。送信終了すると、finが出てくるので、この信号で、タイマモジュールを止めます。

module sout {
input di[8];
output so;
func_out ack,fin;
func_in start;
func_in sck;
reg r;
proc_name put_so(r);
function start seq {
reg i[4], td[8];
{td:=di; ack();}
put_so(0b0);
for(i:=0x0;i<0x8;i++) {
put_so(td[i]);
}
put_so(0b1);
fin();
}
proc put_so {
so = r;
if(sck) finish;
}
}

Powered by WordPress