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

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

FPGAの部屋

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

DFX をやってみよう13(Blink1 と Blink05)

DFX をやってみよう12(DMA_square_root8 の実行)”の続き。

前回は、DMA_pow2 IP の代わりに DMA_square_root8 IP のフル・ビット・ファイルの動作を確認してから、パーシャル・ビット・ファイルをコンフィグレーションして動作を確認したが、パーシャル・ビット・ファイルをコンフィグレーションをしても動作しなかった。今回は、気を取り直して、ソフトウェアを使用しないハードウェアだけをDFX するために Blink1 と Blink05 を作成する。

Blink1 は 1 秒間隔の点滅を 100 回繰り返す回路で、 Blink05 は 0.5 秒間隔の点滅を 200 回繰り返す回路にする。どちらも Vitis HLS 2021.1 で作成する。どちらも動作周波数は ZYBO Z7-20 のクロックの CLK125 を使用するため 125 MHz とした。

Blink1 からソースコードを示す。

// Blink1.cpp
// 2021/07/28 by marsee
//

#include <ap_int.h>

#define PS_CLK_FREQ 125000000 // Hz
#define HALF_PS_CLK_FREQ (PS_CLK_FREQ/2) // Hz

int Blink1(volatile ap_uint<1> &out){
#pragma HLS INTERFACE mode=ap_ctrl_none port=return
#pragma HLS INTERFACE mode=ap_none port=out register
    for(int i=0; i<100; i++){
        for(int j=0; j<HALF_PS_CLK_FREQ; j++){
#pragma HLS PIPELINE II=1 rewind
            out = 1;
            ap_wait();
        }
        for(int j=0; j<HALF_PS_CLK_FREQ; j++){
#pragma HLS PIPELINE II=1 rewind
            out = 0;
            ap_wait();
        }
    }
    return(0);
}


Blink05 のソースコードを示す。

// Blink05.cpp
// 2021/07/28 by marsee
//

#include <ap_int.h>

#define PS_CLK_FREQ 125000000 // Hz
#define HALF_PS_CLK_FREQ (PS_CLK_FREQ/2) // Hz
#define QUARTER_PS_CLK_FREQ (PS_CLK_FREQ/4) // Hz

int Blink05(volatile ap_uint<1> &out){
#pragma HLS INTERFACE mode=ap_ctrl_none port=return
#pragma HLS INTERFACE mode=ap_none port=out register
    for(int i=0; i<200; i++){
        for(int j=0; j<QUARTER_PS_CLK_FREQ; j++){
#pragma HLS PIPELINE II=1 rewind
            out = 1;
            ap_wait();
        }
        for(int j=0; j<QUARTER_PS_CLK_FREQ; j++){
#pragma HLS PIPELINE II=1 rewind
            out = 0;
            ap_wait();
        }
    }
    return(0);
}


Blink1_211 プロジェクトを示す。
DFX_116_210729.png

Blink05_211 プロジェクトを示す。
DFX_118_210729.png

Blink1 の C コードの合成結果を示す。
1 秒ごとに点滅するはずだ。
DFX_117_210729.png

Blink05 の C コードの合成結果を示す。
0.5 秒ごとに点滅するはずだ。
DFX_119_210729.png

Blink1 と Blink05 両方共 Export RTL を行った。

Blink1 と Blink05 両方共インプリメンテーションを行った。結果を示す。
Blink1
DFX_120_210729.png

Blink05
DFX_121_210729.png
  1. 2021年07月29日 04:58 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0