首页 > 其他分享 >CMIS4.0/CMIS5.0-模块状态机 (MSM)

CMIS4.0/CMIS5.0-模块状态机 (MSM)

时间:2024-06-16 16:28:51浏览次数:15  
标签:CMIS5.0 转换 状态 主机 状态机 MSM ModuleLowPwr 模块

目录

重要定义

Transition Signals

Compound logical Terms 

Reset / ModuleLowPwr / Resetting / MgmtInit

ResetS

LowPwrS / LowPwrExS / ModuleLowPwr / ModuleReady 

LowPwrS

LowPwrExS

Module Pwr Up Max Duration

Module Pwr Dn Max Duration

CMIS5.0段落翻译


重要定义

本文仅针对分页内存模块

对于CMIS定义的状态机,管理逻辑,常码代码的大佬理解起来应该很容易,你们可以绕道。此文是以硬件测试的角度去尝试理解相关定义和逻辑。语文没学好,瞬态和稳态两个词就是两堵墙,我得琢磨很久......此文是纯针对CMIS原文阅读的理解,可能有误导,需阅读人自己斟酌采纳。

理解状态机前必须先搞清楚几个重要定义:

  • 转换信号(Transition Signals):名称以S结尾,用于描述控制状态转换的逻辑条件。
  • 复合转换信号(Compound logical Terms):名称以T结尾。
  • 稳态:在稳定状态下,模块基本上是在等待主机发起动作。

  • 瞬态:在瞬态状态下,模块执行专用活动并在完成后自动执行状态转换(除非事件在完成前引起其他状态转换)。

从模块的角度来看,稳定状态的持续时间是无界的,因为退出条件取决于不受模块控制的事件。瞬态状态的持续时间是有界的,因为它们与模块控制的活动相关联。持续时间的界限可能依赖于实现方式。

CMIS5.0对每个状态机的解释都按照以下四个词进行划分:

  • On Entry:进入状态的入口,介绍是怎么进入到对应状态的
  • Autonomous Behavior:自主行为,模块进入该状态后自主完成的,不受主机影响
  • Reactive Behavior:反应性行为,模块进入该状态后根据主机具体操作的行为反应
  • Exit:介绍退出状态的规则

Transition Signals

定义是最让我苦恼的东西,每个字都认识,词好像也认识一半,就是走不了心,看完了不知道看了啥。还是以生活举例说明吧。
类比命名方式,下图常见场景。
“红灯停绿灯行”包含了转换信号TrafficS+自主行为(看见绿灯,你就自主松刹车给油要冲了);
这时候交警一个手势你就踩了刹车:踩刹车是你对交警主机动作的反应性行为

Traffic S
反应性行为

Compound logical Terms 

老师说上涟水中专的唯一条件是全科满分,那么考试就可以看作一个满分信号集,定义为涟水T,有考上(1)和没考上(0)两种状态,任一科没过,涟水T就是0,全过才是1。

Reset / ModuleLowPwr / Resetting / MgmtInit

 参见下图6-3,信号ResetS决定了模块在 Reset和ModuleLowPwr 两个稳态之间的转换;Resetting和MgmtInit为瞬态。

ResetS

ResetS信号用下面表6-11所示的真值表来描述

CMIS4.0
CMIS5.0

 也就是参考下图,三个条件满足任意一个或多个,就会将ResetS置为1;

如果同时满足多个退出条件,表6-10描述了退出条件的优先级,。请注意,并非所有退出条件都适用于所有状态。  

CMIS4.0/CMIS5.0

LowPwrS / LowPwrExS / ModuleLowPwr / ModuleReady 

参见下图6-3,信号LowPwrS和 LowPwrExS决定了模块在ModuleLowPwr 和 ModuleReady 两个稳态之间的转换;ModulePwrUp和ModulePwrDn为瞬态。

CMIS5.0用Initiator/Target(下图,不知道是不是这个技术,反正肯定是为了靠近某个更好用更规范的或更主流的技术才改的)技术术语取代CMIS4.0 中的Master/Slave技术术语:
3个词硬是整成了6个,优化了管理接口,增加了理解难度。

什么是iSCSI的Initiator和Target_百度知道 (baidu.com)

① ForceLowPwr → LowPwrRequestSW(软件请求低功耗)
② LPMode → LowPwrRequestHW(硬件请求低功耗)
③ LowPwr → LowPwrAllowRequestHW(软件批准硬件的低功耗请求)

LowPwrS

图3、图4是LowPwrS(Lowe Power State)真值表:

图3 CMIS4.0
图4 CMIS5.0

表看着累人,也不好记,咱们换个角度看看。

光模块的世界里,物理层的硬件/软件谁是老大?从当前角度看,软件是妥妥的老大!

软件想让模块低功耗直接就让LowPwrRequestSW(SW:SoftWare;Lower memory, Byte 26, bit 4)经理给办了;

硬件有权利直接通过对LPMode/TxDis硬件引脚的拉高和拉低进行高低功耗切换吗?诶,没权!你得走流程,让软件的LowPwrAllowRequestHW(HW:HardWare;Lower memory, Byte 26, bit 4)审批专员审批一下,过不过流程看它心情。写到这里,被流程折磨过的我们突然想骂模块了。流程审批专员整天卡流程不给过,不就......一点小错吗,拿着鸡毛当令箭!

LowPwrAllowRequestHW:“哭死,俺也是打工的,职责就是守规则的石狮子,没特殊情况,LowPwrRequestSW不会申请低功耗,我也默认置1,在规则内快速响应硬件兄弟的需求。毕竟共同的目的都是模块正常!”

......跑题了,拉回来。

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="M0UHZsnU-1718448312420" src="https://live.csdn.net/v/embed/399463"></iframe>

LowPwrS

LowPwrExS

图5是LowPwrExS(Lowe Power Exit State)真值表:

图5 CMIS4.0/CMIS5.0

当LowPwrS转换信号为TRUE并且所有数据路径都达到DPDeactivated状态(由逻辑术语ModuleDeactivatedT表示)时,LowPwrExS为True,它表示从ModuleReady状态退出的条件。

注意:

Exit不是退出低功耗进入高功耗,而是从ModuleReady状态退出。

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="PLdfzLvj-1718474927404" src="https://live.csdn.net/v/embed/399503"></iframe>

LowPwrExS

Module Pwr Up Max Duration

Module Pwr Dn Max Duration

ModulePwrUp和ModulePwrDn既然是瞬态,就有持续时间的概念。光模块厂家需根据光模块的设计情况在Page 01h Byte 167(Table 8-50)中进行宣称,可能Host端会根据这里的宣称时间去设置host的某些操作等待时间吧。那就得保证光模块的实际最大持续时间要在宣称时间内。

既然规格就写在光模块的寄存器里,自动化测试软件就可以直接读取宣称值,自动化测试后自动化对比判定Pass/Fail.

标注7: 测量从低到高SDA边缘的停止条件的写事务直到对应状态的IntL跳变为低电平。 

 

CMIS5.0段落翻译

6.3模块行为模式
6.3.1状态机的概念

主机和模块之间的基本启动、初始化和重新初始化交互由基于行为模型的状态机管理和描述。从概念上讲,这些状态机被认为是模块的一部分。
注意:这些状态机是纯粹概念性的,精确的模型,用于指定所需的主机和模块交互以及与这些交互相关的行为;它们不约束软件实现。状态机既描述自主行为(即模块做什么),也描述反应性行为(即模块如何对主机引起的事件做出反应)。在某些情况下,主机无法观察到模块中状态机的状态,但它们仍然控制模块在这些情况下的行为和反应的情况。有两种状态机:模块状态机(MSM)数据路径状态机(DPSM)(后面再找时间单独梳理)。模块状态机作为一个整体定义了主机-模块的交互和模块的行为特征,例如管理接口的初始化和模块电源模式。数据路径状态机定义了一个特定数据路径初始化所需的主模块交互和行为特征,它代表了一种类型应用程序的一个实例的信号流和信号处理。
注意:
① 一个模块有一个模块状态机,但是数据路径状态机的数量取决于模块配置:一个简单的模块对于一个应用程序有一个数据路径,就有一个DPSM。支持一个应用程序的多个实例或多个应用程序实例的并行数据路径的复杂模块有几个DPSM实例,每个提供的应用程序实例一个。
② 正如本规范中其他地方定义的那样,并行数据路径状态机是独立控制的,它们并发操作并且相互独立,并行数据路径的行为很大程度上像物理模块中的独立虚拟模块。

瞬态和稳态两种状态

区分了两种状态(在两种类型的状态机中),稳态和瞬态。在稳定状态下,模块基本上是在等待主机发起动作。
注意:
一些异常的模块内部事件也可能导致从稳态退出。在瞬态状态下,模块执行专用活动并在完成后自动执行状态转换(除非事件在完成前引起其他状态转换)。
从模块的角度来看,稳定状态的持续时间是无界的,因为退出条件取决于不受模块控制的事件。
瞬态状态的持续时间是有界的,因为它们与模块控制的活动相关联。持续时间的界限可能依赖于实现方式。对于大多数瞬态来说,最大持续时间要么是公告的,要么是有特定限制的(见第10章)。
规范和光模块的结构封装形式无关
CMIS被设计成适用于多种光模块的结构封装形式。因此,动作和属性是用通用的信号名来描述的,而不是用特定于光模块的结构封装形式的信号名。附录A描述了通用和形式因素特定信号名称的关联,以及抽象信号电平的实现。

6.3.2模块状态机 (MSM)

模块状态机(MSM)作为一个整体定义了主模块之间的交互和模块的行为特征。MSM状态表示模块被其主机管理和使用的准备情况。模块状态机描述模块范围内的行为和特征。
主机视角
通过观察MSM状态,主机可以判断管理接口上电后是否已经完成初始化,或者重启后是否已经退出。主机还可以从模块状态机中确定分页内存模块中的高速电路何时可以完全通电,以便主机可以通过数据路径状态机开始初始化数据路径(见6.3.3节)。
模块视角
插入模块并上电后,MSM立即工作。
MSM适用于模块和电缆组件,无论是有源还是无源的。

  • 分页内存模块的MSM将在6.3.2.2节中描述(本文只梳理分页内存模块的MSM)。
  • 在6.3.2.3节中描述了平面内存模块的简化MSM。

6.3.2.1通用模块行为

本节描述与模块状态机相关的一般模块行为和需求。

管理数据的相关性、有效性和准确性

在适当初始化之前,即在达到基本可管理性(ModuleLowPwr)状态之前,模块既不评估也不维护管理内存映射的内容。在瞬态期间,报告寄存器的内容通常被模块动态地改变,在再次达到完全管理的运行状态之前,通常可能无效或不准确。
注意:
动态报告寄存器只读由模块更新,以报告状态或性能

Flag设置和清除
模块可以设置的Flag集(可能导致中断)是为每个状态专门定义的。状态相关的Flag设置规则在6.3.4节中定义。除非另有说明,否则模块不会清除状态转换上的任何Flag,并且只有当主机读取或屏蔽了所有设置的Flag时才会清除中断。

状态变化指示
ModuleStateChangedFlag是在进入一个新状态后设置的,但只适用于表6-9中定义的模块初始化状态转换的子集。
此外,设置ModuleStateChangedFlag通常在新状态立即退出时被抑制,因为它的退出条件在进入时已经满足了
注意:这个抑制规则的基本原理是中间状态变化通知无需关注,不应该引起中断;只有最后一次转换到新的稳定状态时才会被通知。

注意:在进入时切换Flag?除非在进入On Entry状态时已经满足退出条件,不然就得标记Flag。

6.3.2.5 Resetting State (Shutting Down)

Resetting State(复位状态)为瞬态。
当Reset转换信号为true时,可以从除Reset外的任何状态进入Reset状态。Reset转换信号定义如表6-11所示。
On Entry
当分页内存模块进入reset状态时,所有的数据路径状态机将停止存在。关于数据路径状态机行为,请参考6.3.3节。
自主行为
模块在进入复位状态之前,尝试优雅地关闭模块光学和电子器件。复位状态启动一个完整的模块复位。模块用于重新设置事件的关闭过程依赖于实现。
注意:
在部分复位状态下,模块可能处于高功率模式。
反应性行为
在重置状态下由主机发起的响应性行为管理交互可能会被模块忽略。进入重置状态时,正在进行的事务可能被中止。
注意:
当重置转换时信号为TRUE时,管理通信接口可能处于复位状态而不响应(NACK)。
Exit
当所有模块电子设备断电并复位时,模块状态自动切换到reset状态。

6.3.2.6 Reset State (Ground State)

Reset状态为稳定状态。
Reset状态是模块插入或上电时模块状态机的初始状态。
On Entry
自清除的SoftwareReset位(参见表8-10)有效地返回到其默认值。所有其他位不受影响。
注意:
这意味着模块必须有一些机制来清除这个位时,在复位状态或退出复位状态。其他位稍后将在Mamtinit状态下设置为其开机默认值,不管它们在退出重置状态时的值是多少。
自主行为
所有内部电子模块复位
模块保持低功耗模式。
所有对主机的中断都被抑制。
反应性行为
模块可能会在进入Reset状态时中止任何正在进行的MCI(Management Communication Interface)事务。在Reset状态下,模块可以忽略所有的MCI事务。
注意:
当reset转换信号为TRUE时,管理接口可能处于reset状态,并且可能不响应(NACK);当ResetS转换信号变为FALSE时,模块可能仍然没有响应,直到退出后续的MgmtInit状态。
Exit
当检测到Reset过渡信号为FALSE时,模块退出Reset状态(见表6-11)。Reset状态只有在复位过渡信号为FALSE并通电时才能退出。在退出Reset状态时,模块状态机进入MamtInit状态。

6.3.2.7 MgmtInit State (初始化管理接口)

MgmtInit状态是一种瞬态。
MgmtInit状态既适用于分页内存模块,也适用于平面内存模块。
Entry
每当模块从Reset状态出来时,就会进入MgmtInit状态。
自主行为
在MgmtInit状态期间,模块将内存映射初始化为默认值,并初始化内存映射
管理通信接口,允许主机最终管理模块。如果模块保持低功耗状态贯穿整个状态,则模块可以执行数据路径电路的有限上电模式
注意:
对于分页的内存模块,所有的数据路径状态在mgmt中都是DpDeactivated的。
反应性行为
当模块处于MgmtInit状态时,可以忽略所有MCI事务。
Exit
当指定的自主行为运行到完成时,将自动发生常规退出。常规退出后的下一个状态是ModuleLowPwr。在常规退出到ModuleLowPwr状态时,模块已确保所有内存映射寄存器位置已设置为其上电默认值。

6.3.2.8 ModuleLowPwr State(基本的可管理性)

ModuleLowPwr状态为稳定状态。它表示在设备仍处于低功耗模式时,管理界面已完全初始化并可操作的情况。在此状态下,主机可以使用管理接口配置模块来读取和写入管理内存映射。在ModuleLowPwr状态下的主机和模块交互的细节不在本规范的讨论范围之内。
注意:
① 在ModuleLowPwr状态下,所有lane的Data Path State仍然是DPDeactivated。
② 一些配置活动的例子包括读取ID和设备属性字段,设置CDR和其他lane属性以及配置中断相关的掩码。
On Entry
在进入ModuleLowPwr状态时,模块将模块状态寄存器(表8-4,CMIS5.0好像写错了,应该是表8-5)设置为ModuleLowPwr状态,并设置ModuleStateChangedFlag(表8-8),除非在进入状态时已经满足了ModuleLowPwr退出条件。
 

自主行为
模块等待退出条件变为真值。

反应性行为
模块响应所有管理操作,但可以忽略或拒绝与Low Power条件不一致的命令。
Exit
当LowPwrS转换信号为FALSE时,模块状态转换为ModulePwrUp(见表6-12)。
注意:
①这种转换可以在ModuleLowPwr期间的任何时间发生,因此模块应该在整个ModuleLowPwr状态中感知LowPwrS。这种行为在CMis 3.0中有不同的定义
②LowPwrS转换信号在ModuleLowPwr中第一次采样时可能会计算为0。在某些情况下,转换到ModulePwrUp可能太快,主机无法检测到模块的状态

6.3.2.9 ModulePwrUp state(Powering Up)

模块ModulePwrUp是一种瞬态。在这种状态下,主机被告知模块正在上电到High Power Mode。
注意:
①该模块预计将根据需要启动模块组件,以加快后续模块和DataPath的重新配置,以用于操作使用。
②在ModulePwrUp状态,所有通道的数据路径状态都是DPDeactivated
On Entry
模块应该将模块状态寄存器(表8-4,CMIS5.0好像写错了,应该是表8-5)设置为ModulePwrUp
自主行为
模块在ModulePwrUp状态的任何时候都可能处于High Power模式。
反应性行为
该模块响应所有管理操作。
Exit
在ModulePwrUp状态的任何时候,当LowPwrs转换信号为TRUE时,模块状态立即转换为ModulePwrDn(正式转换到ModuleReady状态之前最后检测一次LowPwrS,再决定切到ModuleLowPwr还是ModuleReady状态)
当模块上电顺序完成后,模块状态转换为ModuleReady状态

6.3.2.10 ModuleReady (Fully Operational)

ModuleReady状态是一种稳定状态。
在此状态下,模块处于High Power模式,主机可以初始化或去初始化数据路径
On Entry
进入ModuleReady状态时,模块将模块状态寄存器(表8-4,CMIS5.0好像写错了,应该是表8-5)设置为ModuleReady状态,并设置ModuleStateChangedFlag(表8-8)。
自主行为
模块按照主机配置的方式运行。
反应性行为
该模块对所有管理操作和所有相关输入信号变化作出反应。
Exit
除Reset或Fault外,导致退出ModuleReady的动作是如果LowPwrExS转换信号为TRUE(见表6-13),这会导致模块状态转换为ModulePwrDn。

6.3.2.11 ModulePwrDn state(Powering Down)

模块ModulePwrDn状态为瞬态
在此状态下,主机被告知模块正在返回到低功耗模式。
请注意,在ModulePwrDn状态下,所有通道的数据路径状态都是DPDeactivated。 

On Entry
进入ModulePwrDn状态时,模块应该将模块状态寄存器(表8-4,CMIS5.0好像写错了,应该是表8-5)设置为ModulePwrDn状态。
自主行为
降低了模块电子器件的功耗,使模块功耗低于低功耗模式阈值。与管理接口相关的电子设备仍然供电并可用。
在ModulePwrDn状态期间,模块可能仍处于High Power模式。
反应性行为
ModulePwrDn中的模块应该忽略LowPwrS转换信号,因此如果该信号在ModulePwrDn期间为FALSE,则模块将完成掉电顺序并转换到ModuleLowPwr,然后再次采样LowPwrS。
Exit
当模块到达低功耗模式时,模块状态转换为ModuleLowPwr状态。

6.3.2.12 ModuleFault State (Module Fault)

ModuleFault状态为稳定状态
ModuleFault状态用于通知主机模块发生故障后,模块旨在防止物理损坏,并避免模块或其环境(如host)的安全风险。
确切的ModuleFault状态进入条件依赖于实现。ModuleFault状态在模块检测到可能导致损坏的情况(例如,TEC失控,内存损坏)时进入。ModuleFault状态的规范意图是将模块置于不会危及安全或造成进一步设备故障的状态。
On Entry
模块应该将ModuleState寄存器(参见表8-5)设置为ModuleFault,模块可能会将故障原因信息写入ModuleFaultCause寄存器(参见表8-15)。


自主行为
强烈建议模块在ModuleFault状态下进入Low Power模式,但对Fault条件的响应是特定于实现的。
反应性行为
模块只对导致ResetS转换信号变为true的事件作出反应。如果仍然有可能,模块可能会响应READ访问。
Exit
除了电源周期之外,从ModuleFault状态退出的唯一途径是通过采取一个动作来执行模块复位,使复位转换信号变为TRUE(参见表6-11)。

标签:CMIS5.0,转换,状态,主机,状态机,MSM,ModuleLowPwr,模块
From: https://blog.csdn.net/HUJING_XIN/article/details/139701111

相关文章

  • 一文搞懂LIN节点的State Machine状态机测试
    文章目录一、协议概述1.主机任务状态机2.从机任务状态机二、主机任务状态机测试三、从机任务状态机测试1.测试场景2.问题分析3.结果描述总结在ISO17987中在NetworkManagement章节之前有一节关于StateMachine状态机的描述,初学时看着觉得没什么内容,不过是对节点所......
  • 文章MSM_metagenomics(一):介绍
    介绍欢迎大家关注全网生信学习者系列:WX公zhong号:生信学习者Xiaohong书:生信学习者知hu:生信学习者CDSN:生信学习者2用于复现Huangetal.[@huang2024establishment]研究分析的计算工作流程,所有复现数据和代码见WX公zhong号:生信学习者。目录累积分布函数Read质量检查:Rea......
  • yum install msmtp -y
    1stepyuminstallmsmtp-y2step#cat ~/.msmtprc#Setdefaultvaluesforallfollowingaccounts.defaultsauthontlsontls_starttlson#tls_trust_file/etc/ssl/certs/ca-certificates.crttls_trust_file/etc/ssl/certs/ca-bundle.crt......
  • PMSM永磁同步电机滑膜控制SVPWM矢量控制(Simulink仿真实现)
      ......
  • 彻底关闭解决Windows Defender实时防护(MsMpEng.exe、Antimalware Service Executable
    彻底关闭解决WindowsDefender实时防护MsMpEng.exe、AntimalwareServiceExecutable占用CPU和内存过多win11有效解决方法常规方法步骤一、修改注册表步骤二、组策略关闭WindowsDefender防病毒程序根治方法直接删除WindowsDefender实时防护功能简述解决过程Antima......
  • 什么是状态机,用简单的java示例说明状态机的概念
    1.什么是状态机状态机(StateMachine)是一种抽象的计算模型,用于描述一个系统在不同状态之间的转换以及触发这些转换的事件。它由状态、事件、动作和转换规则组成。状态代表系统在某个时刻的行为模式;事件是引起状态转换的外部或内部信号;动作是在状态转换时执行的操作;转换规则定义......
  • 在javascript中定义三个状态机
    //定义基础状态机类classBaseStateMachine{constructor(initialState){this.currentState=initialState;}//转换状态的方法,子类需要根据实际逻辑重写此方法transition(event){thrownewError("transitionmethodmustbeimp......
  • OSPF状态机+SPF算法
      OSPF状态机1.点到点网络类型   down-->init-->(前提为可以建立邻接)exstart——>exchange-->若查看邻接的DBD目录后发现不用进行LSA直接进入ful。若查看后需要进行查询、应答先进入loading,在查询应答完后再进入fuIl:2.MA网络类型   down-->init-->2way-......
  • HDLBits/状态机笔记
    `moduletop_module(inputclk,inputx,outputz);reg[2:0]s_cur;reg[2:0]s_nex;//传递状态always@(posedgeclk)begins_cur<=s_nex;end//确定下一状态always@()begincase(s_cur)3'b000:case(x)0:s_nex=3'b100;1:s_nex=3'b111;endcase3�......
  • 有限状态机
    1状态机原理VerilogHDL语句块都是并行执行的,若想按照顺序的方式执行语句,则会使用有限状态机,简称为状态机。状态机的设计分为一段式、二段式和三段式。通常使用两段式状态机和三段式状态机。1.1二段式状态机二段式状态机使用一个时序逻辑进行状态的转移,另一个时序逻辑进行数......