I'm working on a project that involves a legacy ASIC that requires an external DMA controller with full DREQ/DACK mechanism. Unfortunately, non of the microcontrollers available today provide that type of DMA. Well, I'm talking here about a fully fledged DMA controller similar in signaling and behavior to that of Intel's 8237. Bitbanging, playing with address bits/signals of FMC or any workaround is not acceptable for me.
Recently, I got some suggestions to implement it using a CPLD or FPGA, but I've never used one in any of my designs. Someone also referred me to PSoC series, but not sure whether I can achieve what I want using the Logic Array embedded in that SoC.
Any feedback is highly appreciated!
Solved! Go to Solution.
PSoC family devices do have the DMA controller inside. But that is used internally to transfer data from one location to another location of PSoC's memory without CPU intervention. So it cannot be used as an external DMA controller directly. You may need to develop some application inside PSoC to achieve this.
Please refer to the following application note:
PSoC 4L, PSoC 6 BLE, and PSoC 62 family devices have Universal Digital blocks that can be configured to any digital block. So using the UDB you can try developing the DMA. This might be a difficult process. Please check the following documentation on UDB.
Please find the attached document for more details regarding the UDBs inside PSoC:
Thanks and regards
Thank you very much for your prompt reply and for the interesting information.
In fact, I have always thought of such an implementation similar to the PSoC where a microcontroller provides part of programmable-logic elements similar to those of the FPGA. I'm sure I will incorporate a PSoC in one of my future designs. However, according to the attached UDB_learning document, one can create any complex design using the graphical editor, however, the number of logic elements is very limited.
Now the question is, do you think the UDBs in a PSoC are enough to create a DMA controller?
Regarding the application note, I think it's for the DMA controller peripheral inside the PSoC itself, which is only routed/triggered from embedded peripherals.
To be frank, it would be difficult to tell the possibility of implementing the DMA controller using UDBs. Some time needs to be spent to come to the conclusion. However, the number of UDBs in PSoC 6 is more than that of PSoC 4. So it should be possible to implement DMA with basic features using PSoC6.
Yes, the application note I shared with you is the DMA application note in PSOC 6. You can also think of the ways where you can use the internal DMA controller with some logic/code inorder to make it an external DMA controller.
Thanks and regards
The learning curve for PSoC is higher than for comparable FPGA. Assuming, that you don't need any analog staff of PSoC, I recommend to go ahead with FPGA for higher speed and larger resources.