Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Question about DMA (Direct Memory Access)

Status
Not open for further replies.

wichayen

Member level 2
Joined
Jan 31, 2007
Messages
46
Helped
2
Reputation
4
Reaction score
0
Trophy points
1,286
Location
Thailand
Activity points
1,576
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?
 

stroma

Advanced Member level 4
Joined
Apr 25, 2002
Messages
114
Helped
9
Reputation
18
Reaction score
6
Trophy points
1,298
Activity points
837
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.

best regards,
stroma
 

phoenixfeng

Full Member level 2
Joined
Mar 27, 2004
Messages
147
Helped
15
Reputation
30
Reaction score
6
Trophy points
1,298
Activity points
770
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
 

zainka

Full Member level 2
Joined
Nov 18, 2004
Messages
130
Helped
5
Reputation
10
Reaction score
3
Trophy points
1,298
Location
No(r)way
Activity points
1,644
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.

https://www.embedded.com/showArticle.jhtml?articleID=15300200
https://www.ddj.com/dept/cpp/184402519;jsessionid=QCQHBIMDQQY4EQSNDLPSKH0CJUNN2JVN?_requestid=129412
https://members.tripod.com/~Eagle_Planet/dma__direct_memory_access.html
https://members.tripod.com/~Eagle_Planet/dma_controller.html

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 https://www.intel.com/design/intarch/datashts/290550.htm. Even though it might be a bit overkill for your application.

And this one from Intersil, is a simpler DMA controller also seen in embedded systems from time to time.
https://www.intersil.com/cda/deviceinfo/print/0,1479,82C37,00.html

Happy reading

Best regards
Vidar(Z)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top