MIPI CSI-2笔记(3) -- 多lane数据分发(Distribution)和合并(Merging)

概览

        CSI-2是一个可扩展Lane的规范。对带宽有更高要求、需要多于一条Lane的应用,或者哪些想要避免高时钟频率的应用,都能通过扩展数据路径到更多条Lane来获得近似线性增长的峰值带宽。多条Lane的情况下,更高层的字节流数据和每条Lane上传输的串行bit或符号(symbol)流的映射关系有明确地定义,以便host侧处理器和外设之间在使用多条Lane的时候能够兼容。

        概念上讲,在PHY和更高层次的功能层之间,有一个中间层用来处理多Lane配置。CSI-2的发送器中有一个LDF(Lane Distribution Function),它从LLP(Low Level Protocol)接收数据包,并且将数据包的字节分发到N条Lane上,每条Lane都是一个独立的物理层逻辑单元和传输电路。CSI-2接收器中有一个LMF(Lane Merging Function),它从N条Lane中收集字节数据,并且将多Lane的字节数据合并为完整的数据包,交给接收器的LLP层的分解器(decomposer)处理。

D-PHY的LDF概念图 

C-PHY的LDF概念图

 D-PHY的LMF概念图

 C-PHY的LMF概念图

        Lane数据分发器(Distributor)可以处理任意字节长度的传输,可以buffer到N* b 字节(N:Lane的数量,D-PHY的b = 1, C-PHY的b=2)。然后在N条Lane上并行地发送这组N*b个字节的数据,接收方每Lane接收b个字节。在发送数据前,所有Lane会并行地发起SoT序列来通知它们连接的接收单元开始接收包的首字节。在SoT之后,Lane会并行地发送一组组的数据包的后续字节,这些分组遵循round-robin流程挨个轮询。

D-PHY物理层的Lane数据分发

D-PHY 2-Lane数据分发例子

        包含数据长度是lane数量的整数倍与非整数倍的情况

D-PHY 3-Lane数据分发例子

        包含数据长度是lane数量的整数倍与非整数倍的情况

 D-PHY N-Lane数据分发例子

        包含数据长度是lane数量的整数倍与非整数倍的情况

D-PHY N-Lane短包传输例子

        N >4, 数据分发到Lane 1-4, Lane 5-N维持在LPS状态

        从上面的例子可以看到,由于有效数据的总字节数可能不是Lane数量N的整数倍,会有多出的字节数出来。 一条或多条Lane无数据发送时会提前发送EoT完成传输。Lane数据分发器在它并行地将最后一组小于N个字节的数据buffer上后,会无效掉所有Lane的“valid data”信号表明没有更多数据了。对于大于4数据Lane的系统,发送只带4字节的短包的时候,没有数据可接收的Lane保持在LPS状态。

        每个D-PHY的数据Lane自主工作。尽管多条Lane的并行的“start packet”编码都同时开始,但发送“end packet”完成会话的时间点可能不同,会相隔一个周期(字节)。接收方会并行地接收所有字节,将这些数据送到Lane合并层。LMF会重构出原始的字节顺序,恢复数据包用于包解码层。

C-PHY物理层的Lane数据分发

C-PHY 2-Lane数据分发

 C-PHY 3-Lane数据分发

 C-PHY N-Lane数据分发

        细心的小伙伴肯定发现了这图咋没有传输的数据不对齐的情况呢。对于C-PHY来说,LLP层会保证到这一层的数据一定是对齐的(如果不够会填充,后面介绍LLP的时候会介绍FILLER)。

        对于一个N-Lane的发送器来说,C-PHY模块在Lane n (1 \leqslant n \leqslant N)要传输的字节对儿的顺序是{ms byte : ls byte},这里ms byte, ls byte其实是想表达出两个byte在原始LLP产生的B个字节的数据包中的前后顺序:{Byte 2*(k*N+ n) -1 : Byte 2*(k* N + n) - 2},可以看出字节对儿里,低有效字节是LLP原始数据包字节流中更靠前的字节。

        由于LLP会保证所给的数据长度一定是N的偶数倍对齐,因此不会出现多于的byte。Lane数据分发器在并行地在第N lane发送最后一组编号2N开始的字节对儿后,同时会无效化“valid data”信号到所有Lane,通知每条C-PHY Lane模块它可以开始它的EoT序列了。

        接收方的每个C-PHY Lane模块会并行地收集字节对儿送至Lane数据合并层。LMF会重构出原始的字节顺序,恢复数据包用于包解码层。

多Lane互用

        当使用多于1条数据Lane的时候,Lane数据分发和合并层要能通过CCI接口进行重配置。

        一个N条数据Lane的接收器要和一个M条数据Lane的发送器连接,当多于1条数据Lane被使用时,需要通过CCI配置CSI-2发送器和接收器里的Lane分发和合并层。

        因此,如果M <= N,N条数据Lane的接收器能够和此发送器工作,使用M条数据Lane。如下图所示:

D-PHY,1条数据Lane的发送器,N条数据Lane的接收器例子 

D-PHY,M条数据Lane的发送器,N条数据Lane的接收器例子(M <= N)

        这种情况下,没有性能损失,因为发送器的所有Lane都使用到了,接收器也有足够的数据Lane来匹配发送器。

        类似的,如果M>N,M条数据Lane的发送器能够和此接收器工作,使用N条数据Lane。如下图所示:

D-PHY, M条数据Lane发送器,1条数据Lane接收器例子

 D-PHY, M条数据Lane发送器,N条数据Lane接收器例子(M>N)

         这种情况下,由于发送器不能使用所有数据Lane,因此可能会有性能损失(是否有损失要看分辨率和帧率之类的因素),接收器必发送器的数据Lane要少。

        以上的例子虽然是以D-PHY为例,对于C-PHY来说除了没有时钟lane外,分析方式是类似的。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦枫Leonlew

希望这篇文章能帮到你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值