FC2カウンター FPGAの部屋 DFX をやってみよう3(DMA_square_root8 IP の作成1)
fc2ブログ

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

FPGAの部屋

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

DFX をやってみよう3(DMA_square_root8 IP の作成1)

DFX をやってみよう2(DMA_pow2 IP の作成)”の続き。

前回は、DMA_pow2 IP を Vitis HLS 2021.1 で作成した。今回は、8 ビットの整数の平方根を計算する DMA_square_root8 を作成してみよう。
元ネタは、”square root を Vivado HLS で実装する3”だ。

まずは、ソースコードを貼っておく。

// DMA_square_root8.cpp
// 2021/07/01 by marsee
//

#include <stdint.h>

int DMA_square_root8(volatile int32_t *data, volatile int32_t *result){
#pragma HLS INTERFACE mode=s_axilite port=return
#pragma HLS INTERFACE mode=m_axi depth=10 port=result offset=slave
#pragma HLS INTERFACE mode=m_axi depth=10 port=data offset=slave
    int32_t temp, data_temp;
    int32_t square;

    for(int j=0; j<10; j++){
#pragma HLS PIPELINE II=1
        temp = 0;
        data_temp = data[j];
        for(int i=7; i>=0; --i){
            temp += (1 << i);
            square = temp * temp;

            if(square > data_temp){
                temp -= (1 << i);
            }
        }
        result[j] = temp;
    }

    return(0);
}


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

// DMA_square_root8_tb.cpp
// 2021/07/01 by marsee

#include <stdio.h>
#include <stdint.h>

int DMA_square_root8(volatile int32_t *data, volatile int32_t *result);

int main(){
    int data[10] = {8, 10, 12, 14, 16, 18, 20, 22, 24, 26};
    int result[10];

    DMA_square_root8(data, result);

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


Vitis HLS 2021.1 で作成した DMA_square_root8 プロジェクトを作成した。
DMA_square_root8_211_1_210719.png
  1. 2021年07月19日 20:54 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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