FC2カウンター FPGAの部屋 Vivado HLS でDMA Readしたデータを2乗し、DMA WriteするUltra96ボード用 IP を作成
FC2ブログ

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

FPGAの部屋

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

Vivado HLS でDMA Readしたデータを2乗し、DMA WriteするUltra96ボード用 IP を作成

Ultra96 で ikwzm さんのDebian9 Root File Systemを動かしてみる4”でAXI HPC port を Inner Share として使用するための設定を行った。次には、デバイスツリー・オーバーレイを試すためのPLのハードウェアを作成する。そのために今回は、Vivado HLS 2018.2 を使用して、データをDMA Read で持ってきて、2乗し、そして、DMA Writeで書き込むIP を作成しよう。

ソースコードの DMA_pow2.cpp を示す。

// DMA_pow2.cpp
// 2018/05/08 by marsee
//

int DMA_pow2(volatile int *in, volatile int *out){
#pragma HLS INTERFACE m_axi depth=10 port=out offset=slave
#pragma HLS INTERFACE m_axi depth=10 port=in offset=slave
#pragma HLS INTERFACE s_axilite port=return

    for (int i=0; i<10; i++){
        int temp = in[i];
        out[i] = temp * temp;
    }

    return(0);
}


テストベンチの DMA_pow2_tb.cpp を示す。

// DMA_pow2_tb.cpp
// 2018/05/08 by marsee
//

#include <iostream>

int DMA_pow2(volatile int *in, volatile int *out);

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

    DMA_pow2(data, result);

    for(int i=0; i<10; i++){
        std::cout << "data[" << i << "]= " << data[i] <<
                ", result[" << i << "] = " <<
                result[i] << std::endl;
    }
}


Vivado HLS 2018.2 の DMA_pow2 プロジェクトを示す。
Ultra96_ikwzm_33_181020.png

C シミュレーションを行った。結果を示す。
Ultra96_ikwzm_34_181020.png

2乗されている。

C コードの合成を行った。結果を示す。
Ultra96_ikwzm_35_181020.png

Estimated は 8.75 ns でLatency は 42 クロックだった。
Loop1 のIteration Latency が 3 なので、3 クロックに 1 回出力されることになる。
リソース使用量は、BRAM_18K が 2 個、DSP48E が 3 個、FF が 806 個、LUT が 1001 個、URAM が 0 個使用された。

C シミュレーションを行った。結果を示す。
Ultra96_ikwzm_36_181020.png

ちょうど 100 クロックかかった。

C シミュレーションの波形を示す。
Ultra96_ikwzm_37_181020.png
Ultra96_ikwzm_38_181020.png

Write は 3 クロックに 1 回であることが見て取れる。

最後に Export RTL を行って、IP 化した。結果を示す。
Ultra96_ikwzm_39_181020.png

CP archieved post-implementation は 2.748 ns で十分 10 ns を満足している。

solution1/impl/ip ディレクトリに xilinx_com_hls_DMA_pow2_1_0.zip が生成された。
Ultra96_ikwzm_40_181020.png
  1. 2018年10月20日 05:52 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4333-73096d11
この記事にトラックバックする(FC2ブログユーザー)