AIE支持哪两种类型的RTP

描述

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生效的。

滤波器

原文标题:AIE(17)—更新RTP(1)

文章出处:【微信公众号:TeacherGaoFPGAHub】欢迎添加关注!文章转载请注明出处。 

      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分