Operator ImageFlowControl

Operator Library: Debugging

With operator ImageFlowControl, you can control the data flow that is received from infinite sources.

[Important] Availability

To use the ImageFlowControl operator, you need either an Expert license, a Debugging Module license, or the VisualApplets 4 license.

Operator ImageFlowControl is especially helpful if your design

  • is fed by unstoppable (infinite) sources and does not make use of RAM-based image buffers.
  • contains loops and you want to detect and prevent data loss in loops.

Using this operator, you make sure that no overflows of FIFOs occur in the following pipeline.

The operator works similar to operator ImageFifo - it has a built-in FIFO.

In addition, the operator provides a specific overflow control mechanism. In case of overflow

  • Images are cut (and only the first part of the image is forwarded).
  • Images are discarded as long as the overflow situation is there. (When the overflow situation is over, the transfer starts with the first pixel of the next frame.)

This way, the operator ensures the design can be run.

Specific count parameters inform you how many frames were lost and how many frames were forwarded incomplete due to cutting them in an overflow situation. This allows you to track the data loss in your design (or, for example, in a loop).

Additionally, lost frames can be compensated with dummy frames of selectable width and height. This feature allows to keep the rate of incoming and outgoing frames constant in case of a temporal bandwidth restriction at the output link. However, this will only work as long as the generated dummy frames are small enough in size compared to the lost frames.

[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.

The operator is not intended for design simulation within VisualApplets.

I/O Properties

Property Value
Operator Type M
Input Links TerminateI (optional), external terminate signal input. If set to one, the current input image is terminated, i.e., the operator acts as a sink. Compensation of lost frames can be enabled through the CompensateLostFrames parameter.
I, image data input
Output Links O, image data output
StatusO (optional), statusO port is synchronous to image data output port O. This port is two bit wide. Bit 0: Signals truncation of the current frame if set. Bit 1: Signals a dummy frame if set. Only the last data word inside a frame must be evaluated.

Supported Link Format

Link Parameter Input Link TerminateI (optional) Input Link I Output Link O Output Link StatusO (optional)
Bit Width 1 [1, 64] as I 2
Arithmetic none {unsigned, signed} as I as I
Parallelism none any as I as I
Kernel Columns none any as I as I
Kernel Rows none any as I as I
Img Protocol SIGNAL VALT_IMAGE2D as I as I
Color Format none any as I GRAY
Color Flavor none any as I none
Max. Img Width none any as I as I
Max. Img Height none any as I as I

Parameters

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

Number of fifo entities to store.

EntitiesType
Type static write parameter
Default LINE
Range {FRAME, LINE, PIXEL}

Defines the storage entity.

ImplementationType
Type static write parameter
Default AUTO
Range {AUTO, BRAM, LUTRAM}

Defines the fifo implementation type.

FifoFillLevel
Type dynamic write parameter
Default 0%
Range [0%, 100%]

Actual fifo fill level in percent.

MaxFifoFillLevel
Type dynamic write parameter
Default 0%
Range [0%, 100%]

Stores the maximum fifo fill level ever reached.

CounterWidth
Type static write parameter
Default 16
Range [8, 32]

Sets the bit width of all counters inside this operator.

LostFrameCount
Type dynamic read parameter
Default 16
Range [0, (2^CounterWidth)-1]

Counts whole frames which were lost due blocking of the output link or the optional TerminateI input.ra>

IncompleteFrameCount
Type dynamic read parameter
Default 16
Range [0, (2^CounterWidth)-1]

Counts incomplete frames which where prematurely terminated.

FullFrameCount
Type dynamic read parameter
Default 16
Range [0, (2^CounterWidth)-1]

Counts full frames which were passed through to the output link.

ClearStatus
Type dynamic write parameter
Default No
Range {Yes, No}

If set to "yes" all counters are cleared.

CompensateLostFrame
Type dynamic write parameter
Default No
Range {Yes, No}

If set to Yes all lost frame are compensated through the insertion of dummy frames.

DummyFrameWidth
Type dynamic write parameter
Default 1024
Range [2, MaxImageWidth]

Width of the dummy frame to be generated.

DummyFrameHeight
Type dynamic write parameter
Default 1
Range [1, MaxImageHeight]

Height of the dummy frame to be generated.

DummyFrameCount
Type dynamic read parameter
Default 0
Range [0,(2^CounterWidth)-1]

Counts all generated dummy frames.

EofDifferenceFrameCount
Type dynamic read parameter
Default 0
Range [-(2^CounterWidth), (2^CounterWidth)-1]

Difference between the number of outgoing and incoming frames: OutgoingEofCounter-IncomingEofCounter.

Examples of Use

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

  • 'Image Flow Control'

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