Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)

如前所述RTP也可以是数组。我们看一下数组为RTP的一个例子。如下图所示,HLS Kernel random_noise产生输入数据传递给AIE Kernel fir24_symfir24_sym是一个滤波器,滤波器系数作为输入参数由PS传递,其输出经HLS Kernel s2mm写入到外部存储器。这里既用到了AIE API(对应AIE Kernel),又用到了OpenCL API(对应Host)。
图片[1]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
对于AIE Kernel,在端口声明时,要将滤波器系数以数组形式声明,如下图所示。在使用该系数时,要将其先赋值给预先定义的vector
图片[2]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
graph.h中,要将滤波器系数数组声明为一个input_port,如下图第22行所示。在此基础上,确定其与AIE kernel的连接关系,如第46行所示。
图片[3]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
graph.cpp中,如下图所示,第25行对滤波器系数进行了更新,之后运行16次。wait()的目的是保证16次迭代全部执行之后才可以对系数再次更新。
图片[4]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
除了使用ADF API控制graph的执行,也可以使用XRT API
图片[5]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

这里先给出用XRT API控制PL Kernel,如下图代码所示。
图片[6]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
接下来我们给出用XRT控制graph的代码,如下图所示。
图片[7]-Xilinx FPGA AI开发工具AIE(18)—更新RTP(2)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

请登录后发表评论

    没有回复内容