cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
1,004 Views
Registered: ‎06-10-2018

Issue in VDMA Write channel initialization

Jump to solution

I created a Stream generator IP that creates streams of 1920 size for a video stream testing. I have connected it to a VDMA write channel and have initialized using the SDK. The simulation of the Stream Generator IP works perfectly and produces a proper stream. The debugging of the stream from hardware side shows valid stream signaling as well. However the image is supposed to come upto 475 lines on the display but only works for 3 lines. I receive mixed status and control registers. I believe it's a problem in initializing the VDMA but the HSIZE and VSIZE are correctly set and the TUSER also is received correctly but the VDMA throws a 14810 or 1d890 alternately in successive runs. Can anyone suggest me best way to initialize a VDMA channel?

 

Screenshot from 2018-10-08 14-52-30.png

Fig. 1. Connections to VDMA write channel

 

Screenshot from 2018-10-08 14-52-43.png

Fig. 2. VDMA Configuration

 

Screenshot from 2018-10-08 14-53-30.png

Fig. 3. Debugging the input and output streams of VDMA_1 (Write channel)

 

Register values on running the software

 

VSI, HSI = 1080,7680                                                            
 adderess 0x28      Stride = 7680 Writer status: 1                              
MM2S vdma cntrl 10001                                                           
MM2S vdma stat 10000                                                            
Pointers 0                                                                      
MM2S addr 1 0x11cd28                                                            
MM2S addr 2 0x0                                                                 
MM2S addr 3 0x0                                                                 
HSize 7680                                                                      
VSize 1080                                                                      
MM2S_STRD_FRMDLY 7680                                                           
S2MM vdma cntrl 10001                                                           
S2MM vdma stat 14810                                                            
Pointers 0                                                                      
S2MM addr 1 0x11cd28                                                            
S2MM addr 2 0x0                                                                 
S2MM addr 3 0x0                                                                 
HSize 7680                                                                      
VSize 1080                                                                      
S2MM_STRD_FRMDLY 7680          (Using direct register addresses)                                                
Dump register for channel 43000000:                                              Using dump register function
        Control Reg: 10001                                                      
        Status Reg: 11000                                                       
        CDESC Reg: 0                                                            
        TDESC Reg: 0                 

 

 

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Moderator
Moderator
964 Views
Registered: ‎10-04-2017

Hi @adityanjothi,

 

"Can anyone suggest me best way to initialize a VDMA channel?"

We have a simulation example provided in PG020.

There are also two XAPP designs, but they are fairly old. (2014) XAPP741, XAPP742.

 

Looking at what you have provided, I would do several things:

1. It looks like you are only using a write channel. (S2MM). Are you writing to the MM2S register space? I am not sure what this will do.

2. Enable all interrupts for the S2MM channel. The interrupts will then show you if you have an error. 

 

 

Also, I see that you have the s2mm_frame_ptr_in port exposed. From the PG:

Set GenlockSrc (S2MM_VDMACR[7]=1) to enable Internal Genlock mode. This bit is set
to 1 by default if both channels are enabled in the Vivado IDE. When it is set to 1, you
do not need to connect *_frame_ptr_out and *_frame_ptr_in signals externally.
They are routed internally in the core.

 

- Sam

Don't forget to reply, kudo, and accept as solution.

Xilinx Video Design Hub

View solution in original post

2 Replies
Highlighted
Moderator
Moderator
965 Views
Registered: ‎10-04-2017

Hi @adityanjothi,

 

"Can anyone suggest me best way to initialize a VDMA channel?"

We have a simulation example provided in PG020.

There are also two XAPP designs, but they are fairly old. (2014) XAPP741, XAPP742.

 

Looking at what you have provided, I would do several things:

1. It looks like you are only using a write channel. (S2MM). Are you writing to the MM2S register space? I am not sure what this will do.

2. Enable all interrupts for the S2MM channel. The interrupts will then show you if you have an error. 

 

 

Also, I see that you have the s2mm_frame_ptr_in port exposed. From the PG:

Set GenlockSrc (S2MM_VDMACR[7]=1) to enable Internal Genlock mode. This bit is set
to 1 by default if both channels are enabled in the Vivado IDE. When it is set to 1, you
do not need to connect *_frame_ptr_out and *_frame_ptr_in signals externally.
They are routed internally in the core.

 

- Sam

Don't forget to reply, kudo, and accept as solution.

Xilinx Video Design Hub

View solution in original post

Highlighted
Observer
Observer
928 Views
Registered: ‎06-10-2018

Thanks a lot. I fixed it, seemed to be an issue with the Verilog IP and the tuser signal.