FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits

Sockit VIP demonstration

Honored Contributor II

I use like template the Sockit VIP demonstration, I only use the HPS, DDR3 memory in FPGA side, a Frame Reader and a Clocked Video Oputput . I removed all the rest of video IP cores. Previous to run my code, I use a TPG and it works. Then I write a random pattern in the DDR3 (FPGA side), but I can't get some picture in the screen. 

What can be wrong? I can read data that I write in the memory using the HPS, so the only thing than I can guess is wrong is the configuration of the Frame Reader IP in my software. I am using the same way as in the demonstration code provided in the web site, but I don't know if it is correct for my case. 

Any help will be appreciated.
0 Kudos
2 Replies
Honored Contributor II

Could you please post some more details about the configuration, things like clocks, settings of the IP-Cores? 

Maybe as screenshots?
0 Kudos
Honored Contributor II

Thank you, 


Screen shots of the system in the attached .zip file. 


Most relevant details in the system: 


-mem_ddr3.afi_clock is 150Mhz and it is connected to h2f axi.clock and to the clock_master in the frame reader. 


-pll has 2 outputs: 65 Mhz to the clock_bridge (used for the VGA out) and 130 Mhz to the frame_reader:clock_reset input, and to the clocked_video_output:is_clk_rst 


-the Avalon mm-slave is connected to the h2f_axi_master in the HPS and to the Avalon_master in the frame_reader 


If I use a test pattern generator, the color bars are generated, but with the frame buffer, there is nothing in the screen. 


Maybe the problem is my C code: 

According to the sample C code, the configuration for the frame reader ip are: 

to declare the frame reader as static volatile pointer: 


static volatile unsigned long *h2p_vip_frame_reader0_addr=NULL; 


then pass the register values directly like this: 












Like other examples and codes, the values of the registers are this way: 


*h2p_vip_frame_reader0_addr=SOME VALUE; 


Setting the value at indirect way. 


So, I don't understand if my guess is wrong, but I think the first way shouldn't work. Anyway, I tried both ways and still doesn't works. 

What should be the right way?
0 Kudos