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. 







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



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


MIPI1 Camera (1 Clock + 4 Data Lanes)

MIPI Signal FMC Connector Pin FMC Signal Name ZCU102 HPC0
Bank 66
ZCU102 HPC1
Bank 65


MIPI1_CLK_P C10 LA06_P AC2 AH2

MIPI1_CLK_N C11 LA06_N AC1 AJ2

MIPI1_D0_P D11 LA05_P AB3 AG3

MIPI1_D0_N D12 LA05_N AC3 AH3

MIPI1_D1_P H10 LA04_P AA2 AF2

MIPI1_D1_N H11 LA04_N AA1 AF1

MIPI1_D2_P G9 LA03_P Y2 AH1

MIPI1_D2_N G10 LA03_N Y1 AJ1

MIPI1_D3_P H7 LA02_P V2 AD2

MIPI1_D3_N H8 LA02_N V1 AD1

Camera 2

MIPI Signal FMC Pin FMC LA Signal ZCU102 HPC0
Bank 66
ZCU102 HPC1
Bank 65



MIPI2_CLK_P C18 LA14_P AC7 AH7

MIPI2_CLK_N C19 LA14_N AC6 AH6

MIPI2_D0_P D17 LA13_P AB8 AG8

MIPI2_D0_N D18 LA13_N AC8 AH8

MIPI2_D1_P G15 LA12_P W7 AD7

MIPI2_D1_N G16 LA12_N W6 AD6

MIPI2_D2_P H16 LA11_P AB6 AE8

MIPI2_D2_N H17 LA11_N AB5 AF8

MIPI2_D3_P H4 LA01_P_CC AA7 AE7

MIPI2_D3_N H5 LA01_N_CC AA6 AF7

Camera 3

MIPI Signal FMC Pin FMC LA Signal ZCU102 HPC0
Bank 67
ZCU102 HPC1
Bank 66



MIPI3_CLK_P D20 LA17_P_CC P11 Y5

MIPI3_CLK_N D21 LA17_N_CC N11 AA5
 
MIPI3_D0_P C26 LA27_P M10 U10
 
MIPI3_D0_N C27 LA27_N L10 T10
 
MIPI3_D1_P C22 LA18_P_CC N9 Y8
 
MIPI3_D1_N C23 LA18_N_CC N8 Y7
 
MIPI3_D2_P G27 LA25_P M11 AE10
 
MIPI3_D2_N G28 LA25_N L11 AF10
 
MIPI3_D3_P H28 LA24_P L12 AH12
 
MIPI3_D3_N H29 LA24_N K12 AH11
 

Camera 4

MIPI Signal FMC Pin FMC LA Signal ZCU102 HPC0
Bank 67
ZCU102 HPC1
Bank 65


MIPI4_CLK_P D23 LA23_P L16 AE12

MIPI4_CLK_N D24 LA23_N K16 AF12
 
MIPI4_D0_P G24 LA22_P M15 AF11
 
MIPI4_D0_N G25 LA22_N M14 AG1
 
MIPI4_D1_P H25 LA21_P P12 AC12
 
MIPI4_D1_N H26 LA21_N N12 AC11
 
MIPI4_D2_P G21 LA20_P N13 AB11
 
MIPI4_D2_N G22 LA20_N M13 AB10
 
MIPI4_D3_P H22 LA19_P L13 AA11
 
MIPI4_D3_N H23 LA19_N K13 AA10
 

Youtube Video


Linux V4L2 Pipeline

Device Tree 


Loading Device Tree


Media Pipeline






V4L2 Pipeline Configuration 



yavta Capture 3 RGB Frames




Setup Image










Comments