Page 3 · Protocol and timing
Link and Clocking
How FPD-Link locks every camera to one crystal, what each direction carries, and how one SoC configures four identical sensors.
Clocking: the FPD-Link signature
A camera system has several clocks: the sensor's pixel clock, the serializer's line rate, the deserializer's recovered clock and the SoC's frame timing. If each camera has its own crystal, they differ by tens of ppm. At 30 fps, a 50 ppm difference is a drift of 1.5 ms per minute between two cameras, so their frames slide past each other. FPD-Link offers clocking modes to control this. The DS90UB953 datasheet lists four: synchronous, non-synchronous external clock, non-synchronous internal clock, and DVP backwards-compatible.
| Mode | Where the reference comes from | Use it when |
|---|---|---|
| Synchronous | The deserializer's reference, sent over the back channel. The serializer's PLL locks to it; CLK_OUT feeds the sensor. | Multi-camera systems that must be frequency-locked to one ECU crystal. No crystal on the camera. |
| Non-synchronous, external | A local clock on the camera board | The sensor already has its own required clock, or the back channel is not trusted for timing |
| Non-synchronous, internal | The serializer's internal oscillator | Simplest single-camera designs where frequency lock does not matter |
| DVP compatibility | The parallel sensor's pixel clock | Older parallel-output sensors and earlier FPD-Link III deserializers |
PLL physics in one paragraph. The loop bandwidth decides which jitter wins. Below the bandwidth, the output follows the reference: a clean ECU crystal improves the camera, a noisy back-channel recovery degrades it. Above the bandwidth, the VCO's own noise dominates. Supply noise on the PLL rail modulates the VCO frequency directly, which is why the datasheet gives separate, tightly filtered PLL supplies.
What travels on the forward channel
A UB953-class serializer receives CSI-2 from the sensor on up to four D-PHY lanes, checks the CSI-2 ECC and checksum, and repacks the packets into the FPD-Link stream with its own CRC. The deserializer checks that CRC, reconstructs the CSI-2 packets and forwards them. FPD-Link IV parts carry up to 16 CSI-2 virtual channels and support multi-exposure HDR data types.
| Forward channel content | Purpose |
|---|---|
| CSI-2 packets (long and short) | Video lines, frame and line markers, embedded sensor data |
| I²C read data and ACKs | Replies to register accesses from the SoC |
| GPIO states | Sensor interrupts, error flags |
| Status and diagnostics | Voltage, temperature, lock and error information |
| Back channel content | Purpose |
|---|---|
| Reference clock (synchronous mode) | Frequency-locks serializer and sensor to the ECU |
| I²C writes and read requests | Configure the sensor and serializer |
| GPIO states | Frame sync, reset, power-down |
Control: I²C over the link
Identical cameras have identical I²C addresses. The deserializer's alias table gives each remote device a unique address on the SoC's bus, which is why one I²C bus from the SoC can configure four identical sensors.
Hubs and virtual channels
A quad hub such as the DS90UB960 (FPD-Link III) or DS90UB9702 (III and IV) receives four links. Each receive port can rewrite the CSI-2 virtual channel ID, so four cameras that all send on VC 0 arrive at the SoC on VC 0–3. The hub interleaves their packets onto its CSI-2 output ports or replicates one stream onto both ports, for example to feed a safety processor alongside the main SoC.
Diagnostics
| Feature | What it catches |
|---|---|
| CSI-2 ECC, checksum and D-PHY error detection on the serializer | Errors between the sensor and the serializer, before the cable |
| Link CRC on the forward channel | Errors in the cable and connectors |
| Lock status and adaptive EQ read-back | Link instability; a change in cable loss |
| Line-fault detection (UB971) | Open cable, short to ground |
| Voltage and temperature measurement | PoC sag, supply faults, thermal problems at the camera |
| Pattern generator and BIST | Test the link and the SoC receiver without a working sensor |
| I²C write protection (UB971) | Stray writes corrupting camera configuration |