MIPI DPHY接口的若干种实现方案概述-程序员宅基地

技术标签: FPGA  ZYNQ  CSI  xilinx随笔  MIPI DPHY  DSI  

一、MIPI DPHY接口简介

       MIPI  DPHY是MIPI的一种物理层,其协议层有CSI和DSI两种,其中CSI主要用于图像接入,如图像传感器Sensor;DSI主要用于图像输出,如手机屏幕等。

        有关MIPI DPHY及CSI和DSI的技术背景可以Google,技术细节也可以参阅对应的标准文档(标准可扫描二维码添加公众号或QQ群获取)。这里主要介绍以下几个关键点:

    (1)MIPI DPHY的是源同步系统,由发送端输出时钟;

    (2)MIPI DPHY分为低速(LP)和全速(HS)两种传输状态,其中低速模式下不强制要求输出时钟且电平标准不一样;

    (3)MIPI DPHY在LP状态下输出电平是LVCMOS 1.2V,在HS状态输出电平为SLVS。

      MIPI DPHY物理层的以上三个关键的特性,就意味着实现它具有一定特殊性,下面就实现方案一一道来。

二、MIPI DPHY RX实现

        DPHY RX包括CSI和DSI两种协议。MIPI CSI常用于图像传感器Sensor接入(实际上几乎所有的消费级CMOS Sensor的输出接口都是MIPI),其中最广泛的要数手机摄像头了。MIPI DSI主要用于显示,其中手机屏幕、PAD之类的消费级产品几乎都是,其中DSI的RX一般是在屏端,有专门的ASIC直接实现或转成LVDS,这样的芯片有ICN6201、ZA7783、SSD2130、SSD2212等专门芯片,这里不展开介绍。主要是对MIPI DPHY CSI接收的几种实现方案展开说明。

   1)实现方案一

        采用带MIPI DPHY RX)接口的专门处理器(SoC)。这方面手机就是典型的例子,无论是高通、华为还是三星,它的手机SoC一定支持MIPI DPHY接口,最新的还支持CPHY(一种内嵌时钟的3线/Tri的传输方式)。使用专门处理的实现方式咱们不细说了,这个地球人都了解。

   2)实现方案二

        采用专门的接口转换芯片。对不能直接支持MIPI DPHY接口的处理平台又必须接入MIPI的,往往会考虑采用专门的接口转换芯片,如TOSHIBA的TC358746AXBG和TC358748XBG系列,前者实现从MIPI CSI到24bit并行数据的转换,后者实现24bit并行数据到MIPI CSI的转换。这样,接口的实现方案就变成如下图1所示了。

                                                                       图1  MIPI CSI和并口互转方案示例

    3)实现方案三

     使用FPGA在很多情况下,需要FPGA来实现一些定制化的需求。使用FPGA的方案,大约归纳起来有三种:

     a)采用带支持MIPI_DPHY_DCI IO standard的通用FPGA

      目前熊猫君了解到的可以直接支持MIPI_DPHY_DCI电平标准的FPGA仅有Xilinx的UltraScale系列和UltraScale+系列的直接支持(HP BANK Only),IO结构如图2。不过呢,这两个系列的FPGA是Xilinx的最新的高端器件架构,价格可是不菲。

 

                                                       

                                                                            图2 UltraScale(+) MIPI DPHY DCI IO结构

      b)采用低成本专用FPGA

      说起专用MIPI接口FPGA,Lattice应该是典范,他们家有一个专门的CrossLink系列支持MIPI DPHY CSI和DSI,请看下表1。

                                                                                 表1 Lattice CrossLink系列器件列表

       从表1可以看出,该系列FPGA的逻辑量均为5936个LUT,支持1~2个4Lane MIPI通道,小封装低功耗,非常适合做MIPI到并口之间或MIPI到LVDS之间的接口转换,实现思路如图3所示。

                                                                                  图3 CrossLink器件实现架构

       c)电平转换LVDS后接入FPGA

       FPGA接入的第三种方法就是通过将SLVS电平转换到LVDS接入FPGA,这种方案不挑FPGA,只要支持LVDS且IO速率够,逻辑量够用就行。针对不同的速率,一般有两种做法:

       第一种做法:采用电阻网络进行电平转换。

       这种方法主要针对单Lane通道速率在800Mbps以下的情况,电阻匹配网络的设计如下图4所示。

                                                                   图4 MIPI DPHY电阻匹配网络接收方案

      第二种做法:使用专门ASSP芯片转换到LVDS。

      使用专门ASSP进行转换主要针对单Lane速率在800Mbps以上的情况,目的是为了确保信号完整性,确保在高速率下的眼图质量。当然,这种方法也不挑FPGA,用哪家的都行,只要支持LVDS且IO速率够,逻辑量够用就可以了。国外有一家公司专门做这种MIPI DPHY转LVDS的ASSP芯片(MC20001),实现方案如下图5所示,这种方案可以支持到2Gbps/Lane速率以上,只要FPGA的IO速率够用。

                                                                   图5 使用MC20001转换ASSP接收方案

      以上就是对MIPI CSI几种实现办法的简单总结。

三、MIPI DPHY TX实现

       MIPI DPHY TX实现方案跟MIPI DPHY RX一样,也是分成三大类:①采用带MIPI DPHY TX)接口的专门处理器(SoC)、②采用专门的接口转换芯片、③使用FPGA。第①项不再赘述,仅就②③项与MIPI DPHY RX的实现差异部分做描述。

     (1)采用专门的接口转换芯片

       MIPI DPHY TX专门的并口(DPI)转MIPI的片子很多,比如支持DSI协议的有晶门科技,就是专门从事此类显示相关桥片的设计(如SSD2828);还有前面提到的TOSHIBA,也提供并口到MIPI CSI的互转。

      (2)使用FPGA

      使用FPGA还是三种种选择,一种是使用支持MIPI DPHY标准的UltraScale(+)器件,一种是使用Lattie的专用CrossLink系列器件(参照前文),一种是使用通用FPGA。使用通用FPGA也是一样,可以使用电阻网络进行电平的转换或使用专用的ASSP芯片,对速率适配的条件也是一样,下图6是使用通用FPGA的实现方案。

                                                                 图6 使用通用FPGA实现MIPI DPHY TX方案。

        以上是对实现MIPI DPHY的若干种方案描述,希望能对有需求的同行们起到抛转引玉的作用,其中有不对之处,请不吝赐教。另外,博主可提供MIPI接口相关的图像传感器输入采集和液晶屏显示输出的全套软硬件方案和技术服务,有关技术方面的探讨,欢迎加入QQ群或微信公众号讨论交流。

                                   

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haoxingheng/article/details/100036493

智能推荐

初学Java第十五天-程序员宅基地

文章浏览阅读344次。笔记:1. 多态: - 意义: - 同一个对象被造型为不同的类型时,有不同的功能 ---对象多态:我、你、水-------------------所有对象都是多态的(明天再详细讨论) - 同一类型的引用指向不同的对象时,有不同的实现 ---行为多态:cut(),move(),getImage()......---------所有抽象方法都是多态的 - 向上造型: - 超类型的引用指向派生类的对象 - 能点出来什...

c语言学习01:认识c语言-程序员宅基地

文章浏览阅读891次,点赞18次,收藏29次。c语言学习01:认识c语言

A Ship Detector Applying Principal Component Analysis to the Polarimetric Notch Filter_gp-pnf-程序员宅基地

文章浏览阅读525次。当我们的目标是在波涛汹涌的海况中探测较小的船只时,这种增强特别有价值。这项工作使用了一种名为几何摄动-极化陷波(GP-PNF)的舰船探测器,其目的是改善其性能,特别是在可获得的极化图像较少的情况下(例如,双极化数据)。这个想法是设计一个新的极化特征向量,包含更多的特征,这些特征被认为是允许船只和海杂波分离的。然后利用主成分分析(PCA)对新特征空间进行降维。_gp-pnf

【人脸检测 FPS 1000+】ubuntu下libfacedetection tensorrt部署_人脸检测 tensorrt-程序员宅基地

文章浏览阅读580次,点赞25次,收藏24次。【FPS 1000+】ubuntu下libfacedetection人脸检测 tensorrt加速部署_人脸检测 tensorrt

官方STM32F107_ETH_LwIP_V1.0.0开发包移植笔记_stm32f107 lwip 直连-程序员宅基地

文章浏览阅读1.2k次。一、LwIP移植记录lwip-1.4.1\src\core\ipv4\icmp.c 注释掉:#if CHECKSUM_GEN_ICMP新增加:#ifdef CHECKSUM_BY_HARDWARE代码如下://#if CHECKSUM_GEN_ICMP// /* adjust the checksum */// if (iecho->chksum..._stm32f107 lwip 直连

Java开发笔记(十四)几种运算符的优先级顺序_大于小于和等于的优先级-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏7次。到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符、赋值运算符、逻辑运算符、关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术、逻辑、关系等运算,最后才进行赋值操作。也就是说,在这四类运算符当中,赋值运算符的优先级最低,那么其他三种运算符的优先级顺序又是如何排列的呢?首先来看算术运算符,Java中的算术运算符主要包括正号负号、加减乘除,以及取余数..._大于小于和等于的优先级

随便推点

Nginx+Tomcat负载均衡(反向代理)、动静分离集群_nginx tomcat 反向代理负载均衡-程序员宅基地

文章浏览阅读808次。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash。基于用户请求的uri做hash。[在这里插入图片描述](https://img-blog.csdnimg.cn/cb5b2fd0e902423897c1b729c66349d1.png)_nginx tomcat 反向代理负载均衡

谈谈Java集合ArrayList扩容,Java面试题集2024版-程序员宅基地

文章浏览阅读845次,点赞27次,收藏8次。***构造包含指定collection元素的列表,这些元素利用该集合的迭代器按顺序返回*如果指定的集合为null,throws NullPointerException。*/= 0) {} else {下面在我们分析 ArrayList 扩容时会降到这一点内容!二 一步一步分析 ArrayList 扩容机制这里以无参构造函数创建的 ArrayList 为例分析。

Mysql数据库之全文索引 FULLTEXT_mysql fulltext索引-程序员宅基地

文章浏览阅读392次,点赞6次,收藏6次。1、话说mysql innodb在5.6.4以后就有了fulltext全文索引。_mysql fulltext索引

JAVA四舍五入方法_string.format 四舍五入-程序员宅基地

文章浏览阅读1.5k次。JAVA中四舍五入方法_string.format 四舍五入

struts2是什么,有什么作用,怎么使用,有什么好处?_1、什么是struts2框架,它的作用是什么?-程序员宅基地

文章浏览阅读609次。注:参考文章:https://blog.csdn.net/qq_36754544/article/details/55062391struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。同时struts2也是一个web层的MVC框架,那么什么是struts2中的MVC呢?我们可以联想一下struts2的使用流程,我们需要先通过过滤器,调用URL判断使用哪个Action,再由Action决定返回结果,继而 提交..._1、什么是struts2框架,它的作用是什么?

【Matplotlib设置】Python绘图全局字体改为 Times New Roman_python画图调整字体为times-程序员宅基地

文章浏览阅读1w次,点赞16次,收藏14次。import matplotlib.pyplot as pltplt.rc('font',family='Times New Roman') 注意一定要在导入包之后就设置这个代码,否则可能不显示。参考文献[1]matplotlib 全局字体改为 Times New Roman_python画图调整字体为times