实际应用packet switching时,数据由PL侧生成通过PL Interface传递给AIE Kernel。这就要求PL侧需要按照packet的格式发送数据。
如下图所示,PL侧有4个数据源MM2S,产生4个数据流。这4个数据流由packet sender打包成一个数据流经一个PLIO channel进入AIE Array,再由pktsplit解复用器分发到4个相应的AIE Kernel。
Packet sender由两部分构成。第一部分用于生成packet header,第二部分则是将4路数据分时发送到PLIO stream上。本质上就是分时复用一个PLIO channel。如下图所示。
再看packet receiver。Packet receiver收到的是一个打包好的数据流,因此,它需要根据packet header提供的信息将数据分发到不同的stream上。具体代码如下图所示。
无论是packet sender还是packet receiver,都需要获知packet ID和stream的对应关系,这可由packet_ids_c.h文件获取,如上述代码中的深蓝色方框所示。这个文件是在AIE编译完之后生成的。因此,一旦AIE侧发生改变就需要重新编译生成此文件。
没有回复内容