Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
21 years ago

DMA transferring question

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 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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.

    -Aaron
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi 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