Operator Library: Debugging
Operator ImageMonitor fetches images for you from any spot of the inner pipeline you define. You can see what happened to the image until it reached this spot, and use this information for debugging.
Availability | |
---|---|
To use the ImageMonitor operator, you need either an Expert license, a Debugging Module license, or the VisualApplets 4 license. |
Operator ImageMonitor works like a Simulation Probe you use when simulating a design in VisualApplets - only that operator ImageMonitor is used for testing during runtime.
The operator provides a very simple image readout register interface. When parameter Mode is set to image monitoring, whole images can be read by only reading the PixelData register.
This is very helpful as you can monitor image data without using one of the (limited) DMA channels.
The number of ImageMonitor operator instances in a design is theoretically unlimited. However, you should use the operator carefully to save resources as additional FPGA logic is introduced for pausing the data flow during read-out. This also means that the operator cannot be used for monitoring infinite sources.
Supported pixel width is limited to 61 bits since the last three bits of PixelData carry the Valid, EndOfLine, and EndOfFrame flags.
The CurrXPos and CurrYPos parameters point to the currently active pixel position. This information can be used to filter the output pixels, e.g., to analyze only each second or third pixel.
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. |
Link Parameter | Input Link I |
---|---|
Bit Width | [1, 61] |
Arithmetic | {unsigned, signed} |
Parallelism | any |
Kernel Columns | 1 |
Kernel Rows | 1 |
Img Protocol | {VALT_IMAGE2D, VALT_LINE1D} |
Color Format | any |
Color Flavor | any |
Max. Img Width | any |
Max. Img Height | any |
Mode | |
---|---|
Type | dynamic write parameter |
Default | UnlimitedSink |
Range | {UnlimitedSink, Monitor, MonitorFromLineStart, MonitorFromFrameStart} |
This parameter sets the working mode. UnlimitedSink = No monitoring as all input is discarded. Monitor = Switches to monitoring mode immediately. MonitorFromLineStart = Switches to monitoring mode after the end of current line. MonitorFromFrameStart = Switches to monitoring mode after the end of current frame. |
ReadyForMonitoring | |
---|---|
Type | dynamic read parameter |
Default | no |
Range | {yes, no} |
Indicates readiness to read PixelData parameter. PixelData must be read only if set to yes. |
PixelData | |
---|---|
Type | dynamic read parameter |
Default | |
Range | [1, 64] |
Includes the current pixel value and three pixel flags. When valid flag is not set, the pixel value is discarded. PixelValue = PixelData[1, LinkBitWidth] ValidFlag = PixelData[LinkBitWidth+1] EndOfLineFlag = PixelData[LinkBitWidth+2] EndOfFrameFlag = PixelData[LinkBitWidth+3] |
CurrXPos | |
---|---|
Type | dynamic read parameter |
Default | 0 |
Range | [0, MaxImageWidth-1] |
Displays current line position. |
CurrYPos | |
---|---|
Type | dynamic read parameter |
Default | 0 |
Range | [0, MaxImageHeight-1] |
Displays current image height position. |
The use of operator ImageMonitor is shown in the following examples:
-
Example - For debugging purposes image transfer states on links can be investigated.