2016-10-28 2 views
2

호스트 메모리에서 내용을 읽고 호스트의 다른 위치에 다시 쓰는 FPGA 용 C++에서 일반적인 대역폭 커널을 작성하고 있습니다. 구조체를 사용하고 있는데 그 중 하나의 요소는 입력 및 출력 버퍼의 주소입니다. 상위 수준 합성 도구는 다음 코드에서 마지막 줄에 오류를 제공합니다.오류 : 표현식을 할당 할 수 없습니다. C++ struct

struct addr_struct { 
       ap_uint<64> address; 
       ap_uint<32> size; 
       ap_uint<16> type; 
       ap_uint<16> flags; 
     }; 
    struct addr_struct CA_INPUT; 
    struct addr_struct CA_OUTPUT; 
    din_mem = 0x00; 
    dout_mem = 0x00; 
    ap_uint<32> i; 
    ap_uint<512> temp; 
    ap_uint<512> *din_mem; 
    ap_uint<512> *dout_mem; 
    for(i=0; i<2048; i++){ 
    temp= (ap_uint<512> *)(din_mem + CA_INPUT.address + i*64); 
    (ap_uint<512> *)(dout_mem + CA_OUTPUT.address + i*64) = temp;} 

답변

3

내가 때문에 (ap_uint<512> *) 전에없는 역 참조 (처음에 별주의)이, 당신이 dout_mem에서 포인터에 할당 할 가정

*(ap_uint<512> *)(dout_mem + CA_OUTPUT.address + i*64) = temp; 
+0

노트이 엄격한 앨리어싱 위반이다 –

관련 문제