MIPI DPHY RX实现方案
方案一
使用自带DPHY的FPGA
带有DPHY的专用FPGA。目前国内一些FPGA厂商是有的,如高云的FPGA是有自带DPHY(小蜜蜂家族),xilinx的UltraScale系列 支持MIPI D-PHY接口,Altea/Intel、Lattice等最新系列FPGA也是具有这一接口的。
使用FPGA自带的DPHY好处就是可以降低电路的复杂度及提高系统稳定性。但是需要注意一点这种方案也是要看FPGA内嵌DPHY的版本及完成度,能不能 达到MIPI的速度还是要看具体芯片的数据手册。
高云DPHY的介绍
xilinx的UltraScale系列DPHY说明
Lattice CrossLink系系列DPHY说明
方案二
使用专门ASSP芯片转换到LVDS
这种方案就不需要介绍了,专用ASIC(MC系列这种方案可以支持到2Gbps/Lane速率以上,只要FPGA的IO速率够用),方案不及自带DPHY的方案,但是也足够用了,综合考虑方案的成本,这种方案也是目前很多公司选用的方案。
MC系列IC的DPHY解决方案
方案三
电阻网络方案
可以参考xilinx官方文档xapp894,要求800M Hz以下,走线30mm以内。说白了只能用用而已。
电阻网络方案示意图
为什么介绍这几种方案呢?因为开源的MIPI项目的前提是你需要有DPHY。
0、MIPI Alliance (MIPI联盟)
❝https://www.mipi.org/❞
MIPI Alliance 是一个全球协作组织,为开发移动和受移动影响的设备的行业提供服务。该组织的重点是设计和推广硬件和软件接口,以简化设备内置组件的集成,从天线和调制解调器到外围设备和应用处理器。MIPI 联盟制定其所有规范以满足移动设备所需的严格操作条件:高带宽性能、低功耗和低电磁干扰 (EMI)。
PS:这两次为什么都把相关官网放到前面呢?因为每次大家都会在后台找我要XX接口的协议文档,所以后面我会先把相关官网放到前面,上面下载文档不仅免费,主要是权威和“新鲜”。
1、mipi_csi_receiver_FPGA
❝https://github.com/circuitvalley/mipi_csi_receiver_FPGA❞
这个是一个完整的项目了,实现了一个UVC摄像头,IMX219(索尼)摄像头(MIPI)进入FPGA通过FX3(USB PHY)出去,实现整个数据流,需要IP的自己可以提取,唯一的缺点是使用了Lattice平台去雁阵(不能算是缺点,只是国内用户较少),但是该项目未使用任何 针对FPGA 的IP,纯HDL,因此可以轻松移植到任何 FPGA上(资源够的情况)。
项目简介
此项目包含用于通用 FPGA CSI 接收器的硬件、Verilog 源码和 USB3.0 视频设备类 (UVC) 控制器 C语言 源码(固件),该项目未使用任何 针对FPGA 的IP,纯HDL,因此可以轻松移植到任何 FPGA上(资源够的情况)。
支持帧率从 15 到 1000 FPS,分辨率从 640x80 到 8M 3280x2464。
1080p 60FPS 时的最大数据速率约为 2Gbps。
通过 UVC 控制帧速率和分辨率。手动曝光和手动亮度控制, 饱和度控制。还可以使用映射伽马控制启用测试图案。
目前测试完成的案例:
代码语言:javascript复制3280x2464 15FPS
1920x1080 60FPS
1920x1080 30FPS
1280x720 120FPS
1280x720 60FPS
1280x720
30FPSx 80x1080
30FPS
640PS 640PS
20 FPS 8080 30FPS 8040FPS 8080 40PS0
TODO:需要在 FPGA 端进行改进以实现自动曝光、亮度和白平衡校正。
PS:链接中有视频演示
下面的项目与此类似就不展开介绍了:
❝https://github.com/circuitvalley/USB3_MIPI_CSI2_RX_V2_Crosslink_NX❞
❝https://github.com/cudnn/USBtoMIPI❞
2、mipi-demo
❝https://github.com/hdl-util/mipi-demo❞
可以触摸的实现方案。
简介
整个方案为 Raspberry Pi Camera v1.1 (OV5647)(mipi接口,可能是最便宜的MIPI摄像头) 通过 HDMI 的实时显示。
模块介绍:
hdl-util/hdmi : 通过HDMI传输视频/音频
hdl-util/mipi-ccs:使用MIPI CCS控制相机
hdl-util/i2c : I2C主控
hdl-util/mipi-csi-2:使用MIPI CSI 2 的摄像机视频接收
hdl-util/sdram-controller : SDRAM控制器
hdl-util/clock-domain-crossing : FPGA 上 时钟域交叉的实用程序
hdl-util/gray-code : 任意宽度的格雷码
演示
3、MIPI_RX_ST
❝https://github.com/vidor-libraries/MIPI_RX_ST❞
该项目包含一个MIPI_RX_ST IP核,端口描述如下:
MIPI_RX_ST IP 从 MIPI CSI2 中提取 8 位原始数据并输出包含 4:4:4 RGB 视频的视频流。
视频数据专门从cMIPI_HT_RAW8(十进制42)数据包中提取,并通过二维插值将bayer转换为4:4:4:RGB;为此,我们将数据记录在行缓冲区中以存储前两行。行缓冲区有 32 位,其低 16 位包含前一行,而其高 16 位包含倒数第二行。总共有 3 行,最多可以使用 5 个像素进行插值,具体取决于数据类型。
4、i3c-slave-design
i3C,同样由MIPI联盟制定,主要用于替代传统的USRT、I2C和SPI,并向下兼容I2C。
I3C吸纳了I2C和SPI的关键特性,并将其统一起来,同时在I2C的基础上,保留了2线的串行接口结构,这样工程师就可以在单个设备中连接大量的传感器。详细的介绍后面会单独出一片文章。
❝https://github.com/NXP/i3c-slave-design❞
MIPI I3C 从机-在 Verilog 中实现的 NXP 免费许可 MIPI I3C Slave,用于 FPGA 和IC器件。
使用参数高度可配置,并包含:
- 支持 I3C Basic v1.0,可在 MIPI 官方网站下载
- I3C SDR 协议
- 所有必需的 CCC(内置命令)加上一些可选的。
- IBI(带内中断)包括可选的 IBI 数据字节。
- 支持具有静态地址的 I2C。
- 添加 SlaveReset
- 取决于系统的两种不同的集成
- 用于基于处理器的系统的完整 APB 内存映射寄存器。
- 每个方向的可调 FIFO 深度
- 状态机 ASIC 的自治模型。
- 支持自动注册创建和系统侧控制
- 文档包括程序员模型、微架构规范、基本 I3C 规范。
下面的项目与此类似就不展开介绍了:
❝https://github.com/samy-maxvy/MAXVY_MIPI_I3C_Basic_Master_Controller_IP❞
5、aq_mipi_csi2rx_ultrascaleplus
❝https://github.com/aquaxis/aq_mipi_csi2rx_ultrascaleplus❞
基于ultrascale系列FPGA的MIPIRX IP核。
下面的基本凑数的,没什么参考价值,有兴趣可以简单看看。
6、mipitest
❝https://github.com/htti/mipitest❞
很简单的程序,没什么介绍,是使用MAX10解析解析帧头和像素数据。
7、mipi_dsi_bridge_fpga
❝https://github.com/circuitvalley/mipi_dsi_bridge_fpga❞
用于实现 MIPI DSI 桥接器 PCB 硬件文件,用于从 PC 接收图像并通过 SPI 传输到 FPGA 目标 PC 将图像传输到 USB 设备的应用程序.
8、MIPI_CSI2_TX
❝https://github.com/VideoGPU/MIPI_CSI2_TX❞
用于将 Xilinx MGT 千兆位收发器/LVDS 线路转换 MIPI CSI-2 TX 协议的 VHDL 代码。
9、具有MIPI接口的开发板
这里并没有“恰饭”,为什么介绍这些呢?主要是这些办卡带历程,虽然基本使用了IP,但是很适合快速入门。
黑金FPGA
AX7z020/AX7z010
百度大脑升级版
SEA-S7
这款开发板完全开源,源码,MIPI接口使用电阻网络,可以作为参考原理图。
❝https://github.com/For-up/SEA-S7Guess❞
米尔 百度大脑&ISP处理平台
官方板卡
1、 MAX10(10M50DAF484C6G FPGA Arrow)
2、KV260
《详见:开发者来稿 | Kria KV260 超长干货之开箱指南》
资料
可以参考下面的链接了解更多MIPI信息。
1、https://www.circuitvalley.com/2020/02/imx219-camera-mipi-csi-receiver-fpga-lattice-raspberry-pi-camera.html
2、https://www.cnblogs.com/gcws/p/8995542.html
3、
百度网盘:
链接:https://pan.baidu.com/s/1ShkmpRIY9JDZI_3ImA-iSA 提取码:open
优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
优秀的 Verilog/FPGA开源项目介绍(三)- 大厂的项目
优秀的 Verilog/FPGA开源项目介绍(四)- Ethernet
优秀的 Verilog/FPGA开源项目介绍(五)- USB通信
介绍一些新手入门FPGA的优秀网站(新增2)