この日記でやること
Vivado HLSの高位合成を使って、ZYBOのLEDを点滅させてみる日記の2日目。前回はプロジェクトの作成をやったので、今回はC++のソースコードを作成していく。
環境
Windows 10
Vivado HLS 2018.3
ZYBO
C++のコードを作成
前回はVivado HLSのプロジェクトを作成したので、今回からC言語でコーディングをしていきたいと思う。まず、Projectから「New Source…」を選択する。
ファイル名は適当にblink_led.cppとして、OKを押す。
するとblink_led.cppが作成され、Vivado HLSの画面で開かれる。適当なエディタで編集しても良いが、今回はVivado HLSからコーディングしてみる。イメージとしては、外部のスイッチが押されたらLEDの点灯パターンを変えるような動作をさせたい。ということで、以下のようなコードを書いた。
ap_int.hは、ap_uint型を使うためにincludeしている。ap_uint型を使うと、任意のbit幅の符号なし整数を扱うことができ、verilogでinputやoutputのbit幅を指定するような感覚で信号を扱うことができる。また、関数blink_ledの引数で、値渡ししているi_led_switchは入力ポートに、ポインタ渡ししているo_ledは出力ポートになる。
※ポインタ渡しの場合、引数は入力ポートや出力ポートのどちらにもなる。このあたりは私もまだ勉強不足なので、おいおい触れる…かも?
これでコードは完成したので、File → Saveを選択してソースコードを保存する。
次回はC++でテストベンチを書いて動作を確認する。
参考文献
公式のドキュメントが以下にあるので、参照しながら進めていきます。
UG871:Vivado Design Suite Tutorial – Hi-Level Synthesis
UG902:Vivado Design Suite User Guide – Hi-Level Synthesis
以下の資料も参考にさせて頂きました。
https://www.slideshare.net/marsee101/vivado-hls1
ZYBOで遊ぼう日記まとめ
ZYBO関係の記事は、大まかな内容ごとに以下にまとめています。
https://wakky.tech/zybo/