Verilog勉強日記

とりあえず
http://cas.eedept.kobe-u.ac.jp/~arai/Verilog/chap5.html
http://japanese.sugawara-systems.com/tutorial.htmを流し読みしてみた。

ハードウェアから離れよう離れようとしている言語ばっかりみてきたので、この密結合っぷりは逆に面白い。

これもbegin..endだなぁ。Adaがベースになっているという記述があった。always foo;が

always begin
    foo;
end

を意味するっていうのがCのif(foo) bar;とif(foo){bar;}の関係と同じ。両方Adaが源流なのかな。

あと代入に3種類あるのが面白い。命令を一つずつ実行する必要がないから同時に並列に代入ができてしまうのだな。Cっぽい順次代入と、同時に代入。
そして3つ目の代入はもはや代入というより結合を宣言するもの。一度代入分を書くだけで右辺の値が変化したらすぐに左辺に代入される。「ワイヤーでつなぎました」的な感じ。
雰囲気わかったけど実際に書いてみるとつまずくかも。試したい。

代入文の中に処理を遅延させる命令が挟まっていたりする!

3ビットの整数とか5ビットの整数とかも使える。しかも2進数かと思いきや「未定」とかを表す値もある。3'bx10だと3ビットで、最上位ビットは不定だけど下二つは1と0という意味らしい。

比較演算子も普通にあるなぁ。作ってみたかった「最中限AI」を作る上で必要なものは全部ある。あとは何状態の読みを並列で出来るか、ハードウェア的な限界によってCPUでやるのの何倍速いのかが決まりそう。とりあえずコード書いてみるのが吉か。