FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

カテゴリ: MicroBlaze

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

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


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


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


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

Address Editor を開いて dlmb_bram_if_cntlr/SLMB の Range を 64k バイトに設定したところ、正常に設定できた。(上の図は設定されたところだ)
057f481a.png

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 で アプリケーション・ソフトウェアを作成してある。
78321af4.png


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

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


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


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


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


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


write_bitstream Complete になった。
2f8a6735.png


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

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 行目のブレーク・ポイントを削除した。
1bd279e1.png


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


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

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


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


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


波形を拡大した。
8961388c.png


ロジックからプロセッサへのクロストリガーはうまく行かなかった。

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 を選択する。
2dec30ff.png


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


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


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


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


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


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

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


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

while(1)

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


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


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


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

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


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


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


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


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


gtkerm の表示を示す。
f5a20058.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 で波形がキャプチャできた。
51395698.png


今度は、AWVALID などの制御信号もキャプチャできている。

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... ボタンをクリックする。
090559e1.png


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


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


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


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


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


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


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


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


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


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


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


トンカチマークをくりっくして、ビルドを行った。
ビルドは成功した。
4adf196d.png

↑このページのトップヘ