cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
1,636 Views
Registered: ‎11-23-2017

How to configure VDMA to transfer only one frame?

Jump to solution

We want to transfer a 640*480 picture by PS,first,we write it to DDR,and transfer it to PL by VDMA.We just want to transfer it once,then stop,but the VDMA transfer the same picture continuously.We configure the VDMA as follows:

QQ图片20171228101520.png
We use ILA to see the wave as follows:
QQ图片20171228101529.png
According to the result,we can find the TVALID signal get down,but then the signal return to 1 and continuously transfer the same picture.
How to configure VDMA to transfer only one frame?
 
Tags (3)
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Moderator
Moderator
1,994 Views
Registered: ‎11-09-2015

Hi @jackielee,

 

 Check the control register for the VDMA (offset 00h).  On bit [23:16]:

"The minimum setting for the count is 0x01. A write of 0x00 to this register sets the count to 0x01. When DMACR.FrameCntEn = 1, this value determines the number of frame buffers to process."

 

Then just set FrameCntEn = 1 + [23:16] = 0

 

Regards,

 

Florent


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**

View solution in original post

4 Replies
Highlighted
Teacher
Teacher
1,614 Views
Registered: ‎06-16-2013

Hi @jackielee

 

I'm not sure. But at least your code has some wrong settings.

Refer the following suggestion.

 

- "MM2S_HSIZE" (54h) => This unit is NOT pixel. It's byte. In this case you need to set 640 * 4, if your color depth and color format is 24bit/RGB (RGB888) or 24bit/YUV (YUV444) or 30bit/RGB (RGB101010) or 30bit/YUV (YUV444).

- "MM2S_VSIZE" (50h) => It seems wrong. It might set 480.

 

Best regards,

0 Kudos
Highlighted
Visitor
Visitor
1,606 Views
Registered: ‎11-23-2017

Thank you for your replying,it seems the realy point is not your said.The point is to make VDMA just transfer one frame.Thanks again.

0 Kudos
Highlighted
Moderator
Moderator
1,995 Views
Registered: ‎11-09-2015

Hi @jackielee,

 

 Check the control register for the VDMA (offset 00h).  On bit [23:16]:

"The minimum setting for the count is 0x01. A write of 0x00 to this register sets the count to 0x01. When DMACR.FrameCntEn = 1, this value determines the number of frame buffers to process."

 

Then just set FrameCntEn = 1 + [23:16] = 0

 

Regards,

 

Florent


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**

View solution in original post

Highlighted
Visitor
Visitor
1,472 Views
Registered: ‎11-23-2017

thank you very much.Your answer is very good.

0 Kudos