FC2カウンター FPGAの部屋 2021年07月26日
fc2ブログ

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

FPGAの部屋

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

DFX をやってみよう11(ハードウェアのエクスポートとフル・ビット・ファイルの動作確認)

DFX をやってみよう10(インプリメンテーションとビット・ファイル、パーシャル・ビット・ファイルの生成)”の続き。

前回は、インプリメンテーションを行って、ビット・ファイルとパーシャル・ビット・ファイルを生成することができた。今回は、ハードウェアをエクスポートして、Vitis 2021.1 を立ち上げて、フル・ビット・ファイルを ZYBO Z7-20 にコンフィギュレーションし、実機動作を確認する。

ハードウェアをエクスポートする。
File メニューから Export -> Export Hardware... を選択する。
DFX_82_210725.png

Export Hardware Platform ダイアログが表示された。
DFX_83_210725.png

Output 画面で Include bitstream ラジオボタンをチェックして、Next > ボタンをクリックする。
DFX_84_210725.png

Files 画面はデフォルトのまま、Next > ボタンをクリックする。
DFX_85_210725.png

Exporting Hardware Platform 画面では、 Finish ボタンをクリックする。
DFX_86_210725.png

DFX_test_211 ディレクトリに DFX_test_wrapper.xsa ファイルが生成された。
DFX_87_210725.png

DFX_test_wrapper.xsa ファイルをダブルクリックして開いた。
フル・ビット・ファイルのみで、パーシャル・ビット・ファイルが無い。
DFX_88_210725.png

drivers ディレクトリの中も DMA_pow2_v1_0 しか無いのか?
DMA_square_root8 は無かった。
DFX_89_210725.png

Vitis 2021.1 で DFX のコンフィギュレーションを行うのは無理なのだろうか?
とりあえず、フル・ビット・ファイルが動作するか?を確かめてみよう。

Vivado 2021.1 の Tools メニューから Launch Vitis IDE を選択する。
DFX_90_210725.png

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

Select Workspace Directory ダイアログが表示された。
新規ディレクトリ作成ボタンをクリックして、新規ディレクトリを作成する。
DFX_92_210725.png

DFX_test_211 ディレクトリの下に、 vitis_work ディレクトリを作成した。
Open ボタンをクリックする。
DFX_93_210725.png

Vitis IDE Launcher ダイアログに戻るので、 Launch ボタンをクリックする。
DFX_94_210725.png

Vitis 2021.1 が立ち上がった。
Create Application Project をクリックする。
DFX_95_210725.png

New Application Project ダイアログが表示された。
Create a new platform form hardware (XSA) タブをクリックする。
Hardware Specification の Browse... ボタンをクリックする。
DFX_96_210725.png

出てきたダイアログで DFX_test_wrapper.xsa を指定した。
New Application Project ダイアログに戻って、 DFX_test_wrapper.xsa が指定されている。
Next > ボタンをクリックする。
DFX_97_210725.png

Application Project Details 画面で、 Application project name に DMA_pow2_test を指定した。
Next > ボタンをクリックする。
DFX_98_210725.png

Domain 画面では、デフォルトのまま Next > ボタンをクリックする。
DFX_99_210725.png

Templates 画面では、 Empty Application (C) を選択する。
Next > ボタンをクリックする。
DFX_100_210725.png

DFX_test_wrapper プラットフォームと DMA_pow2_test プロジェクトが生成された。
DFX_101_210725.png

DMA_pow2_test_system -> DMA_pow2_test -> src を右クリックし右クリックメニューから New -> File を選択する。
DFX_102_210725.png

Create New File ダイアログが表示された。
File name に DMA_pow2_test.c と入力する。
Finish ボタンをクリックする。
DFX_103_210725.png

DMA_pow2_test.c を入力し、セーブして、トンカチボタンをクリックしてビルドしたら、成功した。
DFX_104_210725.png

DMA_pow2_test.c を示す。

// DMA_pow2_test.c
// 2021/07/25 by marsee
//

#include <stdio.h>
#include "xdma_pow2.h"
#include "xparameters.h"

volatile int data[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
volatile int result[10];

void Xil_DCacheFlush(void);
void Xil_DCacheInvalidate(void);

int main(){
    XDma_pow2 XDMA_pow2_ap;
    XDma_pow2_Config *XDMA_pow2_apPtr;
    int i;

    // Look Up the device configuration
    XDMA_pow2_apPtr = XDma_pow2_LookupConfig(0);
    if (!XDMA_pow2_apPtr){
        fprintf(stderr, "XDma_pow2 configuration failed.\n");
        return(-1);
    }

    // Initialize the Device
    int Xlap_status = XDma_pow2_CfgInitialize(&XDMA_pow2_ap, XDMA_pow2_apPtr);
    if (Xlap_status != XST_SUCCESS){
        fprintf(stderr, "Could not Initialize XDma_pow2\n");
        return(-1);
    }

    XDma_pow2_Set_data(&XDMA_pow2_ap, (u32)&data[0]);
    XDma_pow2_Set_result(&XDMA_pow2_ap, (u32)&result[0]);

    Xil_DCacheFlush(); // Flush data[10] cache to memory

    XDma_pow2_Start(&XDMA_pow2_ap);

    while(!XDma_pow2_IsDone(&XDMA_pow2_ap)) ;

    Xil_DCacheInvalidate(); // Invalidate result[10]
    for(i=0; i<10; i++){
        printf("data[%d] = %d, result[%d] = %d\n", i, data[i], i, result[i]);
    }

    return 0;

}


ZYBO Z7-20 を用意して、USB ケーブルを接続し、電源を ON する。
gtk_term を立ち上げて Port に ttyUSB1 を指定し、ビットレートを 115200 bit/sec に指定する。
Vitis の Explorer で DMA_pow2_test_system を選択し、 Run ボタンをクリックする。
DFX_105_210725.png

ZYBO Z7-20 がコンフィギュレーションされて、 DMA_pow2_test.elf が実行された。
gtk_term の結果を示す。
DFX_106_210725.png

フル・ビット・ファイルは問題なくコンフィギュレーションされている。
  1. 2021年07月26日 04:25 |
  2. Dynamic Function eXchange
  3. | トラックバック:0
  4. | コメント:0