本文阅读自eetop.cn_mipi_D-PHY_specification_v1-2.pdf
Logical PHY-Protocol Interface Description(PHY物理层协议接口描述PPI)
PHY物理层协议接口被用于连接物理层和通信栈与更高层协议栈之间建立联系。
表 31 定义了物理层协议接口(PPI)中使用的信号。对于具有多个数据通道的物理层(PHY),每个通道使用一组PPI信号。每个信号被分配到六个类别之一:高速发送信号、高速接收信号、逃逸模式发送信号、逃逸模式接收信号、控制信号和错误信号。支持双向逃逸模式的双向高速数据通道几乎包括表中列出的所有信号。单向通道或时钟通道仅包括一部分信号。每个信号的方向列为 “I” 或 “O”。方向为 “I” 的信号是物理层输入,由协议驱动。方向为 “O” 的信号是物理层输出,驱动到协议。
表 31 中的 “类别” 列指示了每个信号适用于哪些通道模块类型。类别名称在表 1 中进行了描述,为了方便在此进行总结。每个类别使用一个由四个字母组成的缩写来描述,定义为 < 边,高速能力,正向逃逸,反向逃逸 >。
第一个字母 “边” 可以是 M(主设备)或 S(从设备)。第二个字母 “高速能力” 可以是 F(正向数据)、R(反向和正向数据)或 C(时钟)。第三和第四个字母分别表示正向和反向的逃逸模式能力。对于数据通道,第三个字母可以是 A(全部)或 E(仅事件--触发和超低功耗状态),而第四个字母可以是 A(全部,包括低功耗数据传输)、E(事件、触发和超低功耗状态)、Y(任意但不是无:即 A 或 E)或 N(无)。对于数据通道,四个标识字母中的任何一个都可以用 X 替换,以表示每个可用选项都是合适的。对于时钟通道,只有第一个字母可以是 X,而其他三个字母始终是 CNN。
PPI通道信号
名称 | 方向 | 类别 | 描述 |
High-speed Transmit Signals | |||
TxDDRClkHS-I | I | MXXX MCNN | 数据通道高速发送双倍数据速率(DDR)时钟。 这个信号用于在通道互连中传输高速数据位。所有数据通道都使用相同的TxDDRClkHS-I(同相)时钟信号。 |
TxDDRClkHS-Q | I | MCNN | 数据通道高速发送双倍数据速率(DDR)时钟。 |
TxByteClkHS | O | MXXX | 高速传输字节时钟。 这用于在高速传输时钟域中同步 PPI 信号。建议所有传输数据通道模块共享一个 TxByteClkHS 信号。TxByteClkHS 的频率恰好是高速比特率的 1/8。 |
TxDataHS[7:0] | I |
| 高速传输数据。 |
TxRequestHS | I | MXXX SRXX MCNN | 高速传输请求和数据有效。 |
TxReadyHS | O | MXXX SRXX | 高速传输就绪。 |
TxSkewCalHS | I | MXXX | 高速传输偏移校准。 |
高速接收信号high-speed receive signals | |||
RxByteclkHS | O | MRXX | 高速接收字节时钟。 这用于同步高速接收时钟域中的信号。接收字节时钟高速(RxByteClkHS)是通过对接收的高速 DDR 时钟进行分频而生成的。 |
RxDataHS[7:0] | O | MRXX SXXX | 高速接收数据。 通道模块接收的8位高速数据。首先接收连接到 RxDataHS[0]的信号。数据在RxByteClkHS的上升沿进行传输。 |
RxValidHS | O | MRXX SXXX | 高速接收数据有效。 这个高电平有效信号表示通道模块正在将数据驱动到 RxDataHS 输出端的协议上。没有 “RxReadyHS” 信号,并且期望协议在 RxValidHS 被断言的 RxByteClkHS 的每个上升沿捕获 RxDataHS。没有为协议提供减慢(“节流”)接收数据的规定。 |
RxActiveHS | O | MRXX | 高速接收激活。 这个高电平有效信号表示通道模块正在积极地从通道互连中接收高速传输。 |
RxSyncHS | O | MRXX SXXX | 接收器同步已观测到。 这个高电平有效信号表示通道模块已经看到了适当的同步事件。在典型的高速传输中,当高速接收激活信号(RxActiveHS)首次被断言时,在高速传输开始时,接收同步高速信号(RxSyncHS)在接收字节时钟高速(RxByteClkHS)的一个周期内为高电平。 |
RxClkActiveHS | O | SCNN | 接收器时钟激活。 这个异步的高电平有效信号表示时钟通道正在接收一个 DDR 时钟信号。 |
RxDDRClkHS | O | SCNN | 接收器 DDR 时钟。 这是接收到的 DDR 时钟——如果需要,协议可以使用这个信号。每当接收器时钟激活高速信号(RxClkActiveHS)为低电平时,这个信号为低电平。 |
RxSkewCalHS | O | SXXX | 高速接收偏移校准。 这个可选的高电平有效信号表示正在接收高速去偏移突发信号。当接收到全为 1 的同步模式时,高速接收偏移校准信号(RxSkewCalHS)被设置为激活状态,当差分对信号(Dp 和 Dn)转换回低功耗 11 停止状态时,该信号被清除为非激活状态。 |
Escape mode transmit signals逃逸模式传输信号 | |||
TxClkEsc | I | MXXX SXXY | 逃逸模式传输时钟。 这个时钟直接用于生成逃逸序列。请注意,这个时钟用于同步转向请求,并且对于任何支持双向高速操作的模块都是可用的,即使该模块不支持传输或双向逃逸模式。 |
TxRequestEsc | I | MXXX SXXY | 逃逸模式传输请求。 这个高电平有效信号与 TxLpdtEsc、TxUlpsEsc 中的一个确切信号或 TxTriggerEsc 的一位信号一起被断言,用于请求进入逃逸模式。一旦进入逃逸模式,通道将一直处于逃逸模式,直到 TxRequestEsc 被取消断言。TxRequestEsc 仅在 TxRequestHS 为低电平时由协议断言。 |
TxLpdtEsc | I | MXAX SXXA | 逃逸模式传输低功耗数据。 这个高电平有效信号与 TxRequestEsc 一起被断言,以使通道模块进入低功耗数据传输模式。通道模块将一直保持在这种模式,直到 TxRequestEsc 被取消断言。当 TxLpdtEsc 被断言时,TxUlpsEsc 和 TxTriggerEsc 的所有位都为低电平。 |
TxUlpsExit | I | MXXX SXXY MCNN | 发送超低功耗退出序列。 当超低功耗状态处于激活状态且协议准备离开超低功耗状态时,这个高电平有效信号被断言。在 TxUlpsExit 被断言后,物理层(PHY)离开超低功耗状态并开始驱动“标志 1”。当 TxRequestEsc 被取消断言时,物理层随后驱动停止状态(LP - 11)。TxUlpsExit 与 TxClkEsc 同步。 当通道不在超低功耗状态时,这个信号被忽略。 |
TxUlpsEsc | I | MXXX SXXY | 逃逸模式传输超低功耗状态。 这个高电平有效信号与TxRequestEsc一起被断言时,会使通道模块进入超低功耗状态。通道模块将一直保持在此模式,直到 TxRequestEsc被取消断言。当 TxUlpsEsc 被断言时,TxLpdtEsc 和 TxTriggerEsc 的所有位都为低电平。 |
TxTriggerEsc[3:0] | I | MXXX SXXY | 逃逸模式传输触发信号 0 - 3。 这些高电平有效信号中的一个与 TxRequestEsc 一起被断言,以促使相关的触发信号通过通道互连发送出去。在接收通道模块中,RxTriggerEsc 的相同位随后被断言,并一直保持断言状态,直到通道互连返回停止状态,这发生在发送端的 TxRequestEsc 被取消断言时。 在任何给定时间,只有 TxTriggerEsc 的一位被断言,并且仅当 TxLpdtEsc 和 TxUlpsEsc 都为低电平时才会这样。 |
TxDataEsc[7:0] | I | MXAX SXXA | 逃逸模式传输数据。 这是在低功耗数据传输模式下要传输的 8 位逃逸模式数据。首先传输连接到 TxDataEsc[0]的信号。数据在 TxClkEsc 的上升沿被捕获。 |
TxValidEsc | I | MXAX SXXA | 逃逸模式传输数据有效。 这个高电平有效信号表示协议正在驱动 TxDataEsc 上的有效数据进行传输。当 TxRequestEsc、TxValidEsc 和 TxReadyEsc 在同一个 TxClkEsc 时钟上升沿都处于激活状态时,通道模块接受该数据。 |
TxReadyEsc | O | MXAX SXXA | 逃逸模式传输就绪。 这个高电平有效信号表示通道模块接受 TxDataEsc 以进行串行传输。TxReadyEsc 在 TxClkEsc 的上升沿有效。 |
Escape Mode Receive Signals逃逸模式接收信号 | |||
RxClkEsc | O | MXXY SXXX | 逃逸模式接收时钟。 这个信号在逃逸模式期间用于将接收到的数据传输给协议。这个“时钟”是由通道互连中的两个低功耗信号生成的。由于逃逸模式数据传输的异步性质,这个“时钟”可能不是周期性的。 |
RxLpdtEsc | O | MXXA SXAX | 逃逸低功耗数据接收模式。 这个高电平有效信号被断言以表示通道模块处于低功耗数据接收模式。在这种模式下,当 RxValidEsc 处于激活状态时,接收到的数据字节被驱动到 RxDataEsc 输出上。在 RxLpdtEsc 被断言的情况下,通道模块将一直保持这种模式,直到在通道互连上检测到停止状态。 |
RxUlpsEsc | O | MXXY SXXX | 逃逸超低功耗(接收)模式。 这个高电平有效信号被断言以表示通道模块已进入超低功耗状态。在 RxUlpsEsc 被断言的情况下,通道模块将一直保持这种模式,直到在通道互连上检测到停止状态。 |
RxTriggerEsc[3:0] | O | MXXY SXXX | 逃逸模式接收触发信号 0 - 3。 这些高电平有效信号表示已接收到触发事件。被断言的 RxTriggerEsc 信号将一直保持激活状态,直到在通道互连上检测到停止状态。 |
RxDataEsc[7:0] | O | MXXA SXAX | 逃逸模式接收数据。 这是通道模块接收到的 8 位逃逸模式低功耗数据。首先接收到连接到 RxDataEsc[0]的信号。数据在 RxClkEsc 的上升沿进行传输。 |
RxValidEsc | O | MXXA SXAX | 逃逸模式接收数据有效。 这个高电平有效信号表示通道模块在 RxDataEsc 输出上向协议驱动有效数据。没有“RxReadyEsc”信号,并且期望协议在 RxValidEsc 被断言的每个 RxClkEsc 上升沿捕获 RxDataEsc。没有为协议提供减慢(“节流”)接收数据的规定。 |
Control signals控制信号 | |||
TurnRequest | I |
| 转向请求。 这个高电平有效信号用于表示协议希望使通道转向,允许另一方开始传输。TurnRequest 在 TxClkEsc 的上升沿有效。TurnRequest 仅对当前为发送方(方向 = 0)的通道模块有意义。如果通道模块处于接收模式(方向 = 1),则该信号被忽略。 |
Direction | O |
| 发送/接收方向。 这个信号用于指示通道互连的当前方向。当 Direction = 0 时,通道处于发送模式(0 = 输出)。当 Direction = 1 时,通道处于接收模式(1 = 输入)。 |
TurnDisable | I |
| 禁用转向。 这个信号用于防止(双向)通道进入发送模式——即使它在通道互连上观察到转向请求。当单向通道模块连接到双向通道模块时,这对于防止潜在的“锁定”情况很有用。 |
ForceRxmode | I |
| 强制通道模块进入接收模式/等待停止状态。 这个信号允许协议初始化通道模块,或强制双向通道模块进入接收模式。这个信号在初始化期间或用于解决竞争情况。当这个信号为高电平时,通道模块立即转换为接收控制模式,并等待停止状态出现在通道互连上。当用于初始化时,只有当 Dp 和 Dn 输入在停止状态持续时间 TINIT 或更长时间时,这个信号才应该被释放,即驱动为低电平。 |
ForceTxStopmode | I |
| 强制通道模块进入发送模式/产生停止状态。 这个信号允许协议在初始化期间或在出现错误情况(例如超时过期)后强制通道模块进入发送模式和停止状态。当这个信号为高电平时,通道模块立即转换为发送模式,并且模块状态机被强制进入停止状态。 |
Stopstate | O |
| 通道处于停止状态。 这个高电平有效信号表示通道模块,无论通道模块是发送器还是接收器,当前都处于停止状态。请注意,这个信号与 PPI 接口中的任何时钟都是异步的。此外,协议可以使用这个信号来间接确定物理层线路电平是否处于 LP - 11 状态。 |
Enable | I |
| 启用通道模块。 这个高电平有效信号迫使通道模块脱离“关闭”状态。当 Enable 为低电平时,所有线路驱动器、接收器、终端电阻和竞争检测器都将关闭。此外,在 Enable 为低电平时,所有其他 PPI 输入都将被忽略,并且所有 PPI 输出都被驱动到默认的非活动状态。Enable 是一个电平敏感信号,不依赖于任何时钟。 |
TxUlpsClk | I |
| 时钟通道上的发送超低功耗状态。 这个高电平有效信号被断言时,会使时钟通道模块进入超低功耗状态。通道模块将一直保持在此模式,直到 TxUlpsClk 被取消断言。 |
RxUlpsClkNot | O |
| 时钟通道上的接收超低功耗状态。 这个低电平有效信号被断言时,表示时钟通道模块已进入超低功耗状态。在 RxUlpsClkNot 被断言(即 RxUlpsClk 未被断言)的情况下,通道模块将一直保持此模式,直到在通道互连上检测到停止状态。 |
UlpsActiveNot | O |
| 超低功耗状态(未)激活。 这个低电平有效信号被断言时表示通道处于超低功耗状态。 对于发送器,在 TxUlpsEsc 和 TxRequestEsc(对于时钟通道是 TxUlpsClk)被断言一段时间后,这个信号被断言。发送的物理层继续提供 TxClkEsc,直到 UlpsActiveNot 被断言。为了离开超低功耗状态,发送器首先将 TxUlpsExit 置高,然后等待 UlpsActiveNot 变为高电平(非激活状态)。在那时,发送的物理层处于激活状态并已开始在线路上发送标记 1。协议等待一段时间 Twakeup,然后将 TxRequestEsc(TxUlpsClk)置为非激活状态,以使通道返回停止状态。 对于接收器,这个信号表示通道处于超低功耗状态。在超低功耗状态开始时,UlpsActiveNot 与 RxUlpsEsc 或对于时钟通道的 RxUlpsClkNot 一起被断言。在超低功耗状态结束时,这个信号变为非激活状态,以表示已观察到标记 1 状态。稍后,经过一段时间 Twakeup 后,RxUlpsEsc(或 RxUlpsClkNot)信号被取消断言。 |
Error signals错误信号 | |||
ErrSotHS | O |
| 传输开始(SoT)错误。 如果高速 SoT 前导序列被损坏,但仍能实现正确同步,这个高电平有效信号会在 RxByteClkHS 的一个周期内被断言。这被认为是前导序列中的“软错误”,并且对有效载荷数据的置信度降低。 |
ErrSotSyncHS | O |
| 传输开始同步错误。 如果高速 SoT 前导序列被损坏到无法实现正确同步的程度,这个高电平有效信号会在 RxByteClkHS 的一个周期内被断言。 |
ErrEsc | O |
| 逃逸进入错误。 如果接收到无法识别的逃逸进入命令,这个高电平有效信号被断言并保持断言状态,直到线路状态下一次发生变化。 |
ErrSyncEsc | O |
| 低功耗数据传输同步错误。 如果在低功耗数据传输结束时,接收到的位数不是 8 的倍数,这个高电平有效信号被断言并保持断言状态,直到线路状态下一次发生变化。 |
ErrControl | O |
| 控制错误。 当检测到错误的线路状态序列时,这个高电平有效信号被断言。例如,如果在转向请求或逃逸模式请求之后立即出现停止状态,而不是所需的桥接状态,这个信号将被断言并保持断言状态,直到线路状态下一次发生变化。 |
ErrContentionLP0 | O |
| LP0 竞争错误。 当通道模块在尝试将线路驱动为低电平时检测到线路上存在竞争情况时,这个高电平有效信号被断言。 |
ErrContentionLP1 | O |
| LP1 竞争错误。 当通道模块在尝试将线路驱动为高电平时检测到线路上存在竞争情况时,这个高电平有效信号被断言。 |
High-Speed Transmit from the Master Side主端高速发送
TxRequestHS为高时准备开始传输。在ready和clk上升沿时数据被物理层接收。在ready有效,和时钟上升沿取数后更新数据。传输玩最后一个数据后,req拉低。使模块进入传输停止模式。
High-Speed Receive at the Slave Side从端高速接收
Active表示正在进行接收。从sync的脉冲开始接收。随后在时钟有效周期上接收数据。Valid表示数据有效。如果物理层内部执行传输EoT结束,那么在最后一个有效字节Bn之后,active和valid拉低(图中红色虚线)。如果不执行EoT,最后一个Bn传输完成后会出现一个或者多个字节。Bn后面的‘C’全是0或者1。在接收到C的某个时间变为低电平。
High-Speed Transmit from the Slave Side从端高速传输
从设备带宽为主设备4分之一,req拉高后准备传输,在ready拉高后表示一个数据传输完成。
High-Speed Receive at the Master Side主端高速接收
由于从设备传输限制为主设备四分之一周期带宽进行传输,所以每四个时钟周期才传输一个数据。Active表示正在进行接收。从sync的脉冲开始接收。在valid有效时传输完成一个数据。在最后一个数据传输完成后Bn上可能会有一个或者多个额外的脉冲。
Low-Power Data Transmission低功耗模式数据传输
时钟使用TxClkEsc代替TxDDRClkHS和TxByteClkHS。但是在低功耗传输中,协议使用reqEsc和LpdEsc来指示数据传输通道进入低功耗数据传输逃逸模式。当ready和valid高时,data被传输。在最后一个字节传输后,拉低reqEsc表示传输完成。这会导致ready信号拉低
,之后不再需要ClkEsc信号。
Low-Power Data Reception低功耗数据接收
通过Dp,Dn生成一个低功耗逃逸时钟。这个时钟在通道内部用于捕获传输数据。这个时钟用于生成RxClkEsc。
进入逃逸模式后,RxLpdtEsc拉高。在valid有效后传输完成一个字节。注意这个RxClkEsc由于逃逸传输异步性质,这个时钟可以在任何时候停止在高电平或者低电平状态。
Turn-around转向
转向表示在双向通信中,从一个设备向另一个设备发送数据的方向可能需要在某个时刻转变为相反的方向。TurnReq有效后启动转化过程。
Calibration校准
从发送器启动周期性去偏移校准可以通过 PPI 接口上的 TxSkewCalHS 引脚来实现。这是一个可选的信号引脚,并且周期性去偏移是一个可选功能。接收器去偏移可以通过接收器配置控制进行旁路。图 65 展示了在正常模式下高速数据传输期间 PPI 信号的输出情况。
图 66 展示了在进行偏移校准期间高速数据传输时 PPI 信号的输出情况。在偏移校准期间,诸如 TxReadyHS、RxActiveHS、RxValidHS 和 RxSyncHS 等 PPI 输出被保持为 1B。
附录B互连设计指南
附录C 8B9B线路编码
8b9b 编码特性
8b9b 编码具有以下特性:
• 所有码字都是九位长。数据按字节编码为 9 位字,这对应于 12.5%的编码开销。
• 有十六个常规异常码,即不作为常规数据字出现,但需要字同步以进行可靠识别的码字。
• 有六个唯一异常码,即除了传输该码字时,不会在任何滑动窗口中出现的码字。
• 保证最小边缘密度为每个字至少有两次极性转换。因此,每个字至少包含两个“1”和两个“0”。
• 用于编码和解码的简单逻辑函数。
• 游程长度限制为最多七位。数据码的最大游程长度为五位,唯一异常码的游程长度为六位或七位。
数据代码,编码方式
输入8bit字节byte:[B1 B2 B3 X1 X2 Q1 Q2 Q3]
编码后9bit字为:[B1 X1 Y1 Y2 B2 B3 Y3 Y4 X2]
编解码查表如下
编码方式[X1 X2 Q1 Q2 Q3]和[Y1 Y2 Y3 Y4]的关系
Y1 = ( ~Q1 & ~Q2 & ~X1 ) | ( Q1 & Q3 ) | ( Q2 & Q3 )
Y2 = ( ~Q1 & ~Q2 & ~X1 ) | ( Q1 & ~Q3 ) | ( Q2 & ~Q3 )
Y3 = ( Q1 & ~Q2 ) | ( Q1 & Q2 & ~X2 ) | ( ~Q2 & Q3 )
Y4 = ( ~Q1 & Q2 ) | ( Q1 & Q2 & ~X2 ) | ( ~Q1 & ~Q3 )
解码{Y1 Y2 Y3 Y4}和{Q1 Q2 Q3}
Q1 = ( Y1 ^ Y2 ) & ~( ~Y3 & Y4 )
Q2 = ( Y1 ^ Y2 ) & ~( Y3 & ~Y4 )
Q3 = ( Y1 & ~Y2 ) | ( Y1 & Y2 & Y3 ) | ( ~Y1 & ~Y2 & Y3 )
= ( Y1 & ~Y2 ) | ( ~(Y1 ^ Y2 ) & Y3 )
唯一异常码
“唯一”意味着这些码在数据流中是可唯一识别的。因为在假设没有位损坏的情况下,这些码不会出现在任何编码中。
控制码:常规异常码
正常的数据不会使用所有最大游程长度为五位的码。有两种{Xi,Yi}位组合不会出现在任何数据码字中,它们可用作常规异常码。由于逗号码被定义为具有六位或者七位的游程长度,这是的每个码字有三个可自由使用的位,从而产生2*2y3=16个不同的常规异常码。
这些码不像表33中描述的逗号码那样是唯一序列,只有在已经实现字同步的情况下才能用作异常码。这些码目前是保留的,未分配的。
数据传输中物理层协议接口(PPI)的扩展和控制信号的说明
名称 | 方向 | 类别 | 描述 |
TxProMarkerEsc | I |
| 用于在低功耗数据传输(LPDT)的串行流中插入协议标记符号的功能控制。高电平有效信号。 |
TxProMarkerHS | I |
| 用于在高速(HS)传输的串行流中插入协议标记符号的功能控制。高电平有效信号。 |
TxValidHS | I |
| 协议用于在不结束高速传输的情况下暂停向物理层提供数据的功能控制。在持续有传输请求但没有有效数据的情况下,物理层编码层插入空闲符号。高电平有效信号。 |
RxAlignErrorEsc | O |
| 标志,用于指示在低功耗数据传输(LPDT)流中观察到一个与假定的字边界未对齐的逗号码。高电平有效信号(可选)。 |
RxAlignErrorHS | O |
| 标志,表示在HS接收期间观察到的逗号代码与假定的单词边界没有对齐。主动高信号(可选) |
RxBadSymbolEsc | O |
| 指示使用LPDT接收到一个不存在的符号的标志。主动高信号(可选) |
RxBadSymbolHS | O |
| 指示在HS模式下接收到一个不存在的符号的标志。主动高信号(可选) |
RxEoTErrorEsc | O |
| 标记表示在EoT,在LP传输后,检测到向LP-11的过渡,之前没有EoT标记符号。主动高信号(可选) |
RxEoTErrorHS | O |
| 标记表示在EoT,在HS传输后,检测到向LP-11的过渡,之前没有EoT标记符号。主动高信号(可选) |
RxIdleEsc | O |
| 指示在LPDT期间在行中观察到空闲模式。主动高信号(可选) |
RxIdleHS | O |
| 指示在HS模式下观察到空闲模式。主动高信号(可选) |
RxProMarkerEsc | O |
| 功能标志,以知道使用LPDT在串行流中出现了一个协议标记符号。这是与数据同步的协议,正好在它发生的位置。因此,该接口要么显示一个标志加上无效数据,要么显示具有有效数据的无标志。主动高信号 |
RxProMarkerHS | O |
| 功能标志,以知道在HS模式的串行流中出现了一个协议标记符号。这被通信到与ByteClk同步的协议,正好在它发生的位置。因此,该接口要么显示一个标志加上无效数据,要么显示具有有效数据的无标志。主动高信号。 |