More robust configuration that will allow for the use of the AXIS module in a
scatter/gather operation. Will be able to handle contiguous streams of
read/write data even when they are part of different configurations.
When sending a read or write request the axi_(aw|w|ar)id values are now
incremented so that every request has a unique ID. This might be ignored by
downstream IP, however, there are some IP that require uniq IDs.
When a stream comes from the user system and is done there is a possibility
that the first data word of the next stream also gets popped from the buffer.
In those cases we need to take note of this so that the 'str_cnt' can be
correctly incremented and the deser_(done|last) values correctly reset.
I prefer the nested generate like I have in the axis_deserializer.v but the
current simulator does not like it so for the moment I'll change the module to
used the clocked for loop.
This will for a continuous stream of data from the user system to be sent for
writing and the axi bus. Currently there would need to be a small gap between
the data streams.
The seriliser needs to be reset when there is leftover data, however, if the
module is processing multiple streams of data that have been read from memory
there might be valid data that has been popped from the data fifo. If that is
the case we must not reset the seriliser.
The AXIS Gear Box will serializes or deserializes a stream of data depending of
the relative widths of the streams. Is only one register deep.
Serializes the 'up' data word into multiple smaller 'down' data words. The
module will stall when the dn_rdy flag deasserts.
Deserializes multiple 'up' flow bus data words into a single, larger 'down'
data words. Arranges them first to the right and moving left. If there is a
pause in the incoming 'up' stream the values already written into the larger
'down' word will stay until enough 'up' data has been sent in to complete the
'down' word unless a 'up_last' signal forces the down transfer. The module will
stall when the 'dn_rdy' flag deasserts.
This module will be used to replace the axis_(serializes|deserializes) modules
as this will allow the system stream to be larger then the AXI stream.
This involves parsing the topfile of the package (as determined by the name of
the package) and copying only the 'included' files. The code to do this was
taken from my 'cpvdep' script found at my github account.
This change makes a clear distention of the physical address and the user space
address for the memory array. It also scopes the variables to the file so they
will not be exported in the object file which can cause naming conflicts in
programs that use it.