I know that DMA use to transfer data between one memory to another memory. But I just wonder about DMA configuation (transfer method) and its application. And can anyone give me a sample circuit?
Hi wichayen,
DMA is also used for fast data transfer between some peripheral and internal memory without utilization of cpu core. Usually core set up the DMA transfer /base address and size of data block and other parameters / and start it. After that DMA controller takes control until the transfer is finished. At this point an interrupt to core is generated to inform for that.
Digital signal processors (DSP) have multiple DMA channels which is commonly used for ADC/DAC interconnection.
DMA transfer type:
1. Device == >MEM: device signals interrupt,core setup DMAC, the data transfer begin; device signal interrupt when data transfer complete, the interrupt handler begin to work
2. MEM ==>Device: core setup DMAC, then data transfer begin. device signal interrupt when transfer complete, and the interrupt handler begin to work
If wanting sample circuit you should specify which DMA controller you intend to use and which circuits are involved in the memory transfer itself (i.e. memory bank, FDD/FDD's, garphic card, etc), else we can only give you general examples. Also note that you have to define which bus topology you intend to use, like PCI; ISA and so on.
For transfer methodes on can say that a DMA transfer essentially copies a block of memory from one device to another. While the CPU initiates the transfer, it does not execute it, which is the very basic of DMA.
Below you will find some links where some have simple schematics showing the principle interconnection to make DMA work. Also check out wikipedia and search for DMA or find a DMA controller from a specific brand, you will then often also find ref design for you to dig into.
While reading datasheets somtime can be a painful experience, giving it enough attention you can learn quite a bit. Take for example this one from Intel, an advanced bridge which also incoorpotrates a 7ch DMA controller http://www.intel.com/design/intarch/datashts/290550.htm. Even though it might be a bit overkill for your application.