提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
整个LTPI协议实现过程中,我认为最复杂的也就是LTPI的链路建立的过程 以及异步信号(特别是IIC)的传输事务的控制和响应以及对IIC接口线的操作。我们前面已经大致提到了各个阶段的帧定义,那么接下来我们继续来理解整个LPTI协议的初始化到运行的流程是怎样的
以下场景需要执行LTPI Training和Link初始化:
SCM CPLD 和 HPM FPGA 退出复位后,链路训练阶段开始。它在单数据速率模式下以 25MHz 的基本频率执行。链接训练阶段的主要目的是:
A.达到链路直流平衡条件
B.交换链接速度功能
C.切换到操作链路频率
链接训练阶段基于 2 个状态:
在链路检测状态下,SCM CPLD 和 HPM FPGA 都开始发送链路检测帧。如图 28 所示,帧在两个方向上传输。主要目的是建立链路直流平衡并表明支持的工作频率。此阶段可分为 2 个部分:
注 1:对齐到帧开头所需的时间取决于实现 DC 平衡所需的时间以及找到逗号符号的效率(取决于 SERDES 设计)。此阶段是 SCM LTPI 和 HPM LTPI 之间通过发送和接收的帧数产生初始偏差的根源。发送的帧数不应包含在发送的最小帧检测帧 (255) 中(这里我理解在对齐之前,发送的帧都不计算在最小检测帧内)
link_detect状态下是没有超时的,只要没有满足条件(发送至少255个detect帧和收到7个检测帧,或者已经收到了速度帧)就会一直在这个状态进行检测。
在链路速度状态下,SCM CPLD 和 HPM FPGA 都开始发送链路速度帧。如下图帧正在双向传输。 SCM 应根据接收到的链路检测功能及其自身的功能来选取最高的共同目标频率。在某些情况下,例如系统集成、系统调试或恢复模式,可能需要将工作频率降低到最大能力以下。 为此,LTPI 可以向 BMC 或 SCM 上的其他控制器公开设置,以允许修改 SCM LTPI 链路检测功能。
以下是一个链路训练的例子,
复位退出后,SCM 和 HPM 开始发送检测帧。当链路上建立直流平衡时:
链路配置在链路训练阶段完成后开始。它在速度阶段选择的操作频率上执行。链路配置阶段的主要目的是:
A.切换到操作链路频率
b.交换LTPI 能力
C.启用 LTPI 的选定操作配置
D.切换到操作模式
链接训练阶段基于 3 个状态:
通告状态是链路从基本频率切换到工作频率时的第一个状态。在通告状态下,SCM CPLD 和 HPM FPGA 都开始发送通告帧。如下图所示,帧在两个方向上传输。切换到工作频率后,RX SERDES 需要重新执行字节对齐,找帧头,与链路检测阶段类似。该阶段也可以分为 2 个部分:
SCM 和 HPM 均应持续发送通告帧至少 1ms,以允许链路稳定在工作频率。如果SCM先完成1ms传输要求并自动开始发送Configure Frame,则HPM应立即切换到Accept而不完成1ms传输要求。在通告状态下,SCM和HPM持续发送广告帧。该状态没有进入下一个状态的超时时间。这是为了允许 BMC 读取 Advertise 信息并选择 LTPI 配置。 BMC 可以使用 CSR 寄存器来验证 LTPI 通告状态是否处于活动状态、读取通告信息并写入 LTPI 的目标配置。
(进一步理解:如果1ms内收到了target的advertise帧,则在1ms时,controller将根据自己的advertise内容和收到的target内容,进行能力的配置,这里有两种模式,可以预先设置好config帧,或者运行过程中由BMC通过写CSR寄存器来进行修改config帧,如果可以预先设置好则1ms后,自动开始发config帧,如果是运行过程中由BMC通过写CSR寄存器来进行修改,则可以无限等待BMC写CSR寄存器,然后给出触发标志,才会开始发config帧。
而对于target,它也存在1ms超时机制,不同的是,它如果在1ms内已经收到了config帧,则不需要在等待1ms结束。如果1ms结束的时候收到了足够多的advertise帧,则会一直等待controller发送config帧。)
对于 SCM 和 HPM,接下来的状态是不同的。 SCM进入Configure状态和HPM进入Accept状态。要进入下一个状态,SCM 需要开始发送配置帧:
1.正确进入Advertise状态后自动根据SCM LTPI配置
2. 根据 BMC 的请求,遵循 BMC 应用的配置
如果在通告状态下丢失 3 个连续通告帧,则 LTPI 应返回到链路检测状态。
在这种状态下,SCM 和 HPM 状态之间存在区别:
1.SCM进入Configure状态
2.HPM进入Accept状态
如下图所示,配置帧仅由 SCM 传输,接受帧仅由 HPM 传输。在此状态下,SCM 开始发送配置帧,并等待 HPM 发回下表中定义的接受帧。
要移至下一个状态:
1. SCM开始向HPM发送配置帧
2. 当 HPM 接收到至少 1 个配置帧并且它与 HPM 功能匹配时,它将具有与 SCM 请求的功能相同的功能的接受帧发送回 SCM。
3. 当接收到接受帧并且它与配置帧功能匹配时,SCM 通过在链路上发送第一个操作帧来移动到下一个状态。
如果 SCM 在发送 32 配置帧后没有收到匹配的接受帧,它将返回通告状态。
链路训练阶段后,SCM 和 HPM 进入 Advertise 状态:
工作模式是 LTPI 生命周期大部分时间的主要工作条件。在操作模式下,SCM 和 HPM 都不断地双向发送 I/O 帧
当使用数据通道时,当通过以下方式触发对数据通道的访问时,将按需生成数据帧。当生成数据通道帧时,它将插入 I/O 帧流中,如下所示
SCM 和 HPM 保持运行状态,直到发生以下情况:
1.软复位被触发:切换到Advertise State
2.硬复位被触发(CPLD复位、断电):在链路检测状态下启动
3. 连续 7 个帧丢失后,链路丢失:从链路检测状态开始
LPTI协议的实现,主要是要注意各种状态的跳转,各种异常的检测,以及一些调试分支都要考虑到,所以协议都要细细的研读,否则很慢把所有细节都把握清楚