碎碎思 · 2021年11月09日

优秀的 Verilog/FPGA开源项目介绍(六)- MIPI

MIPI的协议我就不详细介绍了(可以查看<下面的二维码>),这里和开源方案比较接近的即使FPGA实现MIPI物理层(DPHY)中电气属性相关的几种方案:

MIPI DPHY RX实现方案

方案一

使用自带DPHY的FPGA

带有DPHY的专用FPGA。目前国内一些FPGA厂商是有的,如高云的FPGA是有自带DPHY(小蜜蜂家族),xilinx的UltraScale系列 支持MIPI D-PHY接口,Altea/Intel、Lattice等最新系列FPGA也是具有这一接口的。

使用FPGA自带的DPHY好处就是可以降低电路的复杂度及提高系统稳定性。但是需要注意一点这种方案也是要看FPGA内嵌DPHY的版本及完成度,能不能 达到MIPI的速度还是要看具体芯片的数据手册。
image.png
高云DPHY的介绍
image.png
xilinx的UltraScale系列DPHY说明
image.png
Lattice CrossLink系系列DPHY说明

方案二

使用专门ASSP芯片转换到LVDS

这种方案就不需要介绍了,专用ASIC(MC系列这种方案可以支持到2Gbps/Lane速率以上,只要FPGA的IO速率够用),方案不及自带DPHY的方案,但是也足够用了,综合考虑方案的成本,这种方案也是目前很多公司选用的方案。
image.png
MC系列IC的DPHY解决方案

方案三

电阻网络方案

可以参考xilinx官方文档xapp894,要求800M Hz以下,走线30mm以内。说白了只能用用而已。
image.png
电阻网络方案示意图

为什么介绍这几种方案呢?因为开源的MIPI项目的前提是你需要有DPHY。

0、MIPI Alliance (MIPI联盟)

https://www.mipi.org/

MIPI Alliance 是一个全球协作组织,为开发移动和受移动影响的设备的行业提供服务。该组织的重点是设计和推广硬件和软件接口,以简化设备内置组件的集成,从天线和调制解调器到外围设备和应用处理器。MIPI 联盟制定其所有规范以满足移动设备所需的严格操作条件:高带宽性能、低功耗和低电磁干扰 (EMI)。

PS:这两次为什么都把相关官网放到前面呢?因为每次大家都会在后台找我要XX接口的协议文档,所以后面我会先把相关官网放到前面,上面下载文档不仅免费,主要是权威和“新鲜”。

1、mipi_csi_receiver_FPGA

https://github.com/circuitval...

这个是一个完整的项目了,实现了一个UVC摄像头,IMX219(索尼)摄像头(MIPI)进入FPGA通过FX3(USB PHY)出去,实现整个数据流,需要IP的自己可以提取,唯一的缺点是使用了Lattice平台去雁阵(不能算是缺点,只是国内用户较少),但是该项目未使用任何 针对FPGA 的IP,纯HDL,因此可以轻松移植到任何 FPGA上(资源够的情况)。
image.png

项目简介

此项目包含用于通用 FPGA CSI 接收器的硬件、Verilog 源码和 USB3.0 视频设备类 (UVC) 控制器 C语言 源码(固件),该项目未使用任何 针对FPGA 的IP,纯HDL,因此可以轻松移植到任何 FPGA上(资源够的情况)。

支持帧率从 15 到 1000 FPS,分辨率从 640x80 到  8M 3280x2464。

1080p 60FPS 时的最大数据速率约为 2Gbps。

通过 UVC 控制帧速率和分辨率。手动曝光和手动亮度控制, 饱和度控制。还可以使用映射伽马控制启用测试图案。

目前测试完成的案例:

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 端进行改进以实现自动曝光、亮度和白平衡校正。
image.png
PS:链接中有视频演示

下面的项目与此类似就不展开介绍了:

https://github.com/circuitval...
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 : 任意宽度的格雷码

演示

image.png

3、MIPI_RX_ST

https://github.com/vidor-libraries/MIPI_RX_ST

该项目包含一个MIPI_RX_ST IP核,端口描述如下:
image.png

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。

image.png
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 设备的应用程序.
image.png

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

image.png
百度大脑升级版

image.png

SEA-S7

这款开发板完全开源,源码,MIPI接口使用电阻网络,可以作为参考原理图。

image.png

https://github.com/For-up/SEA-S7Guess

米尔 百度大脑&ISP处理平台

image.png
image.png

官方板卡

1、 MAX10(10M50DAF484C6G FPGA Arrow)
image.png

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

百度网盘:
链接:https://pan.baidu.com/s/1ShkmpRIY9JDZI_3ImA-iSA 提取码:open

原文:OpenFPGA
作者:碎碎思

相关文章推荐

推荐阅读
关注数
10605
内容数
562
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息