• DSI及DPHY的学习知识点


    0.DPHY可以传输DSI和CSI信号

    在CSI-2 V1.2及以前都只能用DPHY传输csi数据。

    1.DPHY的输出差分clk是双沿有效

            所以DDRCLKHs_I/Q 频率是ByteCLKHS的4倍。ByteclkHs频率是bitrate的1/8.【这里的bitRate是单条active lane上的bitRate,多条activeLane的bitRate相等】但是这些频率和pixclk的关系是不确定的,因为burst传输下,保证所有差分线上bitrate之和大于pixclk domian的bitrate就行。

            ByteClkHS保证了进入每条lane上的TxDataHS[7:0]都是一拍8bit连续的,ByteclkHs和lane num没有直接的关系,但lane越多,ByteClkHs的最小值就越小。

            ByteclkHS另外的一个错误理解是,对pix stream处理成Byte stream,然后这一路Byte stream的clk,这实际是错误的,在controller中从pixclk到ByteclkHs转换的过程中,不会把pix stream转为一路byte stream【除非就支持一条lane】。如果系统最多支持4条dataLane,这个转换接口输出一拍32bit,如果实际配置只支持2dataLane,可以降低byteClkHs或者让PPI接口通过TxReadyHS给controller反压。

            ByteClkHS只有在non-burst传输的时候才需要根据lane Num和pixclk及VC准确计算。

            对ByteClkHs的理解同样适用与csi-CPHY的wordclk和symbolclk

    2.LP和Escape这些低功耗传输是单端的

            差分是两根线上电压在均值上下对称摆动,任意时刻两根线上电压都是相对均值电压对称的,设均值电压为V,则两根线上电压是V+Vswing/2和V-Vswing/2.

            单端就是线上电压只和地线做参考,线与线之间的电压没有关系。LP和Escape 低功耗模式下,Dp和Dn各自以0和1.2V电压传输数据。

            LP state但也不是Escape mode的情况下【即Control Mode】,主要是传输一些LP的状态或序列来控制PHY是在stop状态还是进入其他状态。比如说data-lane通过LP-11,LP-10,LP-00,LP-01,LP-00序列进入Escape mode。这种情况下clk lane是没有是时钟的。每一个LP 状态都会有一定的持续时间,所以rx端在一定时间内检测到LP电平变化就行,不需要clk。

           clk lane处于Esc的LP-00 space状态还是Control Mode的stop state LP-11?

            这个要根据protocol对clk lane的配置,如果只是进入LP而不进入ULPS,则clklane为LP-11.要求进入ULPS就是LP_00

            Escape mode 所有传输都是用spaced-ont-hot(间隔独热码)编码,是不需要时钟的异步传输,只是需要用Dp ^ Dn来获得EscClk时钟。

    3.LP-Contention Detection (竞争检测)

            如果两个PHY都是双向时,为了防止两端的PHY同时驱动总线而发生冲突,协议要求PHY必须支持contention detection模块,简称CD模块

            CD检测只在LP且非ulps时使用。HS不用是因为都是从LP进入HS的。

    4.双向data-lane,可以选择只支持双向HS或Escape

            很多情况下,为了成本考虑,没必要支持反向的HS传输,也没有太多这样的场景。此时就只支持反向的Esc

    5.传输数据和命令只能在HS和Esc的LPDT

    6.正向Esc必须支持ULPS和Triggers

    7.ULPS是什么样的状态

            首先ULPS是控制TX/RX的PHY及protocol的clk和power状态吗?此时差分线是不是可以下电?

            ULPS状态且ulpsActiveNot=0时,TX protocl layer可以关闭TxClkEsc【注意和clkLane状态不是一回事】。对应Rx那边也不能从dataLane异或出RxClkEsc,且要上报protocol,当前是ULPS。dataLane处在LP-00状态。

            至于下电 目前并没有看到 这么做。是ULPS的范围太小了,而且还要快速被Wakeup,所以没有用来控制下电?

    8.clk lane只支持Escape的ULPS

            由于clk lane不传输数据和命令,所以要么在HS下传时钟,要么在Esc的ULPS状态下LP-00或者contorl mode下stop 状态LP-11。clk lane的进入Escape程序不像dataLane需要LP-11,LP-10,LP-00,LP-01,LP-00,而是直接LP-11,LP-10,LP-00。

            只有HS传输才需要clk,所以当所有的dataLane都不在HS传输后,可以关闭clklane

    9.DPHY可以直接传输8bit原始数据也可以用8b/9b编码

    10.HS的反向速率只有正向速率的1/4,反向的接收端需要调整选择合适的clk相位

            因为反向传输,只是datalane的方向发生了变化,clklane没变,所以反向后的Tx【slave侧】用的是反向后的Rx【master】那边输出的ddr clk。数据经过line delay和在master,slave的内部delay。达到master侧采样点时,有一个固定的未知的delay。所以在master接收侧需要首先利用slave在SOT发送的sync sequence进行synchronization。

            简单的做法在master接收端用4个相位采样反向数据,哪个相位能正确采样到syncWord "0x1D",就用这个相位采样数据。有这4个相位,基本就可以正确采样,而不需要PLL和DLL来产生更多的相位。

    11.DPHY 三个operating Mode :control、HS、Escape

            如果dataLine不在HS和Escape mode,那就一定在control mode。control mode的stop state LP-11可以作为clk lane/data lane的待机state。

    12.DPHY最小传输单元是Byte,数据量是byte整数倍

            DPHY没有规定最大的burst传输长度,但是PHY没有有效的错误恢复处理,实际误码率不会是0,所以需要合理的选择最大burst Length;而对于短burst,header和trailer的时间可能比payload还长。

            另外一点burstLength还影响了protocol layer【dsi controller】里面的dataBuf有关,所以不能设置过大的burstLen

    13.多dataLane传输时,它们可以独立的开始和结束

            多个dataLane可以传输不同数据量,也可以在不同时间开始和结束。但一般情况下所有dataLane都是同时开始的,结束时间不一样。

    14.Remote Triggers

            是TX protocol层通过Escape mode发送到对端protocol layer的一个flag,不会影响PHY的行为。Reset-Trigger就是协议已经定义的Triggers。目前还没看到除此之外的其他协议定义的Triggers。

    15.DPHY的初始化

            上电之后,master PHY会被系统或PPI接口初始化,此时需要master  PHY驱动LP-11 stop state超过Tinit时间。需要注意的是第一个持续超过Tinit的stop state 才是初始化period。

            slave PHY是在上电后第一个超过Tinit的stop state,才被认为完成初始化。在没有检测到第一个超过Tinit的stop state之前,所有的line state都会被忽略。多lane配置,要同时初始化。

            slave只在上电之后初始化,并在检测到LP-11持续超过Tinit时间后认为初始化完成。并不是说在PHY 上电初始化完成之后,不能在LP-11停留超过Tinit时间。正常运行状态下,很容易出现在LP-11这种standBy状态停留超过Tinit时长【比如Burst间隙,行消隐区】,但此时slave是不会重新进入初始化的。如果在上电初始化之后PHY出了问题,可以走复位流程,复位流程解决不了问题,就需要下电再走上电初始化。

    16.Calibration

    • 只有超过1.5Gbps的 transmitter在初始化时必须通过Calibration deskew。
    • 周期性deskew是可选的
    • 小于等于1.5Gbps的传输,deskew是可选的
    • 当从其他状态转到HS rate > 1.5Gbps, deskew也是可选的
    • deskew调整的是clklane与datalane之间的skew

    TX先发16'hFFFF作为sync pattern;

    接着在发至少2^15个0101用来initial deskew calibration

    周期性校准只需要发至少2^10 个0101

    校准之后再发送HS的同步序列:‘00011101’ 【0x1D】

    说明:dataLane发送校准序列'0101',就是和clkLane是同频的时钟,在Rx端用DLL就可以完成dataLane和clkLane之间的相位校准。

    17.clklane扩频

            dphy clklane可以进行频率扩频调制用以降低EMI。clk lane的ddr变化沿在发送端是和数据中间对齐的,而不是和数据变化对齐

    18.Escape进入流程

    LP11->LP10->LP00-LP01->LP00

    其内的LPDT/ULPS/Triggers子状态还有专门的entry command

    19.SOT/EOT/BTA/syncWord

    SOT: start of transmission

            HS的同步序列就是在SOT阶段发送的,而且只在SOT过程发送,中间可以有初始化校准的过程。但周期校准后面不会跟syncWord【虽然DPHY的spec High-Speed Data Transmission这一节提到前导码和拖尾码都可以做sync,但实际上DPHY的拖尾码是固定的HS-1或HS-0,没有翻转做不了sync,CPHY的拖尾码Post1经过确认也不用于sync

            相比CPHY的SOT少了一个在SYncWord之前发送 data normal preamble的步骤。猜测CPHY的前导码是为了RX先恢复出稳定的clk

    EOT: end of transmission

    BTA: Bus turn-around 

    以上每一个过程都有专用处理流程,可以参见

    Specification for D-PHY Version 1.2.pdf

    20.DPHY 3.0的ALP和FBTA

    DPHY 3.0新增了特性:

    • ALP (alternative low power) 备用低功耗
    • FBTA (Fast Bus trun-around) 快速Bus反向

    都是可以让PHY在HS mode下进入低功耗和BTA的操作,具体参考:

    CSI及CPHY的学习知识点_cy413026的博客-CSDN博客

    21.DPHY最少1clk+1datalane,最大无限制

    协议只规定了最小lane,没有规定最大lane数,可以多于4data lane

    500.DPHY HS长包数据(long packet)格式

    数据长包允许payloadSize=0,此时checkSum为0xFFFF,checkSum是对payload进行计算的。

    501.DSI多lane传输 分配和合并        

    TODO

    502.DSI支持virtual channel

    dsi v1.1支持最多4个virtual channel。有可能在更高版本支持更多的虚拟通道。比如csiv3.0的DPHY就支持16个virtual channel,是因为ECC由8bit变为了6bit,多的两bit用于VC

  • 相关阅读:
    Spring基础(3):复习
    java计算机毕业设计基于安卓Android/微信小程序的大学生教学辅导系统APP
    代理模式与动态代理深入理解
    【漏洞复现】SQL注入漏洞
    移植u-boot到S3C2440之从内存启动
    初探富文本之富文本概述
    Python升级打怪(5)
    Vue框架--Vue中的数据代理
    订单超时未支付自动取消8种实现方案
    【MyBatis】#{ } 和 ${ } 的区别
  • 原文地址:https://blog.csdn.net/cy413026/article/details/132907060