・今までは回路図+CPUという感じだったけど、今回はなるべく言語……VerilogとHDLで片付けようと思って、VivadoでVerilogしてみることに。
・ちょうどいい感じでZyboでLEDBLINKをVHDLでやっている例があったのでちょっとやってみる。一応論理合成してGenerate Bitstreamまでちゃんとできた。
・ならばということで、VHDLをVerilogにして同じものを作成。Verilogもだいぶ忘れていたけど、IcarosVerilog(iverilog)とvvp、TwinWaveで遊んでいたときのものが出てきたのでそちらを眺めて記憶の底からサルベージ。
・とりあえずさらっと書いて同じように通ったけど、Open Implimentation Designを開いたらこんなメッセージ。
----------
WARNING! Critical violations of the methodology design rules detected. Critical violations may contribute to timing failures or cause functional issues in hardware. Run report_methodology for more information.
----------
・単純にclkでカウントして出力しているだけだなんだけどなと思ってふと。このデザインって、32ビットのカウンタを作って24ビット芽からLEDへ出力……ってことは上の桁は未使用?
・ということで、こいつが怪しんじゃないかとカウンタのサイズを必要な分だけに。これでもう一度やってみたら……消えた。なるほどそういうことか。わかりにくいメッセージだな。
・というところでなんとなく解ったので書き味をしてみる。Zyboのジャンパピン設定は
JP5:JTAG
JP6:USB
として、表側の左上にあるUSBのMicro-BコネクタとPCをつないで、左上のSW4をON!
・これでPCにはCOMポートとして認識されるので、あとはVivadoの左端のFlow Navigatorの一番下の方にある「Open Hardware Manager」。なんかデバッグコアがねぇぞとかほざいてるけど、知ったことではないので、そのまま強行してProgram。
・LEDが点滅したので動いたらしい。試しにカウンタを書き換え、更に信号をwireにしてassignする形にしてみる。そういえば、Verilogなんだからiverilogで構文チェックもできるよなと思って試したらOK。いいんじゃないかな。
・ところで、これではピン番号を直接指定したのだけど、Zyboの制約ファイルがあるはずだから、それに従っておいても良いはずだな。ということで、今度は
ZyboZ7の制約ファイルをダウンロード。まぁ、適当な場所で良いんだろうということで、プロジェクトの上に置いて、指定してやる。
・中身を見るとコメントだらけになっていて、どうやら「使うものだけコメントアウトしてね」というスタンスらしい。Vivadoの上で制約ファイルを開いてLEDとsysclkを選択して画面上の"//"ボタンをクリックしてコメントアウト。
・これでもう一回合成すれば……とその前にモジュールの入出力信号をこの制約ファイルの名前にあわせておかないとな。
・で、変更して再び合成。ちょっとつまらないミスもあったけど、修正してうまくいった。めでたし、めでたし。
・あとはC/C++との合体とか、IP化して内部のCPUから利用できるようにするとか、もうちょと開拓していかないといけないな。