Principles of Operation

Top  Previous  Next

QDMA is similar to EDMA, but allows for faster transfers at the cost of restricted functionality; not all of the EDMA facilities are available with QDMA.

 

QDMA has a single set of five registers. These can be accessed in two ways: directly or through 'pseudo registers'. Writing directly simply sets a register value; writing to a pseudo register sets the register value but also starts the transfer. On completion, the registers retain their starting values, so subsequent, similar operations can be performed by updating only the changed values, the final value being written to a pseudo register to start the transfer.

 

The QDMA mechanism uses EDMA techniques to indicate termination; a 'transfer complete code' value is used to set a bit in the CIPR system register on completion of the operation. This bit can be polled or used to generate an interrupt. From this point of view, a QDMA transfer could be confused with an EDMA transfer. To avoid this confusion when using Diamond, claiming the QDMA channel with a specific transfer completion code  also claim the EDMA channel that uses the same bit for synchronisation. It is anticipated that QDMA  always be used with a TCC corresponding to an EDMA channel that is otherwise unused by Diamond and the application (for example, EDMA channel 15).

 

Dragons003Note that nothing can be done to protect against a user using the same TCC in a concurrent transfer with a different EDMA channel; this  inevitably leads to program failure.

 

Dragons003The module does not take any action to deal with potential problems that may result from the C6000 DMA processor’s inability to maintain coherency between external memory and the cache; this is left to you.