Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
11 years ago

Sockit VIP demonstration

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.

2 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

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

    Maybe as screenshots?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    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:

    h2p_vip_frame_reader0_addr[0]=0x0;

    h2p_vip_frame_reader0_addr[4]=DEMO_VGA_FRAME0_ADDR+FR0_FRAME0_OFFSET;

    h2p_vip_frame_reader0_addr[5]=word;

    h2p_vip_frame_reader0_addr[6]=cycle;

    h2p_vip_frame_reader0_addr[8]=Width;

    h2p_vip_frame_reader0_addr[9]=Height;

    h2p_vip_frame_reader0_addr[10]=interlace;

    h2p_vip_frame_reader0_addr[0]=0x1;

    h2p_vip_frame_reader0_addr[3]=0;

    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?