学习和思考PHY要从以下几个方面:
0.OSI的7层模型
硬件层面看到的基本就是传输层,网络层,数据链路层和物理层。可以把传输层---数据链路层都在PHY的controller中事项
传输层:理解为从其他IP或DDR中搬运数据,并对数据分段,组合,端到端流量控制的过程
网络层:lane merge和Distribution,或者数据分组和合并【etherNet的网络层和DSI的网络层区别就大了】
数据链路层:将分组输入组成固定的帧结构, 发送。可能包含线路编码和加扰等。
还有一个L1.5层的概念,PHY适配器控制协议层【PHY Adapter control Protocol】 PACP。用于设置功耗状态,对等设备的属性设置和获取以及PHY的TEST function
1.PHY如何检测对端的存在
是否有热插拔
是否能够通过对line上的阻抗检测而确定对端的存在?
检测是硬件行为还是软件行为,一般都是硬件行为通过阻抗检测???
2.如何建立链接
单工,双向单工和双向都有什么流程
3.Peer之间属性/能力交互
3.1 master对slave的能力评估
建立了基本的链接后,如果存在协议的不同版本,或者协议支持多速率等多级规格,master需要知道对端的能力
通过何种机制来传递这种信息?
3.2 master是否可以读写slave的属性
4.数据传输使用什么样的包结构
高低速的包结构是否有差别
包中同步和纠检错是如何处理
5.多lane控制
一般而言一个LINK并不是只有一条lane,所以数据包如何分配和合并是一个问题。
在MIPI CDPHY 处理中采样一个packed分到多条lane上传输。
是否存在多条lane各自传递不同的packed?
对于各自传递不同的packed感觉更适合这些lane传输的是不同业务,互相之间不需要packed排序
6.线路编码和抗噪和补偿处理
采用什么样的线路编码 和是否传递时钟,电路耦合类型有关
抗噪处理:
根据实际情况包括性能 信道长短,材质, 片内片外等采用合适的抗噪手段:扩频,扰码等
采用合适的信道补偿
7.同步处理
bit同步:也可以说是clk同步与补偿
lane是否显示发送同步时钟,显示发送又需要校准和数据的相位
数据发送的线路编码是否self-clock【比如CDPHY LS的spaced-one-hot和MPHY的PWM】这种不需要校准
通过CDR恢复,一般需要在发送数据前后都有利于时钟同步的前后导码【前导码通常叫SYNC code】
8.帧同步【packed同步】
都会有帧头或包头
9.错误处理
和数据传输类型有关,是实时性的【比如音视频流】,还是可靠传输【高带宽大数据传输,对误码率有要求】
实时性的数据传输 不会要求错误重传,错误检测上报+错误纠正
可靠传输:错误检测上报+错误纠正+硬件重传+软件重传?
10.状态转换,低功耗
高速接口功耗较大,在空闲时有不同的低功耗状态,
怎么触发低功耗?protocol控制还是硬件主动,master触发还是slave触发,还是master/slave各自进入低功耗
如何向低功耗切换?哪些触发条件?
低功耗分多少级别,当前低功耗保留哪些功能?
低功耗如何进入正常链接,是否需要重新建立链接?
11.多master和多slave之间组网
一般比单master+单slave多一个网络层的协议