PSoC5LP:DMA transfer from Status-Register to External-Memory

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
TaMa_4718096
Level 2
Level 2
10 replies posted First like given 5 questions asked

Hello,


I want to use DMA to transfer data from the Status Register component to external memory at a speed of 5MHz.
(Use 5MHz for the Hardware Request signal (drq) of the DMA component.)

However, the access speed of the external memory becomes 2.5MHz. What is the cause.

[Clock settings]
  IMO :Internal OSC (24MHz)
  ILO :100kHz
  PLL :Input=IMO, Nominal=60MHz
  Master Clock : PLL_OUT(60MHz)
  Bus Clock : 60MHz

0 Likes
1 Solution
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

TaMa,

I think that the right way will be to DMA data to the RAM (1024 bytes), and then to save it to external memory.

/odissey1

View solution in original post

0 Likes
5 Replies
VenkataD_41
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi,

1. What is the size/amount of data that you want to transfer?

2. How are you triggering the DMA component?

If possible, can you please attach the project for us to test at our side?

Thanks

Ganesh

0 Likes
lock attach
Attachments are accessible only for community members.

Hi, Ganesh san.

Thank you for your cooperation.

1. Transfer 8bit data 1024 times.

2. Use a 5MHz clock.

Attach the minimum project data.

Please confirm.

Best regards.

0 Likes

TaMa,

I've never used the EMIF component.  But here goes my "2 cents"...

I noticed that you have the BUS_CLK set to Fbus_clock = 60MHz.  At this bus clock a write cycle should complete in 100ns.  This results in a max Write transfer of 10MBps.  With the BUS_CLK at 60MHz the required 4 BUS_CLKs between EMIF accesses are satisfied.

pastedImage_0.png

However, Fbus_clock = 60 MHz nearly doubles the maximum allowed of 33 MHz.

pastedImage_0.png

Theoretically the EMIF component should have complained about the excessive BUS_CLK frequency.

If you back down Fbus_clock = 33MHz.  then a write cycle is 166.67 ns => 6 MBps.   The required 4 EMIF cycles at this BUS_CLK  allows a EMIF transfer rate at 7.5 MBps.

Try lowering the BUS_CLK to 30 MHz.  Maybe there is an issue with the way the EMIF component is written.

Len

Len
"Engineering is an Art. The Art of Compromise."
0 Likes
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

TaMa,

I think that the right way will be to DMA data to the RAM (1024 bytes), and then to save it to external memory.

/odissey1

0 Likes

Hi.

I changed BUS_CLK to 30MHz, but the memory access speed did not change.

I Try DMA transfer the data to RAM and then saving it to external memory.

0 Likes