FPGAの部屋

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

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

カテゴリ: Vitis

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる3”の続き。

Vitis Unified IDE 2023.2 の HLS Development を試したが、Vitis Unified IDE 2023.2 の通常のアプリケーション・プロジェクトも試してみよう。ちょうどAdam Talyer さんの"MicroZed Chronicles: Introducing Vitis Unified IDE"が公開されたので、これをやってみよう。

前回は、examples の Hello World を利用して、アプリケーション・プロジェクトを作成し、ZUBoard 1CG で実行した。今回は、"MicroZed Chronicles: Introducing Vitis Unified IDE"からソースコードを引用して、ZUBoard 1CG の RGB LED を点灯することができた。

"MicroZed Chronicles: Introducing Vitis Unified IDE"から RGB LED を点灯するソースコードを引用する。

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xgpio.h"

XGpio LEDS;

int main()
{
    init_platform();
    print("Vitis Unified IDE Example\n\r");
    XGpio_Initialize(&LEDS, XPAR_XGPIO_0_BASEADDR);


    XGpio_SetDataDirection(&LEDS, 1, 0x0 );
    XGpio_SetDataDirection(&LEDS, 2, 0x0 );   

    while(1){
        XGpio_DiscreteWrite(&LEDS, 1, 0x01);
        XGpio_DiscreteWrite(&LEDS, 2, 0x04);
        usleep(500000);
        XGpio_DiscreteWrite(&LEDS, 1, 0x02);
        XGpio_DiscreteWrite(&LEDS, 2, 0x01);
        usleep(500000);
        XGpio_DiscreteWrite(&LEDS, 1, 0x04);
        XGpio_DiscreteWrite(&LEDS, 2, 0x02);
        usleep(500000);
    } 



    cleanup_platform();
    return 0;
}


このソースコードを helloworld.c と入れ替えた。
ed06a4e0.png


FLOW -> Build をクリックして、ビルドを行った。
9799a026.png


CTRL キーを押しながら XGpio_Initialize() 関数の上にマウスカーソルを置くと、定義が表示された。
やはり第 2 引数は、ベース・アドレスになったようだ。
17ded0e6.png


xgpio.h の XGpio_Initialize() 関数の定義を引用する。

/*
 * Initialization functions in xgpio_sinit.c
 */
#ifndef SDT
int XGpio_Initialize(XGpio *InstancePtr, u16 DeviceId);
XGpio_Config *XGpio_LookupConfig(u16 DeviceId);
#else
int XGpio_Initialize(XGpio *InstancePtr, UINTPTR BaseAddress);
XGpio_Config *XGpio_LookupConfig(UINTPTR BaseAddress);
#endif


FLOW -> Run をクリックして、ZUBoard 1CG 上でソフトウェアを走らせると、RGB LED 1 は青ー緑ー赤と点灯し、RGB LED2 は赤ー青ー緑と点灯した。
daa7d1f9.png


XGpio_Initialize() 関数の第 2 引数がベース・アドレスになったということで、気になったのが、Vitis Unified IDE 2023.2 の HLS Development の場合だ。
Vitis Unified IDE 2023.2 の HLS Development を試す6”で IP を生成したので、そのドライバのうちの HSVConverter/HSVConverter/hls/impl/ip/drivers/HSVConverter_v1_0/src/xhsvconverter_sinit.c を見ると、SDT が定義されている場合は、XHsvconverter_Initialize() の第 2 引数はベース・アドレスで、定義されていない場合の第 2 引数はデバイス ID になっている。
fd2d23ae.png


ee82704c.png

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる2”の続き。

Vitis Unified IDE 2023.2 の HLS Development を試したが、Vitis Unified IDE 2023.2 の通常のアプリケーション・プロジェクトも試してみよう。ちょうどAdam Talyer さんの"MicroZed Chronicles: Introducing Vitis Unified IDE"が公開されたので、これをやってみよう。

前回は、Vitis Unified IDE 2023.2 を起動して、zub_rgb_led_pf プラットフォームを作成した。今回は、examples の Hello World を利用して、アプリケーション・プロジェクトを作成し、ZUBoard 1CG で実行した。

Welcome ウインドウをクリックした。
Examples をクリックする。
26a1d4b7.png


EXAMPLES ウインドウが左に開いた。その、Embedded Software Examples を開いて、Hello World をクリックする。
右画面に Hello World が表示された。
Create Application Component Template ボタンをクリックした。
dd7fa86f.png


Create Application Component - Hello World ダイアログが表示された。
Name and Location 画面
デフォルトのままにした。
85d9e640.png


Select Platform 画面
作成しておいた zub_rgb_led_pf を選択した。
04383611.png


Select Domain 画面
standaloen_psu_cortexa53_0 (デフォルト)を選択した。
aa4838af.png


Summary 画面
Finish ボタンをクリックした。
8f7acf68.png


VITIS_WORK に hello_world アプリケーション・プロジェクトが生成された。
96ba3f44.png


VITIS_WORK -> hello_world -> Settings -> launch.json をクリックして、表示した。
launch.json は Vitis Unified Software Platform Documentation: Application Acceleration Development (UG1393) によると、プロジェクトを実行またはデバッグするための環境セットアップが保存されているそうだ。
8f8b281b.png


VITIS_WORK -> hello_world -> Settings -> UserConfig.cmake をクリックして、表示した。
b23c6712.png


helloworld.c をクリックして表示した。
FLOW ウインドウの Build をクリックして、ビルドを行った。
Platform Build ダイアログが表示された。OK ボタンをクリックした。
5ce5fa9f.png


ビルドが成功した。
6d5585a6.png


ZUBoard 1CG ボードの SW2 をすべて ON して JTAG モードにして、電源を ON した。
FLOW ウインドウの Debug をクリックして、デバッグ・モードを表示した。
b9a2f54f.png


printf() まで Step Over で実行した。
1ccdced7.png


ターミナルに printf() の表示が見えた。
7c130eb6.png

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる1”の続き。

Vitis Unified IDE 2023.2 の HLS Development を試したが、Vitis Unified IDE 2023.2 の通常のアプリケーション・プロジェクトも試してみよう。ちょうどAdam Talyer さんの"MicroZed Chronicles: Introducing Vitis Unified IDE"が公開されたので、これをやってみよう。

前回は、Vivado 2023.2 で zuboard_rgb_led プロジェクトを作成した。zub_rgb_led ブロック・デザインを作成し、2 つの RGB LED を制御する AXI GPIO を追加した。回路を完成させ、論理合成、インプリメンテーション、ビットストリームの生成を行った。その後、ハードウェアをエクスポートした。今回は、Vitis Unified IDE 2023.2 を起動して、zub_rgb_led_pf プラットフォームを作成した。

Vivado 2023.2 で Tools メニューから Launch Vitis IDE を選択して、Vitis Unified IDE 2023.2 を起動した。
d3b5f176.png


左のウインドウから Open Workspace を起動した。
Open Folder ダイアログが開いた。
zuboard_rgb_led プロジェクトのディレクトリの下に vitis_work ディレクトリを作成し、ワークスペースに指定した。
d32db055.png


左のウインドウから Create Platform Component をクリックし、プラットフォームを作成する。(残念ながらキャプチャした画面を消してしまったようだ)
Create Platform Component ダイアログが開いた。
Name and Location 画面
Component name に zub_rgb_led_pf と入力した。
Component location はデフォルトのままで、Next ボタンをクリックした。
de2f228d.png


Select Platform Creation Flow 画面
デフォルトで Hardware Desgin が選択されていた。
Hardware Desgin (XSA) に Viavdo で生成された XSA ファイルを指定した。
0e84bcf8.png


Select Operating System and Processor 画面
デフォルトのままとした。
0da9cc96.png


Summary 画面
Finish ボタンをクリックした。
da6a8867.png


vitis_work に zub_rgb_led_pf プラットフォームが生成された。
左のVITIS_WORK -> zub_rgb_led_pf -> vitis-comp.json をクリックした。
その脇の zub_rgb_led_pf -> standalone_psu_cortexa53_0 -> Board Support Package を表示した。
いままでと同様に、ライブラリを選択する画面がある。
b7f6c5c8.png


左の VITIS_WORK -> Sources -> psu_cortexa53_0 -> standalone_pse_cortexa53_0 -> bsp -> include -> xparameter.h を見た。
"MicroZed Chronicles: Introducing Vitis Unified IDE"によるとデバイス ID が無くなって、ベース・アドレスを使うことになったそうだ。
6eab1bda.png


左の VITIS_WORK -> Sources -> hw -> sdt にデバイス・ツリーがあった。
sytem-top.dts を見てみた。
3a524267.png

Vitis Unified IDE 2023.2 の HLS Development を試したが、Vitis Unified IDE 2023.2 の通常のアプリケーション・プロジェクトも試してみよう。ちょうどAdam Talyer さんの"MicroZed Chronicles: Introducing Vitis Unified IDE"が公開されたので、これをやってみよう。

今回は、Vivado 2023.2 で zuboard_rgb_led プロジェクトを作成した。zub_rgb_led ブロック・デザインを作成し、2 つの RGB LED を制御する AXI GPIO を追加した。回路を完成させ、論理合成、インプリメンテーション、ビットストリームの生成を行った。その後、ハードウェアをエクスポートした。

Vivado 2023.2 で ZUBoard 1CG 用の zuboard_rgb_led プロジェクトを作成した。

zub_rgb_led ブロック・デザインを作成した。
Zynq UltraScale + MPSoC と AXI GPIO を Add IP して、Run Connection Automation で必要な IP が自動的に追加されて配線が行われた。
386249a9.png


上のブロック・デザインでは、Zynq UltraScale + MPSoC をダブル・クリックして設定を行った。
PS-PL Configuration の PS-PL Interface -> AXI HPM1 FPD のチェックを外した。
ab628864.png


Run Connection Automation で GPIO を接続する。
GPIO に rgb1_led_3bits を割り当てた。
b6aabf68.png


GPIO2 に rgb2_led_3bits を割り当てた。
edc3201b.png


ブロック・デザインが完成した。
f9229c41.png


AXI GPIO の設定を示す。
3a9e7585.png


Address Editor を示す。
7213479c.png


Vivado 2023.2 の Sources ウインドウで右クリックし、右クリックメニューから Create HDL Wrapper... を選択し、 zub_rgb_led_rapper.v を作成した。
8b67d4fb.png


論理合成、インプリメンテーション、ビットストリームの生成を行った。
Project Summary を示す。
db3b2f21.png


File メニューから Export -> Export Hardware... を選択して、zub_rgb_led_wrapper.xsa を出力した。
その際に、Output 画面で Include bitstream のラジオ・ボタンにチェックを入れた。
cfe7dea8.png


zub_rgb_led_wrapper.xsa が出力された。
c2000090.png

”実践的!FPGA開発セミナー vol.22”のスライドを公開します。

スライドには該当するFPGAの部屋のブログ記事へのリンクが張ってあるので、リンクをクリックしてより詳しい説明をご覧ください。

本日はよろしくお願いいたします。

↑このページのトップヘ