2016-07-08 7 views
2

결국 Vivado Design Suite의 단 정밀도 부동 소수점 배열로 스트리밍 인터페이스를 사용하여 하드웨어 가속기를 구축하고 싶습니다. HLS 사용 설명서 UG902에서는 다른 인터페이스를 사용하여 HW 가속기 (C, C++, SystemC, OpenCL 코드에서 시작)를 생성 할 수 있음을 보여줍니다.AXI4 스트리밍 인터페이스 : HW 가속기를 생성하고이를 안전하게 RTL 프로젝트에 연결하기 위해 HLS에서 부동 소수점 배열을 관리하는 방법은 무엇입니까?

AXI4 스트리밍 인터페이스를 사용하려면 HLS가 TREADY 및 TVALID 신호를 합성하지만 생성 된 RTL 인터페이스를 Zynq Processing System (제 경우에는 ARM9 코어)에 연결하는 데 필요한 신호 TLAST를 합성하지 않습니다. 이 문제를 해결하기 위해 자일링스는이 라이브러리를 사용할 수있는 가능성을 제공

#include "ap_axi_sdata.h" 

내부 구조체가 - 템플릿 :

  • :

    #include "ap_int.h" 
    template<int D,int U,int TI,int TD> 
    struct ap_axis{ 
    ap_int<D> data; 
    ap_uint<D/8> keep; 
    ap_uint<D/8> strb; 
    ap_uint<U> user; 
    ap_uint<1> last; 
    ap_uint<TI> id; 
    ap_uint<TD> dest; 
    }; 
    

    나는 두 가지 문제를 가지고는 TLAST 만 사용하고 나머지는 사용하지 않으려 고하면 U, TI 및 TD를 0으로 설정하려고 시도하지만 오류가 발생합니다.

  • 'float'을 사용하고 'ap_int'를 사용하지 않고 템플릿 내부에서 변경하려고하면 다른 오류가 발생합니다.

질문 :

처리 및 부동 소수점 데이터와 HLS에 인터페이스를 스트리밍으로 관리 할 수있는 간단한 방법이 있을까요?

+1

C와는 거리가 멀다. C는 C++가 아닙니다. – Olaf

+0

친애하는 친구, [여기] (http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_1/ug902-vivado-high-level-synthesis.pdf) pag 313, 중요 :이 안내서에서 사용 된 "C 코드"라는 용어는 달리 명시되지 않는 한 C, C++, SystemC 및 OpenCL API C로 작성된 코드를 나타냅니다. ' – Leos313

답변

3

나를 해결하는 가장 간단한 방법은 위에 언급 한 라이브러리를 사용하지 않고 자신의 struct 데이터 형식을 선언하는 것입니다. 기본적으로 VivadoHLS는 TDATA, TVALID 및 TREADY 신호로 AXIS 인터페이스를 구현합니다.

void my_function(my_data input[25], my_data output[25]) 
{ 
#pragma HLS INTERFACE axis port=output 
#pragma HLS INTERFACE axis port=input 
#pragma HLS INTERFACE s_axilite port=return 


    float tmp_data; 
    float tmp_last; 

    int k=0; 

    for(k=0;k<25;k++) 
     { 
      tmp_data[k] = input[k].data; 
      tmp_last[k] = input[k].last; 
     } 


     for(k=0;k<25;k++) 
     { 
      output[k].data = tmp_data[k]; 
      output[k].last = tmp_last[k]; 
     } 
    } 
:

struct my_data{ 
    float data; 
    bool last; 
}; 

내가 당신에게 당신이 그것을 사용하는 방법에 대한 예를 제공 할 수 있습니다 : 당신은 또한 Tlast를 단일 정밀도 단일 지점의 데이터가 필요한 경우는 다음과 같이해야하는 자신의 데이터 형식을 선언해야

이렇게하면 합성 한 후이 결과를 얻을 것이다 : enter image description here

당신이주의를 지불해야합니다 오류를 방지하기 위해 : 당신이 데이터 O를 사용할 때마다 스트리밍 인터페이스의 나머지 신호를 조심스럽게 관리해야합니다.

+1

방금 ​​시도했지만 완벽하게 작동하는 것 같습니다. HLS의 합성 후 생성 된 RTL ip는 오류없이 시스템에 연결되었습니다. 유효성 검사 설계에서 오류가 발생하지 않습니다. 정말 고맙습니다 – Leos313