AIE(18)—更新RTP(2)

2022-08-23 19:07:53 浏览数 (1)

如前所述,RTP也可以是数组。我们看一下数组为RTP的一个例子。如下图所示,HLS Kernel random_noise产生输入数据传递给AIE Kernel fir24_sym。fir24_sym是一个滤波器,滤波器系数作为输入参数由PS传递,其输出经HLS Kernel s2mm写入到外部存储器。这里既用到了AIE API(对应AIE Kernel),又用到了OpenCL API(对应Host)。

对于AIE Kernel,在端口声明时,要将滤波器系数以数组形式声明,如下图所示。在使用该系数时,要将其先赋值给预先定义的vector。

在graph.h中,要将滤波器系数数组声明为一个input_port,如下图第22行所示。在此基础上,确定其与AIE kernel的连接关系,如第46行所示。

在graph.cpp中,如下图所示,第25行对滤波器系数进行了更新,之后运行16次。wait()的目的是保证16次迭代全部执行之后才可以对系数再次更新。

除了使用ADF API控制graph的执行,也可以使用XRT API。

这里先给出用XRT API控制PL Kernel,如下图代码所示。

接下来我们给出用XRT控制graph的代码,如下图所示。

Copyright @ TeacherGaoFPGAHub

转载事宜请私信 | 获得授权后方可转载

0 人点赞