Internals of axiToStream

This document describes the structure and execution of axiToStream, implemented as axiToStream function.

two types of axi_to_stream Structure

The axiToStream for aligned data implement is a lightweight primitive for aligned data, the width of AXI port is positive integer multiple of alignment width and the stream’s width just equals the aligned width. Both AXI port and alignment width are assumed to be multiple of 8-bit char.

The axiToStream for general data is relatively universal compared with the axiToStream for aligned data, so it causes more resource. The data length should be in number of 8-bit char. The data width cloud be unaligned or aligned, e.g. compressed binary files. AXI port is assumed to have width as multiple of 8-bit char.


Applicable conditions:

When input data pointer width is less than AXI port width, the AXI port bandwidth will not be fully used. So, AXI port width should be minimized while meeting performance requirements of application.

This primitive performs axiToStream in two modules working simultaneously.

  1. read_to_vec: It reads from AXI master to a _WAxi width stream.
  2. split_vec_to_aligned: It consumes the _WAxi width stream, splits and aligns the wide data to stream width, and writes the data into stream.

This axiToStream primitive has only one port for axi ptr and one port for stream output.