FC2カウンター FPGAの部屋 FPGA+SoC+Linux実践勉強会での課題をやってみた1(Vivado HLS編)
FC2ブログ

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

FPGAの部屋

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

FPGA+SoC+Linux実践勉強会での課題をやってみた1(Vivado HLS編)

FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。

まずは、Vivado HLS 2017.3 でDMA_pow プロジェクトを作成した。
FPGA-SoC-Linux4ZYBO_Z7_16_171206.png

DMA_pow.c を貼っておく。in を2乗して out に出力するコードだ。

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
    int i;

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

    return(0);
}


これで、AXI4 Master のDMA IP を生成できる。

テストベンチのDMA_pow_tb.c を貼っておく。

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

int main(){
    int data[10] = {0123456789};
    int result[10];
    int i;

    DMA_pow2(data, result);

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


最初にC シミュレーションを行った。結果を示す。
FPGA-SoC-Linux4ZYBO_Z7_17_171206.png

次にC コードの合成を行った。結果を示す。
FPGA-SoC-Linux4ZYBO_Z7_18_171206.png

レイテンシは 126 クロックだった。BRAMは 2 個、DSP は 3 個使用している。

C/RTL コシミュレーションを行った。結果を示す。
FPGA-SoC-Linux4ZYBO_Z7_19_171206.png

C/RTL コシミュレーションでのレイテンシは 235 クロックだった。

C/RTL コシミュレーションの波形を示す。
FPGA-SoC-Linux4ZYBO_Z7_20_171206.png
FPGA-SoC-Linux4ZYBO_Z7_21_171206.png

m_axi_gmem_RDATA[31:0] が入力データなので、これを 2 乗したデータが m_axi_gmem_WDATA[31:0] に出力されているのが分かる。
m_axi_gmem_RVALID を見ると 2 つ並んで 1 になっているのが分かると思う。これは、

out[i] =in[i] * in[i];

で in[i] が 2 回 Read されているが、それがそのまま実装されているのだ。

Export RTL を行った。Vivado synthesis, place and route にチェックを入れた。
結果を示す。
FPGA-SoC-Linux4ZYBO_Z7_22_171206.png

AXI4 Master とAXI4 Lite Slave インターフェースが実装されているので、結構リソースは消費している。
C:\Users\masaaki\Documents\Vivado_HLS\test\DMA_pow\solution1\impl\ip の内容を示す。
FPGA-SoC-Linux4ZYBO_Z7_27_171206.png

xilinx_com_hls_DMA_pow2_1_0.zip にIP が圧縮されている。
  1. 2017年12月06日 04:42 |
  2. ZYBO Z7
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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