FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

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?
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?