HLSのチュートリアル

AXI4 Lite Slave

#include <stdio.h>
#include <string.h>
#include <ap_int.h>

void multi_apuint(ap_uint<8> in0, ap_uint<8> in1,
		ap_uint<16> *out){
#pragma HLS INTERFACE s_axilite port=out bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=in1 bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=in0 bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=return bundle=AXI4LS
#pragma HLS PIPELINE

	*out = in0*in1;
}
#include <stdio.h>
#include "xil_printf.h"
#include "xmulti_apuint.h"
#include "xparameters.h"

int main()
{
	XMulti_apuint XMulti_ap;
	XMulti_apuint_Config *XMulti_apPtr;
	int val;

	XMulti_apPtr = XMulti_apuint_LookupConfig(0);
	if(!XMulti_apPtr){
		fprintf(stderr, "XMulti config failed.\r\n");
		return XST_FAILURE;
	}

	int Xlap_status = XMulti_apuint_CfgInitialize(&XMulti_ap, XMulti_apPtr);
	if(Xlap_status!=XST_SUCCESS){
		fprintf(stderr, "XMulti config failed.\r\n");
		return XST_FAILURE;
	}

	printf("\r\start\r\n",&val);

	while(1){
		printf("\r\nin0=");
		scanf("%d",&val);
		printf("%d",val);
		if(val==999){
			break;
		}
		XMulti_apuint_Set_in0_V(&XMulti_ap,val);
		printf("\r\nin1=");
		scanf("%d",&val);
		printf("%d",val);
		XMulti_apuint_Set_in1_V(&XMulti_ap,val);

		while(!XMulti_apuint_IsIdle(&XMulti_ap));

		XMulti_apuint_Start(&XMulti_ap);

		while(!XMulti_apuint_IsDone(&XMulti_ap));

		printf("\r\nout=%d\r\n",(int)XMulti_apuint_Get_out_V(&XMulti_ap));
	}

    return 0;
}