Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

Custom accelerator circuit design with DMA

Good Morning, 


I am running a C program on Linux (builded with buildroot) on the HPS (Cyclone V, DE1-SoC Board), now I want to replace a function with a custom FPGA circuit. 


This function reads two matrix, then gives a resulting matrix. This custom hcircuit read the two matrix from the SDRAM of the HPS, than rewrite the result on the same SDRAM. 

1- I want to know if I can use a DMA controller to do this or I must transfer the data using the CPU. 

2- If I can use the DMA controller, is there any documentation about it, how to use it with a custom circuit. 


0 Kudos
2 Replies
Honored Contributor I

The DMA on the Cyclone V can definitely deal with this. 

I can't comment on how to implement this on Linux, but here's the key information for a "bare-metal" implementation. 

- The DMA is the "ARM PrimeCell" PL330 module from ARM. You can retrieve the technical manual from the ARM web-site. 

- The Cyclone V handbook also has a section that greatly help understand how to use & program the PL330. 

- Your requirements involves triggers and these are listed in the DMA section of the Cyclone V handbook. 

- You can find the base address of the DMA registers in the Appendix section of the Cyclone V handbook. 

- You should be able to use the hwlib in the SocEDS do program the PL330 for your specific needs; if not, then it should be easily modifiable 


Honored Contributor I

Old topic but in case anyone is interested to obtain an example of transferring the data from FPGA (using DMA soft IP) to the HPS SDRAM, here is the link: