LTPI协议的理解——4、LTPI链路初始化以及运行

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

LTPI协议的理解——4、LTPI链路初始化以及运行

  • 前言
  • 状态图
  • Link Training
    • Link Detect
    • Link Speed
    • Link Training Example
  • Link Configuration
    • Advertise
    • Configure & Accept
    • Link Configuration Example
  • Link Operation
  • Link Training and Configuration Example
  • 总结


前言

整个LTPI协议实现过程中,我认为最复杂的也就是LTPI的链路建立的过程 以及异步信号(特别是IIC)的传输事务的控制和响应以及对IIC接口线的操作。我们前面已经大致提到了各个阶段的帧定义,那么接下来我们继续来理解整个LPTI协议的初始化到运行的流程是怎样的

状态图

以下场景需要执行LTPI Training和Link初始化:

  • SCM CPLD 和 HPM FPGA 断电事件后
  • SCM CPLD 和 HPM FPGA 复位后
  • BMC 等外部请求
  • 发生链路丢失错误
    LTPI 链路训练和初始化的主要目的是:
  • 实现链路上的直流平衡条件
  • 交换链接速度能力
  • 切换到操作链路频率
  • 交换LTPI特性能力
  • 启用 LTPI 的选定操作配置
  • 切换到操作模式
    LTPI 链路训练和切换到操作模式被定义为状态机,可分为 3 个主要阶段:
  1. 链路训练——链路初始化的初始状态
  2. 链路配置——LTPI特性的配置
    a. Exchange LTPI 特性功能
    b.启用 LTPI 的选定操作配置
    c.切换到操作模式
  3. 链路可操作 – 说明链路在 LTPI 生命周期的大部分时间内处于可用状态
    状态机如下图

在这里插入图片描述
整个链路的操作都是按照这个状态机的流程来进行运作的。

Link Training

SCM CPLD 和 HPM FPGA 退出复位后,链路训练阶段开始。它在单数据速率模式下以 25MHz 的基本频率执行。链接训练阶段的主要目的是:
A.达到链路直流平衡条件
B.交换链接速度功能
C.切换到操作链路频率
链接训练阶段基于 2 个状态:

  1. Link Detect 链路检测
  2. Link Speed 链路速度

Link Detect

在链路检测状态下,SCM CPLD 和 HPM FPGA 都开始发送链路检测帧。如图 28 所示,帧在两个方向上传输。主要目的是建立链路直流平衡并表明支持的工作频率。此阶段可分为 2 个部分:

  1. 链路检测 – 帧对齐:在这部分中,SERDES 逻辑尝试通过识别逗号符号并处理帧以验证 CRC 来锁定帧的开头。为了进入下一部分,至少需要接收 3 个具有正确 CRC 的帧。
  2. 链路检测:这是链路检测的主要部分,其中帧用于解释另一端的操作速度能力。在这一部分中使用了 TX 和 RX 计数器。由于 SCM 和 HPM 在实现 DC 平衡寻找帧开头方面存在时序差异,因此预计 SCM 和 HPM TX/RX 计数器将不对齐。

注 1:对齐到帧开头所需的时间取决于实现 DC 平衡所需的时间以及找到逗号符号的效率(取决于 SERDES 设计)。此阶段是 SCM LTPI 和 HPM LTPI 之间通过发送和接收的帧数产生初始偏差的根源。发送的帧数不应包含在发送的最小帧检测帧 (255) 中(这里我理解在对齐之前,发送的帧都不计算在最小检测帧内)

在这里插入图片描述
SCM CPLD 和 HPM FPGA 均应:

  • 在 TX 链路上发送至少 255 个链路检测帧
  • 在 RX 链路上接收至少 7 个具有正确 CRC 校验和的连续帧.
    如果一方较快地移动到下一个阶段并开始发送链路速度帧,则“较慢”的一方应立即移动到下一个状态,完成所需数量的 TX 和 RX 帧。
    如果给定 LTPI 满足两个条件,则 SCM LTPI 和 HPM LTPI 可以独立地移动到下一个状态,即不需要等待超过 7 个连续的正确 RX 帧。
    链路检测状态总结如下:
    在这里插入图片描述
    进一步说明对于SCM/HCM而言,进入speed的条件可以是:
    1、需要发送至少255个detect帧且至少接收到7个detect帧。 或者
    2、直接已经收到了speed帧,则无论此时是否发送多少detect帧和接收到多少detect帧,需要立刻进入speed

link_detect状态下是没有超时的,只要没有满足条件(发送至少255个detect帧和收到7个检测帧,或者已经收到了速度帧)就会一直在这个状态进行检测。

Link Speed

在链路速度状态下,SCM CPLD 和 HPM FPGA 都开始发送链路速度帧。如下图帧正在双向传输。 SCM 应根据接收到的链路检测功能及其自身的功能来选取最高的共同目标频率在某些情况下,例如系统集成、系统调试或恢复模式,可能需要将工作频率降低到最大能力以下。 为此,LTPI 可以向 BMC 或 SCM 上的其他控制器公开设置,以允许修改 SCM LTPI 链路检测功能。

在这里插入图片描述
必须满足以下条件才能进入下一阶段:

  • SCM:在 TX 链路上发送至少 7 个链路速度帧
  • HPM:接收至少 3 个链路速度帧
    在这里插入图片描述
    (疑问:一些异常情况的考虑,假如SCM发送接收正常,但HPM发送正常,但接收异常的时候。SCM成功发送了255+的detect帧之后,且也能正常收到7个detect帧,这个时候就会进入speed状态。在speed状态之后,SCM也发送完7个speed帧,就自行进入了变频阶段。
    我感觉是不是要接收到1个speed之后再变会不会更好点?)

Link Training Example

以下是一个链路训练的例子,
复位退出后,SCM 和 HPM 开始发送检测帧。当链路上建立直流平衡时:

  1. SCM 从 HPM 接收速度能力,如下表 中所定义。按照表 21 中定义的速度能力,HPM 支持 25MHz、100MHz 和 250MHz。它还支持双数据速率 I/O。
    在这里插入图片描述
  2. HPM 从 SCM 接收速度能力,如下表 40 中所定义。根据表 21 中定义的速度能力,SCM 支持 25MHz、50MHz、75MHz 和 100MHz。它还支持双数据速率 I/O。
    在这里插入图片描述
  3. HPM 和 SCM 使用链路速度帧发送最高通用速度设置。发送的速度选择设置如下表 41 所列。所选工作频率设置为 100MHz 并启用 DDR。
    在这里插入图片描述

Link Configuration

链路配置在链路训练阶段完成后开始。它在速度阶段选择的操作频率上执行。链路配置阶段的主要目的是:

A.切换到操作链路频率
b.交换LTPI 能力
C.启用 LTPI 的选定操作配置
D.切换到操作模式
链接训练阶段基于 3 个状态:

  1. 通告 Advertise
  2. 配置 Configure
  3. 接受 Accept

Advertise

通告状态是链路从基本频率切换到工作频率时的第一个状态。在通告状态下,SCM CPLD 和 HPM FPGA 都开始发送通告帧。如下图所示,帧在两个方向上传输。切换到工作频率后,RX SERDES 需要重新执行字节对齐,找帧头,与链路检测阶段类似。该阶段也可以分为 2 个部分:

  1. 通告 – 帧对齐:在这部分中,SERDES 逻辑尝试通过识别逗号符号并处理帧以验证 CRC 来锁定帧的开头。为了进入下一部分,至少需要接收 3 个具有正确 CRC 的帧。
  2. 通告:这是Advertise的主要部分,其中框架用于解释对方的LTPI能力。

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 应返回到链路检测状态。
在这里插入图片描述

Configure & Accept

在这种状态下,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 配置帧后没有收到匹配的接受帧,它将返回通告状态。
在这里插入图片描述

Link Configuration Example

链路训练阶段后,SCM 和 HPM 进入 Advertise 状态:

  1. SCM 发送具有下表 所示功能的通告帧。
    在这里插入图片描述
    2 HPM 发送具有下表 所示功能的通告帧。
    在这里插入图片描述
  2. 根据SCM 和HPM 的功能,选择需要HPM 和SCM 都支持的目标配置。目标配置的定义由SCM自动选择最高通用配置或由BMC选择。
  3. SCM 将配置帧发送到 HPM,其中包含下表 中定义的请求配置。
    在这里插入图片描述
  4. HPM 等待至少 1 个配置帧,收到后验证配置是否有效并与 HPM 功能匹配。 HPM 通过发回接受帧来接受配置,该接受帧的配置与 SCM 请求的配置相同

Link Operation

工作模式是 LTPI 生命周期大部分时间的主要工作条件。在操作模式下,SCM 和 HPM 都不断地双向发送 I/O 帧
在这里插入图片描述
当使用数据通道时,当通过以下方式触发对数据通道的访问时,将按需生成数据帧。当生成数据通道帧时,它将插入 I/O 帧流中,如下所示
在这里插入图片描述
SCM 和 HPM 保持运行状态,直到发生以下情况:
1.软复位被触发:切换到Advertise State
2.硬复位被触发(CPLD复位、断电):在链路检测状态下启动
3. 连续 7 个帧丢失后,链路丢失:从链路检测状态开始

在这里插入图片描述

Link Training and Configuration Example

整个过程可以用下面这个图来描述:
在这里插入图片描述

总结

LPTI协议的实现,主要是要注意各种状态的跳转,各种异常的检测,以及一些调试分支都要考虑到,所以协议都要细细的研读,否则很慢把所有细节都把握清楚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661673.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是PD快充诱骗芯片?它的原理是什么?

PD快充诱骗芯片,顾名思义,就是通过LDR6328Q PD取电芯片把pd适配器的电压给诱骗出来固定给后端设备供电。 PD诱骗芯片是受电端的一种PD协议芯片,它内置了PD通讯模块,通过与供电端(如PD充电器)的PD协议芯片握…

微信小程序运行机制分析

setData渲染机制 Native就是微信客户端,逻辑层JsCore(js文件)通过setdata把数据送到渲染层Webview(小程序页面,wxml文件),渲染层接收到数据后就会改变对应的元素值。用户在小程序页面进行操作可…

Element UI之el-tabs的样式修改字体颜色、下划线、选中/未选中

目录 默认样式 修改默认字体颜色&#xff1a; 修改鼠标悬浮/选中字体颜色&#xff1a; 去掉长分割线并修改下划线颜色 完整代码 默认样式 注意事项&#xff1a;一定要在 <style scoped>不然修改的样式不会覆盖生效 修改默认字体颜色&#xff1a; ::v-deep .el-tabs__…

Fiddler 抓包工具的安装与使用

今天分享Fiddler 抓包工具的安装与使用&#xff0c;基于HTTP应用层协议的抓包工具。 一、下载安装 1、下载地址&#xff1a; The Ultimate Web Debugging Tool - Download Fiddler Everywhere | Telerik 选择相应类型&#xff1a; 2、下载完成 3、安装 傻瓜式安装&#xf…

Weblogic反序列化远程命令执行(CVE-2019-2725)

漏洞描述&#xff1a; CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞&#xff0c;这个漏洞依旧是根据weblogic的xmldecoder反序列化漏洞&#xff0c;通过针对Oracle官网历年来的补丁构造payload来绕过。 复现过程&#xff1a; 1.访问ip&#xff1a;port 2.可…

proE各版本安装指南

下载链接 https://pan.baidu.com/s/1BSaJxvPPGeIa4YKm7xk57g?pwd0531 1.鼠标右击【Proe5.0M280(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 Proe5.0M280(64bit)】&#xff08;解压的路径中不能有中文&#xff09;。 2.打开…

动态规划中的状态转移方程和最优子结构

LeetCode 64&#xff1a;给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。说明&#xff1a;每次只能向下或者向右移动一步。 这个问题的本质其实是一个背包问题。 把 i 设置为向下走&#xff0…

C# ASP.NET 实验室 检验中心 医疗LIS源码

LIS系统能够自动处理大量的医学数据&#xff0c;包括样本采集、样本处理、检测分析、报告生成等。它能够快速、准确地进行化验检测&#xff0c;提高医院的运营效率。LIS系统还提供了丰富的数据分析功能&#xff0c;能够对医院化验室的业务流程进行全面、细致的监控。 LIS系统优…

MySQL之复合查询

单表查询回顾 在讲解多表查询前&#xff0c;我们先回顾一下单表查询&#xff0c;这是因为多表查询本质上依然是单表查询&#xff08;其原因在下文中讲解多表查询时再说明&#xff09;&#xff0c;只要掌握了单表查询&#xff0c;那么想掌握多表查询是非常简单的。 在<<…

工业智能网关:plc数据采集对接mes系统

在工业自动化领域&#xff0c;制造执行系统&#xff08;MES&#xff09;与可编程逻辑控制器&#xff08;PLC&#xff09;之间的实时通信对于提高生产效率、确保产品质量和实现智能化生产至关重要。工业智能网关作为连接两者的关键设备&#xff0c;正在发挥着越来越重要的作用。…

MYSQL一一函数一一字符串函数

嘿嘿大家好我回来啦&#xff0c;今天我们要学习的是MYSQL中的函数&#xff0c;函数呢我们又分为字符串函数&#xff0c;数值函数&#xff0c;日期函数&#xff0c;流程函数来介绍&#xff0c;今天重点介绍字符串函数(从小题到案例方便你们更加深入的理解) 函数指的是一段可以直…

UE5.1_Gameplay Debugger启用

UE5.1_Gameplay Debugger启用 重点问题&#xff1a; Gamplay Debugger启用不知道&#xff1f; Apostrophe、Tilde键不知道是哪个&#xff1f; Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger

点成案例 | 如何利用细胞计数仪在单细胞测序中评估细胞

一、概述 单细胞测序技术能够用来表征异常细胞群&#xff0c;分析稀有细胞和细胞图谱网络&#xff0c;发现异质性等。由于单细胞测序巨大的应用潜力&#xff0c;目前此技术正在经历爆炸性增长。然而&#xff0c;单细胞测序需要成本和时间的大量投资。为了确保时间和资源的投资…

AI时代下,如何看待“算法利维坦”?

ChatGPT的浪潮从2022年袭来后&#xff0c;至今热度不减&#xff0c;呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术......AI真的已经走进了生活的方方面面&#xff0c;我们仿佛已经进入了AI时代&#xff0c;势不可挡。人工智能水平如此之高&#xff0c;不禁…

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、Map阶段实现&#xff08;1&#xff09;创建Maven项目&#xff08;2&#xff09;添加相关依赖…

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…

身份证阅读器Qt动态调用方法donsee32.dll实现读取身份证信息、社保卡信息、IC卡、银行卡等信息

Qt动态调用读取效果 导入读卡相关函数 {ui->setupUi(this);//动态调用方法 donsee32.dllm_hDLL ::LoadLibrary(L"./donsee32.dll");if (m_hDLL nullptr)ui->textEdit->append("加载动态库失败&#xff0c;请检查动态库路径");elseui->textE…

流媒体服务器ZLMediaKit与FFmpeg

流媒体服务器ZLMediaKit与FFmpeg overview 关键字&#xff1a;ZLMediaKit、FFmpeg、srt、vlc 如果想快速拥有自己的流媒体服务器&#xff0c;那么可以使用开源项目自己搭建。开源的流媒体服务器&#xff0c;在国内&#xff0c;GitHub star数量比较高的&#xff1a;srs和ZLMe…

2024年12个Stonly知识库替代方案

知识库软件在现代企业中发挥着重要的作用&#xff0c;它提供了一个专门的工具&#xff0c;用于创建、管理和维护集中的信息库。面对组织需要处理的大量信息&#xff0c;选择合适的知识库平台可能也是一项比较困难的任务。 知识库一个关键的区别在于内部和外部知识库。内部知识…

C++ BuilderXE10 关于Intraweb关于IWTemplateProcessorHTML1操作

1、端口设置,port参数修改端口号。 2、初始化设置成ciMultiThreaded。这样可以避免ADO组件的加载错误。 3、IWTemplateProcessorHTML1设置&#xff0c; IWForm1->LayoutMgr IWTemplateProcessorHTML1;//关联模板(IWForm1. html) IWTemplateProcessorHTML1->RenderStyles…