6 核心管理特性
核心管理特性#
本章描述的特性、功能和行为通常以传输模块为前提。除非另有说明,这些内容适用于所有CMIS管理的模块。
注:资源模块、线缆组件和平坦内存模块存在例外和简化情况。资源模块是可编程的,但不提供数据传输服务。平坦内存模块仅支持恒定256字节只读管理内存映射(的部分内容),即既不提供可编程性也不提供动态状态信息。线缆组件没有外部介质接口。
本章正文仅适用于系统接口传输模块和应用场景,而客户封装模块和应用场景的扩展管理功能在第7.6节中单独规定,通过对本章描述的系统接口模块管理功能的修改和扩展来定义。对于这些更复杂但可选的应用场景,本章必须仔细阅读,并按照第7.6节所述进行略有不同的解读。
注:关于系统接口应用场景和客户封装应用场景(又称复用应用场景)之间的区别,请参见第1章的导言和第3.3节的术语定义。
注:术语表将应用和数据路径等术语定义为广义含义,包括客户封装应用场景,而本章正文仅字面上适用于系统接口应用场景。因此,本章中的一些表述仅对系统接口应用场景成立,而客户封装模块对应的正确表述只有结合术语表和第7.6节中提出的解读才能明确。请注意避免混淆。
6.1 传输模块管理基础#
CMIS管理的传输模块具有两个与信号传输主要目的相关的物理接口:主机接口和介质接口。
注:主机接口被视为设备间互连,而介质接口被视为设备与介质的连接。对于模块内部的接口电路,这种区别并不重要。
注:本节不适用于CMIS管理的资源模块。
注:对于线缆组件,传输介质是固定的且不可从两端的连接器上拆卸,因此介质接口有时可能被认为不重要。
6.1.1 主机接口#
主机接口是模块与主机系统之间的高速电气接口(互连)。
主机接口承载从主机到模块的信号,称为发射器输入信号,以及从模块到主机的信号,称为接收器输出信号。
所有通过主机接口传输的电气信号都以差分方式在导线对上传输,每对导线称为一个主机通道(互连元素)。
注:根据上下文,主机通道可被视为单向或双向的。
术语主机通道也用于指代模块内部与传播或处理主机通道信号相关的资源(电路)。
6.1.2 介质接口#
介质接口是模块与互连介质(将模块连接到远端对等体)之间的高速电气或光学接口。连接到远端的互连介质可由导线、光纤或光通道(即波长,在DWDM或CWDM链路中)组成。
介质接口承载从模块到介质的信号,称为发射器输出信号,以及从介质到模块的信号,称为接收器输入信号。
所有介质接口信号最终在模块与远端对等体之间传输。从近端角度来看,介质接口信号通过电气差分对(铜缆上)或物理光纤上的光波长传输,统称为介质通道。
注:根据上下文,介质通道可被视为单向或双向的。
术语介质通道也用于指代模块内部与传播或处理介质通道信号相关的资源(光学器件和电路)。
6.1.3 内存映射表示#
每个通道(主机接口和介质接口的通道各一套)都关联一组寄存器,用于控制该接口处信号的处理并报告其状态。在本规范中,所有通道编号或其他对主机通道或介质通道的引用,均指控制或描述这些通道的相应寄存器或字段。当使用”通道”一词而未明确指定”主机”或”介质”时,默认指主机通道视角。
6.2 传输模块功能模型#
以下子节定义了所有CMIS管理传输模块共有的功能方面,除非另有说明。
注:与模块重配置相关的功能和行为管理要求已经变得相当复杂,至少在某些细节上如此。对于可编程性有限或无可编程性的模块,隐式适用显著的简化。
注:CMIS 5.0引入了一种功能简化选项,针对仅支持逐步重配置但不支持免干预重配置的模块,具有微妙的行为差异。出于历史原因,文本将这种更简单且通常足够的用例视为更通用默认规范的限制;并未针对仅对这些简化感兴趣的读者进行优化。
注:本节文本字面上适用于所谓的系统接口应用场景。对于更复杂但可选的客户封装应用场景(又称复用应用场景),必须按照第7.6节所述进行略有不同的解读。
6.2.1 功能传输模块能力——应用场景#
6.2.1.1 应用和应用实例#
应用是一种功能传输配置类型,其特征是在一个或多个主机通道与一个或多个介质通道之间进行特定的信号传播或信号处理,整体上为主机提供明确定义的信号或数据传输功能。
应用实例是模块对某个应用的一次实现。
应用通常通过引用一对行业标准来指定和表征,一个用于主机接口,一个用于介质接口,各包含一个或多个通道。这些接口标准定义了各自接口的所有必要属性,包括信令速率(波特率)、信令调制格式、通道数量,以及数据流的任何数字处理(如通道对齐或FEC编码和解码,如适用)。
在本版CMIS中,应用最多限制为八个主机通道和八个介质通道。
一个简单模块可能仅支持固定单一应用,或支持多个并行应用实例(针对使用通道数少于模块提供通道数的应用),而一个多功能可编程模块可能支持变体应用,甚至支持一个或多个应用的多个实例并行运行。
注:提供同一应用类型的并行应用实例的模块有时称为分支模块。
6.2.1.2 应用实例的数据路径#
模块中用于实现一个应用实例的特定主机和介质通道,连同所有必需的模块内部资源,称为该应用实例的数据路径。
分配给应用实例的数据路径的主机和介质通道分别实现该应用的主机接口实例和介质接口实例。
注:这里区分模块的主机和介质接口与应用的主机和介质接口很重要。仅对于专门实现单个应用实例的模块,二者没有区别。
分配给应用实例的数据路径始终使用在两个模块接口上连续编号的主机和介质通道,分别从最低通道号开始。
注:由于此限制,分配给应用实例的数据路径的主机接口和介质接口分别通过分配的主机接口通道和介质接口通道的最低通道号唯一标识。
给定可能的通道组(即分配应用类型的主机和介质接口实例的选项),可分配给应用实例的数据路径受到限制:第n个主机接口实例选项必须直接连接到第n个介质接口实例选项。
注:此规则假设收发器应用在主机侧和介质侧具有相同的信息比特速率。
注:这是尊重应用由一对接口定义的事实。上述限制意味着配对始终是固定的、直接的,没有切换主机到介质侧连接的选项。
多应用实例和多应用#
模块可支持单个应用的一个或多个实例。从主机角度来看,应用的每个已配置实例独立于所有其他同时配置的应用实例(如有)。
例如,模块可支持具有CAUI-4主机接口和100GBASE-SR4介质接口的应用。在此示例中,模块可通告支持该应用的一个或两个实例。
模块也可支持多个应用。
例如,模块可支持一个由400GAUI-8主机接口和400GBASE-DR4介质接口组合表征的400Gbps应用,以及第二个由100GAUI-2主机接口和100GBASE-DR介质接口组合表征的100Gbps应用。该模块可编程为第一个应用的一个实例,或最多四个第二个应用的实例。
从主机角度来看,每个活跃应用的每个实例独立于所有其他应用实例。
对于模块支持多个应用实例的每个应用,主机需要能够确定每个可能的应用实例中哪组主机通道对应哪组介质通道。如前一节所规定,模块将应用的第n个主机通道组与同一应用的第n个介质通道组关联。
此规则最好通过示例来说明。一个通告支持四个100GAUI-2到100GBASE-DR应用实例的模块,必须在两个接口上标识每个实例的最低通道号。如图6-1所示,该应用可从主机通道1、3、5或7开始分配。
图6-1 通道分配示例(并行数据路径情况)
参见第7.8节了解引入主机通道切换能力的可选扩展。
这些可能性是第一、第二、第三和第四通道组。按照规则,本例中介质接口上从介质通道1开始的第一个通道组必须对应主机接口上从主机通道1开始的第一个通道组。介质接口上从介质通道2开始的第二个通道组必须对应主机接口上从主机通道3开始的第二个通道组,依此类推。因此,在本例中,模块将通告主机通道1、3、5和7作为该应用每个实例支持的最低编号主机通道,介质通道1、2、3和4作为对应的支持最低编号介质通道。
注:对于具有超过八个通道的模块,通道计数在每组八个通道中重新开始。例如,图6-1中的下一个主机和介质通道编号均为9。详见第8.1.3.3节。
6.2.1.4 应用通告(应用描述符和AppSel代码)#
模块使用应用描述符数据结构来通告支持的应用实例化集合:对于每个支持的应用,模块分别通告可承载该应用的受支持实例的主机接口实例和介质接口实例的通道。
6.2.1.4.1 基本应用通告(最多15个应用)#
应用描述符存储在内存映射的三个应用通告区域中(参见表8-23、表8-58、表8-59),但在概念上它们构成一个连续的应用描述符数组,每个描述符的结构如表6-1所示。
每个应用描述符由唯一的AppSel代码标识(Application Selection代码的缩写)。
应用描述符的AppSel代码就是该应用描述符在模块提供的基本应用描述符列表中的序号。因此,简而言之,AppSel代码以模块相关的方式标识或选择一个应用。
注:标识特定应用类型的AppSel代码是模块相关的,因为模块在应用描述符列表中通告其支持的应用的顺序未作规定。
基本通告为最多十五个应用的通告提供空间。AppSel代码1-8标识的应用在表8-23和表8-58所述的寄存器中通告,AppSel代码9-15标识的应用在表8-59和表8-58所述的寄存器中通告。
模块在第一个应用描述符(由AppSel代码1标识)中通告至少一个支持的应用作为其上电默认应用,并按模块定义的任意顺序,在连续的应用描述符数组中(从AppSel代码2标识的描述符开始)通告任何额外支持的应用类型。
模块仅通告支持的应用(可能包括自定义应用)。
注:应用通告场景的示例见附录C。
应用描述符由五个字节组成,描述一个应用的所有可能实例化。
第一个字节(HostInterfaceID)标识主机接口的行业标准。已定义的HostInterfaceID值列表可在[5]中找到,其中每个主机接口ID与一个行业标准、主机接口信令速率、调制格式、通道数量以及隐含地与引用行业标准中定义的信号或数据处理特性相关联。模块在下面描述的HostLaneCount字段中定义支持的主机接口通道数。模块将应用描述符列表中第一个未使用的条目编码为FFh,以指示支持的应用列表的结束。
第二个字节(MediaInterfaceID)标识介质接口的行业标准。已定义的MediaInterfaceID值列表可在[5]的某个介质接口代码表中找到。模块在字节00h:85的MediaType通告字段中(参见表8-21)标识适用的介质接口代码表。介质接口代码表隐含地为每个MediaInterfaceID标识介质接口信令速率、调制格式和标准定义的通道数。模块在下面描述的MediaLaneCount字段中定义支持的介质接口通道数。
注:对于某些具有不可拆卸介质的线缆,MediaInterfaceID可能未定义。
注:HostInterfaceID和MediaInterfaceID的组合标识一种应用类型,而以下字段描述该应用在模块通道上的可能实例化。
第三个字节(Lane Counts)定义主机接口和介质接口的通道数。这些通道数从前两个字节中标识的标准派生。
第四个字节(HostLaneAssignmentOptions)标识模块主机接口上支持该应用的通道。模块可能支持给定应用的多个实例,因此每个通道分配选项字段标识连续通道组中可分配该应用的最低编号通道。
例如,一个支持两个应用实例的模块,该应用具有CAUI-4主机接口,可分配到主机接口通道1-4和5-8,则会将HostLaneAssignmentOptions通告为00010001b,表示该应用实例分配的最低编号通道可以是通道1或通道5。
第五个字节(MediaLaneAssignmentOptions)标识模块介质接口上支持应用实例的位置。请注意,MediaLaneAssignmentOptions寄存器位于内存映射的10h页,如表8-58所述,与前四个字节分开。
注:平坦内存映射模块不需要MediaLaneAssignmentOptions信息。
表6-1 应用描述符结构
| 字节 | 位 | 名称 | 描述 |
|---|---|---|---|
| 第一 | 7-0 | HostInterfaceID | 来自[5]中表4-5”主机电气接口ID”的ID。FFh标记未使用的应用描述符。注:支持的应用列表的末尾由HostInterfaceID为FFh的未使用应用描述符指示。 |
| 第二 | 7-0 | MediaInterfaceID | 来自[5]中多个”介质接口ID”表之一的ID,相关表由MediaType字段(参见表8-23)选择,其中包含如表8-20所述的ModuleTypeEncoding值。 |
| 第三 | 7-4 | HostLaneCount | 主机通道数。0000b:通道数由接口ID定义(参见[5]);0001b:1个通道,0010b:2个通道,……,1000b:8个通道;1001b-1111b:保留 |
| 3-0 | MediaLaneCount | 介质通道数。对于线缆组件,这是线缆中的通道数。0000b:通道数由接口ID定义(参见[5]);0001b:1个通道,0010b:2个通道,……,1000b:8个通道;1001b-1111b:保留 | |
| 第四 | 7-0 | HostLaneAssignmentOptions | 位0-7构成对应主机通道1-8的位图。位值1b表示该应用可从对应的主机通道开始。多通道应用的主机通道编号是连续的。如果允许多个应用实例,则每个支持的起始点都会被标识。如果通告了多个实例,则支持所有可能的应用实例组合。 |
| 第五 | 7-0 | MediaLaneAssignmentOptions | 位0-7构成对应介质通道1-8的位图。位值1b表示该应用可从对应的介质通道开始。多通道应用的介质通道编号是连续的。如果允许多个应用实例,则每个支持的起始点都会被标识。如果通告了多个实例,则支持所有可能的应用实例组合。平坦内存映射模块不需要此字段。 |
注:由于应用描述的是主机接口和介质接口的组合,特定的HostInterfaceID或MediaInterfaceID可能出现在多个应用描述符中。
自定义应用
对于模块支持标准化主机接口(其HostInterfaceID包含在[5]中)但使用专有或尚未在[5]的介质接口通告ID表中列出的介质接口的情况,模块可使用空ID(00h=未定义)或模块供应商建立的自定义ID作为介质接口ID,与标准化的HostInterfaceID组合。HostInterfaceID和通道数为主机提供了与具有陌生或供应商特定介质类型及未来技术的模块互操作所需的信息。
类似地,当模块支持的主机接口规范在[5]中尚未分配HostInterfaceID时,可使用自定义HostInterfaceID,但这需要主机了解其含义。
注:当新的接口类型目标用于标准化用途时,强烈建议在[5]中及时分配标准MediaInterfaceID或HostInterfaceID。
6.2.1.4.2 标准化应用通告(最多240个应用)#
为了克服基本应用通告寄存器中最多15个应用的限制,模块可在所谓的标准化应用描述符中通告最多16×15=240个应用。
标准化应用描述符的支持是可选的,因此需要通告(参见表8-57)。
标准化应用描述符是一个连续的8字节数据结构(参见表8-163),提供所有基本应用属性,包括基本应用通告寄存器中包含的所有信息。
为了允许与遗留主机互通,前15个标准化应用描述符(NAD)实例的内容必须镜像到基本应用通告寄存器中。
NAD实例列表系统地存储在最多16个段中,每个段提供15个NAD数据结构的连续数组(参见第8.20节)。这些段以Bank形式实现。
每个NAD实例由唯一的应用编号(AN)标识,该编号决定了该实例在管理内存中的字节、页和Bank地址。
注:应用通告的顺序是模块定义的;同一应用在两个不同模块中通常具有不同的应用编号。
位于一个段(即一个Bank)中的NAD实例称为NAD块,由段索引(即Bank索引,0-15)标识。
将NAD块索引(B = 0-15)与标识块内实例的基本AppSel代码(c = 1-15)组合,得到全局唯一的应用编号N = B×15 + c。
通告n个应用的模块使用从1到n的应用编号(按模块定义的顺序),并通过将第一个未使用的NAD(AN = n+1)的第一个字节设置为FFh来标记(除非n=240)。
6.2.1.5 应用选择和实例化#
主机通过应用描述符的AppSel代码来引用(基本)应用描述符中描述的应用。当使用标准化应用描述符时,特定的标准化应用描述符通过其应用编号引用。
注:当本规范中提及通过AppSel代码进行应用选择时,隐含地包括通过应用编号AN进行应用选择的替代方式。仅使用AppSel代码的基本数据结构被扩展为允许存储NAD块索引(参见第8.17.1节和第8.18.2节)。
实例化(“预配置”)和实施(“开通”)一个或多个应用的实际配置机制和程序在以下第6.2.3节和第6.2.4节中描述。
注:主机错误选择未使用应用描述符时的模块行为未作规定。
6.2.2 数据路径上的应用实例——数据路径通道分配#
如第6.2.1.2节所述,与一个应用实例关联的通道,连同所有关联的模块内部资源,统称为承载该应用实例的数据路径。
在多个应用实例独立、分别并行运行的模块配置中,分配给这些实例的数据路径不共享任何通道。
主机通过从应用通告寄存器的支持应用列表中选择一个或多个不冲突的应用,并为每个预期的不冲突应用实例分配或分配唯一的通道集作为数据路径,来配置模块以用于预期用途。
分配的数据路径必须被通告为支持该应用,且数据路径使用的通道不得与当前已配置的其他数据路径的通道产生资源冲突。
注:大多数数据路径相关属性作为通道属性在数据路径的通道上重复。主机在数据路径的所有通道上相同地配置这些属性,模块同样在数据路径的所有通道上报告数据路径状态属性。
与数据路径关联的所有模块内部资源作为一个组进行初始化和去初始化。
注:对于在数据路径之间内部共享的资源,此说法是一种简化。
在不相交(不重叠)通道组上并行运行的独立数据路径,从主机角度来看是独立初始化、运行和去初始化的。特别是,主机可以同时异步地对不同数据路径执行管理操作。
注:这意味着模块必须为主机提供每个数据路径功能上独立的控制。但是,只要为主机呈现的单个数据路径的控制机制及其相关行为独立于其他数据路径,允许模块实现利用共享物理资源(如激光器、TEC、处理器等)。
在一个示例中,模块通告一个由CAUI-4主机接口和100GBASE-SR4介质接口组合组成的应用。在此示例中,一个八通道模块可通告支持该应用的一个或两个实例。该应用的每个实例使用独立的数据路径,其中每个数据路径包含四个主机通道和四个介质通道,并且独立于另一个数据路径。
在另一个示例中,模块通告一个由400GAUI-8主机接口和400GBASE-DR4介质接口组合组成的应用,以及第二个由100GAUI-2主机接口和100GBASE-DR介质接口组合组成的应用。主机可选择第一个应用的一个实例或最多四个第二个应用的实例。每个选定应用的每个实例成为独立的、互不依赖的数据路径。
6.2.3 数据路径配置——控制集#
模块数据路径的基本配置在所谓的控制集中定义。
6.2.3.1 控制集概念#
控制集是一组寄存器,包含每通道配置设置,这些设置对于数据路径提供的传输功能至关重要。
控制集的内容最终在模块进行实际数据路径初始化或重新初始化时使用,即当已预配置的数据路径配置被开通时。
控制集有两种类型。活跃控制集(参见第8.10.6节)报告当前预配置的配置设置,这些设置被(或将被)模块用于控制其硬件,而暂存控制集(参见第8.9.3节和第8.9.4节)由主机用于定义新的配置设置以供将来使用,对模块没有立即生效。
注:这种暂存机制将主机写入暂存控制集的时序和顺序与模块在评估活跃控制集后配置模块硬件的操作解耦。
每个可编程模块实现活跃控制集和至少一个暂存控制集。
活跃控制集是只读的,通常报告代表数据路径当前硬件配置的设置,但在名义上的预配置更新与随后的配置开通程序完成之间的短暂过渡期除外,在此期间数据路径硬件实际从活跃控制集初始化或重新初始化。
要实现在暂存控制集中定义的所需配置,主机首先请求模块将活跃控制集中的当前配置替换为该暂存控制集的内容(预配置),然后模块将新设置提交到硬件(开通)。
请求配置预配置程序(或预配置和开通的组合程序)也称为应用暂存控制集,详见第6.2.3.3节、第6.2.4节以及第8.9.3.1节和第8.10.5节。
6.2.3.2 控制集内容#
每个控制集包含一个数据路径配置寄存器数组,由**DPConfigLane<i>**寄存器(参见表8-72、表8-77和表8-93)组成,为每个主机通道定义两个配置设置:
- 应用实例相关设置(如下所述)
- 信号完整性(SI)相关设置(主要在第6.2.5节中描述)
主机通过将相关的应用描述符”编号”(AppSel代码,见下文)及其数据路径”位置”(即分配给应用实例的数据路径通道,由第一个主机通道标识)分配给承载该应用实例的所有通道来定义一个应用实例。
这些应用和数据路径相关设置在数据路径的所有通道上必须相同,而信号完整性相关设置可按通道单独选择。
为此,每个DPConfigLane<i>寄存器包含一个AppSelCode字段和一个DataPathID字段(共同定义通道<i>所属的应用和数据路径),以及一个信号完整性相关的ExplicitControl位(允许为主机通道<i>使用主机定义的SI设置,而非模块为该应用派生的SI设置)。
AppSel代码字段(应用描述符编号)
如第0节所述,每个支持的应用由一个应用描述符通告,每个应用描述符由所谓的AppSel代码(应用描述符序号)标识。
主机使用相关应用描述符的AppSel代码,将该应用描述符中标识的应用分配给DPConfigLane<i>寄存器数组中的一个或多个主机通道。
对于多通道数据路径(即应用需要多个通道时),主机将相同的AppSel代码写入该数据路径每个通道的AppSelCode字段。
主机通道数据路径配置寄存器中的特殊AppSel代码值0000b表示该通道(及其关联资源)未使用,不是数据路径的一部分。未使用主机通道的DataPathID和ExplicitControl字段不相关,模块可忽略。
注:此零值AppSel代码对应编程语言中的NIL或NULL指针。
在每通道状态报告中,模块始终为未使用通道报告DPDeactivated状态(参见表8-84)。
DataPathID字段
DPConfigLane<i>寄存器中DataPathID字段的值定位并标识特定的数据路径。数据路径的DataPathID定义为该数据路径中所有主机通道的最低通道号。
注:确定数据路径介质通道的规则参见第6.2.1.2节。
注:数据路径的主机通道号最终引用物理通道参考点。但这不限制与数据路径关联的模块内部资源的范围:与数据路径关联的模块资源可位于模块中的任何位置,可与其他主机通道共享,或在内存映射中与介质接口关联。模块中任何资源共享都是隐藏的,即在正常操作中不影响不同数据路径的独立运行。
对于多通道数据路径,主机在该数据路径的所有通道中写入相同的DataPathID。
主机必须按照模块为该应用通告的通道分配选项字段将通道分配给数据路径。
ExplicitControl字段
ExplicitControl位(EC)决定与通道关联的功能资源的信号完整性(SI)设置是由主机编程(EC=1)还是由模块编程(EC=0)。
由主机输入(EC=1)或由模块确定(EC=0)产生的有效信号完整性设置在数据路径初始化期间由模块应用。
使用主机控制设置(EC=1)时,主机使用表6-2中列出的控制项(在第6.2.5节中描述)来编程信号完整性配置。
使用模块控制设置(EC=0)时,模块内部编程符合相关应用接口规范(目标)的信号完整性配置。
注:在EC=0情况下,要使用的信号完整性设置可能无法从应用的相关接口规范中完全且唯一地派生。在这种情况下,模块以尽力方式实现满足应用信号完整性目标的设置。
表6-2列出了所有SI控制项以及启用该控制所需的ExplicitControl位值。
否则,SI控制字段值被忽略,模块转而使用与所选应用关联的接口行业标准兼容的SI设置。
表6-2 ExplicitControl位激活的控制字段
| 信号完整性控制字段 | ExplicitControl |
|---|---|
| (参见例如第8.9.3.3节) | (启用值) |
| AdaptiveInputEqEnableTx | 1 |
| AdaptiveInputEqRecallTx | X |
| HostControlledInputEqTargetTx | 1 |
| CDREnableTx | 1 |
| CDREnableRx | 1 |
| OutputEqPreCursorTargetRx | 1 |
| OutputEqPostCursorTargetRx | 1 |
| OutputAmplitudeTargetlRx | 1 |
注:AdaptiveInputEqRecallTx特性的目的是快速恢复先前存储的自适应均衡设置。此功能始终可用,在EC=0时也可用于此目的。
这些信号完整性控制字段的用法在第6.2.5节中定义。
6.2.3.3 控制集使用(应用暂存控制集)#
最初,模块在退出MgmtInit状态(参见第6.3.2.5.3节)之前,使用模块定义的默认应用和信号完整性设置填充暂存控制集0和活跃控制集寄存器。
主机可通过要求模块验证然后将相关通道的设置从暂存控制集复制到活跃控制集来请求预配置一个或多个数据路径,如图6-2所示。
由此产生的通道配置必须仅由完全有效的数据路径和未使用通道(如有)组成。
注:回顾一下,通道数据路径配置寄存器中AppSel值为0000b表示未使用通道(不属于数据路径),模块为其报告DPDeactivated状态(参见第6.3.3节)。
当主机请求开通预配置到活跃控制集中的数据路径时,模块评估活跃控制集中的设置以初始化与该数据路径关联的所有资源。
注:根据过去的主机预配置活动,活跃控制集中的当前设置可能是模块初始化的、主机预配置的或主机开通的值。
触发器仅在暂存控制集0有效
SCS0::ApplyImmediate 触发器 OR 当支持时 SCS0::ApplyDPInit 触发器 **
图6-2 控制集数据流图
应用触发寄存器
每个暂存控制集有两个应用控制项(触发寄存器),供主机请求将数据路径设置从暂存控制集复制到活跃控制集(使用位掩码指示选定数据路径的通道):SCS<k>::ApplyDPInit和SCS<k>::ApplyImmediate。
注:这些应用触发器的典型用例包括:重新配置数据路径上承载的应用、修改数据路径通道宽度、修改数据路径通道上的信号完整性设置,或通过选择与该速度关联的另一个应用来更改接口速度。
注:根据模块通告(参见第6.2.4节),ApplyImmediate可能不受支持。
应用触发器请求的操作是数据路径操作:主机必须在数据路径的所有通道上同时触发应用(即使仅更改个别通道的通道特定属性),但有一个例外:如果支持,ApplyImmediate可在逐通道基础上使用,但仅当仅更改通道特定信号完整性设置且仅在处于DPActivated或DPInitialized状态的数据路径的通道上时。
主机可以在一次写入访问中同时对多个数据路径触发应用。
主机将通道选择位掩码写入其中一个触发寄存器的效果取决于所使用的触发寄存器实例以及位掩码中选定通道关联的数据路径状态机(DPSM)实例的状态。
注:有关DPSM实例和状态的信息,请参见第6.3.3节;有关与应用触发器关联的模块程序的面向命令的描述,请参见第6.2.4节和表6-3。
逐步预配置和开通
主机通过在指示DPDeactivated状态的通道上调用任何应用触发器来请求预配置已准备的暂存设置,这会导致模块(1)验证并(2)复制暂存设置到活跃控制集,而不影响模块硬件。
随后的活跃控制集开通在主机发起的向DPInit状态的转换之后单独进行,在那里模块最终(3)基于当时在活跃控制集中找到的配置初始化关联的数据路径资源,无论使用了什么序列或类型的应用触发器命令来定义活跃控制集的当前内容。
注:出于历史原因,以下免干预重配置程序由默认通告支持,但模块可通告仅支持逐步配置。
组合预配置和开通(免干预)
在指示当前正在使用的已初始化数据路径的通道上调用时,即在指示DPInitialized或DPActivated状态的通道上调用时,两个应用触发器都会导致模块按顺序执行预配置和开通步骤,但以两种不同的方式,有或没有DPSM状态变化,分别描述为常规重配置或热重配置:
常规重配置(带DPSM状态循环的开通的预配置程序)
在已初始化状态下的ApplyDPInit触发后,模块首先(1)验证并(2)复制暂存设置到活跃控制集,然后(3)通过将DPSM自动转换到DPDeactivated状态来去初始化数据路径,最后(4)初始化数据路径以实现新的活跃控制集内容。
此重新初始化(3+4)作为一系列DPSM状态转换(由在各状态中执行的内部模块程序)自动发生,最终回到触发ApplyDPInit的状态(除非DPSM状态转换相关的配置在此期间已更改)。
注:在主机命令下内部执行的免干预程序不需要每个步骤的读或写访问,因此可以更快执行,这对于InfiniBand或光纤通道等应用是必需的。
注:此免干预重配置功能适用于需要比主机完全控制重配置或重新初始化循环时的逐步管理交互更快的应用新设置的情况。
热重配置(无DPSM状态变化的预配置和开通程序)
在已初始化状态下的ApplyImmediate触发后,模块在一个优化的内部程序中执行预配置和开通操作,即(1)验证、(2)复制和(3)重新初始化,不改变DPSM状态。
注:此”热重配置”功能适用于需要快速应用新设置而不禁用介质通道发射器的情况,如光纤通道链路速度协商(LSN)。
注:在DPInitialized或DPActivated状态下使用ApplyImmediate允许在快速完成至关重要的所需配置变更方面实现更快的速度。本规范的意图是模块以最小干扰的方式尽可能快速高效地执行与ApplyImmediate关联的操作。但在某些情况下,如更改速度,干扰不可避免。
静默拒绝
在指示瞬态状态(DPInit、DPDeinit、DPTxTurnOn、DPTxTurnOff)的通道上调用时,模块可忽略应用触发器;结果通常是不确定的。
注:详细行为取决于免干预重配置的支持情况,如下所述。
注:模块应尽可能提供拒绝反馈(ConfigRejected),见下文。
错误处理和结果反馈
在所有情况下,如果请求的数据路径配置在验证期间未被接受,模块跳过该数据路径的程序剩余步骤,不将任何设置复制到活跃控制集。
终止程序时,模块始终报告结果状态码(参见表8-91),通知每个受影响通道的执行成功(ConfigSuccess)或拒绝(ConfigRejected*),使用配置命令执行和结果状态字段(ConfigStatus,参见表8-90)。
实现(开通)
活跃控制集中的内存映射设置到模块硬件的转换是实现特定的,不在本规范范围内。模块在尝试将内存映射设置转换为模块硬件设置时应采用尽力方式。
作为可视化总结,图6-2说明了配置设置从暂存控制集到活跃控制集再到模块硬件的数据流。
6.2.4 数据路径配置——程序和命令#
本节在程序和命令层面描述更改模块数据路径配置的过程。
6.2.4.1 配置概念#
将数据路径投入服务(使其提供应用定义的传输功能)需要三个步骤,此处称为定义、预配置和开通。
注:习惯上将所有三个步骤的组合称为配置活动,但有时配置仅指前两个步骤。为准确起见,需要将这些情况分别区分为实际配置和名义配置,但我们希望含义从上下文中是清楚的。
注:回顾一下,即使仅更改影响个别通道的设置(例如通道特定SI设置),配置更改也是以数据路径粒度请求的。
配置步骤
第一步定义是主机执行的程序,使用任意序列的寄存器写入访问在选定的暂存控制集中定义所需的数据路径配置,不引起模块反应。定义是纯主机程序。
第二步预配置是主机触发的模块程序,验证给定暂存控制集中定义的数据路径设置,如果成功,将它们复制到活跃控制集,涵盖数据路径的所有通道。此步骤是由主机触发的模块程序。
开通
第三步开通要么是主机发起的程序,要么是先前主机触发的预配置程序的自动后续操作:在两种情况下,模块将活跃控制集中选定通道的名义配置提交到硬件,使活跃控制集最终再次匹配实际硬件配置。此步骤是由主机直接发起或间接触发的模块程序。
注:这里故意区分触发和发起:触发具有事件性质,实现为主机写入无状态触发寄存器,而发起是更改配置寄存器中设置的因果结果。对于触发的程序,模块提供反馈,而发起的程序仅通过可观察的效果间接提供反馈。
主机通过写入通道关联的寄存器或字段(在定义或发起模块程序时)或使用通道选择位掩码(在触发模块程序时)来选择数据路径的所有主机通道。
主机程序
本规范描述两种类型的配置程序。
在逐步程序中,主机根据第6.3.3节所述的数据路径状态机(DPSM)初始化和配置模型逐步执行所有配置操作。
此程序的特征是:主机仅对当前未使用或属于已去激活数据路径(处于DPDeactivated状态)的通道进行预配置,且开通程序由主机首先明确发起,然后由模块在初始化数据路径(在DPInit状态)时执行。
注:对于逐步程序足够快的应用(例如以太网或传输),建议主机仅使用逐步程序,避免使用下文描述的免干预程序。
在免干预(或自动)程序中,主机仅在当前使用的已初始化通道(处于DPInitialized或DPActivated状态)上触发预配置步骤,模块随后自动执行开通步骤,无需进一步的主机干预。
但是,模块可通告其不支持或仅部分支持免干预重配置(参见表8-5中的SteppedConfigOnly和AutoConfigSupport字段)。
在免干预常规重配置程序(通过ApplyDPInit寄存器触发)中,当触发的预配置步骤成功执行时,模块自动循环通过数据路径的状态(经由DPDeactivated和DPInit)以执行开通步骤。
注:此方法针对逐步程序不够快的应用,例如光纤通道和InfiniBand。
在免干预热重配置程序(通过ApplyImmediate寄存器触发)中,模块在保持当前数据路径状态的同时自动执行所有配置和开通操作。
注:此方法针对逐步和免干预常规重配置程序都不够快的应用,例如光纤通道。
注:SteppedConfigOnly选项在CMIS 5.0中引入,以简化仅支持始终可逐步重配置的应用的模块的实现和测试。后来增加了通告以支持仅使用两种免干预重配置程序中的一种。参见表8-5。
模块程序
与配置定义不同,预配置和开通步骤是由模块在主机操作后执行的模块程序(参见下一节6.2.3.3)。另见下文表6-3。
模块程序可能需要时间完成,也可能失败。因此,模块向主机提供反馈,包括执行中状态以及最终触发程序的成功或失败。
主机通过将通道选择位掩码写入相关暂存控制集中的应用寄存器(参见表8-70和表8-76)来触发模块程序的开始,并通过每通道ConfigStatus寄存器(参见表8-90和表8-91)提供关于执行和程序结果状态的反馈。
模块程序执行协议(命令处理)
主机触发的数据路径模块程序的执行由四个步骤组成,可在概念上理解为命令处理序列。
第一步,在命令接受中,模块确定请求的程序当前是否可被接受:当先前触发的配置程序仍在执行时,新的触发不能被接受。接受时,模块立即设置此通道的执行状态(ConfigInProgress);否则命令不被执行并被静默忽略,不向主机提供反馈。
注:因此,在触发配置程序之前,主机有责任提前检查数据路径通道的ConfigStatus,或以其他方式确保没有程序仍在执行。
第二步,在命令验证步骤中,模块验证命令的参数(暂存控制集的内容),并在参数验证失败的数据路径上跳过下一步。
第三步,在实际的命令执行步骤中,执行所需的程序。
最后,模块在数据路径通道的ConfigStatus寄存器中报告命令结果状态。结果状态报告执行成功(ConfigSuccess)或因命令执行前验证失败而拒绝执行(ConfigRejected*)。
注:命令执行期间的意外失败不会被报告。
主机可随时查询通道的ConfigStatus以查看配置命令当前是否仍在处理,或先前执行的命令的结果是什么(参见表8-91)。
6.2.4.2 配置命令#
模块对主机将通道选择位掩码写入触发寄存器的总体响应最好理解为每个数据路径的命令处理,包括(1)命令处理就绪检查、(2)输入参数验证、(3)实际命令执行和(4)正面或负面结果状态反馈。下面更详细地描述。
注:回顾一下,配置命令应用于整个数据路径(有一个例外),而触发和结果报告机制按通道定义(所有通道报告相同的值)。另请注意,对触发器的预期反应可能取决于多个因素:DPSM状态、使用的应用触发寄存器类型和实例、更改的性质以及限制通告。
配置命令处理
将通道选择位掩码写入****应用寄存器代表一个**(重新)配置命令**,并触发一个或多个并行模块程序的执行,具体取决于所使用的触发寄存器以及每个受影响通道关联的当前DPSM状态,如表6-3和表6-4所示。
只有当所选通道指示稳定且恒定的DPSM状态,并且所选通道上没有先前触发的配置命令仍在执行时,才允许将通道选择位写入应用寄存器。
注:主机可通过读取下面描述的配置命令执行和结果状态寄存器来检查此前提条件。
注:在瞬态状态或暂态稳定状态下写入应用寄存器可能产生不可预测的效果。
当先前触发的预配置或预配置和开通命令仍在处理数据路径的通道时,模块忽略这些通道的新触发器,并且不在这些通道所属的数据路径上执行命令。
注:由于配置正在进行而忽略通道选择或触发位不会向主机指示。
表6-3 配置命令(支持免干预重配置程序)
| 控制(触发寄存器) | 数据路径状态 * | 主机意图(配置命令类型) | 触发的模块程序 ** |
|---|---|---|---|
| DPDeactivated | 逐步(主机控制)常规配置(“仅复制”) | 预配置 0 ConfigStatus = ConfigInProgress 1 验证暂存控制集内容 | |
| ApplyDPInit | DPActivated 或 DPInitialized | 免干预(主机触发)常规重配置(“复制并循环”)(预配置 + 开通) | 2 复制内容到活跃控制集 3 设置DPInitPending **** 4 在ConfigStatus中报告结果状态 |
| 免干预(主机触发)预配置和开通 | 预配置和开通 0 ConfigStatus = ConfigInProgress | ||
| ApplyImmediate | 热重配置(“复制并提交”)(预配置 + 开通) | 1 验证暂存控制集内容 2 复制内容到活跃控制集 3 将活跃控制集提交到硬件 |
注:开通通过DPSM完成 注:DPInitPending在DPInit中清除
**步骤2和3取决于步骤1中验证的成功。请注意,当主机意图是预配置和开通时,模块程序仅完成预配置步骤,而开通步骤通过触发或解除DPSM行为阻塞来处理。
*** 通过DPSM状态转换表示的重配置称为”常规重配置”,与没有DPSM状态转换的”热重配置”相对。
**** 这些位导致数据路径状态机自动执行开通。
表6-4 配置命令(不支持免干预重配置)
| 控制(触发寄存器) | 数据路径状态 * | 主机意图 | 触发的模块程序 ** |
|---|---|---|---|
| ApplyDPInit | 任何DPSM状态 | 预配置(逐步程序的一部分) | 0 ConfigStatus = ConfigInProgress 1 验证暂存控制集内容 2 复制内容到活跃控制集 3 设置DPInitPending *** 4 在ConfigStatus中报告结果状态 |
| > 注:DPInitPending在DPInit中清除 | |||
| ApplyImmediate | 任何DPSM状态 | 无 | 无(无反应) |
- 仅建议在DPDeactivated中触发(避免硬件和活跃控制集之间的差异) ** 步骤2和3取决于步骤1中验证的成功 *** 在此情况下DPInitPending位仅为指示器,因为数据路径状态机仅在支持免干预常规重配置时才会响应
配置命令执行状态和结果状态
模块使用表8-90所述的配置命令执行和结果状态(ConfigStatus)字段报告配置命令的临时执行中状态和最终结果状态。数据路径配置的状态报告是按通道进行的(CMIS中始终如此)。
接受应用触发器时,模块立即更新所有受影响通道的ConfigStatus字段以指示ConfigInProgress。
在数据路径上触发的模块程序完成后,模块用适当的结果更新该数据路径所有触发通道的ConfigStatus字段:ConfigSuccess或ConfigRejected*。数据路径的所有触发通道仅报告一个数据路径结果状态。
6.2.4.3 主机规则和建议#
本子节提供面向主机的重要规则和建议汇编,这些规则和建议源自其他地方面向模块的规范,并不声称完备:
- 主机必须在活跃控制集中为所有主机通道分配有效的AppSel代码
- 由AppSel代码标识的应用的所有通道必须分配相同的AppSel代码
- 主机必须为每个未使用主机通道(不属于数据路径)分配AppSel = 0000b
- 当通道在数据路径中使用时,主机仅在数据路径处于DPDeactivated状态时才能将其重新配置为未使用,即主机不得在暂存控制集中标记为未使用的通道上调用应用触发器,除非当前与这些通道关联的数据路径处于DPDeactivated状态
- 活跃控制集中的每个已使用通道必须是完全有效的应用实例的一部分(即有效应用完全分配在该应用支持的通道上)
- 主机仅可在DPDeactivated状态下更改数据路径的宽度,即主机必须始终先将现有数据路径转换到DPDeactivated,然后才能选择具有不同通道数的应用。任何变为未使用的通道必须被标记为未使用(AppSel = 0000b)或必须分配给新的有效数据路径(保持在DPDeactivated状态直到最终使用)
- 建议主机仅使用完全主机控制的逐步重配置程序,并且仅对DPDeactivated状态的数据路径使用ApplyDPInit——这是执行数据路径配置更改的最干净方式,更可能与初始上电配置行为完全一致
- 建议主机仅在需要满足应用的协议性能要求时,才对DPInitialized或DPActivated稳定状态的数据路径使用免干预重配置程序(使用ApplyDPInit或ApplyImmediate)
- 当支持免干预重配置程序时,建议主机不要在数据路径处于瞬态状态(DPInit、DPDeinit、DPTxTurnOn或DPTxTurnOff)的通道上调用应用触发器,因为模块会静默忽略在仍处于瞬态状态时收到的请求
- 建议主机仅在支持免干预重配置时使用ApplyImmediate,并且仅在已初始化状态(DPInitialized和DPActivated)下使用,因为模块在所有其他情况下会静默忽略ApplyImmediate
6.2.4.4 初始化序列示例
附录D包含一些示例主机模块初始化流程,可用于常见应用。
6.2.5 信号完整性相关控制#
暂存控制集中的显式控制选项和信号完整性控制字段为主机提供了一种按通道覆盖信号完整性(SI)设置的机制,这些设置否则由模块确定。
如果在适用的暂存控制集中设置了ExplicitControl位(参见表8-72和表8-77),当使用应用触发器时,模块将所有主机预配置的信号完整性控制值从暂存控制集复制到活跃控制集(随后提交到模块硬件,参见图6-2)。
注:在这种情况下,主机有责任为所有信号完整性控制项提供有意义的值。
如果ExplicitControl位被清除,当使用应用触发器时,模块忽略暂存控制集,并将适当的应用相关默认信号完整性控制值写入活跃控制集。
注:在这种情况下,模块以尽力方式决定哪些信号完整性控制设置能实现应用相关接口规范中指定的目标。
注:自适应或非自适应均衡控制仅在ExplicitControl位设置时对主机可用。而AdaptiveInputEqRecallTx召回在ExplicitControl位未设置时也可工作。
对于所有信号完整性控制项,控制值代表参考接收器或发射器度量方面的期望行为,模块在其实现中尽力达到期望效果。
6.2.5.1 Tx输入均衡控制#
Tx输入均衡的控制可按均衡类型分组,如表6-5所示。
表6-5 Tx输入均衡控制与AdaptiveInputEqEnableTx的关系
| 均衡类型 | 控制 | AdaptiveInputEqEnableTx |
|---|---|---|
| 自适应 | AdaptiveInputEqFreezeTx, AdaptiveInputEqStoreTx | 1 |
| AdaptiveInputEqRecallTx | ||
| 非自适应 | HostControlledInputEqTargetTx | 0 |
与自适应Tx输入均衡相关的控制在第6.2.5.4节中描述。
与非自适应Tx输入均衡相关的控制(当Tx输入均衡设置由模块预确定或由主机控制时)描述如下。
注:这些输入均衡值的含义可能在本规范之外的其他地方规定。
模块忽略与当前AdaptiveInputEqEnableTx设置不相关的控制字段值。
主机控制均衡
以dB为单位的Tx输入均衡值基于参考CTLE,可能不直接适用于模块中实现的均衡器。
SCS<k>::HostControlledInputEqTargetTx<i>是通道<i>的四位控制字段,编码如表6-6所示。此字段允许主机编程Tx输入均衡目标,如果为该通道设置了AdaptiveInputEqEnableTx<i>,则模块忽略此字段。
模块按照表8-53所述通告主机控制Tx输入均衡的支持。
模块按照表8-49所述通告支持的最大Tx输入均衡值。
表6-6 主机控制Tx输入均衡代码
| 值 | 位模式 | 输入均衡 |
|---|---|---|
| 0 | 0000b | 无均衡 |
| 1-12 | 0001b … 1100b | 1 dB … 12 dB |
| 13-15 | 1101b … 1111b | 自定义 |
这里,CMIS为控制集中的SI参数定义了固定结构。有关多功能模块定义配置集的描述,请参见CMIS补充文档[6]。
6.2.5.2 Rx输出均衡控制#
SCS<k>::OutputEqPreCursorTargetRx<i>和SCS<k>::OutputEqPostCursorTargetRx<i>是表8-74中定义的通道<i>控制字段,编码如表6-7所示。Rx输出均衡在相关标准定义的适当测试点处定义。模块按照表8-53所述通告Rx输出均衡控制的支持。模块按照表8-49所述通告支持的最大Rx输出均衡值。模块可通告(在RxOutputEqControlSupported中)仅支持单一输出强调设置(仅Pre-Cursor或更可能的仅Post-Cursor)。在这两种情况下,尽管名称看似是控制,单一强调设置(因为它们提供更大的dB范围),模块忽略其他字段。
表6-7 Rx输出均衡代码
| 代码值 | 位模式 | Pre EQ (dB) | Post EQ (dB) |
|---|---|---|---|
| 0 | 0000b | 0dB(无均衡) | 0dB(无均衡) |
| 1 | 0001b | 0.5 dB | 1 dB |
| 2 | 0010b | 1.0 dB | 2 dB |
| 3 | 0011b | 1.5 dB | 3 dB |
| 4 | 0100b | 2.0 dB | 4 dB |
| 5 | 0101b | 2.5 dB | 5 dB |
| 6 | 0110b | 3.0 dB | 6 dB |
| 7 | 0111b | 3.5 dB | 7 dB |
| 8-10 | 1000b-1010b | 保留 | 保留 |
| 11-15 | 1011b-1111b | 自定义 | 自定义 |
注:Pre EQ (dB) = -20∙log₁₀(1–C₁ / (C₋₁ + C₀ + C₁)) (公式 6-1) Post EQ (dB) = -20∙log₁₀(1–C₁ / (C₀ + C₁)) (公式 6-2)
均衡器系数C₋₁对应n<0时的前游标,n>0时为后游标。
请注意,表6-7下方的方程近似了FFE(器件内)归一化抽头权重C₀、C₁和C₂的前游标和后游标均衡。这些近似均衡值不可测量;外部测试点处的测量值会因模块内部损耗和板级损耗而更低。
6.2.5.3 Rx输出幅度控制#
SCS<k>::OutputAmplitudeTargetRx<i>是通道<i>的四位字段,用于指定Rx输出信号电平。Rx输出幅度在无Rx输出均衡的情况下测量,并在相关标准定义的适当测试点处定义,幅度范围编码如表6-8所述。模块按照表8-53所述通告Rx输出幅度控制的支持。模块按照表8-49所述通告支持的最大Rx输出幅度。
表6-8 Rx输出幅度代码
| 值 | 位模式 | 输出幅度 |
|---|---|---|
| 0 | 0000b | 100-400 mV (P-P) |
| 1 | 0001b | 300-600 mV (P-P) |
| 2 | 0010b | 400-800 mV (P-P) |
| 3 | 0011b | 600-1200 mV (P-P) |
| 4-14 | 0100b-1110b | 保留 |
| 15 | 1111b | 自定义 |
6.2.5.4 自适应Tx输入均衡器存储和召回机制#
注:均衡器自适应可能很耗时。在某些应用中,速度更改(这涉及选择新应用从而数据路径重配置)的可用时间不包括均衡器自适应时间。为了更好地支持此类应用,指定了可选的主机控制存储和召回机制,用于存储已自适应的均衡器设置以供后续召回和使用。
注:仅支持需要快速应用更改(例如速度协商)且具有关键时间预算的应用的模块才需要支持此机制。
TxInputEqRecallBuffersSupported字段(参见表8-53)通过通告模块支持的召回缓冲区数量来通告自适应Tx输入均衡器存储和召回机制的支持。
召回缓冲区独立于暂存控制集实例进行编号和使用。
模块在每个召回缓冲区中提供足够的存储空间来存储模块每个通道的已自适应均衡器设置。存储机制是实现特定的,不在本规范中定义。
AdaptiveInputEqStoreTx触发字段在表8-69中描述。要存储通道<i>最近自适应的Tx输入均衡器设置,主机将所需的目标召回缓冲区编号写入AdaptiveInputEqStoreTx<i>。然后均衡器自适应停止,直到设置已存储,之后继续,除非自适应被冻结(即除非设置了AdaptiveInputEqFreezeTx<i>)。
在自适应被禁用时(即AdaptiveInputEqEnableTx<i>为通道<i>被清除)主机请求存储均衡器设置的请求被模块忽略。
主机可在数据路径状态为DPInitialized或DPActivated时的任何时间通过写入AdaptiveInputEqStoreTx<i>来触发存储,请求的存储随后立即发生。
AdaptiveInputEqRecallTx控制字段在表8-73中描述(暂存控制集0),在表8-78中描述(暂存控制集1)。
活跃控制集为每个通道提供当前AdaptiveInputEqRecalledTx状态的只读指示(参见表8-94)。
要将存储的Tx输入均衡器自适应设置召回至暂存控制集,主机将要召回的存储缓冲区编号写入适用的AdaptiveInputEqRecallTx通道控制项。
注:这些设置在主机为该暂存控制集触发ApplyDPInit或ApplyImmediate之前不会被召回至活跃均衡器。
AdaptiveInputEqRecallTx字段独立于该通道的ExplicitControl字段设置使用。
如果AdaptiveInputEqFreezeTx被清除,召回的Tx输入均衡器自适应设置将用作适用通道的连续自适应起始点。否则,如果AdaptiveInputEqFreezeTx被设置,召回的Tx输入均衡器自适应将用作适用通道的冻结Tx输入均衡值。
6.3 模块行为模型#
6.3.1 状态机概念#
主机与模块之间的基本上电、初始化和重新初始化交互由基于状态机的行为模型管理和描述。在概念上,这些状态机被视为模块的一部分。
注:模块实际支持的状态机取决于模块类型(如传输模块、资源模块等)。此支持在CmisSmSupported寄存器中通告(参见第8.2.12节)。
注:这些状态机是纯概念性的精确模型,用于规定所需的主机和模块交互及与这些交互相关的行为;它们不限制软件实现。
状态机描述自主行为(即模块做什么)和反应行为(即模块如何响应主机引起的事件)。在某些情况下,模块中状态机的状态无法由主机观察到,但它们仍然在这些情况下支配模块的行为和反应。
模块和数据路径状态机
区分两种类型的状态机:模块状态机和数据路径状态机。
**模块状态机(MSM)**定义模块整体的主机模块交互和行为特性,如管理接口的初始化和模块功率模式。
数据路径状态机(DPSM)定义初始化一个特定数据路径所需的主机模块交互和行为特性,该数据路径代表一种应用的一个实例的信号流和信号处理。
注:有关应用和数据路径的信息,请分别参见第6.2.1节和第6.2.2节。有关模块状态机和数据路径状态机的更多信息,请参见第6.3.2节和第6.3.3节。
一个模块有一个模块状态机,但数据路径状态机的数量取决于模块配置:具有单个应用的单个数据路径的简单模块有一个DPSM。支持单个应用的多个实例或多个应用的实例的并行数据路径的复杂模块有多个DPSM实例,每个已配置的应用实例一个。
注:如本规范其他地方所定义,并行数据路径状态机是独立控制的,并且并行运行且相互独立。并行数据路径在很大程度上类似于物理模块内的独立虚拟模块。
瞬态和稳定状态
区分两种状态(在两种类型的状态机中),稳定状态和瞬态状态。
在稳定状态中,模块本质上在等待主机发起操作。
注:某些异常的模块内部事件也可能导致从稳定状态退出。
在瞬态状态中,模块执行专用活动,并在完成后自动执行状态转换(除非事件在完成前导致其他状态转换)。
在状态机图示(如图6-3、图6-4和图6-5)中,稳定状态以矩形轮廓显示,瞬态状态以椭圆形轮廓显示。
从模块角度来看,稳定状态的持续时间是无界的,因为退出条件取决于不由模块控制的事件。
瞬态状态的持续时间是有界的,因为它们与模块控制的活动相关联。持续时间界限可能是实现特定的。对于大多数瞬态状态,最大持续时间要么已通告,要么由指定限制界定(参见第10章)。
外形规格无关规范
CMIS被设计为可应用于多种外形规格。因此,使用通用信号名称而非外形规格特定信号名称来描述操作和属性。附录A描述了通用信号名称与外形规格特定信号名称的关联,以及抽象信号电平的实现。
6.3.2 模块状态机(MSM)#
**模块状态机(MSM)**定义模块整体的主机模块交互和行为特性。MSM状态表示模块被主机管理和使用的就绪状态。
模块状态机描述模块范围的行为和特性。
注:有关数据路径特定的行为和特性,请参见第6.3.3节中的数据路径状态机。
主机视角
通过观察MSM状态,主机可以确定管理接口在上电后或退出复位后何时完成初始化。主机还可以从模块状态机状态确定分页内存模块中的高速电路何时可以完全上电,以便主机可以通过数据路径状态机(在第6.3.3节中描述)开始初始化数据路径。
模块视角
MSM在模块插入和上电后立即启动。
MSM适用于模块和线缆组件,无论是无源还是有源的。
- 分页内存模块的MSM在第6.3.2.2节中描述。
- 平坦内存模块的简化MSM在第6.3.2.3节中描述。
6.3.2.1 通用模块行为#
本节描述与模块状态机关联的通用模块行为和要求。
管理数据相关性、有效性和准确性
在正确初始化之前,即在基本可管理性状态(ModuleLowPwr)达到之前,管理内存映射的内容既不由模块评估也不由模块维护。
在瞬态状态期间,通常由模块动态更改的报告寄存器的内容通常可能无效或不准确,直到再次达到完全管理的运行状态。
注:动态报告寄存器由模块只读更新,以报告状态或性能数据。
标志设置和清除
模块可能设置的标志(可能导致中断)集合为每个状态专门定义。状态相关的标志设置规则在第6.3.4节中定义。
除非另有说明,模块不得在状态转换时清除任何标志,中断仅在主机读取或屏蔽所有已设置标志时才被清除。
状态更改指示
ModuleStateChangedFlag在进入新状态后设置,但仅限于表6-9中定义的模块发起的状态转换子集。
此外,当新状态因入口时其退出条件已满足而立即退出时,设置ModuleStateChangedFlag通常会被抑制。
注:此抑制规则的基本原理是中间状态更改通知没有意义且不应导致中断;仅最后一次转换到新的稳定状态应被通知。
表6-9 ModuleStateChangedFlag行为
| 新状态 | 入口时标记?* |
|---|---|
| Resetting | 否 |
| Reset | 否 |
| MgmtInit | 否 |
| ModuleFault | 是 |
| ModuleLowPwr | 是 |
| ModulePwrUp | 否 |
| ModuleReady | 是 |
| ModulePwrDn | 否 |
*除非进入该状态时退出条件已满足
6.3.2.2 分页内存模块的模块状态机#
分页内存模块的行为由图6-3所示的模块状态机描述。
图6-3 分页内存模块状态机(MSM)状态转换图
图例:
- 矩形:稳定状态
- 椭圆:瞬态状态
- NameS:转换信号逻辑名称
模块上电时,初始模块状态机状态为Reset状态,当ResetS为TRUE时,状态机保持在此状态。否则,模块状态机转换到MgmtInit状态。
状态机在特定退出条件满足时退出给定状态。所谓的转换信号(名称以S结尾)用于描述支配状态转换的逻辑条件。其他复合逻辑术语可符号化地以名称以T结尾来命名。
下表描述了如果多个退出条件同时满足时的优先级。请注意,并非所有退出条件都适用于所有状态。
表6-10 模块状态机退出条件优先级
| 优先级 | 退出条件 |
|---|---|
| 1 | ResetS |
| 2 | FaultS |
| 3 | 所有其他退出条件 |
信号和条件
ResetS转换信号使用下面表6-11所示的真值表描述。
表6-11 ResetS转换信号真值表
| VccReset(因低Vcc) | Reset(硬件信号) | SoftwareReset(参见表8-11) | ResetS(转换信号) |
|---|---|---|---|
| ASSERTED | X | X | 1 |
| DEASSERTED | ASSERTED | X | 1 |
| DEASSERTED | DEASSERTED | 1 | 1 |
| DEASSERTED | DEASSERTED | 0 | 0 |
ResetS转换信号也可用逻辑方程表示:
ResetS = ASSERTED(VccReset) OR ASSERTED(Reset) OR SoftwareReset (公式 6-3)
VccReset的实现是可选的。当模块输入处的一个或多个Vcc电源轨的电压降至实现定义的值以下时,在模块内部声明通用硬件信号。通用硬件信号必须由主机声明的时间超过最小复位脉冲持续时间。有关最小复位脉冲持续时间,请参阅外形规格特定文档。有关通用信号名称到外形规格特定信号的映射,请参见附录A。
FaultS转换信号真值表和逻辑方程是模块实现特定的。
LowPwrS转换信号使用下面表6-12所示的真值表描述。
表6-12 LowPwrS转换信号真值表
| LowPwrRequestSW(参见表8-11) | LowPwrAllowRequestHW(参见表8-11) | LowPwrRequestHW(硬件信号) | LowPwrS(转换信号) |
|---|---|---|---|
| X | X | ASSERTED | 1 |
| 0 | 1 | DEASSERTED | 0 |
| 0 | 0 | X | 0 |
| 1 | X | X | 1 |
LowPwrS转换信号也可用逻辑方程表示:
LowPwrS = LowPwrRequestSW OR (LowPwrAllowRequestHW AND ASSERTED(LowPwrRequestHW)) (公式 6-4)
注:LowPwrRequestSW=0和LowPwrAllowRequestHW=1的上电默认值(参见表8-1)意味着模块在硬件控制下上电时会暂停ModuleLowPwr状态中的模块启动。要在ModuleLowPwr状态中暂停模块启动,需要在启动前声明LowPwrRequestHW。
LowPwrExS转换信号使用下面表6-13所示的真值表描述。它代表从ModuleReady状态的退出条件,当LowPwrS转换信号为TRUE且所有数据路径已达到DPDeactivated状态(由逻辑术语ModuleDeactivatedT表示)时。
表6-13 LowPwrExS转换信号真值表
| LowPwrS(转换信号) | ModuleDeactivatedT(术语) | LowPwrExS(转换信号) |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
LowPwrExS转换信号也可用逻辑方程表示:
LowPwrExS = LowPwrS AND ModuleDeactivatedT (公式 6-5)
其中
ModuleDeactivatedT = (DPStateHostLane1 = DPDeactivated) AND (DPStateHostLane2 = DPDeactivated) AND … AND … (DPStateHostLaneN = DPDeactivated)
N = 模块中的主机通道数
表6-14提供了分页内存模块实现中每个模块状态的高层行为和属性摘要。有关每个状态的详细要求,请参见第6.3.2.5.1-6.3.2.5.8节。
表6-14 模块状态行为,分页内存模块
| 状态 | 功率模式 | 状态中的行为 | 退出条件 | 下一状态 | 必需/可选 |
|---|---|---|---|---|---|
| Resetting | 高/低功率 | 管理接口和所有模块电子器件转换到复位 | Resetting完成 | Reset | 必需 |
| Reset | 低功率 | 管理接口和所有模块电子器件处于复位 | ResetS转换信号为FALSE | MgmtInit | 必需 |
| MgmtInit | 低功率 | 管理接口上电并初始化 | ResetS转换信号为TRUE | Resetting | 必需 |
| FaultS转换信号为TRUE | ModuleFault | ||||
| 模块管理接口就绪 且 ModuleStateChangedFlag中断已设置。注:必须在tMgmtInit持续时间内发生(参见第10.1节) | ModuleLowPwr | ||||
| ModuleLowPwr | 低功率 | 管理接口可用,整个分页管理内存可读写。模块支持所有与低功率条件一致的管理功能 | ResetS转换信号为TRUE | Resetting | 必需 |
| FaultS转换信号为TRUE | ModuleFault | ||||
| LowPwrS转换信号为FALSE | ModulePwrUp | ||||
| ModulePwrUp | 高功率 | 模块转换到高功率模式 | ResetS转换信号为TRUE | Resetting | 必需 |
| FaultS转换信号为TRUE | ModuleFault | ||||
| LowPwrS转换信号为TRUE | ModulePwrDn | ||||
| 上电活动完成 | ModuleReady | ||||
| ModuleReady | 高功率 | 模块功耗可达表8-31字段中定义的水平 | ResetS转换信号为TRUE | Resetting | 必需 |
| FaultS转换信号为TRUE | ModuleFault | ||||
| LowPwrExS转换信号为TRUE | ModulePwrDn | ||||
| ModulePwrDn | 高功率 | 模块转换到低功率模式 | ResetS转换信号为TRUE | Resetting | 必需 |
| FaultS转换信号为TRUE | ModuleFault | ||||
| 模块已返回低功率模式 | ModuleLowPwr | ||||
| ModuleFault | *低功率 | 模块等待主机操作 | 模块下电 | N/A | 可选 |
| ResetS转换信号为TRUE | Resetting |
*如果可能,建议ModuleFault状态处于低功率模式。
6.3.2.3 平坦内存模块的模块状态机(简化)#
平坦内存模块应遵守图6-4所示的简化模块状态机描述的行为。
图6-4 平坦内存模块状态机(MSM)状态转换图
如图6-4所示,平坦内存模块无需主机交互即可转换到ModuleReady状态。
平坦内存模块的模块状态转换仅是一种规范形式,因为基于静态EEPROM的内存映射的内容不会更改。尽管Resetting、Reset和MgmtInit状态的行为适用于此类模块,但这些状态不会通过内存映射向主机报告。
平坦内存模块应静态报告ModuleReady的模块状态(参见表8-5)。
ResetS转换信号在表6-11中描述。对于平坦内存模块,Reset信号的声明可选择性地将EEPROM保持在复位状态,但数据路径保持活动。
平坦内存模块不需要支持SoftwareReset或VccResetL。
在初始模块插入或施加电源时,(概念上的)模块状态机初始化为Reset状态。表6-15提供了平坦内存模块中每个模块状态的高层行为和属性摘要。有关每个状态的详细要求,请参见第6.3.2.5.1-6.3.2.5.8节。
表6-15 模块状态行为,平坦内存模块
| 状态 | 功率模式 | 状态中的行为 | 退出条件 | 下一状态 | 必需/可选 |
|---|---|---|---|---|---|
| Resetting(未报告) | 低功率 | 管理接口转换到复位 | Resetting完成 | Reset | 可选 |
| Reset(未报告) | 低功率 | 管理接口处于复位 | ResetS转换信号变为TRUE | MgmtInit | 可选 |
| MgmtInit(未报告) | 低功率 | 管理接口上电并初始化,直到主机可访问平坦管理内存 | ResetS转换信号变为TRUE。模块管理接口就绪在tMgmtInit持续时间后简单假定(参见第10.1节),因此主机应等待该时段 | Resetting 或 ModuleReady | 必需 |
| ModuleReady(已报告) | 低功率 | 管理接口可用,主机可访问平坦管理内存 | ResetS转换信号变为TRUE | Resetting | 必需 |
6.3.2.4 模块功率模式(模块特性)#
模块功率模式规定模块在该模块功率模式下运行时允许消耗的最大电功率。
模块功率模式是模块状态机状态的函数。
定义了两种模块功率模式:
- 在低功率模式(除ModuleReady外所有MSM稳定状态的特征)中,最大模块功耗在外形规格特定硬件规范中定义。
- 在高功率模式(MSM状态ModuleReady的特征)中,实现相关的最大模块功耗在MaxPower字节00h:201中通告(参见表8-31)。
所有模块最初以低功率模式启动。在管理接口初始化且MSM达到稳定的ModuleLowPwr状态后,主机最终可使用LowPwrS转换信号(参见表6-12)定义的条件将分页内存模块转换到高功率模式,前提是主机系统支持通告的MaxPower值。
如果模块处于ModuleLowPwr状态时LowPwrS为FALSE,模块开始启用高功率模式运行,使用为ModulePwrUp状态定义的上电程序(参见第6.3.2.5.5节)。
相反,每当模块处于或正在移向高功率模式时LowPwrS或LowPwrExS(视情况而定)为TRUE,模块开始返回ModuleLowPwr状态,从而返回低功率模式运行,使用为ModulePwrDn状态定义的下电程序(参见第6.3.2.5.7节)。
注:LowPwrS转换信号仅控制模块功率模式,但不控制数据路径初始化。有关数据路径初始化的更多信息,请参见第6.3.3节。
6.3.2.5 模块状态机状态#
6.3.2.5.1 Resetting状态(正在关闭)#
Resetting状态是瞬态状态。
当ResetS转换信号为TRUE时,从除Reset状态外的任何状态进入Resetting状态。ResetS转换信号在表6-11中定义。
进入时
当分页内存模块进入Resetting状态时,所有数据路径状态机停止存在。有关数据路径状态机行为,请参见第6.3.3节。
自主行为
模块在进入Reset状态之前尝试优雅地下电模块光学器件和电子器件。Resetting状态启动完全模块复位。模块用于复位事件的关闭程序是实现特定的。
注:模块在Resetting状态的部分时间内可能处于高功率模式。
反应行为
在Resetting状态期间由主机发起的管理交互可能被模块忽略。进入Resetting状态时,进行中的事务可能被中止。注:当ResetS转换信号为TRUE时,管理通信接口可能被保持在复位状态且不响应(NACK)。
退出
当所有模块电子器件已下电并处于复位时,模块状态自动转换到Reset状态。
6.3.2.5.2 Reset状态(接地状态)#
Reset状态是稳定状态。
Reset状态是模块插入或上电时的初始模块状态机状态。
进入时
自清除SoftwareReset位(参见表8-11)有效地返回其默认值。所有其他位不受影响。
请注意,这意味着模块必须具有某种机制在处于Reset状态时或退出Reset状态时清除此位。其他位将在MgmtInit状态中稍后设置为其上电默认值,无论它们在退出Reset状态时的值如何。
自主行为
所有内部模块电子器件被保持在复位状态。
模块保持低功率模式。
所有对主机的中断被抑制。
反应行为
模块可能在进入Reset状态时中止任何进行中的MCI事务。
模块可能在Reset状态期间忽略所有MCI事务。
注:当ResetS转换信号为TRUE时,管理接口可能被保持在复位状态且不响应(NACK);当ResetS转换信号变为FALSE后,模块可能仍然不响应,直到后续MgmtInit状态退出。
退出
当发现ResetS转换信号为FALSE时(参见表6-11),模块退出Reset状态。
Reset状态仅在ResetS转换信号为FALSE且电源已施加时才能退出。
退出Reset状态时,模块状态机进入MgmtInit状态。
6.3.2.5.3 MgmtInit状态(正在初始化管理接口)#
MgmtInit状态是瞬态状态。
MgmtInit状态适用于分页内存模块和平坦内存模块。
进入
每当模块从Reset状态出来时进入MgmtInit状态。
自主行为
在MgmtInit状态期间,模块将内存映射初始化为默认值,并初始化管理通信接口,使主机最终能够管理模块。
模块可执行有限的数据路径电路上电,前提是模块在整个此状态期间保持低功率模式。
请注意,对于分页内存模块,MgmtInit中的所有数据路径状态为DPDeactivated。
反应行为
模块可能在MgmtInit状态期间忽略所有MCI事务。
退出
常规退出在指定的自主行为运行完成时自动发生。
常规退出后的下一状态是ModuleLowPwr。
常规退出到ModuleLowPwr状态时,模块已确保所有内存映射寄存器位置已设置为其上电默认值。
6.3.2.5.4 ModuleLowPwr状态(基本可管理性)#
ModuleLowPwr状态是稳定状态。
它代表管理接口完全初始化并运行,同时设备保持其低功率模式的情况。
注:ModuleLowPwr状态中所有通道的数据路径状态仍为DPDeactivated。
在此状态期间,主机可使用管理接口查询和配置模块,以读取和写入管理内存映射。
注:查询和配置活动的一些示例包括读取ID和设备属性字段、读取能力通告(包括CDB通告消息,如支持)、设置CDR和其他通道属性,以及配置中断相关掩码。
ModuleLowPwr状态中主机行为和由此产生的主机模块交互的细节不在本规范范围内。
注:这是典型的主机控制稳定状态,交互由主机发起。例如,主机可选择在读取所有通告之前推进到ModuleReady状态,或在ModuleLowPwr中读取。
进入时
进入ModuleLowPwr状态时,模块将模块状态寄存器(表8-5)设置为ModuleLowPwr状态,并设置ModuleStateChangedFlag(表8-9),除非进入该状态时ModuleLowPwr退出条件已满足。
自主模块行为
模块等待退出条件变为真。
反应行为
模块响应所有管理操作,但允许忽略或拒绝与低功率条件不一致的命令。
注:换句话说,模块支持所有与ModuleLowPwr状态特征的低功率条件一致的管理功能(通常由CMIS要求或由模块通告为受支持)。
不幸的是,由于缺少相应通告,CMIS 5.2主机不知道哪些管理功能会违反特定模块实现中的低功率条件。从CMIS 5.3起,模块按表8-60所述通告其LowPowerRestrictions。
注:需要数据路径已初始化的管理功能,根据定义,被认为与低功率条件不一致。
退出
当LowPwrS转换信号为FALSE时(参见表6-12),模块状态转换到ModulePwrUp。
注:此转换可在ModuleLowPwr期间的任何时间发生,因此模块应在整个ModuleLowPwr状态期间检测LowPwrS。此行为在CMIS 3.0中定义不同。
注:LowPwrS转换信号在ModuleLowPwr中首次采样时可能评估为0。在这种情况下,向ModulePwrUp的转换可能太快,以至于主机无法检测到模块短暂处于ModuleLowPwr状态。
6.3.2.5.5 ModulePwrUp状态(正在上电)#
ModulePwrUp状态是瞬态状态。在此状态中,主机被通知模块正在上电到高功率模式。
注:模块预期根据需要上电模块组件,以加速后续模块和数据路径重配置以供运行使用。
请注意,ModulePwrUp状态中所有通道的数据路径状态为DPDeactivated。
进入时
进入时,模块应将模块状态寄存器(表8-5)设置为ModulePwrUp。
自主行为
模块在ModulePwrUp状态期间的任何时间可处于高功率模式。
反应行为
模块响应所有管理操作。
退出
当LowPwrS转换信号在ModulePwrUp状态期间的任何时间为TRUE时,模块状态立即转换到ModulePwrDn。
当模块上电序列完成后,模块状态转换到ModuleReady状态。
6.3.2.5.6 ModuleReady状态(完全运行)#
ModuleReady状态是稳定状态。
在此状态中,模块处于高功率模式,主机可初始化或去初始化数据路径。
进入时
进入ModuleReady状态时,模块应将模块状态寄存器(表8-5)设置为ModuleReady状态,并设置ModuleStateChangedFlag(表8-9)。
自主行为
模块按主机配置运行。
反应行为
模块响应所有管理操作和所有相关输入信号变化。
退出
除复位或故障外,导致从ModuleReady退出的操作是LowPwrExS转换信号为TRUE(参见表6-13),这导致模块状态转换到ModulePwrDn。
6.3.2.5.7 ModulePwrDn状态(正在下电)#
ModulePwrDn状态是瞬态状态。
在此状态中,主机被通知模块正在返回低功率模式。
请注意,ModulePwrDn状态中所有通道的数据路径状态为DPDeactivated。
进入时
进入ModulePwrDn状态时,模块应将模块状态寄存器(表8-5)设置为ModulePwrDn状态。
自主行为
模块降低模块电子器件的功耗,使模块功耗低于低功率模式阈值。与管理接口关联的电子器件保持通电和可用。
模块在ModulePwrDn状态期间的任何时间仍可能处于高功率模式。
反应行为
处于ModulePwrDn的模块应忽略LowPwrS转换信号,因此如果此信号在ModulePwrDn期间为FALSE,模块将完成下电序列并在再次采样LowPwrS之前转换到ModuleLowPwr。
退出
当模块到达低功率模式时,模块状态转换到ModuleLowPwr状态。
6.3.2.5.8 ModuleFault状态(模块故障)#
ModuleFault状态是稳定状态。
ModuleFault状态用于通知主机模块发生故障,此后模块旨在防止物理损坏并避免模块或其环境(例如主机)的安全风险。
确切的ModuleFault状态进入条件是实现特定的。ModuleFault状态仅在模块检测到可能危及安全或造成损坏的条件(例如TEC失控、内存损坏)时进入。ModuleFault状态的规范意图是将模块置于不危及安全或不造成进一步设备故障的状态。
进入时
进入时,模块应将模块状态寄存器(参见表8-6)设置为ModuleFault。
模块可将有关故障原因的信息写入ModuleFaultCause寄存器(参见表8-16)。
自主行为
强烈建议模块在ModuleFault状态期间进入低功率模式,但对故障条件的响应是实现特定的。
反应行为
模块仅响应导致ResetS转换信号变为TRUE的事件。
模块可响应读取访问(如果仍然可能)。
退出
除电源循环外,从ModuleFault状态的唯一退出路径是通过执行导致ResetS转换信号变为TRUE的操作来执行模块复位(参见表6-11)。
6.3.3 数据路径状态机(DPSM)#
数据路径状态机(DPSM)实例描述与数据路径配置相关的数据路径特定行为和属性,由主机管理。
注:回顾一下,本节文本字面上仅适用于系统接口应用场景。对于更复杂但可选的客户封装应用场景(又称复用应用场景),必须按照第7.6节所述进行略有不同的解读。例如,此处描述的DPSM适用于系统接口应用的整个数据路径,而在客户封装应用场景中,每个主机路径使用单独的DPSM(然后仅为整体复用数据路径的主机侧段)。
注:有关模块整体的配置相关行为和属性,请参见第6.3.2节中描述的模块状态机。
注:如第6.2.2节所述,数据路径是一个或多个主机通道、一个或多个介质通道以及一组实现关联应用描述符中描述的应用的模块内部资源的双向组合。
注:DPSM状态代表数据路径的管理或配置实现状态,代表某些主机配置命令及模块对这些命令的响应的效果。它不一定代表双向数据路径的其他行为或运行方面,例如当前输入或输出信号条件或正在提供的传输服务。
注:DPSM状态不应与数据路径功能资源在Tx方向或Rx方向上的运行状态混淆,也不应与由此产生的Rx主机通道输出或Tx介质通道输出的信号输出状态混淆,这些在单独的输出状态寄存器中独立报告(参见第8.10.2节)。
数据路径(和数据路径状态机)仅适用于分页内存模块。
模块状态和DPSM生命周期
代表活跃控制集数据路径配置字段值中定义的上电默认应用所需的DPSM实例在MgmtInit状态期间初始创建和设置。
创建后,DPSM保持在DPDeactivated状态,直到模块状态机处于ModuleReady状态且DPDeactivated状态的退出条件满足。
当主机在ModuleLowPwr或ModuleReady状态中更新活跃控制集中的数据路径配置字段时,模块拆除不再定义的任何先前DPSM,然后创建和设置任何新定义的DPSM。
所有数据路径状态机在Resetting状态中被拆除。
注:有关模块状态机的概述,请参见第6.3.2节;有关应用的概述,请参见第6.2.1节;有关数据路径的概述,请参见第6.2.2节;有关控制集的概述,请参见第6.2.3节。
DPSM用途
数据路径状态机由模块用于表示与数据路径关联的资源的初始化状态,以响应某些主机配置设置或命令。虽然数据路径内的各个资源可能在不同时间完成初始化活动,但模块等待报告更新的DPSM状态,直到与数据路径关联的所有资源完成请求的配置或重配置操作。数据路径中所有通道和资源的这种同步状态反映了每个数据路径只有一个数据路径状态机的事实。
注:DPSM规范模型不暗示任何特定的实现方式。
注:附录D中提供了一些示例数据路径初始化序列。
注:模块通过应用通告字段标识支持的数据路径配置。
多应用实例的并行数据路径的DPSM
模块中的每个数据路径需要独立于其他数据路径运行:如果主机更改一个数据路径的数据路径状态,模块中的其他数据路径应不受影响且不中断。
注:数据路径的独立运行可能需要每个数据路径的独立时钟,从该数据路径内的恢复时钟获取。有关更多信息,请参见适用的硬件规范。模块应仅通告由实现的时钟方案支持的应用和通道配置。
6.3.3.1 DPSM状态转换图和DPSM规范#
图6-5显示了代表一个数据路径实例的数据路径配置相关状态的状态转换图(STD)。
图6-5 数据路径状态机(DPSM)状态转换图
图例:
- 矩形:稳定状态
- 椭圆:瞬态状态
- NameS:转换信号逻辑名称
注:在退出MgmtInit模块状态之前,所有数据路径初始化为DPDeactivated状态。
状态机在特定退出条件满足时退出给定状态。所谓的转换信号(通过名称后缀S识别)代表这些稳定状态的退出条件。
转换信号
DPDeinitS(DataPathDeinitS)
DPDeinitS(DataPathDeinitS)转换信号使用下面表6-16所示的真值表定义。
表6-16 DPDeinitS转换信号真值表
| LowPwrS(MSM,表6-12) | ModuleReadyT(MSM术语) | DPDeinitT(术语) | DPDeinitS(转换信号) |
|---|---|---|---|
| 1 | X | X | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 |
注:为简洁起见,状态、转换信号或命名逻辑谓词名称中的”DataPath”前缀始终可替换为”DP”。缩写名称与完整名称完全等同。
DPDeinitS转换信号也可用逻辑方程表示:
DPDeinitS = ( NOT ModuleReadyT ) OR LowPwrS OR DPDeinitT (公式 6-6)
其中
ModuleReadyT = (ModuleState = ModuleReady) (公式 6-7)
DPDeinitT = DPDeinitLane<N>
OR DPDeinitLane<N+1>
…
OR DPDeinitLane<N+M-1> (公式 6-8)
N = 数据路径中的第一个主机通道 M = 数据路径中的主机通道数
DPReDeinitS(DataPathReDeinitS)
DPReDeinitS转换信号的定义取决于(通告的)模块能力。具体来说,仅当支持免干预常规重配置时(参见表8-5),才包含DPReinitT术语。
情况1:支持常规免干预重配置
当模块支持免干预重配置时(通告参见表8-5),DPReDeinitS(DataPathReDeinitS)转换信号使用下面表6-17所示的真值表定义。
表6-17 DPReDeinitS转换信号真值表(默认)
| DPDeinitS(转换信号) | DPReinitT(术语) | DPReDeinitS(转换信号) |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
DPReDeinitS转换信号也可用逻辑方程表示:
DPReDeinitS = DPDeinitS OR DPReinitT (公式 6-9)
其中
DPReinitT = DPInitPendingLane<N>
OR DPInitPendingLane<N+1>
…
OR DPInitPendingLane<N+M-1> (公式 6-10)
N = 数据路径中的第一个主机通道 M = 数据路径中的主机通道数
DPInitPending状态寄存器在第8.10.7节中描述。每个DPInitPendingLane<i>位代表在成功ApplyDPInit触发后,通过DPInit状态的传递处于待定状态。
在主机写入两个SCS<k>::ApplyDPInit触发寄存器之一触发的预配置程序期间,模块在成功将所有这些触发通道<i>的设置从选定暂存控制集复制到活跃控制集后,同时设置所有触发通道<i>的DPInitPendingLane<i>位(参见第8.9.3.1节、第8.9.4.1节)。
注:DPInitPending位不会响应ApplyImmediate触发器而设置。
模块在DPSM状态DPInit中清除数据路径的所有DPInitPendingLane<i>位。
注:DPInitPending条件变量的预期效果是报告活跃控制集与硬件之间的差异,直到在DPInit状态中解决。当支持免干预重配置时(默认:SteppedConfigOnly = 0),此差异在DPInitialized或DPActivated中成功触发ApplyDPInit后导致通过DPDeactivated和DPInit的免干预DPSM状态循环。
情况2:不支持常规免干预重配置
当模块不支持免干预重配置时(参见表8-5),DPReDeinitS转换信号简化如下(省略DPReinitT术语):
DPReDeinitS = DPDeinitS (公式 6-11)
注:当仅支持逐步配置时,行为的有意变化是ApplyDPInit对DPSM动态完全没有影响,因此完全独立于DPSM。
DPDeactivateS(DataPathDeactivateS)
DPDeactivateS(DataPathDeactivateS)转换信号由逻辑方程定义:
DPDeactivateS = DPReDeinitS OR DPTxDisableT OR DPTxForceSquelchT (公式 6-12)
其中
DPTxDisableT = OutputDisableTx<N> OR OutputDisableTx<N+1>
…
OR OutputDisableTx<N+M-1> (公式 6-13)
DPTxForceSquelchT = OutputSquelchForceTx<N>
OR OutputSquelchForceTx<N+1>
…
OR OutputSquelchForceTx<N+M-1> (公式 6-14)
N = 数据路径中的第一个介质通道 M = 数据路径中的介质通道数
注:当处于DPActivated或DPTxTurnOn状态时,在数据路径的一个介质通道上设置OutputDisableTx或OutputSquelchForceTx会故意导致该整个数据路径通过DPTxTurnOff转换到DPInitialized。虽然数据路径的某些介质通道可能继续运行(即既未禁用也未静默的介质通道),但只要某些介质通道不运行,数据路径整体就被认为未激活。
响应模块复位
当MSM ResetS转换信号(参见表6-11)变为TRUE时,任何数据路径相关的下电活动在Resetting模块状态中执行。DPSM状态机在这种情况下停止存在。
注:可实现模块相关的预复位清理和下电活动,可能还取决于硬件或软件中的复位触发器。
响应模块故障
当模块状态机转换到ModuleFault状态时,DPSM行为没有正式定义,但受ModuleFault状态的行为要求支配。
DPSM状态和Tx输出状态
表6-18提供了每个数据路径状态的Tx输出行为和特性的高层摘要,并概述了瞬态状态的退出条件含义,这些在正式转换信号定义中未捕获。有关每个状态的详细要求,请参见第6.3.3.4-6.3.3.10节。
表6-18 数据路径状态行为和退出条件
| 状态 | 输出状态 Tx | 退出条件 | 下一状态 |
|---|---|---|---|
| DPDeactivated | 静止 | DPDeinitS为FALSE | DPInit |
| DPInit | 静止 | DPDeinitS为TRUE;DPInit完成:数据路径资源初始化完成 | DPDeinit;DPInitialized |
| DPInitialized | 取决于每通道OutputDisableTx和OutputSquelchForceTx | DPReDeinitS为TRUE;DPDeactivateS为FALSE | DPDeinit;DPTxTurnOn |
| DPDeinit | 过渡中 | DPDeinit完成:模块相关去初始化完成 | DPDeactivated |
| DPTxTurnOn | 过渡中 | DPDeactivateS为TRUE;DPTxTurnOn完成:所有数据路径Tx输出运行就绪 | DPTxTurnOff;DPActivated |
| DPActivated | 运行中 | DPDeactivateS为TRUE | DPTxTurnOff |
| DPTxTurnOff | 过渡中 | DPTxTurnOff完成:某些Tx输出的物理状态反映了被静默或按主机命令禁用的名义配置 | DPInitialized |
DPSM状态和Rx输出状态
除了对首次DPInit状态遍历中发生的主机和介质侧Rx数据路径内部功能资源初始化的隐式依赖外,Rx输出状态不受数据路径状态机的进一步控制。
在DPInit状态中的Rx数据路径资源初始化后,模块在DPInitialized、DPTxTurnOn、DPTxTurnOff、DPActivated状态中始终将有效Rx输入信号转发到有效Rx输出信号(除非被Rx输出静音主机命令覆盖)。
当返回到其他DPSM状态(DPDeinit、DPDeactivated、DPInit)时,模块可能静音或不静音Rx输出信号;特别是当有效Rx输入信号可用时,可能传输有效Rx输出信号。
注:有关有效信号的定义,请参见第3.3节。
主机可始终使用OutputDisableRx控制(表8-69)确保Rx输出被静音。
当支持的自动静默功能启用且相关静默条件存在时,模块静音Rx输出。
模块始终在OutputStatusRx寄存器中报告Rx输出信号的实际结果状态,独立于数据路径状态机状态。
6.3.3.2 数据路径控制(主机)#
提供一个主配置寄存器供主机控制给定Bank中所有表示的数据路径的初始化和去初始化。此DPDeinit寄存器(参见表8-68)按主机通道定义通道或关联的数据路径资源是否被确定为未用于功能操作(因此可以去初始化)或是否被确定用于功能操作(因此需要初始化)。
注:选择每通道配置是为了允许从单个内存映射规范中实现各种数据路径配置。
注:Tx介质通道输出的初始化状态和行为由主机使用介质通道特定控制位OutputDisableTx
<i>和OutputSquelchForceTx<i>进一步控制。
请求初始化或去初始化数据路径的主机确保活跃控制集包含所需的配置设置,然后将值0或1分别写入与该数据路径通道关联的DPDeinit位。
主机可在一个寄存器访问中请求初始化或去初始化多个数据路径。
附录D中提供了一些信息性数据路径初始化流程示例,以帮助理解模块中物理结构的初始化与内存映射中数据路径级报告之间的关系。
6.3.3.3 数据路径状态(模块)#
模块提供有关数据路径当前状态(DPSM当前状态报告)和进入某些DPSM状态时(DPSM状态更改指示)的信息。
DPSM当前状态报告
进入DPSM状态时,模块在数据路径的所有通道上将进入的DPSM状态报告为DPState状态寄存器(参见表8-83)中的当前DPSM状态,下面指定了可选的例外情况。
注:由于数据路径所有通道的相同行为,主机仅需读取数据路径的第一个通道即可确定数据路径状态。
注:本规范中的DPSM模型描述每个数据路径一个状态机,数据路径属性在数据路径的所有通道上复制。这不限制软件实现。
DPSM当前状态报告例外
当已知状态是过渡性的(即因入口时其退出条件已满足而立即退出,或在该状态停留的持续时间已知在1毫秒量级或更短)时,模块可抑制在DPStateHostLane<i>寄存器中报告当前DPSM状态。
注:持续时间规范故意模糊。允许状态报告例外的意图是避免报告主机不太可能读取和响应的短寿命状态数据。
DPSM状态更改指示(标志)
DPSM状态更改指示由模块为相关DPSM实例的数据路径的每个通道设置DPStateChangedFlag组成。
注:以下规范的意图是模块仅在进入持久稳定状态时指示状态更改,并且仅当自上次持久稳定状态以来的过渡时间显著时。
瞬态状态的最大持续时间在MaxDuration字段中通告(参见表8-47、表8-56),当编码的MaxDuration字段值为0000b时被认为不显著(参见表8-48)。
当以下两个标志设置条件满足时,模块在进入稳定DPSM状态时执行DPSM状态更改指示:
- 进入的稳定状态的退出条件在状态入口时不满足(状态不是过渡性访问)
- 自此数据路径上次状态更改指示以来(或自模块复位以来,如果自复位以来没有此类状态更改指示),经过的至少一个瞬态状态的通告最大状态持续时间是显著的
模块在进入瞬态DPSM状态时不执行DPSM状态更改指示。
表6-19定义了每个DPSM状态入口的标志行为。
表6-19 数据路径状态更改标志行为
| 进入的状态 | DPStateChangedFlag |
|---|---|
| 可设置 * | |
| DPInit | 否 |
| DPInitialized | 是 |
| DPDeinit | 否 |
| DPDeactivated | 是 |
| DPTxTurnOn | 否 |
| DPActivated | 是 |
| DPTxTurnOff | 否 |
- 注:标志设置条件在正文中描述。
注:稳定状态退出条件可能在进入稳定状态时已满足,并导致立即转换到下一状态(在状态入口或状态退出活动之后,如已定义)。
标志相关行为
模块不因数据路径状态机的状态更改而清除任何标志。
模块仅根据第6.3.4节中定义的DPSM状态特定一致性规则设置标志。
6.3.3.4 DPDeactivated状态(接地状态)#
DPDeactivated(DataPathDeactivated)状态是稳定状态。
此每通道状态表示所指示的通道上没有初始化数据路径。
主机可在报告DPDeactivated的通道上配置或重配置数据路径。
注:重配置从更新活跃控制集开始。
注:当SteppedConfigOnly=1时,主机也可在其他状态中重配置数据路径,但如第6.2.4.3节所述,不建议这样做。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)和数据路径状态更改标志(表8-87)。
在DPDeactivated状态期间,数据路径的所有Tx介质通道输出应静止,而数据路径的所有Rx主机通道输出的状态未定义。
注:数据路径Rx主机通道的Rx输出状态取决于主机控制的配置历史和未指定的模块控制去初始化行为(参见第6.3.3.7节和第6.3.3.10节)。
反应行为(对主机操作)
更改DPDeactivated数据路径的OutputDisableTx或OutputSquelchForceTx寄存器值应不影响这些数据路径的输出静止。
退出
只要ResetS为TRUE(参见表6-11),数据路径保持在DPDeactivated状态。
否则,当DPDeinitS转换信号为FALSE时(参见表6-16),DPSM转换到DPInit。
主机应在导致DPSM退出DPDeactivated状态之前,以所需的信令速率和编码类型提供有效的高速Tx输入信号。
注:模块在后续DPInit状态中执行初始化活动时必须接收有效输入信号,例如信号完整性均衡器设置的自适应。否则,如果没有有效的Tx输入信号可用,由此产生的初始化行为不可预测(模块可能等待或不等待有效信号,并且可能初始化到可能不充分的条件)。
6.3.3.5 DPInit状态(正在初始化)#
DPInit(DataPathInit)状态是瞬态状态。
在此状态中,模块对数据路径的内部资源执行所有必要的初始化活动,使数据路径可运行。
注:初始化活动包括所选应用属性的实现和/或信号完整性设置的自适应,以及如果模块在DPDeactivated中采用了机会性节能时Tx和Rx数据路径电子器件的上电和初始化。
注:模块在进入DPInit状态时假定存在有效的高速Tx输入信号。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)。
在DPInit状态内,模块执行与数据路径关联的模块电子器件的任何必要的上电和初始化活动。
注:在某些情况下,这些电子器件可能在多个数据路径之间共享。根据先前的上电和下电操作,部分或全部这些电子器件可能已经上电;在这种情况下,上电序列被跳过。上电序列的细节是实现特定的,不在本规范范围内。
在DPInit期间,模块通过配置数据路径的相关内部资源来实现活跃控制集中定义的应用属性和信号完整性设置(参见第6.2.3节)。
注:模块应用应用设置的细节是实现特定的,不在本规范范围内。
注:需要自适应的属性(如CTLE设置)在DPInit期间的适当时间进行自适应。信号完整性设置应用和自适应的顺序是实现特定的,不在本规范范围内。
模块清除数据路径中所有通道的DPInitPending位。
在DPInit期间,数据路径的所有Tx介质通道输出应静止,而与数据路径关联的所有Rx主机通道输出的状态未定义。
注:数据路径主机通道的实际Rx输出状态取决于配置历史和未指定(即模块或供应商特定)的去初始化行为(参见第6.3.3.7节和第6.3.3.10节)。
当初始化时模块Rx输入处没有Rx输入信号时,模块配置其电子器件,使任何所需的自适应或CDR锁定在稍后提供输入信号时自动发生,无需主机干预。
反应行为(对主机操作)
更改OutputDisableTx<i>或OutputSquelchForceTx<i>控制应不影响数据路径介质通道输出的静止。
注:建议主机在此状态期间尽量减少管理操作。此状态期间动态内存映射内容可能不可靠,不应读取或写入。
退出
如果在DPInit期间的任何时间DPDeinitS逻辑信号为TRUE,数据路径状态机转换到DPDeinit。
否则,一旦模块完成与数据路径关联的所有Tx和Rx资源的上电和初始化,并且所有关联的Tx和Rx标志和状态寄存器有效,数据路径状态机状态转换到DPInitialized。
注:如果模块未能完成DPInit,主机可通过观察已超过DPInit的通告最大持续时间(参见表8-47中的MaxDurationDPInit)来确定。主机对此类故障采取的操作不在本规范范围内。
6.3.3.6 DPInitialized状态(已初始化)#
DPInitialized(DataPathInitialized)状态是稳定状态。
在此状态中,数据路径的所有功能资源完全初始化。但是,数据路径保持在DPInitialized状态中的一个或多个Tx介质通道的输出被主机静默或禁用,因此数据路径未准备好传输流量。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)和数据路径状态更改标志(表8-87)。
反应行为(对主机操作)
DPInitialized数据路径的发射器输出静止由OutputDisableTx<i>和OutputSquelchForceTx<i>控制中的设置按介质通道配置。
注:当模块内部自动静默控制器响应主机通道输入上的Tx LOS条件并决定静默介质通道输出时,介质通道输出也可能静止。
退出
如果在DPInitialized期间的任何时间DPReDeinitS转换信号为TRUE,数据路径状态机转换到DPDeinit。
否则,如果在DPInitialized期间的任何时间DPDeactivateS信号为FALSE,数据路径状态机转换到DPTxTurnOn。这两个条件在进入DPInitialized时可能已满足。
6.3.3.7 DPDeinit状态(正在去初始化)#
DPDeinit(DataPathDeinit)状态是瞬态状态。
在此状态中,模块可去初始化与数据路径关联的模块内部资源。
注:去初始化任务是实现特定的,但可包括机会性节能、硬件重配置或模块软件变量清理等任务。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)。
在DPDeinit期间,模块可为机会性节能下电适用的数据路径电子器件。在某些情况下,电子器件可能与不在DPDeinit或DPDeactivated中的其他数据路径共享。在这种情况下,这些电子器件保持通电。同样,模块可保持需要较长上电时间的电子器件通电,即使主机请求数据路径去初始化。
注:如果主机希望确保最大节能,主机应通过使LowPwrS变为TRUE来发起模块转换到低功率模式,但这将去激活模块中的所有数据路径。
在DPDeinit中,数据路径的所有Tx介质通道输出最终应变为静止,而与数据路径关联的所有Rx主机通道输出的状态未定义。
注:数据路径Rx主机通道的实际Rx输出状态取决于配置历史和未指定(即模块或供应商特定)的去初始化行为(另见第6.3.3.10节)。
反应行为(对主机操作)
更改DPDeinit数据路径的OutputDisableTx或OutputSquelchForceTx应不影响这些数据路径输出的输出静止。
注:建议主机在此状态期间尽量减少管理操作。此状态通道的动态内存映射内容可能不可靠,不应读取或写入。
退出
当模块完成与数据路径关联的所有资源的去初始化活动时,数据路径状态机转换到DPDeactivated。
6.3.3.8 DPTxTurnOn状态(正在开启)#
DPTxTurnOn(DataPathTxTurnOn)状态是瞬态状态。
在此状态中,模块取消与数据路径关联的所有介质通道的Tx输出静音。
注:在某些异常运行条件下,当被模块自动静默时,通道输出可能实际上保持或变为静止,覆盖主机配置的输出状态。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)。
在DPTxTurnOn期间,与数据路径关联的所有Tx输出应处于过渡中,与数据路径关联的所有Rx输出的状态如Rx输出状态指示器中所报告(参见表8-85)。
反应行为(对主机操作)
注:建议主机在此状态期间尽量减少管理操作。
退出
如果在DPTxTurnOn期间的任何时间DPDeactivateS转换信号变为TRUE,数据路径状态机转换到DPTxTurnOff。
一旦与数据路径关联的所有Tx输出启用、稳定并准备好传输实时流量,数据路径状态推进到DPActivated。
6.3.3.9 DPActivated状态(运行中)#
DPActivated(DataPathActivated)状态是稳定状态。
在此状态中,数据路径完全运行(已初始化并准备好传输流量)。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)和数据路径状态更改标志(表8-87)。
DPActivated中与数据路径关联的所有Tx输出在整个状态期间取消静音并运行。
注:在运行时,Tx输出仍可能被自动静默,覆盖主机配置的输出状态。
反应行为(对主机操作)
在此DPSM状态中,模块响应完全运行的数据路径提供常规传输服务的所有接口上的所有事件。
退出
如果主机导致该数据路径的DPDeactivateS转换信号变为TRUE,数据路径状态转换到DPTxTurnOff。
DPDeactivateS转换信号变为TRUE的一种方式是主机触发与数据路径关联的ApplyDPInit位。
主机可在DPActivated中通过在一个暂存控制集中定义新的应用然后使用ApplyDPInit来重配置一个或多个数据路径。
主机应在被重新初始化的数据路径的所有通道上将ApplyDPInit设置为相同的值。
注:当ApplyDPInit位被触发时,数据路径状态机将通过DPTxTurnOff → DPInitialized → DPDeinit → DPDeactivated → DPInit → DPInitialized → DPTxTurnOn → DPActivated状态序列转换,在DPInit中重新初始化新的数据路径配置。
在为适用通道触发ApplyDPInit位之前,主机应以所需的信令速率和编码类型提供有效的高速输入信号。
数据路径中所有通道的ApplyDPInit位应在一次寄存器访问中触发。
主机可在一个寄存器访问中请求重新初始化多个数据路径。
从ApplyDPInit选择器中排除的数据路径不受影响。
注:此选择性控制允许主机重配置单个数据路径而不影响模块中其他数据路径的运行。
如果主机为数据路径的任何通道设置Tx输出禁用或Tx强制输出静默,DPDeactivateS转换信号也将变为TRUE。
6.3.3.10 DPTxTurnOff状态(正在关闭)#
DPTxTurnOff(DataPathTxTurnOff)状态是瞬态状态。
在此状态中,模块在数据路径的适用介质通道上执行编程的OutputDisableTx和/或OutputSquelchForceTx操作。
自主行为
进入此状态时,模块按照第6.3.3.3节描述的规则更新数据路径中所有通道的数据路径状态寄存器(参见表8-83)。
DPTxTurnOff数据路径的Tx介质通道输出静止最终由OutputDisableTx和OutputSquelchForceTx控制中的编程设置按介质通道确定。
注:通道的外部引起的Tx LOS条件也会静音Tx输出。
反应行为(对主机操作)
注:建议主机在此状态期间尽量减少寄存器访问。
退出
在导致进入DPTxTurnOff状态的OutputDisableTx或OutputSquelchForceTx配置操作已实现且通道静止稳定后,数据路径状态推进到DPInitialized。
6.3.4 每个状态的标志一致性规则#
一些标志(除非被屏蔽,否则导致主机中断)由模块状态机(MSM)或活动数据路径状态机(DPSM)设置,但大多数标志由其他来源设置。
在某些状态中,某些标志不适用,模块不应设置它们。
以下部分定义了MSM和DPSM每个状态的所有标志的一致性规则。
注:特定标志的标志一致性规则的存在并不意味着该标志是必需的。标志的一致性规则仅在(必需或可选的)标志实际受支持时适用。
6.3.4.1 每个模块状态的模块级标志一致性规则#
表6-20描述了所有模块级标志按MSM状态的标志一致性规则。
标志设置限制
在标志指示为N/A(不允许)的MSM状态期间,模块不得设置该标志。
所有模块级标志在Resetting、Reset和MgmtInit MSM状态期间通常为N/A。
模块级标志一致性独立于数据路径状态。
某些模块级标志的含义取决于配置;表6-20为这些标志的每个配置选项定义了标志一致性。
注:主机可通过在管理接口初始化后的任何时间设置相应的已知屏蔽位来抑制由已知标志引起的不需要的中断。
表6-20 模块标志一致性规则
| 标志/标志组 | 页 | 字节 | Resetting Reset MgmtInit | ModuleFault ModuleLowPwr | ModulePwrUp ModulePwrDn ModuleReady |
|---|---|---|---|---|---|
| ModuleStateChangedFlag | 00h | 8 | N/A | 允许 | 允许 |
| ModuleFirmwareErrorFlag | 00h | 8 | N/A | 允许 | 允许 |
| DataPathFirmwareErrorFlag | 00h | 8 | N/A | 允许 | 允许 |
| CdbCmdCompleteFlag* | 00h | 8 | N/A | 允许 | 允许 |
| TempMon*Flag | 00h | 9 | N/A | 允许 | 允许 |
| VccMon*Flag | 00h | 9 | N/A | 允许 | 允许 |
| Aux1Mon*Flag(参见表8-10) | 00h | 10 | N/A | N/A | 允许 |
| Aux2Mon*Flag(参见表8-10) | 00h | 10 | N/A | N/A | 允许 |
| Aux3Mon*Flag(参见表8-10) | 00h | 11 | N/A | N/A | 允许 |
| Aux3Mon*Flag(参见表8-10) | 00h | 11 | N/A | 允许 | 允许 |
| CustomMon*Flag | 00h | 11 | N/A | 1 | 允许 |
注1:供应商定义的监控器的CustomMon*Flag仅在监控器与低功率模式下可用的功能相关时,才在ModuleLowPwr和ModuleFault状态中允许。
标志规范一致性
仅在ModuleReady MSM状态中才保证设置模块级监控器的允许告警和警告标志(包括按指定标志语义生成关联中断)。
6.3.4.2 每个数据路径状态的通道特定标志一致性#
表6-21和表6-22描述了所有通道特定标志按DPSM状态的标志一致性。
标志设置限制
在标志指示为N/A(不允许)的DPSM状态期间,模块不得设置该标志。
所有通道特定标志在Reset和MgmtInit MSM状态期间为N/A。
对于所有其他MSM状态,DPSM状态决定通道特定标志一致性。
注:对于在DPSM状态中允许的标志,可能存在额外和更具体的规则。
注:主机可在管理接口初始化后的任何时间通过设置相应的屏蔽位来抑制不需要的中断。
标志规范一致性
仅在DPInitialized和DPActivated状态中才保证设置数据路径相关监控器的允许告警和警告标志(包括关联中断生成)。
表6-21 通道特定标志一致性规则
| 标志/标志组 | 页 | 字节 | DPDeactivated | DPInit | DPDeinit | DPInitialized | DPTxTurnOn | DPTxTurnOff | DPActivated |
|---|---|---|---|---|---|---|---|---|---|
| 数据路径相关标志 | |||||||||
| DPStateChangedFlag* | 11h | 134 | 允许 | N/A | N/A | 允许 | N/A | N/A | 允许 |
| Tx相关标志 | |||||||||
| FailureFlagTx* | 11h | 135 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| LOSFlagTx* | 11h | 136 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
| CDRLOLFlagTx* | 11h | 137 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
| AdaptiveInputEqFailFlagTx* | 11h | 138 | N/A | 允许 | N/A | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerHighAlarmFlagTx* | 11h | 139 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerLowAlarmFlagTx* | 11h | 140 | N/A | N/A | N/A | 允许¹ | 允许 | 允许 | 允许 |
| OpticalPowerHighWarningFlagTx* | 11h | 141 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerLowWarningFlagTx* | 11h | 142 | N/A | N/A | N/A | 允许¹ | 允许 | 允许 | 允许 |
| LaserBiasHighAlarmFlagTx* | 11h | 143 | 允许 | 允许 | 允许 | 允许¹ | 允许 | 允许 | 允许 |
| LaserBiasLowAlarmFlagTx* | 11h | 144 | N/A | N/A | N/A | 允许¹ | 允许 | 允许 | 允许 |
| LaserBiasHighWarningFlagTx* | 11h | 145 | 允许 | 允许 | 允许 | 允许¹ | 允许 | 允许 | 允许 |
| LaserBiasLowWarningFlagTx* | 11h | 146 | N/A | N/A | N/A | 允许¹ | 允许 | 允许 | 允许 |
| TargetOutputPowerOORFlagTx* | 12h | 231-238 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| FineTuningOutOfRangeFlagTx* | 12h | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | |
| TuningNotAcceptedFlagTx* | 12h | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | |
| InvalidChannelNumberFlagTx* | 12h | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | |
| WavelengthUnlockedFlagTx* | 12h | N/A | 允许 | N/A | 允许 | 允许 | 允许 | 允许 | |
| TuningCompleteFlagTx* | 12h | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 | |
| Rx相关标志 | |||||||||
| LOSFlagRx* | 11h | 147 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| CDRLOLFlagRx* | 11h | 148 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerHighAlarmFlagRx* | 11h | 149 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerLowAlarmFlagRx* | 11h | 150 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerHighWarningFlagRx* | 11h | 151 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 | 允许 |
| OpticalPowerLowWarningFlagRx* | 11h | 152 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
| OutputStatusChangedFlagRx* | 11h | 153 | N/A | N/A | N/A | 允许 | 允许 | 允许 | 允许 |
注1:例如,对于Tx输出被主机静默或禁用的介质通道,Tx输出功率和Tx偏置标志在DPInitialized状态中不允许(N/A)。 注2:虽然OutputStatusChangedFlagRx在某些状态中为N/A,但关联的OutputStatusRx*状态字段在所有DPSM状态中有效。故意不提供OutputStatusChangedFlagTx。
6.3.4.3 每个状态的VDM标志一致性#
表6-22描述了与(可选的)多功能诊断监控可观测量相关的所有标志按数据路径状态的标志一致性。有关可选VDM特性的信息,请参见第7.1节和第8.19节。
在标志指示为”不允许”的数据路径状态中,当数据路径处于该状态时,模块不得设置关联的标志位。
所有VDM标志在Reset和MgmtInit模块状态期间为”不允许”。对于所有其他模块状态,实现者应参考数据路径状态来确定通道特定的标志一致性。
注:主机可在管理接口初始化后的任何时间通过设置相应的屏蔽位来抑制不需要的中断。
表6-22 VDM标志一致性规则
| VDM可观测量类型 | DPDeactivated | DPInit | DPDeinit | DPInitialized | DPTxTurnOn DPTxTurnOff DPActivated |
|---|---|---|---|---|---|
| Laser Age | N/A | 允许 | 允许 | 允许 | 允许 |
| TEC Current | 允许 | 允许 | 允许 | 允许 | 允许 |
| Laser Frequency Error | N/A | 允许 | 允许 | 允许 | 允许 |
| Laser Temperature | N/A | 允许 | 允许 | 允许 | 允许 |
| SNR Media Input | 允许 | 允许 | 允许 | 允许 | 允许 |
| SNR Host Input | N/A | 允许 | N/A | 允许 | 允许 |
| PAM4 Level Transition Parameter (LTP) Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| PAM4 Level Transition Parameter (LTP) Host Input | N/A | 允许 | 允许 | N/A | 允许 |
| Pre-FEC BER Minimum Sample Media Input (DP) | N/A | 允许 | N/A | 允许 | 允许 |
| Pre-FEC BER Minimum Sample Host Input | N/A | 允许 | N/A | N/A | 允许 |
| Pre-FEC BER Maximum Sample Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| Pre-FEC BER Maximum Sample Host Input | N/A | 允许 | N/A | N/A | 允许 |
| Pre-FEC BER Sample Average Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| Pre-FEC BER Sample Average Host Input | N/A | 允许 | N/A | N/A | 允许 |
| Pre-FEC BER Current Sample Value Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| Pre-FEC BER Current Sample Value Host Input | N/A | 允许 | N/A | N/A | 允许 |
| FERC Minimum Sample Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| FERC Minimum Sample Host Input | N/A | 允许 | N/A | N/A | 允许 |
| FERC Maximum Sample Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| FERC Maximum Host Input | N/A | 允许 | N/A | N/A | 允许 |
| FERC Sample Average Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| FERC Sample Average Host Input | N/A | 允许 | N/A | N/A | 允许 |
| FERC Current Sample Value Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| FERC Current Sample Value Host Input | N/A | 允许 | N/A | N/A | 允许 |
| FERC Total Accumulated Media Input | N/A | 允许 | N/A | 允许 | 允许 |
| FERC Total Accumulated Host Input | N/A | 允许 | N/A | N/A | 允许 |