FPGA FMC 4x MIPI CSI Camera, MIPI DSI Display Breakout Adapter , V4L2 Linux Media Pipeline Ultrascale+

Prototyping with advanced FPGA boards is quite challenging, As they often have very high density connectors for expansions and peripherals. As with case with most Modern Systems Xilinx and many other vendors also have very High density very high speed connectors. On Xilinx FPGA have High speed connectors called FMC Connectors. These connectors allow users to attach high speed peripherals to FPGA board.

FMC Connectors also  have few types, There FMC HPC connector which has all the pins of HPC connector , While there is a FMC LPC connector which has only a subset of HPC connector. Both FMC HPC and LPC connectors are basically same in terms of mechanical dimensions, They both fit into one another. Its just LPC has few electrical pins. The there is also a even bigger connector even with more pins called Vita 57.4 FMC+ , it is mostly Common with very expensive high end boards

One of the most common peripheral that you can connect to these board is MIPI CSI-2 Camera or MIPI Display. So i decide to make a breakout board for MIPI CSI, There are 4x Powered , 4 Lane MIPI Connectors that support both camera and display. 


Rev D of Bord with Multiple Carrier Support, ZCU106, ZCU104, ZCU102


This Board Has 4x 22Pin 0.5mm Pitch 4Lane MIPI Camera Connector, Same As Raspberry Pi 5 onwards,

Compatible to all Raspberry Style Cameras, 2 Lane and 4Lane cameras both

Compatible Standard 2Lane Rapsberry Pi 15Pins 1mm Pitch Cameras using RPI to Mini FPC Cable

Compatible to Digilent PCam  cameras



PCB


Schematic

To make board compatible to ZCU102 and ZCU106 Schematic has been changed quite a bit So Latest Schematic Can be found github



Hardware Revisions 

RevA to Rev B -- Not Publicly known 

RevC , Only Few units , Only Works with ZCU102 but all ports have 4 Lane support 

RevD, Primary Production Unit, Works with ZCU102 and ZCU106, ZCU104 but not all ports support 4 Lanes. 



Pin Assignment 

Pin assignment is very critical with every FPGA board it's also similarly critical with the on both ZCU102 and ZCU106. It Comes down to that ZCU106 only supports MIPI RX on very limited number of Pins even though MIPI TX is supported on quite a few pins. But input pins are very few and very limited number of banks as well so only the bank number 28 64 65 66 67 and 68 are available directly on the ZCU106 HPC connectors  which can be used for MIPI input and even on those banks bank you get very limited pins which can be used as a clock Lane and again they are specific Pins which can be used as a data aim when you are using specific clock pins

Rev C Boards are only compatible to ZCU102
Red D onwards work with ZCU102 and ZCU106 Both

Rev D pin ist listed blow ,For Rev C Pin Assignment for  Please Refer to Github
MIPI Signal FMC Connector Pin ZCU102 ZCU106 ZCU104
HPC0
HPC0 HPC1 HPC0 HPC1
CAM1 PCB Rev D
CAM1_MIPI_CLK_PG6Y4G6F17B18F17
CAM1_MIPI_D0_PD14W2AE2H16G20H16
CAM1_MIPI_D1_PH7V2AD2L20K22L20
CAM1_MIPI_D2_PC10AC2AH2H19H21H19
CAM1_MIPI_D3_PG9Y2AH1K19J21K19
CAM1_I2C_SCLD11AB3AG3K17G25K17
CAM1_I2C_SDAD12AC3AH3J17G26J17
CAM1_ENABLEG2T8P10G10xG10
CAM1_REF_CLKG3R8P9F10xF10
CAM2 PCB Rev D
CAM2_MIPI_CLK_PH19xxD16A18D16
CAM2_MIPI_D0_PG18D17C18G18
CAM2_MIPI_D1_PG12E18J25E18
CAM2_I2C_SCLD18F15C22F15
CAM2_I2C_SDAD17G15C21G15
CAM2_ENABLEC27A7xA7
CAM2_REF_CLKC26A8xA8
CAM3 PCB Rev D
CAM3_MIPI_CLK_PC22N9xD11xD11
CAM3_MIPI_D0_PG27M11C7C7
CAM3_MIPI_D1_PH28L12B6B6
CAM3_MIPI_D2_PD26L15B9B9
CAM3_MIPI_D3_PH25P12B10B10
CAM3_I2C_SCLH34V6E9E9
CAM3_I2C_SDAH35U6D9D9
CAM3_ENABLEH38T11E8E8
CAM3_REF_CLKH37U11F8F8
CAM4 PCB Rev D
CAM4_MIPI_CLK_PD20P11xxxx
CAM4_MIPI_D0_PD23L16
CAM4_MIPI_D1_PG24M15
CAM4_MIPI_D2_PH22L13
CAM4_MIPI_D3_PG21N13
CAM4_I2C_SCLG34V7
CAM4_I2C_SDAG33V8
CAM4_ENABLEG36V12
CAM4_REF_CLKG37V11



Youtube Video


Linux V4L2 Pipeline

Device Tree 


Loading Device Tree


Media Pipeline






V4L2 Pipeline Configuration 



yavta Capture 3 RGB Frames




Setup Image











Comments