What I would really like is if the AXI4-Stream Data FIFO (or the FIFO Generator) would add the option to add an AXI4-Lite interface to examine the read and write status. In particular I would like to be able to get the number of elements ready to be read and the number of free elements that can be written.
Currently it only outputs the number of elements in the fifo and not the number of free spaces nor the size of the fifo. I cannot imagine anyone being interested in axis_wr_data_count. What one needs is axis_wr_data_free.
And the count values are only available as vectors, not at an AXI interface. I can connect the vectors to a AXI-GPIO block, but then petalinux thinks it's a sysfs gpio device, which is not nice.
The current solution is to copy the size of the fifo in a constant (replication of data, risk of losing sync), subtract the count from this constant (why can subtractor only use a constant B?) and then assign it to an AXI-GPIO.
Maybe I should just ask for what I actually really want.
I want to know how much elements I can safely write to an AXI-DMA engine without it stalling. So maybe the number of free elements should be an input on the AXI-DMA IP block instead and then accessible in the AXI-Lite registers of the AXI-DMA block. This way the still needed axis_wr_data_free output of the fifo could be wired to the AXI-DMA block. And something similar for the axis_rd_data_count to check how many items are available.
This sort of already exists in the AXI-Stream FIFO which has the FIFO internally, but it doesn't have the DMA interface and it is unclear if it supports block writes.