Hello again,
I have a question about the dma engine that came with the older Nios I. My dma transfer now needs to be able to read some data, then skip x amount of bytes and then start reading again and repeating this until the end. I don't remember what this technique was called as I have not used it much. Does anyone know how to make the nios I dma to perform this? My only other alternative right now is to manually alter the data prior to the dma transfers. This would seem like an easy task for a dma engine to perform, but I am not sure. any ideas? thanx, -Quan链接已复制
2 回复数
Quan,
I'm sorry to say that the feature you require is not implemented in the DMA controller. It is possible to simulate the behavior you desire by using two DMA controllers: one to read from a memory containing transaction-records (just the complete set of register values needed for a transfer) and to write to the control port of the other DMA, which then does the requested transfer. This relies on some undocumented test features of the DMA controller. The technique may require too many hardware resources to be useful in your application. If you're interested in knowing more, let me know. -AaronHi Aaron,
Thank you for your reply. I still would like to learn more about this undocumented technique, though i doubt I will use it in my design. Also I started to go through the verilog code for the dma module that sopc builder generates and it looks like I should be able to alter the "readaddress_inc" variable to whatever desired byte jumps I need for the next set of data read. I have not tried it yet, but it looks like it should be okay for this test. -Quan