Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)

多个stream数据流可以共享一个物理通道,这个物理通道可以是PLAIE也可以是AIEPL。这样的好处是节省了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的使用方法。这个例子包含4AIE kernel,每个kernel的输入/输出均采用Window-based方式。4Kernel的输入数据分别来自于pktsplit解复用器的4个输出,而4Kernel的输出数据则通过pktmerge复用器合并为一路输出数据。需要注意的是将packet streamwindow连接时connect里填的参数分别为pktstreamwindow,如下图中红色方框所示。
图片[1]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[2]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[3]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
从编译结果来看,packet switching方式从PLAIE只使用了一个物理通道,同样地,从AIEPL也只使用了一个物理通道。
图片[4]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
在编译结果Emulation-AIE/Work/temp目录下,packet_ids_c.h内显示了Kernel输入/输出端口与Packet ID之间的对应关系。该.h文件可用于后续使用HLSPL编程。该目录下还会生成一个packet_ids_v.h,用于后续使用VerilogPL编程。
图片[5]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
这里就要说明一下packet数据流的格式。Packet数据流由packet header和数据流构成。每个Packet ID对应的数据流长度必须一致。Packet header的格式如下图所示。图中表明低5位为packet ID,这也佐证了为什么最多包含32个数据流。
图片[6]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
基于此,在提供输入激励时就要采用如下图所示方式。图中红色方框为packet header,蓝色方框表明对应packet ID下的数据将为最后一个数据。不难看出,这里每个packet ID下的数据流长度为8
图片[7]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
我们把这4packet header解析下来如下图所示。重点关注其中的packet ID。可以看到packet ID分别为0/1/2/3
图片[8]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
图片[9]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug
再看AIE的仿真结果,如下图所示。同样地,红色方框为packet header。蓝色方框表明此时为相应packet ID下的最后一个数据。对packet header进行解析,即可获知数据packet ID,再通过packet_ids_c.h中的文件内容,就可以知道该ID的数据是由哪个AIE Kernel输出。
图片[10]-Xilinx FPGA AI开发工具AIE(19)—Packet Switching(1)-Xilinx-AMD社区-FPGA CPLD-ChipDebug

 

请登录后发表评论

    没有回复内容