前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AIE(17)—更新RTP(1)

AIE(17)—更新RTP(1)

作者头像
Lauren的FPGA
发布2022-08-23 19:07:29
2440
发布2022-08-23 19:07:29
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

AIE Kernel有时需要由外部提供参数更新kernel行为,此时就要用到RTP(Run-Time Parameter)。

AIE支持两种类型的RTP,一种是异步(Asynchronous),通常由PS或其他AIE Kernel控制。“异步”意味着RTP可以随时被更改。在每次Kernel被调用时,RTP都会被读取,而不会进行任何同步处理。这种机制适合于参数不经常更新的场合,例如滤波器系数。另一种为同步RTP(Synchronous)。“同步”意味着只有当处理器将RTP传递给AIE Kernel后,该Kernel才能被触发执行。无论是哪种类型,RTL都可以是标量(Scalar)或数组(Array)。

我们先看一个同步RTP。系统框图如下图所示。图中sine为AIE Kernel,其中trigger为RTP,此处为标量。s2mm为HLS Kernel,最终通过HLS在PL侧实现。

在描述AIE Kernel sine时,phase_increment为输入参数,这里的名字是形参名,本质上就是RTP,只是RTP在graph.h中会另起名字。

在描述graph时,将RTP定义为input_port,并起名字为trigger,如下图第26行所示。同时确定RTP与AIE Kernel的连接关系,如下图第33行所示。

在graph.cpp中,使用update更新RTP。如下图所示,可以看到update的次数与run的次数是一致的。代码第28行至第31行,依次将trigger值写入ping/pong/ping/pong buffer。

对于异步RTP,需要在graph.h中指定其与AIE Kernel之间的关系为异步关系,如下图代码第33行所示,使用了async。

在graph.cpp中要使用wait()。这是和同步RTP的最大区别。在同步模式下,graph的run是受RTP的update控制的。在异步模式下,需要通过wait等待graph的run完成。异步模式下,当graph在执行时是无法保证RTP生效的。

Copyright @ TeacherGaoFPGAHub

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档