hello world!

P8032765
できた。とりあえず写真とるために無理矢理表示。超みぐるしいソース。てか超苦労した。ううう。

まず、だいたいコネクタを作るのに苦労(そのままはささらない)。手持ちのオーディオ用配線ではつらいものがあったので、秋葉原で調達。
やっとのことでコネクタができたら次はverilogにハマった。

HDLは基本的にロジックを記述する言語。C風の文法を採用しているけど実際のところ全然動きは違う。普通のソフト作る思考回路だとうまくいかない。どうしても自然に、上から順番に実行されるもんだと思ってしまう。例えば次のソースは余裕で動かない。C風に書くと、こんな感じ。

//もともとa=0だったとして
a = a+1;
a=a+1;
//a==2を期待するが……だめ

モジュール全体をクロックに同期させて動くように書くので、(1モジュール脱出まで)全部1クロック。順次実行されると思うと間違い。全部同時のイメージというか、結果は使えるんだけどワイヤー(出力を次の入力に繋げる)にしないといけない。こういうのは慣れていないので思考に苦しむ。
あと、液晶モジュールも制御ややこしい。PICでたくさんの例があってよかった。

しかしまあ、こんなに苦労したhello worldがあっただろうか……いやない。うははは。。

追記:xilinx社はドキュメントが充実している。キットなんかをなんとなくで買った人の中にはドキュメントへ辿りつけない人もいるのではないかな、と思うので(思わないですかね?)、以下貼っておきます。

さらに追記:コンパイラ(アナライザ?)が詳細なレポートを出してくれる。見苦しいけどまあ大したことしてない今のソースで全体の10%くらいを使用しているそうな。最大クロック(回路により異なる)は60MHzくらい。うーむ。まあ僕のやりかたが悪いんでしょう。精進せねば……。

さらにさらに追記:上の例のはブロッキング代入?でうまく動くかもしれない?よくわからないけど。まあ普通しないです。次の処理は次のクロックが基本。