Forum Discussion

JLee25's avatar
JLee25
Icon for Contributor rankContributor
1 month ago

VVP Protocol Converter Not work

Hello,

  I am looking for how to use the VVP protocol converter, by converting Altera Stream Video Lite to Avalon Streaming Video.

  I generate a simple pipeline with Protocol Converter to Frame Buffer on Cyclone 10 GX...

Here's the settings of the converter,

And the Register settings for this IP,

 

For unknown reason, I am unable able to see the protocol converter ready to work by setting rx ready signal goes "high" on STP.

Even when the tx side ready signal is OK.

Readback the register, the mode is fine and the CTRL is bit 0 is set already..

What would be wrong on my settings?

  Please help.

Thank you.

11 Replies

  • Wincent_Altera's avatar
    Wincent_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi JLee25 ,

    From your screenshots, the selected conversion direction looks correct for Altera Streaming Video Lite to Avalon Streaming Video, and your software is writing width, height, interlace, color settings, and the start bit.


    The biggest thing that stands out is that the GUI screenshot shows Memory mapped control interface not enabled, while your software is writing Protocol Converter registers through the base address. In the user guide Document: Video and Vision Processing Suite IP User Guide (UG-20344 | 2026.03.03) Section: 7.5 Protocol Converter IP Registers , access to the register map requires the Avalon memory-mapped control interface to be turned on. If the screenshot matches the actual compiled instance, that is the first thing I would check.


    Also, for the Lite-to-Avalon direction, the converter needs CPU-side frame information because AXI4-Stream video does not carry the geometry metadata needed on that side. The documented registers for Lite input are width, height, and interlace, which is consistent with what you are trying to program.

    From the waveform, av_st_vid_out_ready is high and axi4s_vid_in_tvalid is high, but av_st_vid_out_valid remains low and axi4s_vid_in_tready remains low. That suggests the downstream side is ready, but the converter itself is not accepting the incoming stream yet.


    I would suggest checking the following:

    • Confirm the compiled IP really has the Avalon-MM control interface enabled. If not, the register writes may not actually control the core.
    • Read back the status/debug registers and confirm the core reports running, has received a field, and whether the last field was marked broken.
    • Verify the programmed frame info exactly matches the incoming stream: 3840 x 2160 and the correct interlace value.
    • Verify the color-format settings. Your GUI shows YCbCr 4:4:4 color swap enabled, and the guide notes that the converter may swap Y and Cr planes for YCbCr 4:4:4 depending on the selected color-space/chroma settings. If your actual source is RGB or a different YCbCr format, the settings may not match the stream.
    • Check that the AXI4-S Lite source is producing correct frame-boundary signaling consistently, since the converter should not keep tready low once configuration and format are valid.

    My first suspicion is the control-interface setting mismatch between the GUI and the software access path. 

    My second suspicion is a stream-format mismatch, especially around the YCbCr 4:4:4 swap and color-format assumptions.

    So in short, this does not look like downstream backpressure. It looks more like the converter is not becoming operational because either the control interface is not really enabled in the compiled IP, or the programmed input format does not match the actual AXI4-S Lite video.


    I would strongly suggest you to try out our example design if you haven't, it will give you some tips where to start on.

    Regards,

    Wincent_Altera

  • Hi Wincent_Altera​ ,

      I checked the point you mentioned about the missing MM control interface on GUI using the "UDX 3D LUT" example.

      And quite confirmed that this is what you will see on the platform designer.

    Below is the capture of the UDX design

     

    And I am quite sure that I can access the settings even the MM interface is not enabled...

    And I expect to see the TREADY signal after IP core reset and write proper configuration values per VVP UG chap 3.

    But I don't know this is not happened for components like frame buffer, 1D LUT...

    Regards,

  • Hi Wincent_Altera​ ,

      Would you help by finding any example on the lite mode configuration?

    I followed the example below but not work.

    Here's the example from UDX,

    But the "vvpBpsCode" is not mentioned in the VVP UG..

    Thank you.

  • Hi Wincent_Altera​ ,

      I did a simple VVP test with Lite Mode with Pixel in Parallel Converter..

    Here's the pipeline, CVI (Avalon Streaming Bus, VIP) -> Protocol Converter (Avalon Streaming -> Altera Lite, VVP) -> Pixel in Parallel Converter (Quad to Dual pixels, YCC 422) -> Pixel in Parallel Converter (Dual to Quad pixels, YCC 422) -> Protocol Converter (Altera Lite to Avalon) -> CVO.

      I also did update the register values of protocol converter and readback, confirm the core status.

    Width is 3840 and SubSample is 2

    From the STP I fund this core is not output any data even the sink is "Ready" and source is putting data.

      Do you have any suggestions?

     The IP version is "18060001" .

    Thank you.

  • Hi Wincent_Altera​ ,

      I just revised the design and use Altera Stream Full instead of Lite mode.

    In this case, no need to provide any parameters to IP core.

    Unfortunately the Pixels in Parallel converter is not output any data even it received data.

    Here's the test, CVI -> Protocol Convert (Avalon to Altera Full) -> PIP (4 pixels to 2 pixels) -> PIP (2 pixels to 4 pixels) -> Protocol Convert ( Altera to Avalon) -> CVI.

    Here's the PIP RX data,

    As noticed the PIP output Tready is always high but the core is not output any data.

    Any comments?

    • Wincent_Altera's avatar
      Wincent_Altera
      Icon for Regular Contributor rankRegular Contributor

      Hi JLee25 ,

      Sorry for late reply, I was occupied for other priority issue.
      Can you please check if Your 4→2 and 2→4 PIP conversions are supported by the IP, so the chain is not disallowed just because of those ratios. The most relevant PIP section is VVP User Guide UG-20344, Section 38.1 “About the Pixels in Parallel Converter IP”. It states that, for correct PIP conversion, the IP must know how many pixels are in each video line; with the Full Altera Streaming Video protocol, that information comes from the image information packets in the stream. Also relevant: Section 38.2 “Pixels in Parallel Converter IP Parameters” — input/output PIP, dual clock, FIFO depth, pipeline ready. Section 38.4 “Pixels in Parallel Converter Registers” — STATUS at 0x0140, bit 0 = processing a video field.

      Also, combining two PIP converters in parallel will not work for 16-wide expansion.

      Regards,
      Wincent_Altera

  • Hi Wincent_Altera​ ,

     Conversion between 4->2 and 4->2 should be work, I am not seeing any complaints from Platform Designer.

    And Quartus generates the design successfully.

    I switch the mode from Lite to Full, the situation remained the same.

    Neither is running.

    Do you know where is a UG mentioned about how to program the Lite mode?

    As I found from the LUT reference, I suppose only video data is needed.

    How about the register address "75" for vvpBpsCode ?

    Thank you.

    • Wincent_Altera's avatar
      Wincent_Altera
      Icon for Regular Contributor rankRegular Contributor

      Hi JLee25 ,

      Is this from our example design, sorry to said I never try out such customization before. 
      But I can advise based on my own experience for your reference, feel free to point out if my understanding is wrong.

      Yes, the UG does mention how Lite mode must be programmed, and based on that I do not think video data alone is sufficient here. 
      For the Pixels in Parallel Converter, 4→2 and 2→4 are supported. The UG says it supports any conversion from 1 to 8 pixels in parallel. 
      However, it also says the IP must know how many pixels are in each video line. 
      In Full mode, it gets that from the image information packet in the stream. 
      In Lite mode, the stream has no image information, so you must provide the line information through the register map / control agent interface. 

      For the Protocol Converter in Lite to Avalon mode, the UG says you must program the incoming width through the register map so the IP can determine valid pixels on the last beat of each line, and it also uses width, height, and interlace from the register map to generate the Avalon-ST control packet. The documented Lite-mode registers are IMG_INFO_WIDTH (0x0120), IMG_INFO_HEIGHT (0x0124), IMG_INFO_INTERLACE (0x0128), IMG_INFO_COLORSPACE (0x0130), IMG_INFO_SUBSAMPLING (0x0134), IMG_INFO_COSITING (0x0138), and CTRL (0x0154) to start the IP. 

      So for Lite mode, the UG indicates this is not just “send video data and it should run”; the frame/image information must also be programmed correctly. Regarding register address 75 / vvpBpsCode, I do not see that name in the documented Protocol Converter register map in the UG section for this IP. Based on the published register table, I would avoid depending on it unless there is another official source that documents it. 

      For the Chroma Resampler, if Lite mode is enabled, the UG says the memory-mapped control interface is required. 
      In Lite mode, you need to set at least IMG_INFO_WIDTH (0x0120), IMG_INFO_HEIGHT (0x0124), and IMG_INFO_SUBSAMPLING (0x0134). For your 4:2:2 → 4:4:4 CRS case, I would also check that the instance was built with 4:4:4 output support enabled, and that the runtime OUTPUT_MODE is set to 3 = 4:4:4 if you are controlling it via registers. 

      At this point, based on the UG, my main suspicion is not that 4→2 / 2→4 is unsupported, but that the downstream VVP IPs are not receiving the frame/image metadata they need to begin processing in Lite mode, or valid image information packets in Full mode. 

      Regards,
      Wincent_Altera

  • Hi Wincent_Altera​ ,

      I instantiate a VVP Chroma ReSampler by converter YCC 422 to 444.

    For unknown reason, the CRS did not set the Tready even after updating the registers.

    And I did not see the Tready raised high after reset.

    This behavior is not as mentioned in UG page 21..

    Any suggestion for me to check.

    Thank you.

    • JLee25's avatar
      JLee25
      Icon for Contributor rankContributor

      Hi Wincent_Altera​ ,

        I have update on this issue..

      I instantiate IP core one by one and it's fine except the VVP protocol converter, LITE to Avalon Stream..

      For unknown reason, the Sink side ready always kept now..

      Thanks for supporting.

      Best Regards,

      • Wincent_Altera's avatar
        Wincent_Altera
        Icon for Regular Contributor rankRegular Contributor

        Hi JLee25 ,

        Based on what you provided, 
        most likely remaining cause is that the MM writes are not reaching the compiled Protocol Converter instance correctly—
        for example, wrong base address/offset, incorrect byte addressing, or an inactive control-interface clock/reset domain.
        Can you please check from there ?

        Regards,
        Wincent_Altera