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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值