FFC in Coaxlink cards
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 Coaxlink card.
The FFC core of the Coaxlink card 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.

The coefficients calculated in the calibration procedure can be loaded into the Coaxlink card, 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. |

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 following table shows the maximum image size for all supported pixel formats when FFC is enabled :
Bit depth | Maximum Image size [Pixels] | ||
---|---|---|---|
Monochrome and Bayer CFA formats | RGB formats | RGBa formats | |
8-bit | 134,217,728 pixels | 44,739,242 pixels | 33,554,432 pixels |
10-bit | 107,374,182 pixels | 35,791,394 pixels | 26,843,545 pixels |
12-bit | 89,478,485 pixels | 29,826,161 pixels | 22,369,621 pixels |
14-bit | 76,695,844 pixels | 25,565,281 pixels | 19,173,961 pixels |
16-bit | 67,108,864 pixels | 22,369,621 pixels | 16,777,216 pixels |

When enabled, the FFC feature adds a significant load to the DRAM memory since it fetches an additional 16-bit coefficient data for each processed pixel. When the FFC is enabled, the Coaxlink cards are 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 cards 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.
On 1635 Coaxlink Quad G3 DF (1-camera, line-scan) and (1-df-camera, line-scan ) firmware variants, the FFC doesn't use the DRAM memory to store coefficients. In these variants, we use internal FPGA BRAMs thus the FIFO buffer can work at full performance when the FFC is enabled.
To avoid latencies, FIFO buffer overflow and loss of frames, Euresys recommends to limit the (global) camera data rate accordingly.

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

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