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

AIE(19)—Packet Switching(1)

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

多个stream数据流可以共享一个物理通道,这个物理通道可以是PL到AIE也可以是AIE到PL。这样的好处是节省了PL接口,尤其适用于低带宽的场合。

本质上,packet switching使用了一对解复用器(de-multiplexer)和复用器(multiplexer)。前者将打包的数据流根据packet ID分配给不同的kernel,后者将来自于不同kernel上的数据流合并汇聚为一个数据流。为此,在ADF graph library中引入了pktsplit<n>和pktmerge<n>。pktsplit<n>是一个1:n的解复用器,pktmerge<n>是一个n:1的复用器。n最大值为32。

我们通过一个具体案例来体会一下packet switching的使用方法。这个例子包含4个AIE kernel,每个kernel的输入/输出均采用Window-based方式。4个Kernel的输入数据分别来自于pktsplit解复用器的4个输出,而4个Kernel的输出数据则通过pktmerge复用器合并为一路输出数据。需要注意的是将packet stream与window连接时connect里填的参数分别为pktstream和window,如下图中红色方框所示。

从编译结果来看,packet switching方式从PL到AIE只使用了一个物理通道,同样地,从AIE到PL也只使用了一个物理通道。

在编译结果Emulation-AIE/Work/temp目录下,packet_ids_c.h内显示了Kernel输入/输出端口与Packet ID之间的对应关系。该.h文件可用于后续使用HLS对PL编程。该目录下还会生成一个packet_ids_v.h,用于后续使用Verilog对PL编程。

这里就要说明一下packet数据流的格式。Packet数据流由packet header和数据流构成。每个Packet ID对应的数据流长度必须一致。Packet header的格式如下图所示。图中表明低5位为packet ID,这也佐证了为什么最多包含32个数据流。

基于此,在提供输入激励时就要采用如下图所示方式。图中红色方框为packet header,蓝色方框表明对应packet ID下的数据将为最后一个数据。不难看出,这里每个packet ID下的数据流长度为8。

我们把这4个packet header解析下来如下图所示。重点关注其中的packet ID。可以看到packet ID分别为0/1/2/3。

再看AIE的仿真结果,如下图所示。同样地,红色方框为packet header。蓝色方框表明此时为相应packet ID下的最后一个数据。对packet header进行解析,即可获知数据packet ID,再通过packet_ids_c.h中的文件内容,就可以知道该ID的数据是由哪个AIE Kernel输出。

Copyright @ FPGA技术驿站

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

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

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

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

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

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