关于MIPI协议(一)——物理层D-PHY总结

关于MIPI协议(一)——物理层D-PHY总结关于移动端mipi协议的一些总结

大家好,又见面了,我是你们的朋友全栈君。

关于MIPI协议(一)——物理层D-PHY总结

通读了一下MIPI物理层D-PHY的规格书,拿掉了规格书中一些冗余繁复的部分,留下了一些比较重要的内容,现总结如下:

规格书中前部分章节大篇幅论述了D-PHY的几种内部实现结构,D-PHY采用的是非对称主从结构,即一个lane通道中同一时刻必须存在一个主,一个从。并根据以上传输方向性,定义了前向通道和反向通道。
 
  关于MIPI协议(一)——物理层D-PHY总结

关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
 
又由于D-PHY支持高速和低功耗模式,结合其lane可支持半双工的特性,就衍生出了具有不同功能的lane属性,而集成不同lane的集合,就构成了不同的D-PHY结构,lane的差异主要体现在如下几点:
关于MIPI协议(一)——物理层D-PHY总结
 
1. 首先纯单端是不需要LP-CD模块的。
2. 而双端又可以分为仅支持低功耗双端和高速低功耗模式均可双端的情况。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
针对具有以上不同lane的D-PHY结构,就需要具有不同功能的CIL(Control and Interface Logic)模块来协同处理数据传输,其CIL后缀首字母缩写含义可参看以下表格。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
下面这张图说明了高速信号和低功耗信号的MIPI差分信号电压摆幅情况。
关于MIPI协议(一)——物理层D-PHY总结
 
由于MIPI是差分信号,即一条lane由两条线组成,因此通过高低电平的组合,这两条线应该有4种状态,但图中可以很明显看到高速信号摆幅仅为200mV,因此为了确保传输稳定,高速时我们认为信号只有两种状态,即互为高低压交错的两种状态,因此lane状态则共有如下表所示的六种状态。一对lane中的正信号线为Dp-Line,负信号线为Dn-Line.
 关于MIPI协议(一)——物理层D-PHY总结
知道了lane的这六种状态接下来,我们可以利用低功耗的状态来组合我们开启高速传输等的指令序列了,如下表所示:关于MIPI协议(一)——物理层D-PHY总结
 关于MIPI协议(一)——物理层D-PHY总结
 
我们启动高速传输的SOT指令,使用的就是如上的(LP-11=>LP-01=>LP-00=>HS-0[持续Ths-zero时间]=>发送HS同步序列“00011101”)序列。SOT接收器状态检索过程不再赘述,请自行读表。结束传输的EOT序列比较简单,也请自行读表。
关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
 
从以上时序图,我们能清楚的看到SOT和EOT各状态切换的顺序,以及所需的时间。

接下拉我们看看双端数据lane,传输方向调换指令Turnaround.从以下表格和时序图可以清楚的看到各LP state切换的时序,所以也不赘述了。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
 
这里唯一想提一下的是,注意如上时序图中,在一个相对较长的LP-00状态中,存在一个drive overlap的主从控制权交换过程。执行完这条指令,我们并没有转换主从关系,但是我们转换了传输方向,在前向通道至反向通道及反向通道至前向通道间,进行了切换。

接下来我们再看看Escape Mode指令,首先,这条指令是用来做什么的呢,它是用来给MIPI提供一些额外功能处理能力的LP指令,且值得注意的一点是,与前面不同,它是一条基于空间独热(Space-One-Hot) 位编码的异步指令,由于是异步指令,因此Data lane在操作这条指令时,并不依赖于Clk Lane。进入Escape Mode的引导步骤码序为LP-11=>LP10=>LP00=>LP01=>LP00.此外,因为是拿来指定一些功能,因此不同编码就具有不同的意义,这里我们先从下表看看它所具有的一些功能码。
 关于MIPI协议(一)——物理层D-PHY总结
这里我们以上表中的Reset-Trigger指令为例,分析一下如下时序图,首先我们在时序图前半部分发现了进入Escape Mode的引导码LP-11=>LP10=>LP00=>LP01=>LP00。接下来我们来看看这个所谓的空间独热编码(Space-One-Hot) ,我们发现它占用两个LP状态的时间来表示一位数据,这里小编我以一种等价的方式来评价这种空间独热编码,注意,实际其定义不是这样的。我们发现它的0位,等价于用LP-01=>LP00表示,它的1位等价于用LP-10=>LP00表示,你也可以认为0位和1位的Dp和Dn状态是互相交错的。此外,从图中我们发现它还有一个显著的特点,就是在发送Space-One-Hot编码过程中,Dp和Dn线异或刚好是以一个LP状态周期Tlpx为周期的时钟,因此这个特性可以用来做校验,不符合Space-One-Hot特性的数据信号将被丢弃。然后小编我在表后在附上关于Space-One-Hot官方给出的解释。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
官方还指出在退出Escape-Mode时,必须停留在Mark-1状态,这里等价于LP10状态。

从上面的Escape Mode的功能码中发现,它是可以用来触发Low-Power Data Transmission(LPDT)的,但传输的数据仍然要遵循Space-One-Hot的异步传输规则。保持一个LP00(官方称为Space)状态,可以用来暂停数据传输。老规矩仍然上一张图给读者分析。
 关于MIPI协议(一)——物理层D-PHY总结
Escape Mode的功能码中的Ultra-Low Power指令比较简单,这里读者自己看看官方解释就好。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结

官方文档中,关于Data Lane的说明到此就基本结束了。
接下来我们看看Clk Lane,首先Clk Lane是单端的,常规的Escape Mode指令也不支持,仅支持ULPS指令。
 关于MIPI协议(一)——物理层D-PHY总结
接下来结合上面的时序图和下面的表格,我们来分析一下Clk Lane在切换高速和低功耗模式时的步骤,首先是进入低功耗模式的步骤如下:
1. Clk lane处于交错高速信号HS-0和HS-1的状态
2. 最后一个数据通道也进入低功耗状态了
3. Clk lane在以上状况下依然保持高速时钟状态一段时间,时间长度为Tclk-post,并最后以HS-0状态结束
4. 保持HS-0状态Tclk-trail时间
5. 开始切换HS-TX模块至LP-TX模块,并驱动LP-11状态,保持Ths-exit时长。至此即进入了LP模式。
接下来我们看看如何退出LP模式进入高速模式:
1. LP-TX模块驱动停止状态LP-11
2. 驱动LP-01状态,并维持Tlpx时长
3. 驱动LP-00状态,并维持Tclk-prepare时长
4. 驱动HS-0状态,并维持Tclk-zero时长,并在这段时间内同步完成LP-TX到HS-TX的模块切换。
5. 在任一条Data Lane启动前,保持高速时钟状态Tclk-pre时长。接下来Data Lane也开始启动切换,切换步骤结合前述说明理解。
 关于MIPI协议(一)——物理层D-PHY总结关于MIPI协议(一)——物理层D-PHY总结
 
注意Clk Lane虽然不支持Escape Mode,但是是支持Ultra-Low Power状态(ULPS)的,由于比较简单这里小编也只贴一张图,读者自己理解了。
 关于MIPI协议(一)——物理层D-PHY总结
接下来规格书中总结了以上LP状态机切换的步骤,同时讲解了MIPI的lane初始化的过程、错误侦测的内容,以及进一步讲解了MIPI的一些电气特性和信号衰减增益相关的内容,小编这里不关心这些内容,若读者关心,请自行去阅读了。

下一篇中小编我打算以一种载荷格式传输为实例,详细探讨一下行场有效时间和总时间的估算方法,以便进一步探讨一些MIPI传输方案在接收器上的时钟参数选取方法。

 
 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138807.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ManagementObjectSearcher的使用「建议收藏」

    ManagementObjectSearcher的使用「建议收藏」1.获取本地路径的网络访问地址privateIEnumerable<KeyValuePair<string,string>>GetShareFolders(){va

    2022年7月4日
    53
  • DBeaver – 一款免费开源的通用数据库工具

    DBeaver – 一款免费开源的通用数据库工具DBeaver是一款免费开源的通用数据库管理和开发工具。DBeaver基于Java开发,可以运行在各种操作系统上。通过JDBC连接到数据库,它可以支持几乎所有的数据库产品。还等什么,下载使用吧!

    2022年7月24日
    7
  • 微服务架构-实现技术之具体实现工具与框架3:Spring Cloud概述和基本讲解

    微服务架构-实现技术之具体实现工具与框架3:Spring Cloud概述和基本讲解目录一、基本定义二、SpringCloud相关组件成员框架SpringCloudEurekaSpringCloudRibbonSpringCloudFeignSpringCloudHytrixSpringCloudZuulSpringCloudGatewaySpringCloudConfigSpringCloudAdmin…

    2022年4月29日
    34
  • 手机gif录屏软件_手机录制gif软件

    手机gif录屏软件_手机录制gif软件gif录屏手机app是一款免费专业的视频剪辑制作软件,下载gif录屏apk支持GIF动画录屏以及MP4视频录屏,通过手机录屏GIF制作软件,一键轻松进行视频编辑、视频压缩和视频拼接。软件介绍gif录屏app是一款完全免费的专业高清流畅的录屏软件,支持GIF动画录屏以及MP4视频录屏。功能强大,操作简单,用户可以轻松录屏,录屏生成GIF回味用户自动生成GIF文件;将屏幕录制到动画文件.GIF,一边录…

    2022年9月20日
    2
  • 链表经典算法

    链表经典算法

    2021年8月20日
    56
  • 学习:imfill[通俗易懂]

    学习:imfill[通俗易懂]Matlab函数imfill简介  函数功能:该函数用于填充图像区域和“空洞”。  语法格式:  BW2=imfill(BW)  这种格式将一张二值图像显示在屏幕上,允许用户使用鼠标在图像上点几个点,这几个点围成的区域即要填充的区域。要以这种交互方式操作,BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键

    2022年9月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号