ultra96でFPGAの設計をしようと思ったが。。。
・そもそもFPGAの設計をしたことがない。
・vivadoも触ったことない。
ってことで、困った。
tutorialの次に何をしたら良いか困りました。。。
いろいろ調べて、やりたいことに一番近く簡単そうなページが以下のページでした。
このページには本当助かりました!!
Zynq-7000で,独自回路をIPにして,AXI4でPS-PL通信してプログラムから利用する (Vivado)
このページとultra96のtutorial1と2を見ながら実装したら、一応、同じ結果になったので成功したと思われる。
なので、メモを残しておく。
vivado を起動する。ultra96のtutorialによると2018.2が良さそうだった。
・Create Block Designで、Block Designを開きAdd IPを選択で、「Zynq UltraScale+ MPSoC」を選択する。追加しただけど、Ultra96用になっていないので、「Run Block Automation」をクリックする。
たぶんだけど、そのRun Block Automationのダイアログで、Apply Board Presetにチェックがついているので、ultra96用にZynq UltraScale+MPSoCの設定がなってくれていると思う。」Qiitaの記事だと、ZynqコアをカスタマイズしてPresetから選択して。。。となっているが、自分のVivadoにはPresetがなく、選択できなかった。
次に、tutorial01にあるように、クロックをつなげてあげる。この必要性はよくわからないが、とりあえず、言われたままやっておく。
このクロックをつなげないまま進めるとあとで、エラーになった。
pl_clk0を、maxhpm1_fpd_aclkとmaxhpm0_fpd_aclkに接続しておく。
加算器の方は、Qiitaの元の記事の通り、IPを追加すればよかった。
追加したのは以下の4行になる。HDLも初めてだったし、ifの書き方も知らず、一応エラーがないからこんな感じでよかったのだと思う。
--------------
else
begin
slv_reg2 <= slv_reg0 + slv_reg1;
end
で、Qiitaの元の記事通り、
・Craete HDL Wrapper
・Generate Output Porducts
・Generate BitStream
・Export Hardwareを実行する。
で、次にSDKを起動する。
最初に、tutorial2の通りに、Hardware Platformを作成して、bspを作成する。bspはtutorialの通り、stdinとstdoutをpsu_uart1に変更する必要がある。
そして、Qiitaの元の記事の通りにhello worldを作成して実行すればいい。
自分は、IPの名前やプロジェクト名を適当に決めたので、IPのベースアドレスの定義が違ったりした。ベースアドレスは、xparameters.hにあるので探せばよいとでてくると思う。
tutorial2の通りに、実行したらターミナルから
------------------
Hello World
123 + 456 = 579
------------------
と表示された!!
初めてのFPGA実装が成功したことになった!!Qiitaの記事を書いてくれた方感謝です!!
プロジェクトを以下においておく
https://github.com/y38y38/fpga/tree/master/my_ip
・そもそもFPGAの設計をしたことがない。
・vivadoも触ったことない。
ってことで、困った。
tutorialの次に何をしたら良いか困りました。。。
いろいろ調べて、やりたいことに一番近く簡単そうなページが以下のページでした。
このページには本当助かりました!!
Zynq-7000で,独自回路をIPにして,AXI4でPS-PL通信してプログラムから利用する (Vivado)
このページとultra96のtutorial1と2を見ながら実装したら、一応、同じ結果になったので成功したと思われる。
なので、メモを残しておく。
vivado を起動する。ultra96のtutorialによると2018.2が良さそうだった。
・Create Block Designで、Block Designを開きAdd IPを選択で、「Zynq UltraScale+ MPSoC」を選択する。追加しただけど、Ultra96用になっていないので、「Run Block Automation」をクリックする。
たぶんだけど、そのRun Block Automationのダイアログで、Apply Board Presetにチェックがついているので、ultra96用にZynq UltraScale+MPSoCの設定がなってくれていると思う。」Qiitaの記事だと、ZynqコアをカスタマイズしてPresetから選択して。。。となっているが、自分のVivadoにはPresetがなく、選択できなかった。
次に、tutorial01にあるように、クロックをつなげてあげる。この必要性はよくわからないが、とりあえず、言われたままやっておく。
このクロックをつなげないまま進めるとあとで、エラーになった。
pl_clk0を、maxhpm1_fpd_aclkとmaxhpm0_fpd_aclkに接続しておく。
加算器の方は、Qiitaの元の記事の通り、IPを追加すればよかった。
追加したのは以下の4行になる。HDLも初めてだったし、ifの書き方も知らず、一応エラーがないからこんな感じでよかったのだと思う。
--------------
else
begin
slv_reg2 <= slv_reg0 + slv_reg1;
end
--------------
XilinxのSDK上だと、どのbeginとendがつながっているかか、わかりずらいし、どうやってプログラミングしているんだろうー。
で、IPができたら元の画面に戻ってきて、Re connection Automationを選択する。
何!自動で接続してくれるだと!!
Qiitaの元の記事と少し違う。DDRとFIXED_IOの線がない!でも気にせずとりあえずOKとした。DDRつなってないことになるんですかねー??
で、Qiitaの元の記事通り、
・Craete HDL Wrapper
・Generate Output Porducts
・Generate BitStream
・Export Hardwareを実行する。
で、次にSDKを起動する。
最初に、tutorial2の通りに、Hardware Platformを作成して、bspを作成する。bspはtutorialの通り、stdinとstdoutをpsu_uart1に変更する必要がある。
そして、Qiitaの元の記事の通りにhello worldを作成して実行すればいい。
自分は、IPの名前やプロジェクト名を適当に決めたので、IPのベースアドレスの定義が違ったりした。ベースアドレスは、xparameters.hにあるので探せばよいとでてくると思う。
tutorial2の通りに、実行したらターミナルから
------------------
Hello World
123 + 456 = 579
------------------
と表示された!!
初めてのFPGA実装が成功したことになった!!Qiitaの記事を書いてくれた方感謝です!!
プロジェクトを以下においておく
https://github.com/y38y38/fpga/tree/master/my_ip
コメント
コメントを投稿