Operator ImageTimingGenerator

Operator ImageTimingGenerator allows you to emulate the image timing as it occurs with real cameras in productive systems.

The operator creates a black image output. It offers many parameters that enable you to define the timing behavior of the image output.

Use this operator to test whether the subsequent image processing pipeline can handle a specific timing of the data stream.

You will see if a specific timing behavior causes bottlenecks, or if the pipeline of your design is able to process the images despite timing deviations.

The line generation settings and the frame generation settings support four different generation modes:

  • FreeRun: The FreeRun mode achieves the fastest generation.
  • JitterMode:The JitterMode works like the FreeRun mode but enables you to define jitter for timing generation.
  • FixedFreqency: The FixedFreqency generation mode allows you to set a fix timing.
  • ExternalTrigger: If you want to use an input signal for triggering the line and/or frame generation, you set the line and/or frame generation settings to ExternalTrigger mode.

In addition, you can test how the design reacts to variations in image height, image width, line gap, and frame gap. You can define these parameters via lookup tables and variable jitter settings.

You can also adjust the pixel duty cycle to simulate a slowdown of a virtual pixel clock.

ImageHeightJitter and FrameGapJitter are only active (can only be used) as long as FrameGenerationMode is set to JitterMode. Likewise, ImageWidthJitter and LineGapJitter are only active during LineGenerationMode = JitterMode.

Frame generation parameters as well as ImageHeight parameters are only available with the VALT_IMAGE2D image output protocol. Also all Line generation parameters as well as ImageWidth parameters are only available with the VALT_IMAGE2D or the VALT_LINE1D image output protocol.

[Note] Behavior During Design Simulation (Before Build)

During design simulation, only the parameters ImageHeightLut, ImageWidthLut, MaxImageSequenceLength and ImageSequenceLength are used. All other operator parameters and LUT entries of this operator have no influence on the simulated image. This means that during simulation, the operator ImageTimingGenerator behaves like the operator CreateBlackImage.

All other operator parameters and LUT entries of this operator have no influence on the simulated image (i.e., during simulation, operator ImageTimingGenerator behaves like operator CreateBlackImage).

[Important] Runtime Testing

This operator is designed for testing and analyzing your design during runtime: You need to build (synthesize) the design, load it onto the target hardware, and start actual image processing, before you can use the operator for debugging.

I/O Properties

Property Value
Operator Type M
Input Links TriggerLineI, optional external line trigger signal input. Tie to ground if not used.
TriggerFrameI, optional external frame trigger signal input. Tie to ground if not used.
Output Link O, Image data output

Supported Link Format

Link Parameter Input Link TriggerLineI Input Link TriggerFrameI Output Link O
Bit Width 1 1 1
Arithmetic none none unsigned
Parallelism none none any
Kernel Columns none none 1
Kernel Rows none none 1
Img Protocol SIGNAL SIGNAL {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D}
Color Format none none GRAY
Color Flavor none none none
Max. Img Width none none any
Max. Img Height none none any

Parameters

MaxImageSequenceLength
Type static write parameter
Default 1
Range [1, (2^14)-1]

Defines the LUT size for ImageHeightLUT, ImageWidthLUT, FrameGapLUT, and LineGapLUT.

ImageSequenceLength
Type dynamic write parameter
Default 1
Range [1, (2^MaxImageSequenceLength)-1 ]

Sets the number of entries used from the LUTs. If set to one, only the first entry of each LUT is used. If set to, e.g., four, while the MaxImageSequenceLength is set to, e.g., 7, only the first four entries in all LUTs will be used in round robin fashion.

ImageHeightLUT
Type dynamic write parameter
Default 1024
Range [1, MaxImageHeight]

This LUT stores image height values to be used for output image generation. During generation the LUT values are read in round robin fashion.

ImageHeightJitter
Type dynamic write parameter
Default 0
Range [0, MaxImageHeightBitwidth-2]

Number of least significant bits of an ImageHeightLUT value that will be allowed to jitter during image generation. Only used while parameter FrameGenerationMode is set to JitterMode.

ImageWidthLUT
Type dynamic write parameter
Default 1024
Range [1, MaxImageWidth]

This LUT stores image width values to be used for output image generation. During generation the LUT values are read in round robin fashion.

ImageWidthJitter
Type dynamic write parameter
Default 0
Range [0, MaxImageWidthBitwidth-2]

Number of least significant bits of an ImageWidthLUT value that will be allowed to jitter during image generation. Only used while parameter LineGeneration Mode is set to JitterMode.

PixelDutyCycle
Type dynamic write parameter
Default 100
Range [1, 100]

Pixel duty cycle for the output stream. 100 % means that every clock cycle corresponds to an output pixel. If 20% pixel duty cycle is set then every fifth clock cycle an output pixel is generated.

FrameGenerationMode
Type dynamic write parameter
Default FreeRun
Range {FreeRun, JitterMode, FixedFrequency, ExternalTrigger}

Selects the frame generation mode.

FreeRun: Fastest image generation mode based on ImageHeight and FrameGap. Parameter FrameRate is ignored.

JitterMode: Same as FreeRun but using the FrameGapJitter parameter.

FixedFrequency: Generation of a fixed frequency image rate set through the FrameRate parameter.

ExternalTrigger: Optional external trigger input TriggerFrameI is used to trigger the start of a new image frame generation. Only available if port FrameTriggerI was enabled.

When a new image start is triggered before a current image generation has ended, this request is ignored an the SkippedFrame counter is incremented. This applies to all frame generation modes.

FrameRate
Type dynamic write parameter
Default 10
Range [0.5, 1048576.0]

Target image frequency in Hz. Only used when parameter FrameGenerationMode is set to FixedFrequency. Maximum FrameRate is limited by the LineRate and the ImageHeight.

FrameGapLUT
Type dynamic write parameter
Default 1024
Range [1, 67108863]

Lookup table entries define the gap between two image frames. The frame gap value defines the gap as number of clock cycles. This parameter is ignored in FixedFreqency generation mode .

FrameGapJitter
Type dynamic write parameter
Default 0
Range [0, FrameGapBitwidth-2]

Number of least significant bits of an FrameGapLUT value that will be allowed to jitter during image generation. Only used during JitterMode frame generation.

LineGenerationMode
Type dynamic write parameter
Default FreeRun
Range {FreeRun, JitterMode, FixedFrequency, ExternalTrigger}

Selects the line generation mode.

FreeRun: Fastest image generation mode based on ImageWidth and LineGap. Parameter LineRate is ignored.

JitterMode: Same as FreeRun except the use of LineGapJitter parameter.

FixedFrequency: Generation of a fixed frequency line rate set through the LineRate parameter.

ExternalTrigger: Optional external trigger input TriggerLineI is used to trigger the start of a new line generation. Only available if port LineTriggerI was enabled.

If current line generation has not ended and a new line start is triggered then this request is ignored an the SkippedLine counter is incremented. This applies to all line generation modes.

LineRate
Type dynamic write parameter
Default 10
Range [0.5, 1048576.0]

Target line frequency in Hz. Only used in FixedFrequency line generation mode. Maximum LineRate is limit by the LineGap and the ImageWidth.

LineGapLUT
Type dynamic write parameter
Default 1024
Range [1, 67108863]

Lookup table entries define the gap between two lines. The line gap value defines the gap as number of pixels between two lines. This parameters is ignored in FixedFreqency line generation mode.

LineGapJitter
Type dynamic write parameter
Default 0
Range [0, LineGapBitwidth-2]

TNumber of least significant bits of an LineGapLUT value that will be allowed to jitter during image generation. Only used during JitterMode line generation.

SkippedLine
Type dynamic read parameter
Default 0
Range [0, 65535]

This is an error counter used to indicate conflicting settings in the line generation mode.

If current line generation has not ended and a new line start is triggered then this request is ignored an the SkippedLine counter is incremented. This applies to all line generation modes.

SkippedFrame
Type dynamic read parameter
Default 0
Range [0, 65535]

This is an error counter used to indicate conflicting settings in the frame generation mode.

If current image generation has not ended and a new image start is triggered then this request is ignored an the SkippedFrame counter is incremented. This applies to all frame generation modes.

LinesToSimulate
Type static write parameter
Default 1
Range [1, (2^32) - 1]

If the output link image protocol is set to VALT_LINE1D, it is required to specify the number of lines for simulation. This parameter is used to specify the simulation image height. See 'Simulation' for more information on 1D simulations. This parameter can only be changed if the output image protocol is set to VALT_LINE1D.

PixelsToSimulate
Type static write parameter
Default 1
Range [1, (2^32) - 1], step size = output parallelism

If the output link image protocol is set to VALT_PIXEL0D, it is required to specify the size of the pixel stream for simulation. This parameter is used to specify the simulation pixel stream width. See 'Simulation' for more information on 0D simulations. This parameter can only be changed if the output image protocol is set to VALT_PIXEL0D.

Examples of Use

The use of operator ImageTimingGenerator is shown in the following examples:

  • 'Image Timing Generator'

    Example - While image timing is provided by a generator the designs data flow can be analyzed.

  • 'Image Flow Control'

    Example - For debugging purposes of the designs internal data flow control in hardware and a possible compensation.