Reputation: 1181
In Xilinx Vivado, I would like to buffer 8 independent AXI streams through a "AXI Virtual FIFO controller". From what I understand, the 8 streams must first be multiplexed into one stream using a "AXI4-Stream switch", and then demultiplexed using a second "AXI4-Stream switch".
The demultiplexing switch "axis_switch_0" uses the "tdest" signal to determine which Mxx_AXIS interface to send each transfer to. The "tdest" signal passes through the "AXI Virtual FIFO controller".
But I cannot figure out how to make the multiplexing switch "axis_switch_1" produce the "tdest" signal based on which Sxx_AXIS interface each transfer came from.
Any ideas?
EDIT
This is what happens if I enable TDEST or TUSER in "AXI4-Stream switch". No idea how 3bit TDEST/TUSER on the master interface becomes 24bits on the slave interfaces.
Upvotes: 0
Views: 4678
Reputation: 1
In the input to the mux, the 24 bits for TDEST are treated similar to the data or any of the other signals. Bits 2:0 should be connected to the TDEST[2:0] from/for S00 input, bits 5:3 should be connected to the TDEST[2:0] from S01 input, bits 8:6 ... bits 23:21 for S07. 8 channels * 3 bits/channel = 24 bits. Data is the same. Whatever you put in TDEST on S00 will show up at the other end on you demux and split it to whatever output you have for that address.
If you want data sent on axis_switch_0 port S03 to come out port M03 of axis_switch_1, and your addressing in axis_switch_1 is set up so TDEST=011 routes data to M03, then set bits TDEST[11:9]=3'b011 on axis_switch0 when sending that packet.
Upvotes: 0
Reputation: 1181
Reading reports from people trying and failing to do similar things, it eventuelly became clear that the "AXI Virtual FIFO controller" and "AXI4-Stream switch" simply are incapable of multiplexing and buffer streams. No clue what their actual intended purpose is. But they can't do this. Believe it or not.
Ended up implementing it all in HDL.
Upvotes: 2
Reputation: 911
Try enabling the TUSER signal and hard-coding the slave side to 0-7 to indicate which slave the data came from.
Upvotes: 0