Hi,
I am currently working as a consultant at a Texas Instrument direct account,
but I have not received the credentials, so I am using my normal login account.
They are using the TMS570LC4375, and I will work on the DMA driver.
I need to trigger a DMA channel from an FPGA using a /DMAREQ H/W trigger on GIOA[6].
This is DMAREQ[38] PINMMR176[16] will be set to 0. DMAREQPS[1:0] |= (1 << 38) // Active Low
When /DMAREQ is asserted, a single frame should be transferred.
The FPGA is still under specification, so for initial tests, we will have a very simple
FPGA design to test the MCU S/W.
The plan is to have the MCU generate a /DMAREQ signal on an unused
connection between the CPU and the FPGA. (assume this is /MCU_DMAREQ)
The simple FPGA design will just configure that pin as an input and route the
signal to the correct FPGA pin connected to the CPU /DMAREQ pin (GIOA6).
The timing of the DMA request pin is unclear to me.
There is a DMA Request Polarity register where you can select if the signal is active low or active high.
When a H/W request is generated, the DMA Status register is set.
Questions:
What happens if the CPU receives a pulse on the /DMAREQ which ends before the DMA has started transferring?
Will the DMA request be honoured as long as the pulse is a certain length?
If so, what is the minimum length of the pulse?
What happens if the CPU /DMAREQ is asserted until a DMA transfer is started and is then deasserted?
The FPGA will be memory mapped, and any read from a memory window will deassert the /DMAREQ
What happens if the /DMAREQ is deasserted only after the DMA transfer has completed?
(One way of handling the initial test is to assert the /MCU_DMAREQ in a test program,
and to deassert the /MCU_DMAREQ in the FTCA interrupt (Frame Transfer Complete)
Then the /DMAREQ is still asserted at the end of the DMA transfer.