Detailed Description

Hardware Overview

The figure below illustrates the various hardware components that are located on the top-side of the RPi Camera FMC.

RPi Camera FMC labelled top-side

The main components on the top-side of the mezzanine card are:

  • 4x 15-pin FFC connectors (camera connectors)
  • Low Pin Count FMC Connector
  • 2K EEPROM
  • 2x MIPI switches
  • Level translators

The figure below illustrates the various hardware components that are located on the bottom-side of the mezzanine card.

RPi Camera FMC labelled bottom-side

The main components on the bottom-side of the mezzanine card are:

  • Power indicator LED
  • Test points for power supplies
  • Test points for camera GPIOs (IO0 and IO1)

Camera connectors

The Raspberry Pi cameras and compatible cameras connect to the mezzanine card through 4x 15-pin flat flexible cable (FFC) connectors.

The pinout of the camera connector is shown in the table below:

Pin #Signal nameDescription
1GNDGround
2DATA0_NData lane 0 (negative)
3DATA0_PData lane 0 (positive)
4GNDGround
5DATA1_NData lane 1 (negative)
6DATA1_PData lane 1 (positive)
7GNDGround
8CLK_NClock lane (negative)
9CLK_PClock lane (positive)
10GNDGround
11IO0General purpose IO 0
12IO1General purpose IO 1
13SCLI2C bus clock
14SDAI2C bus data
153V33.3VDC power supply

The camera connectors on the mezzanine card are Amphenol ICC, FFC connector, SFW15R-1STE1LF . This is a bottom contact connector, meaning that the flex cable of the camera must be inserted with the contacts facing downwards. The images below illustrate this requirement.

Top viewBottom view
RPi Camera FMC top-side FFC orientationRPi Camera FMC bottom-side FFC orientation

EEPROM

The EEPROM ( ST, 2K EEPROM, M24C02-FDW6TP ) stores IPMI FRU data that can be read by the carrier board and contains the following information:

  • Manufacturer name (Opsero Electronic Design Inc.)
  • Product name
  • Product part number
  • Serial number
  • Power supply requirements

The FRU data is read by some carrier boards to determine the correct VADJ voltage to apply to the mezzanine card. All Opsero FMC products have their EEPROMs programmed with valid FRU data to allow these carrier boards to correctly power them.

Low Pin Count FMC Connector

The RPi Camera FMC has a low pin count FMC (FPGA Mezzanine Card) connector for interfacing with an FPGA or SoC development board. The part number of this connector is Samtec, Low pin count FMC connector, ASP-134604-01 . The pinout of this connector conforms to the VITA 57.1 FPGA Mezzanine Card Standard (for more information, see Pin configuration. For more information on the FMC connector and the VITA 57.1 standard, see the Samtec page on VITA 57.1 .

Level translation

The FPGA I/O voltage (VADJ) is 1.2VDC however the Raspberry Pi camera I2C and GPIO interfaces require 3.3VDC signals. For this reason, the RPi Camera FMC uses bidirectional level translation devices to convert the VADJ voltage levels to 3.3VDC. The RPi Camera FMC uses the two devices listed below:

DevicePurpose
TCA9416DTMRLevel translation of camera I2C buses. Always enabled.
SN74AVC4T245RSVRLevel translation of camera IO0, IO1. Direction and output enable are configurable.

The level translation for the I2C buses is always enabled and cannot be configured. As for the camera GPIO, the user has some control over the direction of IO0 and IO1, as well as whether or not they enabled or disabled (see Camera GPIO for more information).

I/O Interfaces

The FMC connector provides power to the RPi Camera FMC and also presents the following I/O signals to the FPGA fabric of the development board:

  • 2-lane MIPI interfaces for each camera
  • I2C buses (one for each camera)
  • GPIO (IO0 and IO1) for each camera
  • I2C for EEPROM R/W access

The MIPI interfaces, I2C buses and camera GPIO are routed to independent pins on the FMC connector. The figure below is a simplified connection diagram for the FMC connector. Note that the MIPI switches and level translation are left out of the diagram for clarity.

FMC Connector

I2C Bus Interfaces

The I2C bus interface of each camera is routed independently to the FMC connector. In this configuration, there is no need for an I2C MUX, as the I2C buses are not linked together. Instead, each camera’s I2C bus is accessible through dedicated pins on the FMC connector, listed in the table below. This configuration simplifies the I2C interactions with the cameras, but comes at the expense of requiring a dedicated I2C controller for each camera to be implemented in the FPGA fabric.

CameraI2C signalNet nameFMC pin
Camera 0SDA (data)CAM0_SDALA03_P
SCL (clock)CAM0_SCLLA03_N
Camera 1SDA (data)CAM1_SDALA05_P
SCL (clock)CAM1_SCLLA05_N
Camera 2SDA (data)CAM2_SDALA30_P
SCL (clock)CAM2_SCLLA30_N
Camera 3SDA (data)CAM3_SDALA32_P
SCL (clock)CAM3_SCLLA32_N

The I2C buses pass through level translators to convert the VADJ voltage levels to the 3.3VDC levels required by the Raspberry Pi cameras. These level translators are hard wired to be always enabled.

Camera GPIO

Eight FMC pins are dedicated to the control of each camera’s GPIO pins IO0 and IO1. These I/Os pass through level translators to convert the VADJ voltage levels to 3.3VDC levels required by the Raspberry Pi cameras.

CameraGPIONet nameFMC pin
Camera 0IO0CAM0_IO0LA12_N
IO1CAM0_IO1LA12_P
Camera 1IO0CAM1_IO0LA09_N
IO1CAM1_IO1LA09_P
Camera 2IO0CAM2_IO0LA19_N
IO1CAM2_IO1LA19_P
Camera 3IO0CAM3_IO0LA20_N
IO1CAM3_IO1LA20_P

Direction and output enable

Four FMC pins are dedicated for the configuration of the IO0 and IO1 direction and enabled state. These pins control the direction (camera-to-FPGA or FPGA-to-camera) and output enable for the IO0/IO1 signals, and the setting applies to all four cameras.

Net nameFMC PinPurpose
CAM_IO0_DIRLA13_PIO0 direction (0=Cam-to-FPGA,1=FPGA-to-cam)
CAM_IO1_DIRLA13_NIO1 direction (0=Cam-to-FPGA,1=FPGA-to-cam)
CAM_IO0_OE_NLA27_PIO0 output enable (0=Enabled,1=Hi-Z output)
CAM_IO1_OE_NLA27_NIO1 output enable (0=Enabled,1=Hi-Z output)

The diagram below illustrates the connection of the DIR and OE_N signals of the two level translators, one for IO0 and the other for IO1.

Configurable level translation for GPIOs

Note that in the case of the Raspberry Pi camera v2 and many of the compatible cameras, the IO0 should be configured as an output (FPGA-to-camera), while the IO1 can be left disabled. The usage of IO0 and IO1 on other cameras may be different and should be verified by the user.

CameraCAM_IO0_DIRCAM_IO1_DIRCAM_IO0_OE_NCAM_IO1_OE_N
Raspberry Pi camera v21X 10X 1
Digilent Pcam1X 10X 1

Testpoints

To facilitate debugging, testpoints for the GPIO (IO0 and IO1) of each camera is accessible on the bottom side of the mezzanine card. These testpoints are labelled in the bottom side view above.

MIPI Interfaces

The MIPI CSI interfaces from each camera are routed directly from the camera (FFC) connectors to the FMC connector. This is true for all of the MIPI signals with the exception of the MIPI clocks from cameras 1 and 3, which instead pass through MIPI switches (discussed in the following section). The MIPI CSI signals do not pass through any level translation on the RPi Camera FMC, therefore it is required that the carrier board’s FPGA device be able to receive MIPI CSI-2 D-PHY signals directly on it’s I/O pins. The AMD Xilinx UltraScale+ and Zynq UltraScale+ devices are capable of receiving MIPI CSI signals in this way.

MIPI Switches

To enable the RPi Camera FMC to support a useful range of carrier boards, it was designed with two MIPI switches ( OnSemi, MIPI Switch, FSA646AUCX ) that allow the MIPI clocks from cameras 1 and 3 to each be selectively routed to two different pairs on the FMC connector. The ability to redirect these camera clocks to suit the carrier board, allows the mezzanine card to support a wider range of carrier boards than would have otherwise been possible.

The diagram below illustrates the clock connections of cameras 1 and 3 through the MIPI switches. Note that the clock signals (shown as single thick lines for clarity) are actually differential and composed of a positive and negative trace.

MIPI Switches

It is also important to note that all of the other MIPI signals, including the data lanes of cameras 1 and 3, as well as clock and data lanes of cameras 0 and 2, cannot be selectively routed as they connect directly from the FMC pins to the camera pins.

Two FMC pins are dedicated to driving the select (SEL) inputs of the MIPI switches; we refer to these signals as the clock select signals and they have the net names CAM1_CLK_SEL and CAM3_CLK_SEL. These signals pass through level converters before driving the MIPI switches which require 3.3VDC inputs. The table below shows the clock select signal locations on the FMC connector, and their effect on the routing of the clocks of cameras 1 and 3.

Net nameFMC pinClock routing when CLK_SEL = 0Clock routing when CLK_SEL = 1
CAM1_CLK_SELLA25_NCAM1_CLK => LA01CAM1_CLK => LA16
CAM3_CLK_SELLA25_PCAM3_CLK => LA26CAM3_CLK => LA31

The clock select pins should be driven by the FPGA with constant values, depending on the carrier board that is being used. The table below lists the recommended clock select values for the currently supported carrier boards. Note that these required clock select values are included in the example designs.

Dev boardCAM3_CLK_SELCAM1_CLK_SEL
ZCU10410
ZCU10210
ZCU10610
PYNQ-ZU10
Genesys-ZU00
UltraZed EV Carrier01

I/O Expanders

To facilitate production testing of this product, we designed it with 4x I/O expanders ( TI, I/O Expander, TCA9536DTMR ), one connected to the I2C bus of each camera. The I/O expanders have 4 I/Os, the first two of which are connnected to IO0 and IO1 through 510R resistors for protection in the event of bus contention. More information for using the I/O expanders can be found in the corresponding section of the programming guide.

Power Supplies

All power required by the RPi Camera FMC is supplied by the development board through the FMC connector:

  • +12VDC
  • +3.3VDC
  • +3.3VAUX (for powering EEPROM only)
  • VADJ: +1.2VDC

Power supplies

3.3VDC Supply

The 3.3VDC supply provides power for the 4x cameras, but it is also the supply for the MIPI switches and the level translators.

VADJ Supply

As the RPi Camera FMC uses level translators, it can be used with any VADJ voltage level between 1.2VDC and 3.3VDC without risk of damaging any of the components or the cameras. However, we strongly recommend using the RPi Camera FMC at the VADJ voltage level of 1.2VDC if you are using our example designs or other designs that are based on the AMD Xilinx MIPI CSI Controller Subsystem IP core.

The only devices on the RPi Camera FMC that are powered by the VADJ voltage, are the I2C level translators and the I/O level translators.

Power LED and testpoints

A single green LED on the RPi Camera FMC is used to indicate when the required power supplies are active. The LED is controlled by the PG pin of the FMC connector (driven by the carrier board), and driven by one of the I/O level translators.

To aid hardware debug, test points are accessible on the bottom side of the mezzanine card for each of the power supplies of the RPi Camera FMC.


  1. X = don’t care ↩︎ ↩︎ ↩︎ ↩︎