2016-11-02 8 views
0

Zyboボードの組み込みLinuxで動作する画像/ビデオ処理システムで動作するように、Vivado HLSにカスタムIPコアを構築しています。コアはvia/AXIストリームで画像/ビデオデータを取り込み、処理タスク(Sobelなど)を実行してから、別のAXIストリームに出力します。しかし、私はZyboのオンボードスイッチを使ってどの処理タスクを実行するかを決定したい(デフォルトはパススルー)。ZyboボードのVivado HLS GPIOスイッチデータ

GPIOスイッチからデータを読み込むためのHLSリソース/インターフェイスを作成する方法(HLSでは、IP IntegratorまたはVivado SDKではありません)を示す簡単な例が見つかりません。

#include <hls_video.h> 
    #include "ip_types.h" 

    void MultiImaging(AXI_STREAM& inputStream, AXI_STREAM& outputStream, int rows, int cols, bool sw0, bool sw1) 
    { 
    #pragma HLS INTERFACE axis port=inputStream 
    #pragma HLS INTERFACE axis port=outputStream 

    #pragma HLS RESOURCE variable=rows core=AXI_SLAVE metadata="-bus_bundle CONTROL_BUS" 
    #pragma HLS RESOURCE variable=cols core=AXI_SLAVE metadata="-bus_bundle CONTROL_BUS" 

    #pragma HLS INTERFACE ap_stable port=rows 
    #pragma HLS INTERFACE ap_stable port=cols 

    //are these two correct for the switches? 
    #pragma HLS INTERFACE axis port=sw0 
    #pragma HLS INTERFACE axis port=sw1 

    //are these two correct for the switches? 
    #pragma HLS RESOURCE variable=sw0 core=AXI_SLAVE //GPIO? 
    #pragma HLS RESOURCE variable=sw1 core=AXI_SLAVE //GPIO? 

    RGB_IMAGE img(rows, cols); 
    RGB_IMAGE oimg(rows, cols); 
    RGB_IMAGE sobel_output(rows,cols); 

    RGB_IMAGE imgh(rows, cols); 
    RGB_IMAGE imgv(rows, cols); 

    RGB_IMAGE hsobel(rows, cols); 
    RGB_IMAGE vsobel(rows, cols); 

    GRAY_IMAGE imgGray(rows, cols); 
    GRAY_IMAGE oimgGray(rows, cols); 

    #pragma HLS dataflow 
    hls::AXIvideo2Mat(inputStream, img); 


    //Passthrough 
    if(sw1 == 0 && sw0 == 0){ 
     //..code here 
    } 
    //Sobel 
    else if(sw1 == 0 && sw0 == 1){  
    //..code here 
    } 
    //Threshold 
    else if(sw1 == 1 && sw0 == 0){ 
    //..code here 
    } 
    //..etc    
} 

上記の作品と「Cシミュレーション」とのための適切な出力できます:私は何を持っていることは、私の一番上のモジュールでは以下のコードである「C合成を」。 「RTL/C Cosimulation」で「OpenCV Error:入力引数のサイズが一致しません」というエラーが表示されます。すべてのRGB_IMAGESは、最初は同じrows/colsで設定されているので、これは意味をなさない。

答えて

0

データのサイズは、この特定の場合、行とCOLによってのみ行われます。あなたがAXI_STREAMを使用しているため

// typedef video library core structures 
typedef hls::stream<ap_axiu<24,1,1,1> >    AXI_STREAM; 
typedef hls::Scalar<3, unsigned char>     RGB_PIXEL; 
typedef hls::Mat<MAX_HEIGHT, MAX_WIDTH, HLS_8UC3>  RGB_IMAGE; 

これは明確である: のようなものがあるはず、あなたのヘッダファイルで見ているようにしてください。ここでは、ピクセル内のビット数、ピクセル内のチャネル色数などを定義します。イメージのサイズが同じ場合、「入力引数のサイズが一致しません」という文は、メインのメイン関数とのこの不一致の問題を示します。

関連する問題