1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

1500円ZYNQ基板でFPGAプログラミング大全Xilinx編(第2版)の実習 (高位合成) 11-1 パターン / 11-2 ビットブロック 描画回路の実機確認

Last updated at Posted at 2021-04-09

はじめに

1500円 ZYNQ 基板(EBAZ4205)を使い、前回までの投稿と組み合わせて、
FPGAプログラミング大全Xilinx編(第2版)の

11-1「パターン描画回路」
11-2「ビットブロック描画回路」

の動作確認を行います。

プロジェクトの概要

前回の投稿
11-1 パターン描画回路 / 11-2 ビットブロック描画回路
で、高位合成を使って描画回路の IP を 2 つ作成しました。

これを、前々回の投稿 グラフィック表示回路 に組み込んで、回路を完成させます。
この回路を使って、PS のプログラムで描画を行い、HDMI から画面出力します。

EBAZ4205 からの HDMI 出力には、
1500円ZYNQ基板でFPGAプログラミング大全Xilinx編(第2版)の実習 2-3 HDMIでパターン表示
で作成した HDMI 出力ケーブルを使用します。
16.jpg

プロジェクトの準備

前々回に作成したプロジェクト display に、patblt と bitblt を合体させます。

グラフィック表示回路 display の Vivado プロジェクトを、デスクトップに用意しておきます。

\Desktop\display : グラフィック表示回路のプロジェクトのフォルダ
\Desktop\COMMON : 回路で使用される HDMI/VGA 出力回路の IP

前回作成した IP のフォルダも、デスクトップに用意しておきます。

\Desktop\patblt_ip : パターン描画回路の IP
\Desktop\bitblt_ip : ビットブロック描画回路の IP

Vitis HLS 2020.1 のバグ対策

Vitis で作成・出力した IP には、Makefile に問題があるとのことですので、その対応を行います。

p.478 の囲み記事「API の Makefile にバグ?」
を参照して、2つの IP のフォルダに含まれている Makefile に、テキストエディタで変更を行います。

それぞれ、
\Desktop???blt_ip\patblt\solution1\impl\ip\drivers???blt_v1_0\src
にある Makefile について、18行目の

OUTS = *.o

を、

OUTS = $(addsuffix .o, $(basename $(wildcard *.c)))

に変更します。

2 つの IP の Makefile を変更したら、次に移ります。

display プロジェクトへの合体

まず、Vivado で display プロジェクトを開きます。

各 IP の IP カタログへの登録

PROJECT MANAGER の下の Settings をクリック。
IP - Repository を開いて、追加の 2 つの IP を登録します。
(bitblt_ip, patblt_ip)

IP が 4 つとも黒字で正しく登録できていれば、OK を押して閉じます。
1.png

流用デザインに IP を追加

Sources ペインの design_1_i をダブルクリックして、Diagram を開きます

Add IP (+ ボタン) から、Bitblt と Patblt を配置します。
2.png
3.png

Run Connection Automation をクリックして、bitblt_0 と patblt_0 にチェックして、OK を押します。
4.png

axi バスが自動接続され、ダイアグラムが完成します。
Regenerate Layout すると、こうなりました。
5.png

Validate Design して、問題なければ完成です。

コンパイルとエクスポート

Generate Bitstream でコンパイルします。

問題なくコンパイルが完了したら、Include bitstream でエクスポートします。
File → Export → Export Hardware → Platform type = Fixed で Next → Include bitstream で Next →
XSA file name: display_pat_bit
Export to: \desktop\display_pat_bit.vitis
で Next → Finish

display.xsa が作成され、エクスポートが完了しました。
この回路のリソース使用率はこのぐらいでした。
6.png

動作確認

Tools - Launch Vitis IDE で、Vitis を起動します。

Create Platform Project で、プラットフォームプロジェクトを作成します。
Project name: display_pat_bit
Location: \Desktop\display_pat_bit.vitis

Create from hardware specification (XSA) で Next したら、display_pat_bit.xsa を指定すると、プロットフォームプロジェクトが作成されます。
作成されたプラットフォームプロジェクトは、例によって Out-of-date ですので、Build Project して解消します。
7.png

次にアプリケーションプロジェクトを作成します。
File - New - Application Project... でウィザードを開いたら、
Applicaion Project name は disp_pat_bit_test とし、Empty Application で作成します。

アプリケーションプロジェクトの src フォルダに、大全のサポートファイルのフォルダ
\Zybo_Z7-10\dai11sho\display_pat_bit\VITIS
から、pat_bit_test.c を登録します。

前々回のグラフィック表示回路、グラフィック表示回路-1.テストプログラムの変更
で説明した通り、フレームバッファのアドレスの変更が必要です。

L24, L25 にアドレス指定がありますので、

#define VRAM 0x10000000 /* page 0 */
#define TEX 0x1012c000 /* page 1 */

を、

#define VRAM 0x08000000 /* page 0 */
#define TEX 0x0812c000 /* page 1 */

に変更しておきます。

プログラムの実行(disp_test.c)

・アプリケーションプロジェクトを Build Project します。
・Debug Configurations を作成して、デバッグを開始します。
・disp_test.c のブレークポイント指定3箇所にブレークポイントを設定してから、Resume ボタンを押していきます。
(disp_test.c の行番号表示の左横の網部分をダブルクリックすると、ブレークポイントが設定できます)

resumuボタンを押してスタートさせたあと、
2番目のブレークポイントでの表示。(パターン描画)
8.jpg

3番目のブレークポイントでの表示。(演算つきビットブロック描画)
9.jpg

無事、動作させることができました。

フェードインアウト&ワイプの実行(fade_wipe.c)

プラットフォームプロジェクトをそのまま使用して、もう一つアプリケーションプロジェクトを作成します。
File - New - Application Project... でウィザードを開いたら、
Applicaion Project name は fade_wipe とし、Empty Application で作成します。

作成したアプリケーションプロジェクトの src フォルダに fade_wipe.c を登録します。
L51 に、フレームバッファのアドレスがあります。

return 0x10000000 + XSIZEYSIZE4*page;

を、

return 0x08000000 + XSIZEYSIZE4*page;

に変更します。

p.434 コラム I の通り、プラットフォームプロジェクトの BSP を変更します。
10.png
11.png

FAT ファイルシステムの設定ができたら、プラットフォームプロジェクトを再ビルドします。

FAT フォーマットした microSD カードに、
\Zybo_Z7-10\dai11sho\display_pat_bit\VITIS
から、2 つの raw ファイルをコピーします。

FPGA_boards.raw
funamori.raw

できた MicroSD カードを、EBAZ4205 のソケットに挿しておきます。

すべての準備ができたら、
Debug Configurations を作成して、デバッグを開始します。
ブレークポイントの設定はありません。

microSD からファイルを読み込んで、フェードイン・アウトと、ワイプが繰り返し動作する映像が HDMI 出力から出てきます。

12.jpg
13.jpg

動作している様子は、下記のようになります。

まとめ

FPGAプログラミング大全Xilinx編(第2版)の課題11-1
「パターン描画回路」
と、課題11-2
「ビットブロック描画回路」
を EBAZ4205 で実習することができました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?