当前位置: 首页 > news >正文

【学习笔记】MIPI

MIPI介绍

MIPI是由ARM、Nokia、ST、IT等公司成立的一个联盟,旨在把手机内部的接口如存储接口,显示接口,射频/基带接口等标准化,减少兼容性问题并简化设计。

MIPI联盟通过不同的工作组,分别定义一系列手机内部的接口标准,如摄像头接口CSI、显示接口DSI、射频接口Dig RF等。统一接口标准可以使芯片和模组的选择更灵活便捷。

MIPI结构分为物理层、协议层和应用层。

应用层有摄像头CSI接口、显示屏DSI接口和基带和射频间Dig RF接口。

物理层分为DPHY、CPHY、MPHY,CSI-2协议支持使用D-PHY,也可用C-PHY。CSI-3只可使用M-PHY为物理层。目前车载行业主要使用DPHY,下图为DPHY与CPHY各版本接口与速率信息。

MIPI D-PHY
D-PHY接口一般是1/2/4 Lane,每个Lane走差分线对,是电流驱动型,单信号幅度一般是200mv,线对差分的幅度在400mv左右,布线要求是等长且成双成对;

MIPI C-PHY
C-PHY接口是1/2/3 Trio,每个Trio走3根线,最高是9根线,比D-PHY要少一根,是电压驱动型,由于是两两相差,信号幅度绝对值分别是0、100、200mv,信号较弱,不利于传输,但要传输的数据量大一些,

在同样是2.5G的速率下,C-PHY可以达到17.1G,而D-PHY只有10G;

C-PHY没有单独的同步信号线(时钟嵌入在数据信号中,这样做的目的是为了增加传输带宽,但是也引入了编码技术等),必须要求传输距离短,不能走差分线对。

MIPI D-PHY v1.2:

    目前主流SERDES芯片及SOC均使用MIPI D-PHY v1.2版本接口

    规格书中前部分章节大篇幅论述了D-PHY的几种内部实现结构,D-PHY采用的是非对称主从结构,即一个lane通道中同一时刻必须存在一个主,一个从。并根据以上传输方向性,定义了前向通道和反向通道,前向通道的数据速率与反向通道的的操作命令速率是不对称的。因此DPHY的非对称设计大大降低了链路的复杂性。适用于具有不对称数据量需求的应用程序,或单独设计反向通道的成本太高时。

MIPI主端与从端描述
    D-PHY提供了主从之间的同步连接。一个实际的PHY配置由一对时钟差分信号(CLK_N/CLK_P)和一个或多个数据差分信号(DATA_N/DATA_P)组成。时钟信号是单向的,主发从收。数据信号可以是单向的,也可以是双向的,取决于所选的选项。对于半双工工作,反向带宽为正向带宽的1/4。数据的通信方向可以通过命令控制。

MIPI D-PHY v1.2 架构图
D-PHY支持高速和低功耗模式。低功耗模式可用于低速异步数据通信,包含控制模式(Control Mode)、低功耗数据传输模式(LPDT)和极低功耗模式(ULPS),高速模式用于传输有效数据。结合DPHY可支持半双工的特性,就衍生出了具有不同功能的lane属性,而集成不同lane的集合,就构成了不同的D-PHY结构,lane的差异主要体现在如下几点:

单端通信与双向通信区别
1.纯单端通信或双向通信,纯单端是不需要LP-CD模块的。

2.双端通信又可分为仅支持低功耗双端和高速低功耗模式均可双端的情况。(低功耗双端模式可以分为是否进行低功耗数据传输LPDT)

    针对具有以上不同lane的D-PHY结构,就需要具有不同功能的CIL(Control and Interface Logic)模块来协同处理数据传输,其CIL后缀首字母缩写含义可参看以下表格。


DATA LANE

下面这张图说明了高速信号和低功耗信号的MIPI差分信号电压摆幅情况。


    由于MIPI是差分信号,因此通过高低电平的组合,每对差分线应该有4种状态,但由于高速模式下差分电压仅为200mV,因此高速模式下只差分电压仅有P正N负与P负N正两种状态,因此lane状态则共有如下表所示的六种状态。一对lane中的正信号线为Dp,负信号线为Dn。


    MIPI通信的所有操作模式、控制指令及数据传输都是基于以上六种lane的状态,分别有三种操作模式:控制模式、高速模式及Escape模式。控制指令包括高速数据传输 (LP-11, LP-01, LP-00)、Escape模式请求 (LP-11, 415 LP-10, LP-00, LP-01, LP-00) 、和传输方向切换请求 (LP-11, LP-10, LP-00, LP-10, LP-00)等。控制模式及Escape模式工作于LP电平,高速模式工作于HS电平。

    高速模式及Escape模式可以在控制模式下通过不同LP指令搭配开始或结束。由于从低速模式到高速模式存在数据传输量的突然增大,因此在进入高速数据传输前数据通道的前后存在一些状态用于进行时钟线与数据线的同步。

    High-Speed Data Transmission:

    举个例子:数据传输启动与终止时序:


当需要发送数据时,DATA线通过一段SOT指令离开停止状态并开始数据传输。

在一段数据传输结束后,DATA线通过一段EOT指令离开高速传输模式并进入停止状态。


    上图表示了一段数据需要传输时及传输前后的SOT/EOT时序。当存在多对DATA LANE时,每对LANE都可以独立的通过请求来发送数据,但大多数应用,LANE都是同步启动,但因为每条LANE传输的字节数不同,因此结束的时间不同。

    Bi-directional Data Lane Turnaround:

    对于双端数据传输模式,传输方向转换指令Turnaround所需的命令时序在手册中也有说明。

    Escape mode:

    Escape Mode指令是用来给MIPI提供一些额外功能处理能力的LP指令,前向通道下默认支持该功能,反向通道可选,可以通过与高速数据传输类似的指令进入Escape mode(LP-11, LP-10, LP-00, LP-01, LP-00)。进入该模式后Tx端可通过一个8位输入命令来指示所请求的操作。下表列出了当前所有可用的Escape模式命令和操作。


    该模式下为异步通信,使用一种名为spaced-one-hot的编码,该模式下DATA线上的数据传输不依赖CLK,且无法在Esape mode操作期间退出。

    spaced-one-hot编码的每个符号由一个one hot和一个spaced位组成,one hot包括Mark0(等于LP01)和Mark1(等于LP10),spaced相当于LP00,以Trigger-Reset Command为例一段完整的Escape Mode操作如下图所示:


    从图中可以看出,退出Escape Mode模式必须通过Mark1并停留在LP11状态。

    在Escape Mode指令中可以看到,LPDT数据传输和ULPS也是通过该模式进入。在LPDT模式下的数据传输仍然要按照spaced-one-hot编码的命令来传输,数据传输过程中可以通过保持一段SPACE状态(LP00)来进行暂停,同样可以使用MARK1(LP10)接LP11停止状态来推出到控制模式。LPDT模式下的数据传输频率<20MHz,主要用于低功耗数据传输。

CLK LANE

    MIPI的CLK LANE为双边沿采样的单端信号,所以无论MIPI_DATA传输方向是正向还是反向,CLK时钟信号都为主端发送。且由于是单端信号,因此CLK LANE不支持Esape mode,仅能通过特殊的LP-Rqst指令进入ULPS状态。

    只有当CLK LANE以及工作在HS模式时,才可以进行高速数据传输,同理,只有在所有的DATA LANE上都没有数据传输后,CLK LANE才可以推出HS模式,下面为CLK LANE开启和停止数据传输的时序图和具体指令:

结合上述时序图中CLK LANE的状态依次为:

1、CLK LANE处于交错高速信号HS-0和HS-1的状态,DATA LANE开始执行EOT程序;

2、最后一个DATA LANE完成EOT程序并进入LP11状态,CLK在此时仍然保持HS模式并允许一段时间Tclk-post;

3、CLK LANE最后以HS-0状态结束并维持一段时间Tclk-trail;

4、CLK LANE切换HS-TX驱动模块至LP-TX驱动模块,并驱动LP-11状态,保持Ths-exit时长。至此即进入了LP模式;

5、CLK LANE在保持LP11一段时间后驱动HS-Req状态(LP01)并保持一段时间Tlpx;

6、驱动Bridge state状态(LP-01),并维持一段时间Tclk-prepare;

7、CLK LANE切换LP-TX驱动模块至HS-TX驱动模块,并保持HS0一段时间clk-zero;

8、CLK LANE保持HS模式一段时间Tclk-pre后。Data Lane也开始启动SOT切换程序,随后开始HS数据传输。

以上所有时序中的时间要求,均可在MIPI D-PHY标准或SERDES手册中查到。

Initialization

    MIPI-PHY初始化时需分为主端初始化和从端初始化,从端将会在主端PHY保持一个Stop State(LP11)状态超过Tinit时间后进行初始化。

    主端初始化则需要一个系统或协议的指令(System or Protocol input signal)指令进行。在主端初始化之前,需要保证线上不会出现超过Tinit时长的LP11状态,以防止从端比主端先进行初始化。在初始化之前,从端应忽略线束上的所有状态,且当MIPI使用多路LANE时,所有LANE的初始化应同时进行。

    Tinit的时间长度取决于协议层规定,因此不在PHY标准讨论范围之内,且Tinit Master与Tinit Slave可以为两个不同的值,但D-PHY规定了Tinit的最小值不可短于100us。

Calibration

    Calibration为MIPI D-PHY v1.2新增功能,用于HS-Deskew校准,该校准允许MIPI速率从1.5Gbps/Lane提升到了2.5Gbps/Lane。HS-Deskew主要分为初始化校准Initial Deskew和周期性校准Periodic Deskew。

    对于任何支持1.5Gbps速率的设备,当传输速率高于1.5Gbps或速率改变为1.5Gbps以上的任何速率时,在开始HS传输之前接收端都需要通过一段发送端发送的DESKEW完成校准。Deskew主要用于消除时钟和数据Lane之间可能存在的相位差。如果传输速率低于或等于1.5Gbps时,初始化校准是可选的。周期性校准与传输速率无关,任何速率都可以选择开或不开。此外,还可以进行周期性的deskew,当然这也是可选的。当仅仅是传输状态发送变化时,例如从任何低速率模式变为HS模式,HS-Deskew都是可选的,只要HS传输的速率在之前已经进行过校准。

    从下图可以看出校准时序与普通SOT时序的不同,主要区别在SOT程序完成HS驱动并保持HS-0一段时间THS-ZERO后,校准模式会先保持一段HS Skew-Calibration SYNC(1111111……)总长为16UI,然后开始进行DeSkew校准TSKEWCAL(01010101010101),校准周期可选,初始化校准为32kUI-8*32kUI,周期性校准为1kUI-8kUI。而普通模式则是进行一段THS-SYNC(00011101)后就开始数据传输。

Normal Mode vs Skew Calibration
    上述为DESKEW校准的启动时序,接收端若检测到该启动时序则会启动校准,校准的周期由发送端控制,校准周期结束后,发射端会保持THS-TRAIL一段时间并退出HS模式。DESKEW的SOT时序与EOT时序详细描述不再赘述。另外,手册中对于DeSkew校准TSKEWCAL的最长时间也有要求,初始化校准应小于100us,周期性校准应小于10us,这也是手册中初始化校准和周期性校准DESKEW周期最长分别为8*32kUI和8kUI的原因。

 https://www.bilibili.com/read/cv22362354/ 出处:bilibili

相关文章:

  • Linux驱动开发(速记版)--平台总线
  • Java NIO 全面详解:掌握 `Path` 和 `Files` 的一切
  • C语言 | Leetcode C语言题解之第435题无重叠区间
  • go语言 常用的web框架
  • MySQL优化相关(持续积累...)
  • 电影票接口api对接有哪些优势?
  • 无源码实现免登录功能
  • 如何用ChatGPT制作一款手机游戏应用
  • 10.1 刷题
  • 大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
  • unity一键注释日志和反注释日志
  • Linux启动mysql报错
  • 字符和Ascll码表
  • android compose ScrollableTabRow indicator 指示器设置宽度
  • uni-app #ifdef #ifndef #endif的使用和区别
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • docker python 配置
  • express.js的介绍及使用
  • JWT究竟是什么呢?
  • oldjun 检测网站的经验
  • Vue2.0 实现互斥
  • 从PHP迁移至Golang - 基础篇
  • 大型网站性能监测、分析与优化常见问题QA
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于遗传算法的优化问题求解
  • 由插件封装引出的一丢丢思考
  • 栈实现走出迷宫(C++)
  • 最简单的无缝轮播
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​比特币大跌的 2 个原因
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #微信小程序(布局、渲染层基础知识)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)Nginx简介和安装教程
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)球球大作战
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (回溯) LeetCode 40. 组合总和II
  • (十)T检验-第一部分
  • (四)事件系统
  • (源码分析)springsecurity认证授权
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Sql Server 保留几位小数的两种做法
  • (转)winform之ListView
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • . Flume面试题
  • .NET WPF 抖动动画
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net中的Queue和Stack
  • @ModelAttribute 注解