FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5952 Discussions

Modular SGDMA - Doubt on Target Address

Altera_Forum
Honored Contributor II
836 Views

I am using the "ALT_PCIE_QSYS_SIMPLE" sample application. The code is executed successfully. It had leaded me to the following doubts: 

 

--------- 

Doubt 1 

--------- 

 

By default, the target address specified 0x07000000, however, if I tried to change to other value, it caused the entire PC hang. I couldn't further trace the problem. How do I find out what is the correct target address to right? 

 

--------- 

Doubt 2 

--------- 

 

The example had shown that the maximum data to be written from PC to FPGA which is 1MB, as the following is the code extracted from the main.cpp: 

 

// DMA read example printf("\nDMA read example\n"); DMA_Read(hDev, target_address, 4096); DMA_Read(hDev, target_address, 16384); DMA_Read(hDev, target_address, 65536); DMA_Read(hDev, target_address, 262144); 

 

My board has 1GB RAM, and the current example show that I am only can write 1MB. How do I write more data, say (10MB or 100MB) ?
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
79 Views

The mSGDMA masters are probably only setup to handle 1MB worth of data in that example. If you increase the payload size you'll have to change the master settings to handle that. 

 

That said.... if you are sending more than 1MB of data over PCIe, just use more descriptors. It's a scatter-gather DMA so it's meant to handle multiple back to back transfers. Increasing the payload size that the masters can handle is going to drop your Fmax of your design so you are better off just using multiple descriptors.
Altera_Forum
Honored Contributor II
79 Views

Thank you for your reply. I still have the following doubt. 

 

- Where is the master settings? 

- Do you mean putting a loop over the ReadDMA function? 

- How about the target address doubt? I need to specify 0x07000000, if other target address, PC will hang?
Altera_Forum
Honored Contributor II
79 Views

The master settings are in the master IP core(s). I wouldn't recommend changing those settings until reading what they do. There is a .pdf that documents each of the cores that makes up the DMA. 

 

You can put the read DMA into a loop. I just mean if you want to transfer say 16MB, you can always break that down into 16 1MB transfers (that's the "normal" way to use a scatter gather DMA) 

 

I have no clue about the target address changes causing problems. I would study the host code to see how it works, it's possible that by changing the address you are accessing invalid locations and that would be a problem.
Reply