For low speed traffic the on-chip memory based FIFO would work. It's fairly limited though (32-bit only when performing ST-->MM or MM-->ST). If you need a different data width creating a custom FIFO to do this is trivial.For high speed traffic take a look at the SGDMA. You can use a descriptor to describe moving 'x' number of bytes from MM to ST or the other way around. If you want a simpler API you can try the Modular SGDMA posted in at www.alterawiki.com which supports the same type of transfers.