Operator Library: Memory
This operator can be used to buffer a relatively small number of pixels in an FPGA based memory. The operator does not require a VisualApplets resource of type RAM. Instead, the operator uses FPGA internal memory. This can either be the FPGA-internal block RAM, the FPGA distributed RAM (LUT RAM), or UltraRAM memory (URAM is only available for the imaFlex CXP-12 Quad and imaFlex CXP-12 Penta platforms). Which of the two is used can be set manually via Parameter ImplementationType or is selected automatically by the operator depending on the operator's configuration.
The ImageFifo operator is often used to buffer lines or pixels before a synchronization. As the FPGA internal memory is limited, it is unlikely that frames of full resolution can be buffered without exceeding the available resources.
For information on the latency of the operator, see Table 43, 'Individual Latencies of the Operators in Library Memory'.
Parameters EntitiesToStore and EntityType define the maximum available buffer size. The operator is a first input, first output memory (FIFO). Any input data is immediately forward to the output. However, if the output is blocked for example because the following operators cannot process the input bandwidth, the operator will store the data. Thus the memory will only be filled, if the operator cannot output the data.
To measure the fill level of the buffer the operator provides the parameter FillLevel. FillLevel shows the percentage fill level of the Fifo.
Parameter InfiniteSource is used to specify if the operator is directly connected to a camera or is sequenced with other memory operators. If InfiniteSource is disabled, the operator cannot get into an overflow condition. Check 'Infinite Sources / Connecting Cameras' for more information.
Parameter ImplementationType allows to specify the hardware memory that is to be used by the operator.
Property | Value |
---|---|
Operator Type | M |
Input Link | I, image data input |
Output Link | O, data input |
EntitiesToStore | |
---|---|
Type | static parameter |
Default | 1 |
Range | any |
This parameter defines how many pixels, lines or frames have to be stored at maximum. The entity type is defined using parameter EntityType. |
EntityType | |
---|---|
Type | static parameter |
Default | FRAME |
Range | {FRAME, LINE, PIXEL} |
This parameter defines the type of the entity to store. The parameter can buffer EntitiesToStore units of EntityType. FRAME can only be chosen of the input link image protocol is VALT_IMAGE2D. LINE can be selected for protocols VALT_LINE2D and VALT_LINE1D, while PIXEL is always enabled. |
ImplementationType | |||||||
---|---|---|---|---|---|---|---|
Type | static write parameter | ||||||
Default | AUTO | ||||||
Range | (AUTO, BRAM, LUTRAM, URAM) | ||||||
Parameter ImplementationType influences the implementation strategy of the operator, i.e., which memory elements are used for implementing the operator. You can select one of the following values: AUTO: The optimal implementation strategy is selected automatically based on the parametrization of the connected links. BRAM: The operator uses the Block RAM of the FPGA.
LUTRAM: The operator uses the LUT RAM of the FPGA. URAM: The operator uses the UltraRAM of the FPGA.
|
FillLevel | |
---|---|
Type | dynamic read parameter |
Default | 0 |
Range | [0%, 100%] |
This parameter provides the fill level of buffer. The operator uses the FPGA resources efficiently. In some configurations it is possible to store more than 100% in the buffer. |
InfiniteSource | |
---|---|
Type | static parameter |
Default | ENABLED |
Range | {ENABLED, DISABLED} |
This parameter activates support for infinite source operators like Camera operators. See 'Infinite Sources / Connecting Cameras' for more information. |
The use of operator ImageFifo is shown in the following examples:
-
Synchronization - Avoiding deadlocks.
-
Tutorial - Use of the operator to buffer one line for line duplication.
-
'Bayer Demosaicing Algorithm According to Laroche'
Examples - Laroche Bayer Demosaicing filter
-
'Modified Laroche Bayer Demosaicing Algorithm '
Examples - Ressource Optimized Laroche Bayer Demosaicing filter
-
Sequential DMA output of the color planes. The color separations is performed using operator ImageBufferMultiROI. An additional pre-sorting optimizes the bandwdith and resources.
-
Example - The image dimension is measured and can be used to analyze the design flow.
-
Example - For debugging purposes of the designs internal data flow control in hardware and a possible compensation.
-
Examples - Shows how to split an merge image streams. Appends a trailer to the image.
-
Examples - Scaling A Line Scan Image
-
'High Dynamic Range and Low Dynamic Range Example Using Camera Response Function'
Examples - High Dynamic Range According to Debevec
-
'High Dynamic Range and Low Dynamic Range Example with a Weighted Linear Ansatz'
Examples - High Dynamic Range with Linear Ansatz
-
'A rolling average is applied on a dynamic number of images'
Examples - Rolling Average - Loop