{"id":48843128,"url":"https://github.com/fpgadeveloper/rpi-camera-fmc","last_synced_at":"2026-04-15T03:04:21.089Z","repository":{"id":141775563,"uuid":"578251944","full_name":"fpgadeveloper/rpi-camera-fmc","owner":"fpgadeveloper","description":"Example designs and documentation for the RPi Camera FMC","archived":false,"fork":false,"pushed_at":"2026-04-09T19:49:51.000Z","size":7764,"stargazers_count":28,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-09T21:33:02.157Z","etag":null,"topics":["camera","machine-vision","mipi-csi","raspberry-pi","video","zynqmp"],"latest_commit_sha":null,"homepage":"https://camerafmc.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fpgadeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-14T16:02:17.000Z","updated_at":"2026-03-02T05:09:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"b3537cc8-bd71-4600-9a6b-8a5ec12f8197","html_url":"https://github.com/fpgadeveloper/rpi-camera-fmc","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/fpgadeveloper/rpi-camera-fmc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpgadeveloper%2Frpi-camera-fmc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpgadeveloper%2Frpi-camera-fmc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpgadeveloper%2Frpi-camera-fmc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpgadeveloper%2Frpi-camera-fmc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fpgadeveloper","download_url":"https://codeload.github.com/fpgadeveloper/rpi-camera-fmc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpgadeveloper%2Frpi-camera-fmc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31824118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"online","status_checked_at":"2026-04-15T02:00:06.175Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camera","machine-vision","mipi-csi","raspberry-pi","video","zynqmp"],"created_at":"2026-04-15T03:04:18.384Z","updated_at":"2026-04-15T03:04:21.077Z","avatar_url":"https://github.com/fpgadeveloper.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reference design for RPi Camera FMC\n\n## Description\n\nThis project demonstrates the Opsero [RPi Camera FMC] (OP068) used to\nconnect up to 4x Raspberry Pi cameras (or compatible cameras) to one of the target FPGA/MPSoC boards listed below. The \ndesigns contain:\n\n* 4x MIPI CSI-2 capture pipelines\n* Video Mixer IP based display pipeline to DisplayPort/HDMI output\n* Video Codec Unit ([VCU])\n\n![RPi Camera FMC](https://www.fpgadeveloper.com/camera-fmc-connecting-mipi-cameras-to-fpgas/images/rpi-camera-fmc-pynq-zu-1.jpg \"RPi Camera FMC\")\n\nImportant links:\n* The RPi Camera FMC [datasheet](https://camerafmc.com/docs/rpi-camera-fmc/overview/)\n* The [user guide](https://rpi.camerafmc.com) for these reference designs\n* To [report an issue](https://github.com/fpgadeveloper/rpi-camera-fmc/issues)\n* For technical support: [Contact Opsero](https://opsero.com/contact-us)\n\n## Architectures\n\nThe designs in this repository fall into two main architectural categories:\n\n1. **Zynq UltraScale+ designs** – These designs integrate the ISP Pipeline IP, run within a PetaLinux environment, \n   and output video to a DisplayPort monitor.\n2. **FPGA designs** – These designs implement a simpler video pipeline, are controlled by a bare-metal application, \n   and output video to an HDMI monitor.\n\n### Zynq UltraScale+ designs\n\nThe high level block diagram below illustrates the design:\n![RPi Camera FMC example design](docs/source/images/rpi-camera-fmc-architecture.png \"RPi Camera FMC example design\")\n\nThe video pipe sub-blocks are illustrated below:\n![RPi Camera FMC video pipe](docs/source/images/rpi-camera-fmc-mipi-pipeline.png \"RPi Camera FMC video pipeline\")\n\n### FPGA designs\n\nDisplay pipeline of the FPGA designs:\n![RPi Camera FMC HDMI display pipeline](docs/source/images/rpi-camera-fmc-hdmi-display-pipe.png \"RPi Camera FMC HDMI display pipeline\")\n\nThe video pipeline of the FPGA designs:\n![RPi Camera FMC simple video pipe](docs/source/images/rpi-camera-fmc-simple-pipeline.png \"RPi Camera FMC simple video pipeline\")\n\n## Requirements\n\nThis project is designed for version 2024.1 of the Xilinx tools (Vivado/Vitis/PetaLinux). \nIf you are using an older version of the Xilinx tools, then refer to the \n[release tags](https://github.com/fpgadeveloper/rpi-camera-fmc/tags \"releases\")\nto find the version of this repository that matches your version of the tools.\n\nIn order to test this design on hardware, you will need the following:\n\n* Vivado 2024.1\n* Vitis 2024.1\n* One or more [Raspberry Pi Camera Module 2](https://www.raspberrypi.com/products/camera-module-v2/) and/or \n  [Digilent Pcam 5C](https://digilent.com/shop/pcam-5c-5-mp-fixed-focus-color-camera-module/) cameras\n* 1x [RPi Camera FMC]\n* One of the supported target boards listed below\n\n### Design specific requirements\n\n* **Zynq UltraScale+ designs**:\n  * PetaLinux Tools 2024.1\n  * 1x DisplayPort monitor that supports 1080p video\n  * Linux build PC (or virtual machine)\n  \n* **FPGA designs**:\n  * 1x HDMI monitor that supports 1080p video\n  * [License for the HDMI IP](https://www.amd.com/en/products/adaptive-socs-and-fpgas/intellectual-property/hdmi.html) (evaluation license available)\n\n## Target designs\n\n\u003c!-- updater start --\u003e\n### FPGA designs\n\n| Target board          | Target design   | FMC Slot | Cameras | VCU   | Baremetal\u003cbr\u003e App | PetaLinux\u003cbr\u003e Build | Vivado\u003cbr\u003e Edition |\n|-----------------------|-----------------|----------|---------|-------|-------|-------|-------|\n| [AUBoard 15P]         | `auboard`       | HPC      | 2     | :x:                | :white_check_mark: | :x:                | Standard :free: |\n\n### Zynq UltraScale+ designs\n\n| Target board          | Target design   | FMC Slot | Cameras | VCU   | Baremetal\u003cbr\u003e App | PetaLinux\u003cbr\u003e Build | Vivado\u003cbr\u003e Edition |\n|-----------------------|-----------------|----------|---------|-------|-------|-------|-------|\n| [ZCU104]              | `zcu104`        | LPC      | 4     | :white_check_mark: | :x:                | :white_check_mark: | Standard :free: |\n| [ZCU102]              | `zcu102_hpc0`   | HPC0     | 4     | :x:                | :x:                | :white_check_mark: | Standard :free: |\n| [ZCU102]              | `zcu102_hpc1`   | HPC1     | 2     | :x:                | :x:                | :white_check_mark: | Standard :free: |\n| [ZCU106]              | `zcu106_hpc0`   | HPC0     | 4     | :white_check_mark: | :x:                | :white_check_mark: | Standard :free: |\n| [PYNQ-ZU]             | `pynqzu`        | LPC      | 2     | :x:                | :x:                | :white_check_mark: | Standard :free: |\n| [UltraZed-EV Carrier] | `uzev`          | HPC      | 4     | :white_check_mark: | :x:                | :white_check_mark: | Standard :free: |\n\n[AUBoard 15P]: https://www.avnet.com/americas/products/avnet-boards/avnet-board-families/auboard-15p-fpga-development-kit/\n[ZCU104]: https://www.xilinx.com/zcu104\n[ZCU102]: https://www.xilinx.com/zcu102\n[ZCU106]: https://www.xilinx.com/zcu106\n[PYNQ-ZU]: https://www.amd.com/en/corporate/university-program/aup-boards/pynq-zu.html\n[UltraZed-EV Carrier]: https://www.xilinx.com/products/boards-and-kits/1-1s78dxb.html\n\u003c!-- updater end --\u003e\n\nNotes:\n1. The Vivado Edition column indicates which designs are supported by the Vivado *Standard* Edition, the\n   FREE edition which can be used without a license. Vivado *Enterprise* Edition requires\n   a license however a 30-day evaluation license is available from the AMD Xilinx Licensing site.\n2. The HPC1 connector of the ZCU102 board can only support 2 cameras due to it's pin assignment. This design\n   supports the `CAM0` and `CAM1` slots as labelled on the RPi Camera FMC.\n3. The `pynqzu` target design has video pipelines for only 2 cameras: `CAM1` and `CAM2` as\n   labelled on the RPi Camera FMC. This is due to the resource limitations of the devices on this board.\n4. The `auboard` target design has video pipelines for only 2 cameras: `CAM0` and `CAM2` as labelled\n   on the RPi Camera FMC. This is due to the resource limitations of the Artix UltraScale+ device on this board.\n\n## Software\n\n### Baremetal application\n\nSome of these designs can be driven by a baremetal application that will configure the connected cameras\nand combine their video outputs into a single 1080p stream.\n\n### PetaLinux\n\nThe Zynq UltraScale+ based reference designs can be driven within a PetaLinux environment. \nThe repository includes all necessary scripts and code to build the PetaLinux environment. The table \nbelow outlines the corresponding applications available:\n\n| Environment      | Available Applications  |\n|------------------|-------------------------|\n| PetaLinux        | Built-in Linux commands\u003cbr\u003eAdditional tools: [GStreamer] |\n\n## Build instructions\n\n### FPGA designs\n\nThe FPGA designs do not require the submodules in this repo. To clone this repo, simply run:\n```\ngit clone https://github.com/fpgadeveloper/rpi-camera-fmc.git\n```\n\nSource Vivado and Vitis tools:\n\n```\nsource \u003cpath-to-vivado\u003e/2024.1/settings64.sh\nsource \u003cpath-to-vitis\u003e/2024.1/settings64.sh\n```\n\nBuild all (Vivado project, Vitis workspace):\n\n```\ncd rpi-camera-fmc/Vitis\nmake workspace TARGET=auboard\n```\n\n### Zynq UltraScale+ designs\n\nThis repo contains submodules. To clone this repo, run:\n```\ngit clone --recursive https://github.com/fpgadeveloper/rpi-camera-fmc.git\n```\n\nSource Vivado and PetaLinux tools:\n\n```\nsource \u003cpath-to-petalinux\u003e/2024.1/settings.sh\nsource \u003cpath-to-vivado\u003e/2024.1/settings64.sh\n```\n\nBuild all (Vivado project, accelerator kernel and PetaLinux):\n\n```\ncd rpi-camera-fmc/PetaLinux\nmake petalinux TARGET=uzev\n```\n\n## Launch instructions\n\n### FPGA designs\n\nLaunch Vitis, open the workspace that was generated using the make command. Select the test application and run it on the target\nboard.\n\n### Zynq UltraScale+ designs\n\nFrom the PetaLinux command line, run the following command to stream video from all *connected* cameras to the 4 quadrants of the \n1080p DisplayPort monitor:\n\n```\nsudo displaycams.sh\n```\n\nIf less than 4 cameras are physically connected, the unused quadrants of the monitor will be blue.\n\n## Contribute\n\nWe strongly encourage community contribution to these projects. Please make a pull request if you\nwould like to share your work:\n* if you've spotted and fixed any issues\n* if you've added designs for other target platforms\n* if you've added software support for other cameras\n\nThank you to everyone who supports us!\n\n### The TODO list\n\n* Develop PYNQ support\n* Add a standalone application for the Zynq and ZynqMP designs\n* Add support for some Versal boards\n* Add VCU example scripts\n* Get a Genesys-ZU board and test the design on hardware.\n* Software support for more cameras (this will be an ongoing task due to the number of cameras available).\n\n## About us\n\n[Opsero Inc.](https://opsero.com \"Opsero Inc.\") is a team of FPGA developers delivering FPGA products and \ndesign services to start-ups and tech companies. Follow our blog, \n[FPGA Developer](https://www.fpgadeveloper.com \"FPGA Developer\"), for news, tutorials and\nupdates on the awesome projects we work on.\n\n[RPi Camera FMC]: https://camerafmc.com/docs/rpi-camera-fmc/overview/\n[GStreamer]: https://gstreamer.freedesktop.org/\n[VCU]: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842546/Xilinx+Zynq+UltraScale+MPSoC+Video+Codec+Unit\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpgadeveloper%2Frpi-camera-fmc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffpgadeveloper%2Frpi-camera-fmc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpgadeveloper%2Frpi-camera-fmc/lists"}