FC2カウンター FPGAの部屋 Vitis HLS 2021.2 で KV260 用の DMA_pow2_axis IP を作成する
fc2ブログ

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

FPGAの部屋

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

Vitis HLS 2021.2 で KV260 用の DMA_pow2_axis IP を作成する

PYNQ を使って Python で手軽に FPGA を活用 (5)”をやってみるために、AXI4-Stream インターフェースの 2 乗する IP 、DMA_pow2_axis を作成しよう。

注意: この記事の IP を PYNQ で使用すると終了しません。修正した記事は”Vitis HLS 2021.2 で KV260 用の DMA_pow2_axis IP を作成する2”にあります。

最初にソースコードの DMA_pow2_axis.cpp を貼っておく。

// DMA_pow2_axis.cpp
// 2022/02/22 by marsee
//

#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

int DMA_pow2_axis(hls::stream<ap_axis<32,1,1,1> >& data,
        hls::stream<ap_axis<32,1,1,1> >& result){
#pragma HLS INTERFACE mode=s_axilite port=return
#pragma HLS INTERFACE mode=axis register_mode=both port=result register
#pragma HLS INTERFACE mode=axis register_mode=both port=data register
    ap_axis<32,1,1,1> dt, rlt;

    for(int i=0; i<10; i++){
        data >> dt;
        rlt.data = dt.data * dt.data;
        result << rlt;
    }
    return(0);
}


テストベンチの DMA_pow2_axis_tb.cpp を貼っておく。

// DMA_pow2_axis_tb.cpp
// 2022/02/22 by marsee
//

#include <ap_int.h>
#include <hls_stream.h>
#include <ap_axi_sdata.h>

int DMA_pow2_axis(hls::stream<ap_axis<32,1,1,1> >& data,
        hls::stream<ap_axis<32,1,1,1> >& result);

int main(){
    using namespace std;
    hls::stream<ap_axis<32,1,1,1> > data;
    hls::stream<ap_axis<32,1,1,1> > result;
    ap_axis<32,1,1,1> dt;
    ap_axis<32,1,1,1> rlt;

    for(int i=0; i<10; i++){
        dt.data = i;
        data << dt;
    }

    DMA_pow2_axis(data, result);

    cout << endl;
    for(int i=0; i<10; i++){
        result >> rlt;
        cout << "data = " << i << " result = " << rlt.data << endl;
    }
    cout << endl;
    return(0);
}


Vitis_HLS 2021.2 で DMA_pow2_axis プロジェクトを作成した。
Kria-PYNQ_57_220222.png

Part には、 xck26-sfvc784-2LV-c を指定した。
Kria-PYNQ_58_220222.png

DMP_pow2_axis プロジェクトを示す。
Kria-PYNQ_59_220222.png

C シミュレーションを行った。
Kria-PYNQ_60_220222.png

C コードの合成を行った。問題無さそうだ。
Kria-PYNQ_61_220222.png

C/RTL 協調シミュレーションを行った。
Kria-PYNQ_62_220222.png

C/RTL 協調シミュレーションの波形を示す。間が空いている部分がある。
Kria-PYNQ_63_220222.png

Export RTL を行った。
solution1/impl ディレクトリに export.zip が生成された。
Kria-PYNQ_64_220222.png

Implementation を行った。結果を示す。
Kria-PYNQ_65_220222.png

問題無さそうだ。
  1. 2022年02月22日 04:54 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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