Avalon to AXI implementation
Hi,
currently I'm thinking to implement an own Avalon <-> AXI4 (MM) adapter and not using the QSYS autogenerated adapter.
Currently we are using an AXI4 DMA which will stream data into the DDR4.
Because the DDR4 is using an Avalon interface I already tried the autogenerated converter which is too slow to support the data rates.
Even with pending transactions set to 64 & burst size 16 we are not able to achieve data rate > 3 Gbps (AXI has burst size 16, too).
DDR4 (1600 MHz) Avalon running with 200 MHz @ 512b and DMA with 160 MHz @ 256b.
Due the DMA on the 160 MHz got overflows I can be sure the transaction is the issue (I did not expect this because I have a higher frequency and double data width on receiving side..)
We had the same issues for AXI DMA <-> AXI HBM2 as well.
Here we implemented our own AXI <-> AXI connection which was much better and supports our required data rates much better than the autogenerated AXI converter (verified in simulation & on FPGA).
Regarding this we already had several debug sessions with Premier support - final result was to NOT use the autogenerated adapter and use our own...
Again in DDR4 we are facing the same throughput limitations (AXI <-> Avalon is the limitation).
Could you give me advices to implement this conversion?
Are there any data sheets which already describe the adapter autogenerated by QSYS?
Furthermore I saw I can edit the maximum pending read transactions on the DDR4 EMIF core & on Avalon Clock Crossing Bridges but not the maximum pending write transactions. Is there a reason why I cannot edit these parameters in those IP cores?
Kind regards,
Michael