Operator Library: Synchronization
The TxImageLink operator allows to send images to an RxImageLink operator any place in the design. Both operators establish a connection without a link.
With the image transfer between the TxImageLink and RxImageLink operators, it is possible to implement loops in a design.
Loops require data buffering strategy | |
---|---|
Operators TxImageLink and RxImageLink do not buffer data. Therefore, when implementing loops, you need to take special care with regard to data buffering to avoid deadlocks. |
All image formats supported by VisualApplets in general are supported. The image format remains the same, i.e., the format at the ouput of RxImageLink is the same as the format TxImageLink receives at its input.
The parameter Channel_ID defines a channel ID to address the receiving RxImageLink operator. The parameter value has to be unique and must not be used by any other TxImageLink operator in the design.
There has to exist exactly one RxImageLink operator in the design which is using the same channel ID and receives the image data.
Each TxImageLink operator in a design is connected to exactly one RxImageLink operator via one channel ID. In the Resource Dialog of VisualApplets, you can see that one ImageChannel resource is used for each TxImageLink-RxImageLink connection. Resource ImageChannel allows to control the assignment of individual TxImageLink operators to individual RxImageLink operators. For the number of available ImageChannel resources (which also defines the maximum number of allowed TxImageLink and RxImageLink operators in a design), see Appendix. Device Resources.
Parametrization of Link Format in Loops | |
---|---|
As soon as the link properties dialog is opened, the "automatic update" feature will adapt the link properties (such as bit width, or image dimensions) according to the operator chain's configuration. The input format of TxImageLink always defines the output format of RxImageLink (100% automatic consistency). Therefore, when you use operators TxImageLink and RxImageLink to implement loops, you need to take special care regarding the parametrization of the link formats. Example Wrong Implementation, value of link parameter Bit Width gets higher with every iteration through the loop: Right Implementation, Operator CastBitWidth changes the value of link parameter Bit Width back to the original value with every iteration through the loop: |
Synchronizing Channels between different hierarchical design levels | |
---|---|
If you use a TxImageLink/RxImageLink pair to set up a data transfer channel between different hierarchical design levels, this connection is treated as an M operator. Therefore, you may need to implement additional synchronization elements (that are not required with a direct connection). |
Channel_ID | |
---|---|
Type | static parameter |
Default | 0 |
Range | [0, 1023] |
The channel ID of the image link. See descriptions above. |
The use of operator TxImageLink is shown in the following examples:
-
'Functional Example for Loading Test Images Using ImageInjector '
Examples - Demonstration of how to use the operator
-
'A rolling average is applied on a dynamic number of images'
Examples - Rolling Average - Loop
-
'Depth From Focus Using Loops'
Examples - Depth From Focus using Loops