FC2カウンター FPGAの部屋 MicroBlaze
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

MicroBlaze プロセッサの BRAM メモリの増減の方法

MicroBlaze プロセッサを使っていて DLMB と ILMB ポートに microblaze_local_memory を付けているが、その増減方法が分からなかった。その増減方法を IDA さんに教えてもらったので、備忘録として書いておく。

microblaze_0_local_memory を展開して、lmb_bram をダブルクリックして設定を行った。
microblaze_local_memory_1_210428.png

Block RAM Generator 設定ダイアログが開く。
microblaze_local_memory_2_210428.png

Port A Option タブの Write Depth を設定しようとしてもハイドされていて設定できない。
microblaze_local_memory_3_210428.png

何処を設定するのか、悩んでいたら IDA さんが、Address Editor で設定すると教えてくれた。ありがとうございます。

Address Editor を開いて dlmb_bram_if_cntlr/SLMB の Range を 64k バイトに設定したところ、正常に設定できた。(上の図は設定されたところだ)
microblaze_local_memory_4_210428.png
  1. 2021年04月28日 21:23 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:1

MicroBlaze プロセッサのメモリ用の BRAM に ELF ファイルを関連付ける方法

MicroBlaze のアプリケーション・ソフトウェアをブート時にロードしたいと思っていた。ツィッターでツイートするとバサロさんが Vivado の Associate ELF Files で MicroBlaze に ELF ファイルを関連付ける方法を教えてくれた。早速やってみよう。

Associate ELF Files については、”Vivado Design Suite ユーザー ガイド エンベデッド プロセッサ ハードウェアデザイン UG898 (v2020.1) 2020 年 6 月 10 日”の 146 ページの”UpdateMEM を使用した BIT ファイルの MMI および ELF データでのアップデート”に記載がある。

Vivado のデザインは”GPS と 3軸加速度センサーを使ったシステム5(Vivado 2020.1 のプロジェクトを作成中)”の GPS と 3 軸加速度センサーを 4 個使ったシステムで、それぞれ 1 個の MicroBlaze プロセッサが搭載されていてるので、合計 5 個の MicroBlaze プロセッサが搭載されている。
すでに、Vitis で アプリケーション・ソフトウェアを作成してある。
acc_gps_sensor_21_201118.png

Vivado 2020.1 の Tools メニューから Associate ELF Files... を選択する。

Associate ELF Files ダイアログが開く。
acc_gps_sensor_22_201118.png

gps_uartlite/microblaze_0 の Associate ELF File を指定する。右端の・・・ボタンをクリックする。
Select ELF Files ダイアログが開く。
mb_gps.elf を選択して OK ボタンをクリックする。(適当な ELF ファイルが無い場合は Add Files... ボタンをクリックして、適当な ELF ファイルを選択する)
acc_gps_sensor_23_201118.png

gps_uartlite/microblaze_0 の Associate ELF File に mb_gps.elf が指定された。
acc_gps_sensor_24_201118.png

Associate ELF Files ダイアログを OK ボタンをクリックして閉じると、Vivado の右上に write_bitstream Out-of-date と表示された。
Flow Navigator から Generate Bitsteram をクリックして、ビットファイルを生成する。
acc_gps_sensor_25_201118.png

Running write_bitstream になって、ビットファイルを生成しているところだ。つまり、 Generate Bitsteram のフェーズのみ実行されるので、時間がかからなくて良い。
acc_gps_sensor_26_201118.png

write_bitstream Complete になった。
acc_gps_sensor_27_201118.png

Associate ELF Files で MicroBlaze に ELF ファイルを関連付ける方法をやってみたが、PS の DDR SDRAM を MicroBlaze のメモリとして使用する方法もある。
旧 Xilinx ツールの EDK を使用する例ではあるが、”シンプルな AMP : Zynq SoC Cortex-A9 ベアメタル システムと MicroBlaze プロセッサ”がある。これも参考になると思う。
最後にツィッターでは IDA さんにもいろいろ通してていただいた。皆様、ありがとうございます。
  1. 2020年11月18日 05:10 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0

Nexys Video でMicroBlaze のチュートリアルをやってみる7(Vitis その3 + デバック)

Nexys Video でMicroBlaze のチュートリアルをやってみる6(Vitis その2 + デバック)”の続き。

Nexys Video を使用して”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、ラン・コンフィグレーションを作り、デバックモードで起動して、GPIO の Write アクセスを Vivado Analyzer で観察した。今回は、”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”手順 13: ロジックからプロセッサへのクロストリガーの設定”をやってみよう。

Vitis で 50 行目のブレーク・ポイントを削除した。
microblaze_tut_80_201011.png

Vivado Analyzer で Trigger mode を BASIC_OR_TRIG_IN に、TRIG_OUT mode を TRIGGER_OR_TRIG_IN に変更した。
AWVALID は Rise でトリガをかけてある。
microblaze_tut_81_201011.png

Vivado Analyzer の Status ウインドウで Run trigger for this ILA core ボタンをクリックする。
トリガを待っている。
microblaze_tut_82_201011.png

Vitis で Resume ボタンをクリックして、ソフトウェアを走らせる。
microblaze_tut_83_201011.png

Vitis は停止したが、 exit で停止しているようだ。クロストリガーでは停止していないようだ?
microblaze_tut_84_201011.png

Vivado Analyzer はトリガーがかかっている。
microblaze_tut_85_201011.png

波形を拡大した。
microblaze_tut_86_201011.png

ロジックからプロセッサへのクロストリガーはうまく行かなかった。
  1. 2020年10月11日 05:10 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0

Nexys Video でMicroBlaze のチュートリアルをやってみる6(Vitis その2 + デバック)

Nexys Video でMicroBlaze のチュートリアルをやってみる5(Vitis その1)”の続き。

Nexys Video を使用して”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、Vitis を起動して、プラットフォームとアプリケーション・プラットフォームを作成し、テンプレートとして Peripheral Tests を選択しビルドし成功した。今回は、ラン・コンフィグレーションを作り、デバックモードで起動して、GPIO の Write アクセスを Vivado Analyzer で観察した。

Explorer から Microblaze_tut_system -> Microblaze_tut を右クリックし、右クリックメニューから Generate Linker Script を選択する。
microblaze_tut_65_201010.png

Basic タブの Place code Sections in: と Place Data Sections in: 、 Place Heap and Stack in: で mig_7series_0_memaddr を選択する
microblaze_tut_62_201009.png

Explorer から Microblaze_tut_system -> Microblaze_tut -> src -> lscript.ld を開くと設定が変わっている。
microblaze_tut_63_201010.png

Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debug AS -> Debug Configurations... を選択する。
microblaze_tut_64_201010.png

Debug Configurations ダイアログが開く。
Singu Application Debug を右クリックし、右クリックメニューから New Configuration を選択する。
microblaze_tut_66_201010.png

Debugger_Microblaze_tut-Default という名前の Debug Configurations ダイアログが開いた。
とりあえず Close ボタンをクリックして、ダイアログを閉じる。
microblaze_tut_67_201010.png

Nexys Video の PROG 、 UART ポートを USB ケーブルでパソコンに接続して、電源 ON した。
JP4 は JTAG モードに変更した。

gtkterm を sudo で開いて、 /dev/ttyUSB1 をポートとして指定する。ボーレートは 9600 bps だ。
microblaze_tut_68_201010.png

Vitis IDE に戻って、 testperiph.c を書き換える。
41 行目に

while(1)

を入力した。
59 行目にブレーク・ポイントを入力した。
microblaze_tut_69_201010.png

Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debugger_Microblaze_tut-Default を選択する。
microblaze_tut_70_201010.png

Debug モードになって、 testperiph.c の main() の最初の行でストップした。
microblaze_tut_71_201010.png

Vivado に戻って、 Flow Navigator から PROGRAM AND DEBUG -> Open Hardware Manager -> Open Target をクリックし、 Auto Connect を選択した。
microblaze_tut_72_201010.png

HARWARE MANAGER が起動し、hw_ila_1 が表示された。
microblaze_tut_73_201010.png

Settings - hw_ila_1 で Trigger mode: を TRIG_IN_ONLY、 TRIG_OUT mode: を TRIG_IN_ONLY に変更した。
microblaze_tut_74_201010.png

Run Trigger ボタン(緑の横三角)をクリックして、波形キャプチャをスタートした。
Windows sample が 512 of 1024 になった。この時点でトリガを待っている。
microblaze_tut_75_201010.png

Vitis で Resume ボタンをクリックして、50 行目までソフトウェアを進める。
microblaze_tut_76_201010.png

Vivado Analyer で波形がキャプチャできた。
microblaze_tut_77_201010.png

gtkerm の表示を示す。
microblaze_tut_79_201010.png

Settings - hw_ila_1 で Trigger mode: を BASIC_ONLY、 TRIG_OUT mode: を DISABLED に戻した。

デバックモードを終了して、もう一度、Assistant ウインドウから Microblaze_tut_system -> Microblaze_tut -> Debug を右クリックし、右クリックメニューから Debugger_Microblaze_tut-Default を選択した。

Vivado に戻って、 Flow Navigator から PROGRAM AND DEBUG -> Open Hardware Manager -> Open Target をクリックし、 Auto Connect を選択した。

今度は、 hw_ila_1 の Trigger Setup で AWVALID を R でトリガにした。

Run Trigger ボタン(緑の横三角)をクリックして、波形キャプチャをスタートした。
Windows sample が 512 of 1024 になった。この時点でトリガを待っている。

Vitis の Resume ボタンをクリックして、50 行目までソフトウェアを進める。

Vivado Analyer で波形がキャプチャできた。
microblaze_tut_78_201010.png

今度は、AWVALID などの制御信号もキャプチャできている。
  1. 2020年10月10日 16:52 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0

Nexys Video でMicroBlaze のチュートリアルをやってみる5(Vitis その1)

Nexys Video でMicroBlaze のチュートリアルをやってみる4(手順 2: IP インテグレーター デザインの作成 その3)”の続き。

Nexys Video を使用して”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回はできあがった回路を論理合成、インプリメンテーション、ビットストリームの生成を行って、XSA ファイルを生成した。今回は、Vitis を起動して、プラットフォームとアプリケーション・プラットフォームを作成し、テンプレートとして Peripheral Tests を選択した。

Viavdo 2020.1 の Tools メニューから Launch Vitis IDE を選択する。

Eclipse Launcher ダイアログが表示された。
Browse... ボタンをクリックする。
microblaze_tut_49_201008.png

MicroBlaze_tut プロジェクトのディレクトリに行って、フォルダの作成ボタンをクリックする。
microblaze_tut_50_201008.png

vitis_work を作成した。それを選択して、OKボタンをクリックする。
microblaze_tut_51_201008.png

Workspace: に MicroBlaze_tut/vitis_work が入った。そのまま、 Launch ボタンをクリックする。
microblaze_tut_52_201008.png

Vitis 2020.1 の Welcome 画面が表示された。
microblaze_tut_61_201009.png

Create Application Project をクリックする。
New Application Project の Create a New Application Project 画面が表示された。
Next > ボタンをクリックする。
microblaze_tut_53_201008.png

Platform 画面では、Create a new platform hardware (XSA) タブをクリックする。
XSA File: の Browse... ボタンをクリックする。
microblaze_tut_54_201008.png

MicroBlaze_tut/mb_subsystem_wrapper.xsa ファイルを指定した。
microblaze_tut_55_201008.png

Application Project Details 画面で、Application project name: に Micorblaze_tut と入力した。
microblaze_tut_56_201008.png

Domain 画面はデフォルトのままとした。
microblaze_tut_57_201008.png

Templates ウインドウでは、 Peripheral Tests を選択して、 Finish ボタンをクリックした。
microblaze_tut_58_201008.png

プラットフォームとアプリケーション・プロジェクトが作成された。
microblaze_tut_59_201008.png

トンカチマークをくりっくして、ビルドを行った。
ビルドは成功した。
microblaze_tut_60_201009.png
  1. 2020年10月09日 04:32 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0

Nexys Video でMicroBlaze のチュートリアルをやってみる4(手順 2: IP インテグレーター デザインの作成 その3)

Nexys Video でMicroBlaze のチュートリアルをやってみる3(手順 2: IP インテグレーター デザインの作成 その2)”の続き。

Nexys Video を使用して”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は、、”手順 2: IP インテグレーター デザインの作成”を更に進めていって、ブロックデザインが完成したと思ったが、クロックのピンなどがなかった。今回は、クロックピンや clocking Wizard を追加して、ブロックデザインを完成させ、論理合成、インプリメンテーション、ビットストリームの生成を行った。

やはり、”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”は、ザイリンクス KC705 FPGA 評価ボードのチュートリアルなので、Nexys Video に適用できないところがある。前回のブロックデザインでは、MIG のクロック sys_clk_i が直接出ている。これは 200 MHz のクロック入力だが、Nexys Video のクロックは 100 MHz だった。

Board ウインドウから System Clock と Reset を Diagram ウインドウにドラック & ドロップした。
microblaze_tut_41_201007.png

clocking Wizard を追加した。
clk_out1 を MIG 用の 200 MHz に設定変更して、Reset Type を Active Low に変更した。
microblaze_tut_40_201005.png

最終的に完成したブロックデザインを示す。
Processor System Reset と Clocking Wizard IP を追加してある。
microblaze_tut_41_201005.png

MIG 以外の IP のクロックは MIG の ui_clk から自動的に接続されていたので、とりあえずこれで良いことにする。

Validate Design を行ったところ、成功した。
microblaze_tut_38_201004.png

Vivado の Source ウインドウで mb_system_i を右クリックし右クリックメニューから Create HDL Wrapper... を選択して Verilog HDL のラッパーファイルを生成した。
microblaze_tut_39_201004.png

Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行った。
成功して、ビットファイルが生成された。
microblaze_tut_42_201007.png

Project Summary を示す。
タイミングもメットしている。
microblaze_tut_43_201007.png

さて、XSA ファイルを出力しよう。
Vivado の File メニューから Export -> Export Hardware... をクリックする。
Export Hardware Platform ダイアログが表示された。
Platform Type はデフォルトの Fixed のままで Next > ボタンをクリックする。
microblaze_tut_44_201007.png

Output 画面では、Inclue bitstream のラジオボタンを選択する。
microblaze_tut_45_201007.png

Files ではデフォルトのままとする。
microblaze_tut_46_201007.png

Exporting Hardware Platform で Finish ボタンをクリックする。
microblaze_tut_47_201007.png

mb_subsystem_wrapper.xsa ファイルが生成された。
microblaze_tut_48_201007.png
  1. 2020年10月08日 04:58 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0

Nexys Video でMicroBlaze のチュートリアルをやってみる3(手順 2: IP インテグレーター デザインの作成 その2)

Nexys Video を使用して”Vivado Design Suite チュートリアル エンベデッド プロセッサ ハードウェア デザイン UG940 (v2019.2) 2019 年 11 月 26 日”の”第 4 章 演習 3: エンベデッド MicroBlaze プロセ ッサのプログラム”をやってみようと思うということで、前回は”手順 2: IP インテグレーター デザインの作成”を進めていって、axi_uartlite_0 のインスタンスまで終了した。今回は、”手順 2: IP インテグレーター デザインの作成”を更に進めていく。

次は、Board ウインドウの GPIO 8 LEDs を Diagram ウインドウにドラック & ドロップした。
microblaze_tut_22_201002.png

axi_gpio_0 の Auto Connect ダイアログが表示された。OK ボタンをクリックする。
microblaze_tut_23_201002.png

Diagram ウインドウの + ボタンをクリックして、AXI BRAM Controller を Add IP する。
microblaze_tut_24_201002.png

Run Block Automation をクリックする。
microblaze_tut_25_201002.png

microblaze_0 の設定画面が開く。下図の様に設定を行った。
microblaze_tut_26_201002.png

micoblaze_0_local_memory, Processor System Reset, MicroBlaze Debug Module が追加され、それらと MIG 7 Series が配線された。
microblaze_tut_27_201002.png

Run Connection Automation をクリックする。
Run Connection Automation ダイアログが開いた。
All Automation (9 out of 9 selected) のチェックボックスにチェックを入れて、OK ボタンをクリックする。
microblaze_tut_28_201002.png

配線がだいたい完成したが、まだ Run Connection Automation が表示されている。Run Connection Automation をクリックする。
mdm_1 の M_AXI ポートを接続する。
OK ボタンをクリックする。
microblaze_tut_30_201002.png

Run Connection Automation 後のブロックデザインを示す。
microblaze_tut_31_201002.png

microblaze_0_axi_periph IP の M00_AXI インターフェースと axi_gpio_0 IP の S_AXI インターフェースの接続線を選択し、右クリックし、右クリックメニューから Debug を選択する。
microblaze_tut_32_201002.png

Debug を設定すると、Run Connection Automation が表示された。
Run Connection Automation をクリックする。
microblaze_tut_34_201002.png

All Automation にチェックが入っている。
OK ボタンをクリックする。
microblaze_tut_35_201002.png

system_ila が配線され、 Diagram ウインドウの回路が完成した。
microblaze_tut_36_201003.png

Address Editor 画面を示す。
microblaze_tut_37_201003.png
  1. 2020年10月04日 04:27 |
  2. MicroBlaze
  3. | トラックバック:0
  4. | コメント:0
»