Esempio n. 1
0
int main(int argc, char *argv[]) {

    FILE *in_file;
    FILE *out_file;
    char *file_header;
    char *file_data;
    int rtn;
    int sent = 0;
    int recv = 0;
    int len = 512*512;
    FILE *file;
    char *buffer;
    unsigned long fileLen;
    if(argc != 3) {
        printf("Wrong number of arguments\n");
        return -1;
    }
    in_file = fopen(argv[1],"rb");
    if (!in_file)
    {
	fprintf(stderr, "Unable to open image file\n");
	return;
    }
    file_header=(char *)malloc(header_size);
    fread(file_header, 1, header_size, in_file);
    //Save file data
    file_data=(char *)malloc(image_size);
    fread(file_data, 4, image_size, in_file);
    //Close the image file
    fclose(in_file);
    //Open a new file to store the result
    out_file = fopen(argv[2],"wb");
    //Store image header
    fwrite(file_header, 1, header_size, out_file);
    //Open partial bitstream file
    //Reset user logic
    rtn = fpga_reg_wr(UCTR_REG,0x0);
    rtn = fpga_reg_wr(UCTR_REG,0x1);
    rtn = fpga_reg_wr(CTRL_REG,0x0);
    rtn = fpga_reg_wr(CTRL_REG,0x1);
    while(sent < len){
        rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,512,1);
        rtn = fpga_send_data(USERPCIE2,(unsigned char *) file_data+sent+512,512,1);
        rtn = fpga_send_data(USERPCIE3,(unsigned char *) file_data+sent+1024,512,1);
        rtn = fpga_reg_wr(0x400,0x1);
        rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+recv,512,1);
	rtn = fpga_reg_wr(0x400,0x0);
	sent += 512;
        recv += 512;
    }
    fwrite(gDATA,1,image_size+2,out_file);
    fclose(out_file);
    free(file_header);
    free(file_data);
    return 0;
}
Esempio n. 2
0
int main(int argc, char *argv[]) {

    FILE *in_file;
    FILE *out_file;
    char *file_header;
    char *file_data;
    int rtn;
    int sent = 0;
    int recv = 0;
    int len = 512*512;
    int line_buff = 1;
    FILE *file;
    char *buffer;
    unsigned long fileLen;
    in_file = fopen(argv[1],"rb");
    if (!in_file)
    {
	fprintf(stderr, "Unable to open image file\n");
	return;
    }
    file_header=(char *)malloc(header_size);
    fread(file_header, 1, header_size, in_file);
    //Save file data
    file_data=(char *)malloc(image_size);
    fread(file_data, 4, image_size, in_file);
    //Close the image file
    fclose(in_file);
    //Open a new file to store the result
    out_file = fopen(argv[2],"wb");
    //Store image header
    fwrite(file_header, 1, header_size, out_file);
    //Open partial bitstream file
    file = fopen(argv[3], "rb");
    if (!file)
    {
	fprintf(stderr, "Unable to open partial bit file\n");
	return;
    }
    //Get file length
    fseek(file, 0, SEEK_END);
    fileLen=ftell(file);
    fseek(file, 0, SEEK_SET);
    //Allocate memory
    buffer=(char *)malloc(fileLen+1);
    if (!buffer)
    {
	fprintf(stderr, "Memory error!\n");
        fclose(file);
	return;
    }
    //Read file contents into buffer
    fread(buffer, 1, fileLen, file);
    fclose(file);
    //Send partial bitstream to FPGA
    rtn = fpga_send_data(ICAP, (unsigned char *) buffer, fileLen, 0); 
    free(buffer);
    //Reset user logic
    rtn = fpga_reg_wr(UCTR_REG,0x0);
    rtn = fpga_reg_wr(UCTR_REG,0x1);
    rtn = fpga_reg_wr(CTRL_REG,0x0);
    rtn = fpga_reg_wr(CTRL_REG,0x1);
    if(strcmp(argv[4],"s")==0) {
        printf("Streaming filter");
    	while(sent < len){
	        rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,4096,1);
	        rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+sent,4096,1);
	        sent += 4096;
        }  
    }
    else if (strcmp(argv[4],"c")==0) {
      while(sent < len){
        rtn = fpga_send_data(USERPCIE1,(unsigned char *) file_data+sent,512,1);
        rtn = fpga_send_data(USERPCIE2,(unsigned char *) file_data+sent+512,512,1);
        rtn = fpga_send_data(USERPCIE3,(unsigned char *) file_data+sent+1024,512,1);
        //rtn = fpga_wait_interrupt(hostuser1);
        //rtn = fpga_wait_interrupt(hostuser2);
        //rtn = fpga_wait_interrupt(hostuser3);
        rtn = fpga_reg_wr(0x400,0x1);
        rtn = fpga_recv_data(USERPCIE1,(unsigned char *) gDATA+recv,512,1);
	//printf("Data receive done\n");
	rtn = fpga_reg_wr(0x400,0x0);
	sent += 512;
        recv += 512;
      }
    }
    else
        printf("Wrong filter type %s\n",argv[3]);
    fwrite(gDATA,1,image_size+2,out_file);
    fclose(out_file);
    free(file_header);
    free(file_data);
    return 0;
}
Esempio n. 3
0
int main()
{
	float packet_time;
	char buff[200] = "\0";
	char wr_len[15];
	int rtn,timeout,i,k;
        int packet_num;
	char pkt_num_str[15];
        unsigned int arg = 100;
        int rd_size = 1024*1;
        int wr_size = 1024*1; // 64 KByte is the buffer-limit
        int src_addr = 0x0;
        int dst_addr = 1024;
	int num_tx_pack = wr_size/1024;
        timeout = 10*1000; // 10 secs.


   	 FILE* ett = NULL;
         ett = fopen("Res_eth_tx_test.txt","w+");
         fclose(ett); 

	printf("Initializing DRAM at %0x with incremental pattern \n ",src_addr);
	int test_val = 0x0;
	for(i = 0; i < DATA_SIZE/4; i++){
			senddata[i] = test_val;
            test_val++;
        }
        rtn = fpga_send_data(DRAM, (unsigned char *) senddata,DATA_SIZE, src_addr);
// Loop Tests
	for (k = 1; k <= 1024*1024; k=k*2) {

		wr_size = 1024 * k;
	
		// Eth SND DATA
        printf("Setting Write size to %0x\n", wr_size);
        rtn = fpga_reg_wr(ETH_TX_SIZE, wr_size);
        printf("Setting DRAM source address to %0x\n",src_addr);
        rtn = fpga_reg_wr(ETH_SRC_ADDR, src_addr);

		rtn = fpga_reg_rd(0x40 );
		printf("FPGA TX SIZE %0x \n",rtn);
        
        printf("Enabling ethernet\n");

        rtn = fpga_reg_wr( 0x8,0x00000004);
		rtn = fpga_reg_rd( 0x10);

		fpga_wait_interrupt(enet);
		rtn = fpga_reg_rd(ETH_TX_STAT);
		printf("FPGA ENET STS %0x \n",rtn);	
		packet_time = rtn * 5.0;
		printf("Total Time : %0f ns\n",packet_time);
		printf("Tpt : %0f MBps\n", (float)(wr_size/packet_time)*1000000000/1024/1024); 
		sprintf(wr_len,"%d",wr_size);
		strcpy (buff,wr_len);
		//	strcat (buff," Bytes \n");
		strcat (buff,",");
		//	strcat (buff,"Time : ");
		//	sprintf(wr_len,"%f",packet_time);
		//	strcat(buff,wr_len);
		//	strcat(buff,"\nTpt : ");
		sprintf(wr_len,"%f", (float)(wr_size/packet_time)*1000000000/1024/1024);
		strcat(buff,wr_len);
		strcat(buff,"\n");
		ett = fopen("Res_eth_tx_test.txt","a");        
		fwrite(&buff,1,strlen(buff),ett);
		fclose(ett);
		strcpy(buff,"\0");
	//sleep(5);
	}

printf("Exiting...");
	
}