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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git:常用命令(二)

查看提交历史 1 git log 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作。接下来,我们会介绍一些基本的撤消操作相关的命令。请注意,有些操作并不总是可以撤消的,所以请务必谨慎小心,一旦失误&#xff0c…

Django 后台与便签

1. 什么是后台管理 后台管理是网页管理员利用网页的后台程序管理和更新网站上网页的内容。各网站里网页内容更新就是通过网站管理员通过后台管理更新的。 2. 创建超级用户 1. python .\manage.py createsuperuser 2. 输入账号密码等信息 Username (leave blank to use syl…

jsp结合servlet

servlet配置 环境配置2023.12.31 idea配置搭建 创建一个普通的java项目 由于新版idea去除了add framework support的ui显示,可以在左边项目栏中使用快捷键shiftk或者setting中搜索add framework support在修改对应的快捷键 点击ok然后应该就是下面这样的结果 这里…

大数据背景下基于联邦学习的小微企业信用风险评估研究

摘要: 小微企业信用风险评估难是制约其融资和发展的一个主要障碍。基于大数据的小微企业信用风险评估依然面临着单机构数据片面、跨机构数据共享难、模型不稳定等诸多挑战。针对相关问题和挑战,本项目拟在多主体所有权数据隐私保护与安全共享的背景下&am…

AI4Green开源ELN(电子实验记录本)

AI4Green是一个开源的电子实验记录本,官网:https://github.com/AI4Green/ai4green 国内镜像: skywalk163/AI4Green - AI4Green - OpenI - 启智AI开源社区提供普惠算力! 论文地址:https://pubs.acs.org/doi/10.1021/…

Python开发环境[PycharmEclipseAnaconda]

Pycharm配置Python开发环境 每种语言的开发工具都有很多,如果写一些小的脚本或者小的工具,建议直接使用命令行或者Python自带的IDLE,如果进行大型的开发工作建议使用Pycharm,当然这属于个人喜好。 虽然Pycharm给了我们一个美观的…

安全加固指南:如何更改 SSH 服务器的默认端口号

在 Linux 系统中修改 SSH 服务的默认端口号是一项重要的安全措施,它可以帮助增强系统的安全性。这个过程相对简单,但必须由具有管理员权限的用户来执行。下面,我将向大家介绍如何安全地更改 SSH 端口的具体步骤。 1 备份 SSH 配置文件 在修改…

【MyBatis】操作数据库——入门

文章目录 为什么要学习MyBatis什么是MyBatisMyBatis 入门创建带有MyBatis框架的SpringBoot项目数据准备在配置文件中配置数据库相关信息实现持久层代码单元测试 为什么要学习MyBatis 前面我们肯定多多少少学过 sql 语言,sql 语言是一种操作数据库的一类语言&#x…

【AIGC风格prompt】风格类绘画风格的提示词技巧

风格类绘画风格的提示词展示 主题:首先需要确定绘画的主题,例如动物、自然景观、人物等。 描述:根据主题提供详细的描述,包括颜色、情感、场景等。 绘画细节:描述绘画中的细节,例如表情、纹理、光影等。 场…

认识Linux指令之 “mv” 指令

01.mv指令(重要) mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。 语法: mv [选项] 源文件或目录 目标文件或…

影视后期:Pr 调色处理之风格调色

写在前面 整理一些影视后期相关学习笔记博文为 Pr 调色处理中风格调色,涉及下面几个Demo 好莱坞电影电影感调色复古港风调色赛博朋克风格调色日系小清晰调色 理解不足小伙伴帮忙指正 简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所…

jsp介绍

JSP 一种编写动态网页的语言&#xff0c;可以嵌入java代码和html代码&#xff0c;其底层本质上为servlet,html部分为输出流&#xff0c;编译为java文件 例如 源jsp文件 <% page contentType"text/html; charsetutf-8" language"java" pageEncoding&…

数据库存储引擎

一、什么是存储引擎 存储引擎是MySQL数据库中的一个【组件】&#xff0c;【负责执行实际的数据I/O操作】&#xff0c;工作在文件系统之上&#xff0c;数据库的数据会先传到存储引擎&#xff0c;在按照存储引擎的格式&#xff0c;保存到文件系统。 常用的存储引擎&#xff1a;…

在多Module项目中,给IDEA底部选项卡区域添加Services选项卡

一般一个spring cloud项目中大大小小存在几个十几个module编写具体的微服务项目。此时&#xff0c;如果要调试测需要依次启动各个项目比较麻烦。 idea其实提供了各module的启动管理工具了&#xff0c;可以快速启动和关闭各个服务&#xff0c;也能批量操作&#xff0c;比如一次…

[每周一更]-(第49期):一名成熟Go开发需储备的知识点(答案篇)- 2

答案篇 1、Go语言基础知识 什么是Go语言&#xff1f;它有哪些特点&#xff1f; Go语言&#xff08;也称为Golang&#xff09;是一种由Google开发的开源编程语言。它于2007年首次公开发布&#xff0c;并在2012年正式推出了稳定版本。Go语言旨在提供简单、高效、可靠的编程解决…

Windows 10 安装和开启VNCServer 服务

Windows 10 安装和开启VNCServer 服务 登录云服务器 使用本地RDP登录到配置VNCServer服务的Windows10系统的云服务器。 下载VNC Server安装包 打开官网下载VNCServer安装包 URL&#xff1a;https://www.realvnc.com/en/connect/download/vnc/windows/ 安装VNC Server 双击…

基于蝗虫算法优化的Elman神经网络数据预测 - 附代码

基于蝗虫算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蝗虫算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于蝗虫优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

Adobe ColdFusion 文件读取漏洞(CVE-2010-2861)

漏洞原理 Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品&#xff0c;其运行的CFML&#xff08;ColdFusion Markup Language&#xff09;是针对Web应用的一种程序设计语言。由于AJP协议设计存在缺陷导致内部相关的属性可控&#xff0c;攻击者可以构造属性值&#xff…

微信小程序发送模板消息-详解【有图】

前言 在发送模板消息之前我们要首先搞清楚微信小程序的逻辑是什么&#xff0c;这只是前端的一个demo实现&#xff0c;建议大家在后端处理&#xff0c;前端具体实现&#xff1a;如下图 1.获取小程序Id和密钥 我们注册完微信小程序后&#xff0c;可以在开发设置中看到以下内容&a…

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1&#xff09;参考阿里云扩容分区文档&#xff0c;整理MBR分区扩容 2&#xff09;本文档适用于MBR分区(fdisk -lu查…