FFC in Coaxlink frame grabbers

Some cameras have a built-in FFC module while other cameras do not implement this feature. The devices without that functionality can however be corrected by the FFC core of the frame grabber.

The FFC core firmware corrects the pixels directly coming from the camera by applying the FFC using the coefficients (Offset and Gain) corresponding to their locations in the image. Because the correction happens at a very early stage in the pixel processing chain, the other pixel processing functions such as RedBlueSwap, LUT, and Bayer Decoding are performed on corrected pixels.

Gain and Offset Coefficients Format

The coefficients calculated in the calibration procedure can be loaded into the frame grabber, provided they are encoded as follows:

Offset and Gain values for one pixel component are packed together into a 16-bit little-endian value:
Gain is encoded in Wikipedia:UQ2.8 on bits 9..0
Offset is a 6-bit unsigned integer on bits 15..10
Coefficients related to pixel component values are treated separately in the same sequence as the pixel components of the image. For example in RGB8 format, one pixel is encoded as 3 successive 8-bit values (Red, Green, Blue), therefore we need 3 successive 16-bit packed coefficients to correct one RGB8 pixel.

If the 16-bit packed coefficients are stored (in sequence) in a binary file (let's say 'path/to/coefficients.ffc'), they can be easily loaded from a Euresys script by calling
require("coaxlink://ffc/load")(grabber, 'path/to/coefficients.ffc');where
grabber is the script variable referencing the grabber to configure.

NOTE: such a binary file can be created by the Euresys ffc-wizard sample application.

Specifications

Camera Types

The FFC feature is applicable to monochrome, Bayer CFA and RGB Color area-scan cameras delivering 8-, 10-, 12- 14- or 16-bit data per pixel component.

Maximum Image Size

The maximum size is determined by the size of the memory used to store FFC coefficients and the pixel format:

 Size

Maximum Image size [Pixels]

Monochrome and Bayer CFA RGB RGBa
32 KB 16,384 5,461 4,096
512 MB 268,435,456 89,478,485 67,108,864
1024 MB 536,870,912 178,956,970 134,217,728
2048 MB 1,073,741,824 357,913,941 268,435,456

The location and the size of the FFC coefficients storage are determined by the product/firmware variant combination:

Product/firmware-variant

Location

(Partition scheme)

Size
1633 Coaxlink Quad G3 (1-camera, line-scan)

1633-LH Coaxlink Quad G3 LH (1-camera, line-scan)

  FPGA memory   32 KB
1635 Coaxlink Quad G3 DF
(1-camera, line-scan) and (1-df-camera, line-scan )
1633 Coaxlink Quad G3
(1-camera), (1-camera, line-scan)

1633-LH Coaxlink Quad G3 LH
(1-camera), (1-camera, line-scan)

DRAM memory

(1D_FFC)

512 MB
3603 Coaxlink Quad CXP-12 (1-camera) 1024 MB
3603-4 Coaxlink Quad CXP-12 (1-camera) 2048 MB
3623 Coaxlink Quad CXP-12 Value (1-camera) 2048 MB
3602 Coaxlink Octo (2-camera)

DRAM memory

(2D_FFC)

512 MB

For most product/firmware-variants, FFC coefficients are stored in a dedicated partition of the on-board DRAM memory.

However, for the line-scan firmware variants of 1633 Coaxlink Quad G3, 1633-LH Coaxlink Quad G3 LH and 1635 Coaxlink Quad G3 DF, the FFC coefficients are stored into internal FPGA memory blocks. This allows the FIFO buffer to work at full performance when the FFC is enabled.

Performance

When enabled, the FFC feature adds a significant load to the one-board memory since it fetches an additional 16-bit coefficient data for each processed pixel. When the FFC is enabled, the frame grabber is only able to sustain a fraction of the maximum data rate achievable by the CoaXPress Link. This dimension-less value is named "Sustainable relative data rate"

The following table shows the sustainable relative data rate for all bit depths and product/firmware variant combinations supporting FFC.

Sustainable Relative Data Rate

  Bit depth Sustainable Relative Data Rate [% of a 4-lane CXP-6 maximum data rate]
1633 Coaxlink Quad G3 (1-camera)
1633-LH Coaxlink Quad G3 LH (1-camera)
3602 Coaxlink Octo (2-camera)
3603 Coaxlink Quad CXP-12 (1-camera)
3603-4 Coaxlink Quad CXP-12 (1-camera)
8-bit 70.0 % 123.2 %
10-bit 77.8 % 136.9 %
12-bit 84.0 % 147.8 %
14-bit 89.1 % 156.8 %
16-bit 93.3 % 164.3 %

The "Sustainable Relative Data Rate" is global for all cameras attached to a board.For instance, in the 3602 Coaxlink Octo - 2-camera 8-bit use case, the sustainable data rate of 123.2% can be split unequally to 100% for a camera and 23.2% for the other camera.

Coaxlink and Grablink Duo frame grabbers do not acquire any data during blanking intervals. Line- and frame-blanking intervals do not consume memory bandwidth and therefore must be excluded in the calculation of the camera data rate.

To avoid latencies, FIFO buffer overflow and loss of frames, Euresys recommends to limit the (global) camera data rate accordingly.

Enabling the FFC

In the Data Stream module, set the FfcControl feature value to Enable.

Disabling the FFC

In the Data Stream module, set the FfcControl feature value to Disable.