软件版本:VIVADO2021.1 
操作系统:WIN10 64bit 
硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 
实验平台:米联客-MLK-H3-CZ08-7100开发板 
板卡获取平台:https://milianke.tmall.com/ 
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑! 
 
  
1概述        FPGA硬件加速是FPGA的重要应用,基于PCIE的硬件加速需要通过PC上位机把需要计算的数据PCIE接口发送给FPGA,FPGA做完运算后,再传送给PC。米联客FPGAPCIE相关教程主要为解决用户对于基于FPGA的PCIE的方案接口应用。本方案提供了一种基于PCIE的可以用于加速的算法的通信构架,在这套构架下,用户可以快速搭建自己的加速应用方案。 2系统构架        PC上位机发送数据通过PCIE接口经过XDMAIP写入到开发板的DDR中,之后通过AXI-GPIO通知开发板数据已经完成发送,数据处理模块接收到AXI-GPIO的信号后,开始从MiliankeuifdmadbufIP中获取DDR中的数据。数据经过处理后经过uifdmadbufIP写回到DDR中,并且通过XDMA的中断事件通知上位机数据已经处理完毕。 
 
  
3FPGA代码 
 
  
图形代码中关键的信号接口引出到顶层,并且编写代码修改PC发送过来的数据,并且回传给PC 
 
  
 
  
4上位机程序设计 
 
  
上位机的地址分配必须确保和下位机的PCIE板卡中的地址一致 
 
  
 
        数据的收发代码如下,发送部分每次发送完数据,需要通过user_write函数写GPIO 
			
			
			- voidh2c_transfer(unsignedintsize,unsignedchar*buffer)
 - {
 -         unsignedcharvsbuf_ctr_val;
 - 
 -         memcpy(h2c_align_mem_tmp,buffer,size);
 -         write_device(h_h2c0,h2c_fpga_ddr_addr[wbuf],size,h2c_align_mem_tmp);
 -         vsbuf_ctr_val=0x7f&wbuf;
 -         user_write(ADDR_VSBUF_CTR,4,&vsbuf_ctr_val);
 - 
 -         vsbuf_ctr_val=0x80|wbuf;
 -         user_write(ADDR_VSBUF_CTR,4,&vsbuf_ctr_val);
 - 
 -         if(wbuf>=2)
 -                 wbuf=0;
 -         else
 -                 wbuf++;
 - }
 - 
 - unsignedintc2h_transfer(unsignedintsize)
 - {
 - doublebd=0;
 - doubletime_sec;
 - 
 - QueryPerformanceFrequency(&freq);
 - QueryPerformanceCounter(&stop);
 - time_sec=(unsignedlonglong)(stop.QuadPart-start.QuadPart)/(double)freq.QuadPart;
 - bd=(int)(1.0/time_sec);;
 - QueryPerformanceCounter(&start);
 - read_device(h_c2h0,c2h_fpga_ddr_addr[fbuf],size,c2h_align_mem_tmp);
 - return(unsignedint)bd;
 - }
 
  复制代码
  
 
 
  
5硬件安装        注意确保TF卡里面没有程序,或者拔掉TF卡。         先下载程序,调试阶段下载bit文件,然后再开电脑。这样才能正确识别和后续测试工作正常开展。 
 
  
6实验结果 
 
  
 
 
 
 
 
 
 
 
 |