The modular SGDMA is built in such a way that it can become a drop-in replacement for the SGDMA on the Altera ACDS installation (software API is different though). The thing that is missing is descriptor pre-fetching. One of these days I'll build a prefetching block that sits in front of the dispatcher; however, there are other ways to implement this sort of thing as well.
I don't know much about PCIe but one of my ideas was to use a Nios II core to coordinate the descriptor prefetching. So the CPU would be responsible for shoveling the descriptors into the modular SGDMA dispatcher block. It would require some software based protocol to be in place so that the CPU knows how to find all the descriptors in main memory on the other side of the PCIe link. Once the chain length is know the CPU could just do a single DMA transfer to pull the descriptors into the local memory hooked up to the FPGA in order shoot them off to the SGDMA dispatcher really fast. Then you could do all kinds of things like implement virtual channels and whatever else people do with PCIe links.
I find that the modular SGDMA is a lot easier to use from the software side so you might find that important enough to use it over the SGDMA on the ACDS. When I designed it I had three main applications in mind:
- PCIe, SRIO, networking, etc...
- Video frame buffering
- Hardware accelerator DMA frontend
Also since it's modular you could design your own controller to replace the dispatcher if you wanted something highly tuned to PCIe. That's the tricky thing with DMA design, it's pretty tough coming up with a 'one size fits all' solution. So by breaking it down into smaller parts I tried to give something generic enough to be useful and when that falls short the simplest block (dispatcher) can be replaced without having to redesign the data plane side of the DMA (masters) which is the hard part.
I hope that helps explain what the modular SGDMA should be used for. In terms of which I recommend.... that boils down to whether you want to use IP bundled on the ACDS or a design example. As a heads up I had the bug list for the SGDMA on the ACDS in front of me the entire time I was implementing the modular SGDMA and I probably addressed 90% of them so that may give you a 'warm fuzzy' about the modular SGDMA :)