カテゴリー別アーカイブ: FPGA

ZyboをTutorialで試す その4 ビットストリームの生成

前回の続きです。引き続きTutorialFPGAの部屋を参考にします。

zybo_bsd.xprを開いているVivadoの画面に戻り、"Flow Navigator"の"IP Integrator"から"Open Block Design"を選択してダイアグラムを開きます。適当に空いている箇所を右クリックして"Add IP..."を選択するとダイアログが表示されます。検索窓に"my"と入力すると、先ほど作成したmyLed_v1.0が表示されますのでこれを選択し、エンターを押すとダイアグラム上にmyLed_0が追加されます。

先の手順でLEDを削除したあたりにドラッグします。チュートリアルでは "Run connection automation" が表示されるとありますが、表示されませんので、"myLed_0"の"S_AXI"を右クリックして"Make Connection..."を選択します。表示されたダイアログで "M00_AXI" を選択して"OK"をクリックすると、ダイアログ上でも結線されます。

"myLed_0"の"s_axi_aclk"と"s_axi_aresetn"も結線します。ダイアログ上の"myLed_0"のそれぞれから出ている横線の上にカーソルを移動すると鉛筆アイコンになるので、その状態でそれぞれ他のIPのaclkとaresetnが接続されている配線までドラッグして結線します。

ダイアグラム上に残っている"LEDs_4Bits"を右クリック→"Delete"で削除します。

"myLed_0"の"led[3:0]"を右クリックし、"Create Port..."を選択します。デフォルトの入力値のまま"OK"をクリックするとダイアグラムに"led[3:0]"というポートが作成され、"myLed_0"の同名のポートに自動的に接続されます。

※ここの記述はチュートリアルにはありません。この時点で、"myLed_0"にアドレスが割り当てられていないそうです。ダイアグラムのペインの"Address Editor"タブを開いてみますと、確かに"Unmapped Slaves"に表示されています。この"myLed_0"を右クリックして "Auto Assign Address" を選択すると自動でアドレスが割り当てられ、割り当て完了のダイアログが表示されますので"OK"で閉じます。

ここで一旦保存します。

続いて、"Sources"ペインの"Sources"タブを選択して"Constraints"→"constrs_1"→"base.xdc (target)"と選択してbase.xdcをダブルクリックして開きます。右側のペインにソースコードが表示されますので、7行目から11行目の"leds_4bits_tri_o"を"led"に置換します。

set_property PACKAGE_PIN M14 [get_ports {led[0]}]
set_property PACKAGE_PIN M15 [get_ports {led[1]}]
set_property PACKAGE_PIN G14 [get_ports {led[2]}]
set_property PACKAGE_PIN D18 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]

編集を終えたら保存し、ビットストリームを生成します。"Flow Navigation"ペインの"Program and Debug"にある"Generate Bitstream"を選択します。"No Implementation Results Available"ダイアログが表示されますので"Yes"を選択すると、"Generate Bitstream"ダイアログが表示されてビットストリームの生成が始まります。

少し待つと"Launch Run Critical Messages"ダイアログが表示されますが、気にせず"OK"で閉じます。ここからしばらく時間が掛かります。動いているか分からないと不安な時は、下部ペインの"Log"タブを開いてログを眺めてみましょう。

ビットストリームの生成に成功すると、"Bitstream Generation Completed"ダイアログが表示されます。"Open Implemented Design"にチェックを入れて"OK"をクリックして内容を確認してみます。

ZyboをTutorialで試す その3 IPコアの作成2

前回の続きです。引き続きTutorialFPGAの部屋を参考にします。

edit_myLed_v1_0プロジェクトを開いた状態で Sourcesペインで myLed_v1_0_S_AXI_inst - myLed_v1_0_S-AXI (myLed_v1_0_S_AXI.v) をダブルクリックするとエディタで、myLed_v1_0_S_AXI.vが開かれます。

18行目の "// Users to add ports here" に続けて "output wire [3:0] led, "を追記します。

 // Users to add ports here
 output wire [3:0] led, // 追記
 // User ports ends

393行目の "// Add user logic here" に続けて assign led = slv_reg0[3:0]; を追記します。

 // Add user logic here
 assign led = slv_reg0[3:0]; // 追記
 // User logic ends

上記の編集が終わったら、次はSourcesペインの myLed_v1_0 (myLed_v1_0.v) をダブルクリックしてエディタで開きます。同様に、18行目に追記します。

 // Users to add ports here
 output wire [3:0] led, // 追記
 // User ports ends

51行目に ".led(led)," を追記(挿入)します。

 ) myLed_v1_0_S_AXI_inst (
 .led(led), // 追記 (挿入)
 .S_AXI_ACLK(s_axi_aclk),

続いて、"Flow Manager"ペインの"Project Manager"から"Package IP"を選択します。"Packaging Steps"の"Customization Parameters"を選択して、右ペイン最上部に"Merge changes from Customization Parameters Wizard"というリンクが表示されますので、これをクリックしておきます。"Pack"Ports and Interfaces"を選択して右ペインに"led"があることを確認し、"Customization GUI"を選択して右ペインに今回作成中のIPのGUIが表示されることを確認します。

最後に"Review and Package"を選択します。右ペイン最下部の"Re-Package IP"ボタンを押してIPを作成します。"Finished packaging 'myLed_v1.0' successfully' というダイアログが出たらIPの作成に成功です。"OK"をクリックしてダイアログを閉じます。

ZyboをTutorialで試す その2 IPコアの作成1

前回の続きです。引き続きTutorialFPGAの部屋を参考にします。

Vivadoでzybo_bsd.xprを開いたら、左側の "Flow Navigator" ペインから "IP Integrator" の"Open Block Design" を選択して "Dialog" ペインを開きます。ダイアログを拡大表示し、"LEDs_4Bits" を選択して右クリック→Deleteでダイアログから削除します。

Toolsメニューの "Create and Package IP..." を選択すると "Create and Package New IP" ダイアログが表示されます。"Next" をクリックし、"Create AXI4 Peripheral" にチェックを入れて "Next" で "Peripheral Details" が表示されます。"Name" に "myLed" 等を入力して詳細設定を入力して "Next" で "Add Interfaces" になります。"Name" を "S00_AXI" から "S_AXI" に変更し、"Next" で "Create Peripheral" になります。

"Next Steps" から "Edit IP" を選択し、"Finish" で "Create and Package New IP" ダイアログが閉じます。"Create Peripheral IP" ダイアログが開いて閉じると、edit_myLed_v1_0 プロジェクトが開かれます。"Package IP - myLed" ペインがハイライトされています。

ZyboをTutorialで試す その1 Vivadoセットアップ (Windows)

2016/02/08追記: このシリーズの表題を変更しました。

なぜかFarnellにある “Embedded Linux Hands-on Tutorial for the ZYBO”FPGAの部屋を参考に、Zynqをカスタマイズしてみたいと思います。

まずはVivadoをインストールします。インストールの詳細はDigilentのWikiを参考にして下さい。Voucherを使ってDesign Editionを利用する場合は秋月にあるFAQをどうぞ。次に、TutorialにはありませんがBoard Fileをインストールします。詳細は同じくDigilentのWikiを参考にして下さい。基本的にはzipを展開して上書きです。

準備が済んだら、Zybo Base System DesignをDLして(Windowsであれば)Cドライブに展開します。とりあえず今回はC:\local\zybo_base_systemとして配置します。

C:\local\zybo_base_system\source\vivado\hw\zybo_bsd\zybo_bsd.xprをダブルクリックすると、VivadoのOlder Project Versionダイアログが表示されます。"Automatically~" にチェックが入っているのを確認して "OK" をクリックすると、 "Open Project" ダイアログに続いて "Default Library"ダイアログが表示され、"OK" をクリックで今度は "Project Upgraded" ダイアログが表示されます。

"Report IP Status"ボタンをクリックすると、Vivadoに "IP Status" ペインがハイライトされて表示されます。ペインの下部にある "Upgrade Selected" ボタンをクリックすると "Upgrade IP" ダイアログが表示され "OK" をクリックします。 "Upgrade IP" ダイアログが表示されて進捗が表示された後に "Critical Messages" ダイアログに "There were six critical warning messages while Upgrade IP." とのメッセージと詳細が表示されます。ここでは "OK" をクリックしてダイアログを閉じておきます。特に問題はないようです。

一旦Vivado終了して、再度zybo_bsd.xprを開きます。

THE ZYNQ BOOK

Amazonで "zynq" をキーワードで検索すると2冊の洋書『THE ZYNQ BOOK: Embedded Processing with the Arm Cortex-A9 on the Xilinx Zynq-7000 All Programmable Soc』と『THE ZYNQ BOOK: Tutorials for Zybo and Zedboard』が引っ掛かります。

私も読み始めたばかりですが、実は2冊ともPDFファイルがzynqbook.comで配布されています。Xilinxのブログにも紹介記事がありました。氏名、メアド等を登録する必要がありますが、これだけの内容の書籍だ無料でしたら全然アリなのではないでしょうか。後日レビューなど書いてみたいと思います。