UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor gordienkoa1
Visitor
871 Views
Registered: ‎10-25-2017

VDMA black collumn

Jump to solution

Hello!
I have a problem with forwarding data on VDMA.
I write the data in DDR by jtag to the 0x01000000 buffer. Then I set VDMA to send data to the 0x05000000 buffer
Here is the frame of the data that I am recording, I also read it from the same place where it went to

img.jpg

And this is my shot that I read from the DDR buffer 0x05000000

img2.jpg

This is my scheme in vivado
I focused on checking only Vdma_0 the rest of the hood is not interested in me and I do not run itvivado.png

        xil_printf("RUN MM2S \n\r");

        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x00, 0x0081); //
    	Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x5C, 0x01000000); //
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x58, 0x0A20); // 
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x54, 0x0A20); //
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x50, 0x07A0); //

        xil_printf("RUN S2MM \n\r");

        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0x30, 0x0081); // 
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0xAC, 0x05000000); // 
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0xA8, 0x0A20); // 
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0xA4, 0x0A20); // 
        Xil_Out32 (XPAR_VDMA_8BIT_1_BASEADDR + 0xA0, 0x07A0); // 

this is the initialization of VDMA in the SDK

 

this is a diagram of the logical analyzer, shows that the frame transfer beginswave.png

So that I do not like VDMA I did not set up I always have a black bar in this place when reading the data that dma sent.

What could be my problem?

Tags (1)
0 Kudos
1 Solution

Accepted Solutions
Visitor gordienkoa1
Visitor
1,250 Views
Registered: ‎10-25-2017

Re: VDMA black collumn

Jump to solution

I apologize for the disturbance. The problem seems to be not with VDMA. VDMA works like a clock. The problem in initializing the data frame buffer

 

 

        for(int i =0;i<(2592*1952/4);i++)
        {
         Xil_Out32(0x04000000 + A, IMG_DATA[i]);
//      Xil_Out32(0x04000000 + A, 0xFFFFFFFF);
        A=A+4;
        }

I recorded the image frame in the image.h file in the form

 

 

#define IMG_LENGTH 1264896
static u32 IMG_DATA[] = {
0x00000000,
0x00000000,
0x6f6f7071,
0x6e6e6e6e,
0x6c6c6c6c,
0x6c6c6c6c, ...
...
... }

 

 

when I fill the buffer in a loop with the values ​​0xFFFFFFFF
then I see a good picture with the maximum intensity values ​​(white),

and when I read images from the IMG_DATA array, I get a black bar. Most likely the problem is in image.h

 

 

 

 

0 Kudos
2 Replies
Moderator
Moderator
853 Views
Registered: ‎11-09-2015

Re: VDMA black collumn

Jump to solution

Hi @gordienkoa1,

 

Do you have the register dump of the VDMA? Could you make sure it does not give errors?

 

How do you manage the sync between read and write? Did you make sure you are not reading/writting to the same frame at the same time?

 

Hope that helps,

 

Regards,

 

Florent


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Visitor gordienkoa1
Visitor
1,251 Views
Registered: ‎10-25-2017

Re: VDMA black collumn

Jump to solution

I apologize for the disturbance. The problem seems to be not with VDMA. VDMA works like a clock. The problem in initializing the data frame buffer

 

 

        for(int i =0;i<(2592*1952/4);i++)
        {
         Xil_Out32(0x04000000 + A, IMG_DATA[i]);
//      Xil_Out32(0x04000000 + A, 0xFFFFFFFF);
        A=A+4;
        }

I recorded the image frame in the image.h file in the form

 

 

#define IMG_LENGTH 1264896
static u32 IMG_DATA[] = {
0x00000000,
0x00000000,
0x6f6f7071,
0x6e6e6e6e,
0x6c6c6c6c,
0x6c6c6c6c, ...
...
... }

 

 

when I fill the buffer in a loop with the values ​​0xFFFFFFFF
then I see a good picture with the maximum intensity values ​​(white),

and when I read images from the IMG_DATA array, I get a black bar. Most likely the problem is in image.h

 

 

 

 

0 Kudos