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

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

FPGAの部屋

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

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる4

"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 と入れ替えた。
Vivado_2023_2_95_231107.png

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

CTRL キーを押しながら XGpio_Initialize() 関数の上にマウスカーソルを置くと、定義が表示された。
やはり第 2 引数は、ベース・アドレスになったようだ。
Vivado_2023_2_97_231107.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 は赤ー青ー緑と点灯した。
Vivado_2023_2_98_231107.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 になっている。
Vivado_2023_2_99_231107.png

Vivado_2023_2_100_231107.png
  1. 2023年11月07日 05:11 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる3

"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 をクリックする。
Vivado_2023_2_81_231105.png

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

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

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

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

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

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

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

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

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

ビルドが成功した。
Vivado_2023_2_91_231105.png

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

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

ターミナルに printf() の表示が見えた。
Vivado_2023_2_94_231105.png
  1. 2023年11月06日 04:44 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

"MicroZed Chronicles: Introducing Vitis Unified IDE"をやってみる2

"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 を起動した。
Vivado_2023_2_71_231105.png

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

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

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

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

Summary 画面
Finish ボタンをクリックした。
Vivado_2023_2_77_231105.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 を表示した。
いままでと同様に、ライブラリを選択する画面がある。
Vivado_2023_2_78_231105.png

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

左の VITIS_WORK -> Sources -> hw -> sdt にデバイス・ツリーがあった。
sytem-top.dts を見てみた。
Vivado_2023_2_80_231105.png
  1. 2023年11月05日 04:43 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

"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 を追加した。回路を完成させ、論理合成、インプリメンテーション、ビットストリームの生成を行った。その後、ハードウェアをエクスポートした。

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

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

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

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

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

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

AXI GPIO の設定を示す。
Vivado_2023_2_65_231104.png

Address Editor を示す。
Vivado_2023_2_66_231104.png

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

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

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

zub_rgb_led_wrapper.xsa が出力された。
Vivado_2023_2_70_231104.png
  1. 2023年11月04日 18:03 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

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

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

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

本日はよろしくお願いいたします。
  1. 2023年05月24日 16:33 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

”実践的!FPGA開発セミナー vol.22”で発表します

実践的!FPGA開発セミナー vol.22”で”Vitisのアクセラレーション・アプリケーション開発をエッジで思う存分活用したい。。。2”というタイトルで発表します。

皆さん、よろしくお願いいたします。

なお、午後 5 時ころに今日の発表スライド PDF を公開します。
  1. 2023年05月24日 04:09 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

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

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

今日は時間の関係上、すべてのスライドを説明できないかもしれません?もしくはさらっと流す可能性があります。
スライドには該当するFPGAの部屋のブログ記事へのリンクが張ってあるので、リンクをクリックしてより詳しい説明をご覧ください。

本日はよろしくお願いいたします。
  1. 2022年11月24日 17:00 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0
»