11 附录
11 附录#
附录 A:外形规格相关的信号名称和逻辑值#
表 A-1 将本规范中使用的管理相关信号的通用名称与五种外形规格的管理通信接口(MCI)变体(参见第 4.2 节和附录 B)的特定信号名称进行了关联。管理信令层(MSL)核心信号(参见第 4.2 节和第 5.1 节)或 CMIS 规定的其他规范可能为 CMIS MSL 核心定义外形规格相关的扩展(参见第 2.1.2 节),而这些扩展的管理(通告、管理、报告)内存映射扩展位于第 8.8 节中,仅限于该用途。
表 A-1 外形规格相关的信号名称关联
| CMIS 信号名称 | 层 | QSFP-DD | QSFP | OSFP | COBO | SFP112 |
|---|---|---|---|---|---|---|
| Reset | MSL | ResetL | ResetL | RSTn | ResetL | ResetL |
| Interrupt | MSL | IntL | IntL | INT | IntL | IntL |
| LowPwrRequestHW | MSL | LPMode | LPMode | LPWn | LPMode | - |
| ModSel | I2CMCI | ModSelL | ModSelL | - | ModSelL | ModSelL |
这些通用 CMIS 硬件信号假定两个符号信号电平,与真值 TRUE 和 FALSE 之间具有固定的关联关系。
注意:在硬件规范中,高电平有效电压信号有时被默许等同于正逻辑位(TRUE=1,FALSE=0),而低电平有效电压信号被等同于负逻辑或反相逻辑位(TRUE=0,FALSE=1)。这些默许关联可能造成混淆,因此通过引入符号信号电平 ASSERTED 和 DEASSERTED 来避免(参见第 2.3.2 节),以便同时处理低电平有效逻辑和高电平有效逻辑的实现方式。
符号信号电平 ASSERTED 和 DEASSERTED 与给定逻辑约定下的电压电平之间的对应关系定义如下:
表 A-2 符号逻辑信号值
| CMIS 符号值 | 信号电平 | 高电平有效逻辑电压电平 | 低电平有效逻辑电压电平 | 正位逻辑 | CMIS Bool 类型 | 布尔逻辑真值 |
|---|---|---|---|---|---|---|
| ASSERTED | 高 | 低 | 1 | TRUE | ||
| DEASSERTED | 低 | 高 | 0 | FALSE |
注意:CMIS 中的布尔逻辑表达式和方程大多以数值 0 和 1 来表述,从而假定正逻辑表示(TRUE=1,FALSE=0)。第 2.3.2 节中定义的映射约定允许规范使用抽象信号电平 ASSERTED 和 DEASSERTED 来表示硬件信号,并在伪布尔表达式中使用位值。
注意:没有 LowPwrRequestHW 信号输入的模块表现得如同该缺失信号已被置位(ASSERTED)。
附录 B:管理通信接口(MCI)规范#
本附录包含管理通信接口(MCI)的规范变体,供模块硬件(外形规格)规范引用。
与硬件规范的关系#
特定模块使用的 MCI 变体通常假定在外形规格相关的硬件规范中指定。请参阅相关外形规格硬件规范以确定给定情况下使用哪种 MCI 变体。
注意:此文档结构反转了先前 CMIS 修订版的引用依赖关系。在新结构中,当需要支持 CMIS 管理时,硬件规范引用 CMIS。
与 CMIS 规范其他部分的关系#
本附录中指定的每个 MCI 变体为第 5 章中指定的基本 READ、WRITE 和 TEST 寄存器访问操作提供了必要的数据传输服务。
注意:本规范中寄存器访问层(参见第 5.2 节)与底层管理通信接口之间的这种分离在实现中不需要可见。
注意:将数据传输机制跨 MCI 与基本 CMIS 管理操作(对模块中可管理寻址内存进行 READ 或 WRITE)分离的主要目的是允许 CMIS 管理应用层在未来轻松迁移到其他物理通信接口。
编者注:可以认为,对于功能日益复杂的未来模块的管理,CMIS 管理操作的低抽象级别可能并不理想。即使假设这一点是正确的,允许更高带宽的 CMIS 实现也具有一定价值,无论是用于移植现有管理应用还是扩展 CDB 消息的使用。
可用的 MCI 变体#
在本 CMIS 修订版中,以下 MCI 变体可用:
表 B-1 管理通信接口变体
| MCI 变体 | 描述 | 规范 |
|---|---|---|
| I2CMCI | 基于 I2C 的初始 CMIS MCI 规范 | 第 B.2 节 |
| SPIMCI | 基于 SPI 的 MCI,具有寻址改进 | 第 B.3 节 |
注意:在以前的版本中称为 TWI。
注意:新的 MCI 变体可根据要求添加到未来的 CMIS 修订版中,适用于打算通过新的(例如更高带宽的)通信基础设施实现基于 CMIS 的管理的外形规格。
B.1 通用定义#
管理通信接口提供事务性数据传输服务,以实现第 5 章中指定的基本管理寄存器访问操作:READ、WRITE、TEST。
注意:这些事务性数据传输服务有时简称为总线事务。
数据传输发生在管理主机和被管理模块之间,在 MCI 的中立数据通信视角中分别承担发起方和目标方的角色。
B.1.1 通信角色和事务#
管理通信接口区分两种角色。
发起方(Initiator)发起并终止数据传输的事务(Transaction)。
目标方(Target)在事务中响应发起方。
实现 READ 访问的事务称为读事务。
实现 WRITE 访问的事务称为写事务。
在事务内,数据可以从发起方传输到目标方,也可以从目标方传输到发起方。
注意:在 CMIS 中,主机始终是发起方,模块始终是目标方。
注意:数据传输事务的完成与模块中相关寄存器或存储器的修改不一定是同步的:内部修改可能仅在发起方终止事务后才发生。任何必要的同步条件在第 5.2.4 节中指定。
B.1.2 当前字节地址#
注意:严格来说,本节讨论的是局部的字节大小字节地址,即仅在(可能分组的)页的 128 字节地址空间内的地址。这些字节大小的字节地址仅在给定或假定的(分组的)页上局部唯一,而管理内存中给定或假定字节的全局唯一地址需要所有三个寻址组件:组索引、页索引、字节索引。当 MCI 变体以全局唯一方式寻址字节(而非在先前设置的当前(分组的)页上下文中局部寻址)时,这种区别变得重要。
目标方维护一个内部当前字节地址变量,其中包含在下次访问中未提供地址时要访问的字节的地址。当在访问中指定了地址时,当前字节地址被设置为该地址。
目标方在每次读取或写入一个字节后将当前字节地址递增一,并在递增超过当前 128 字节存储区域末尾时回绕(参见第 8.1 节)。
在低位内存中的回绕:当要递增的字节大小字节地址为 127 时,将当前字节地址设置为 0。
在高位内存中的回绕:当要递增的字节大小字节地址为 255 时,将当前字节地址设置为 128。
注意:在某些(可选)地址范围中,当前字节地址回绕可能与其他机制结合使用,例如第 7.2 节中描述的 CDB 页范围中的自动分页。
只要目标方保持供电且未发生 MCI 协议违规,当前字节地址在两次寄存器访问之间保持有效。
当模块掉电或复位(即初始化后)或发生访问故障(例如 I2CMCI 事务未被 STOP 条件终止)时,当前字节地址不确定。
B.2 基于 I2C 的管理通信接口(I2CMCI)#
I2CMCI 通信规范是通用 I2C 总线 [1] 规范的定制和简化变体,用于发起方和目标方之间的通信。
B.2.1 通信拓扑#
I2CMCI 数据传输协议表现为发起方和目标方之间的点对点交互,因为协议帧不提供地址信息(参见第 B.2.4 节)。
主机系统中的物理管理通信拓扑在主机和模块支持可选的通用硬件控制信号(ModSel)用于模块选择时,仍可能是多点总线。
B.2.2 I2CMCI 控制信号#
以下离散硬件控制信号不是 I2CMCI 的必需部分,但在存在时需要考虑:
- 模块选择信号(ModSel)指示模块激活或钝化其管理接口,以便有效地允许 MCI 总线共享(在需要此类预防措施时)。
注意:这基于以下事实:附录 B 中描述的 I2CMCI 数据传输协议不采用端点寻址,因此本质上仅允许在任一时刻进行点对点通信。
当主机系统中使用模块选择时,主机必须在同一总线上所有模块的 ModSel 线上提供建立时间,并且在管理通信完成且满足保持时间要求之前不得更改任何模块的 ModSel 线(如第 B.2.7.1 节所规定)。
B.2.3 物理层信号#
I2CMCI 电气层由一个时钟信号(SCL)和一个数据信号(SDA)组成。
发起方驱动 SCL 信号,将 SDA 上的数据和控制信息同步到 I2CMCI 总线上。
发起方和目标方均在 SCL 的上升沿锁存 SDA 的状态。
发起方最初应使用 0-400 kHz 的 SCL 时钟速度。如果目标方支持更高的管理接口速度(参见相应的硬件规范),发起方随后可以切换到更快的 0-1 MHz SCL 时钟速度。
SDA 信号是双向的。
在二进制数据传输期间,SDA 信号在 SCL 为低时进行转换。
在二进制数据传输之间,SDA 在 SCL 为高时的转换用于标记数据传输的开始(START)或结束(STOP)。
注意:从发起方到目标方的 I2CMCI 数据传输可以视为由四个标记组成的串行流:1、0、START、STOP,而反向数据流则是二进制的。
所有字节(控制字节、地址字节和数据字节)以位串行方式通过 SDA 传输,每个字节的最高有效位(MSB)最先传输。
低电压编码 0。高电压编码 1。
其他电气信号规格请参见相应的硬件/模块规范。
与 CMIS 寄存器访问操作相关的数据传输串行数据通信协议在 I2CMCI 位串行通信链路上的详细描述见本节余下内容。
B.2.4 串行通信协议#
I2CMCI 串行数据通信协议管理用于与 CMIS 寄存器访问操作相关的数据传输的 I2CMCI 总线事务。
注意:在本节中,需要在 I2CMCI 总线事务(以 START 开始、以 STOP 或新的 START 结束的数据传输)和通过该总线事务从主机传输到模块的 CMIS 寄存器访问操作(READ 或 WRITE)之间做出微妙的区分。如下所述,由总线事务引起的寄存器修改发生在事务终止之后。
B.2.4.1 基本定义和协议元素#
B.2.4.1.1 起始条件(START)#
SCL 为高时 SDA 从高到低的转换是 START 条件。
所有 I2CMCI 总线事务以发起方产生的 START 条件开始。
注意:为区别于二进制数据 0 和 1,START 条件可以用反斜杠 ” 字符表示。
B.2.4.1.2 停止条件(STOP)#
SCL 为高时 SDA 从低到高的转换是 STOP 条件。
所有常规 I2CMCI 总线事务以发起方产生的 STOP 条件结束。
注意:为区别于二进制数据 0 和 1,STOP 条件可以用斜杠 ’/’ 字符表示。
B.2.4.1.3 字长(字节)和位串行传输顺序#
I2CMCI 字长为 8 位。
I2CMCI 字以位串行方式传输,最高有效位(MSB)最先。
注意:以下文本使用术语”字节”来指代 8 位字。
B.2.4.1.4 基本操作编码(控制字节)#
[1] 中的地址字节在 I2CMCI 中用作控制字节,指示总线事务中传递的基本管理操作类型。
在 I2CMCI 中,地址 10100001b(A1h)表示 READ 访问,称为读控制字节。
在 I2CMCI 中,地址 10100000b(A0h)表示 WRITE 访问,称为写控制字节。
B.2.4.1.5 确认(ACK 和 NACK)#
发送一个字节后,驱动 I2CMCI 总线的一方释放 SDA 线一位时间。在此期间,I2CMCI 总线的接收方将 SDA 拉低(零)以确认(ACK)已接收到该字节。
在此期间未将 SDA 拉低(一)被解释为否定确认(NACK)。
目标方在读或写事务期间接收到的每个控制字节后发送 ACK,在写事务期间接收到的每个数据字节后也发送 ACK。
发起方在读事务期间接收到的每个数据字节后发送 ACK,但最后一个数据字节除外,在该字节处通过发送 NACK 然后 STOP 来终止读事务。
B.2.4.2 协议复位和恢复#
B.2.4.2.1 上电复位#
I2CMCI 适配器(接口电路)在上电时进入复位状态。
B.2.4.2.2 协议复位和恢复#
同步问题可能导致发起方和目标方对当前传输的特定位位置、事务类型甚至事务是否正在进行产生分歧。
I2CMCI 协议没有明确定义的复位机制。以下过程可能强制完成当前挂起的事务并导致目标方释放 SDA。
- 发起方应向目标方提供最多九个 SCL 时钟周期(先驱动低,然后高)
- 发起方应在每个周期的 SCL 为高时监控 SDA
- 在任何时钟周期,如果目标方释放 SDA,发起方应发起 STOP 条件。发起方随后可以自由发送下一事务的 START 条件
- 如果在九个时钟周期后 SDA 仍保持低电平,则 I2CMCI 协议复位失败
B.2.5 READ/WRITE/TEST 访问的串行 MCI 事务#
本节描述发起方和目标方之间用于 READ、WRITE、TEST 的 I2CMCI 事务。
I2CMCI 提供已定义的数据传输事务来实现以下基本寄存器访问操作。
表 B-2 I2CMCI 事务
| I2CMCI 事务 | 寄存器访问原语 | 章节 |
|---|---|---|
| 从当前字节地址读取一个字节 | VALUE = READ(1) | B.2.5.1.1 |
| 从当前字节地址开始顺序读取 n>1 个字节 | VALUES = READ(n) | B.2.5.1.2 |
| 从给定字节地址读取一个字节 | VALUE = READ(ByteAddress, 1) | B.2.5.2.1 |
| 从给定字节地址开始顺序读取 n>1 个字节 | VALUES = READ(ByteAddress, n) | B.2.5.2.2 |
| 向给定地址写入一个字节 | WRITE(ByteAddress, Value) | B.2.5.3 |
| 从给定字节地址开始顺序写入 N>1 个字节 | WRITE(ByteAddress, Val1, …, ValN) | B.2.5.4 |
| 测试目标方是否准备好接受事务(ACK 轮询) | TEST() | B.2.5.5 |
注意:读取或写入多个字节的标准长度限制在第 5.2 节中规定,可能的例外情况在其他地方明确指定。
读/写控制字节和响应
在事务的第一部分中,START 条件之后,I2CMCI 总线事务的第一个字节是控制字节,由固定的 7 位部分 1010000b 和一个指示事务类型的位组成:如果此位为 1(高),则请求读事务;如果此位为 0(低),则请求写事务。
接收到控制字节后,目标方将 SDA 信号置低以确认(ACK)接收,除非需要事务拒绝(参见第 B.2.6.2 节)。
字节地址和数据字节
当事务的第一部分被确认后,地址和/或数据以字节为单位在事务的第二部分传输。此传输字节序列的格式和解释对每个基本事务是特定的(如第 B.2.4.2 节所述)。
在传输多个数据字节的事务中,数据字节按字节地址递增的顺序传输(在第 B.1.2 节描述的回绕情况下循环递增)。
图示说明
为了直观地说明总线事务,使用如下所示的图形来显示 SDA 线上的双向标记流,包括 0、1、\(START)和 /(STOP)标记。使用 SDA 线周围的颜色和结构来显示发起方或目标方何时驱动 SDA 线以及用于什么目的。
B.2.5.1 字节读取操作的事务#
B.2.5.1.1 当前地址读取操作的事务#
发起方生成 START 条件并发送读控制字节(10100001b)。
目标方发送 ACK,然后发送从当前字节地址中检索的数据字节。
发起方用 NACK 和 STOP 终止事务。
目标方在有序终止事务(STOP)后且在接受新事务之前递增当前字节地址。
图 B-1 当前地址读取
B.2.5.1.2 随机读取操作的事务#
随机读取事务通过一个中止的虚拟写事务实现,后跟一个当前地址读取事务。
虚拟写事务用于将(但不递增)目标字节地址加载到当前字节地址中,后续的当前地址读取事务从该地址读取。过程如下:
发起方生成 START 条件,并在写控制字节(10100000b)之后发送目标字节地址。
发起方然后生成另一个 START 条件(中止虚拟写),并通过发送读控制字节(10100001b)开始当前地址读取事务。
目标方确认接收到的每个字节。
当接收到虚拟写的字节地址时,目标方更新当前字节地址。当目标方随后看到写事务被中止(即接收到 START 而非要写入的字节)时,当前字节地址不递增,因此包含后续当前地址读取事务中要读取的地址。
当接收到请求的字节后,发起方用 NACK 和 STOP 终止事务。
目标方在有序终止事务(STOP)后且在接受新事务之前递增当前字节地址。
图 B-2 随机读取
B.2.5.2 顺序字节读取操作的事务#
顺序字节读取事务通过在当前地址读取(参见图 B-3)或随机地址读取(参见图 B-4)中的继续来实现。
发起方通过在接收到数据字节后发送 ACK(而非用 NACK 和 STOP 终止事务)来向目标方指示读取序列的继续。
当目标方在向发起方发送字节后收到 ACK 时,它递增当前字节地址并发送存储在该地址的字节。
当发起方发送 NACK 和 STOP(而非 ACK)时,顺序字节读取终止。
目标方在有序终止事务(STOP)后且在接受新事务之前递增当前字节地址。
B.2.5.2.1 从当前起始地址开始的顺序字节读取事务#
图 B-3 从当前地址开始的顺序字节读取
B.2.5.2.2 从随机起始地址开始的顺序字节读取事务#
图 B-4 以随机读取开始的顺序字节读取
B.2.5.3 单字节写入操作的事务#
发起方生成 START 条件并发送写控制字节(10100000b)。
当目标方以 ACK 响应写控制字节后,发起方发送目标字节地址。
当目标方以 ACK 响应目标字节地址后,发起方发送数据字节值。
当目标方以 ACK 响应数据字节值后,发起方发送 STOP 以终止写事务。否则写事务将被继续(参见第 B.2.5.4 节)或中止。
接收到目标字节地址后,目标方立即更新其当前字节地址。
然而,目标方在写事务被 STOP 正确终止之前,不会开始将接收到的数据字节写入当前字节地址的内部存储器写周期。
注意:在未来修订版中,这些与寄存器访问相关的规范可能会移至适当的章节。
接收到 STOP 后,目标方在接受下一个事务之前递增当前字节地址。
如果接收到 START 条件而非 STOP 条件,目标方丢弃接收到的数据字节且不递增当前字节地址。
对于非易失性存储器的写入,在接收到正确的 STOP 条件后,目标方必须进入并完成内部定时写周期,然后才能接受下一个事务。如果需要,目标方必须以最大持续时间 tWR 来延迟后续事务。
对于易失性存储器的写入,在接收到正确的 STOP 条件后,目标方必须进入并完成内部定时写周期,然后才能接受下一个事务。如果需要,目标方必须以最大持续时间 tNACK 来延迟后续事务。
注意:为延迟后续事务,目标方可以禁用其管理接口且不响应或确认后续命令,直到内部存储器写周期完成。
注意:写事务不支持使用重复 START 条件的”组合格式”[1]。
图 B-5 写字节事务
B.2.5.4 顺序字节写入操作的事务#
发起方以与单字节写入相同的方式发起多字节顺序写事务,但在第一个字节之后不发送 STOP 条件。相反,在目标方确认(ACK)接收到第一个数据字节后,发起方在不传输新的显式字节地址信息或控制字节的情况下传输额外的数据字节。
发起方用 STOP 条件终止顺序写序列,否则事务被中止,顺序写的结果不确定。
目标方应 ACK 接收到的每个字节。
目标方可以在发送 ACK 后存储数据字节,也可以决定缓冲顺序写事务的所有字节,直到事务被 STOP 终止。
在正确终止的顺序写事务(接收到 STOP)之后,目标方在接受下一个事务之前确保当前字节地址包含最后写入字节之后的下一个字节的地址。否则,当前字节地址的值不确定。
在每个 128 字节页的末尾,当前字节地址计数器回绕到该页的第一个字节。
对于非易失性存储器的写入,在接收到正确的 STOP 条件后,目标方必须在下一个基本寄存器访问操作被接受之前完成其内部定时写周期。如果需要,目标方必须以最大持续时间 tWR 延迟到内部存储器的后续事务。
对于易失性存储器的写入,在接收到正确的 STOP 条件后,目标方必须在下一个基本寄存器访问操作被接受之前完成其内部定时写周期。如果需要,目标方必须以最大持续时间 tNACK 延迟到内部存储器的后续事务。
注意:为延迟后续事务,目标方可以禁用其管理接口输入且不响应或确认后续命令,直到内部存储器写周期完成。
注意:不支持使用重复 START 条件的”组合格式”。
图 B-6 顺序字节写入事务
对于第 7 章中描述的高级管理功能,此基本规则可能存在例外情况。此类例外在指定这些功能的地方进行了描述。
B.2.5.5 测试操作的事务#
要测试目标方是否准备好接受新事务,发起方可以发出虚拟写事务(START、写控制字节、STOP)以查看模块是否 ACK 写控制字节。
注意:这种显式确认轮询方法是最轻量级的方法,可在不对目标方产生副作用的情况下同步到目标方就绪状态。
注意:不能使用虚拟读事务(START、读控制字节、STOP)进行确认轮询,因为当目标方将其解释为当前地址读取事务(参见第 B.2.5.1.1 节)并开始驱动 SDA(同时发起方也在为 STOP 驱动 SDA)时,可能会产生意外的副作用。
图 B-7 测试就绪事务
B.2.6 事务流控制机制#
MCI 向本地 CMIS 寄存器访问层(RAL)实例提供两种流控制机制。
B.2.6.1 延迟当前事务(时钟拉伸)#
时钟拉伸是目标方延迟完成当前 I2CMCI 事务的机制。
目标方通过将时钟信号 SCL 拉低特定持续时间来执行时钟拉伸。
目标方拉低 SCL 信号的持续时间是时钟拉伸持续时间。
目标方仅在 SCL 为低时才允许启动时钟拉伸(SCL 拉低)。
一次事务中允许的最大总时钟拉伸持续时间在第 B.2.7.3 节中指定。
注意:目标方可以在需要时使用时钟拉伸机制来实现与传输相关的寄存器访问,例如在读取事务中获取寄存器值,或理论上完成先前写事务的寄存器更新。
B.2.6.2 拒绝后续事务(事务保持)#
事务保持是一个临时阶段,在此阶段目标方通过在接收到新事务的控制字节后发出 NACK(而非 ACK)来拒绝新事务(参见下图)。
为实现保持,目标方可以选择简单地禁用其 I2CMCI 输入,因为这会导致主机在 START 条件之后的事务第一个字节后接收到 NACK。
允许的最大事务保持持续时间在第 B.2.7.3 节中指定。
注意:当目标方在其当前状态或条件下无法或不被允许接受新事务时,会执行事务保持。例如,在正确终止的写事务之后,目标方可能需要拒绝后续事务,以便在内部完成由先前事务表示的 WRITE 操作(由于第 5.2.4 节中指定的同步要求)。
图 B-8 测试就绪事务
B.2.7 时序规范#
注意:I2CMCI 时序规范必须与第 10 章中指定的寄存器访问层时序规范兼容。
B.2.7.1 模块选择时序#
以下时序参数适用于实现了 ModSelL 模块选择信号的外形规格中通过 MCI 的主机-模块交互。
表 10-10 模块选择时序
| 参数 | 符号 | 最小值 | 最大值 | 单位 | 条件 |
|---|---|---|---|---|---|
| 最大中止序列——总线释放 | Deselect_Abort | 2 | ms | 从主机去置位 ModSelL(在总线序列的任何时刻)到模块释放 SCL 和 SDA 的延迟。 | |
| 最小 ModSelL 建立时间¹ | tSU_ModSelL | 2 | ms | ModSelL 建立时间是主机发起的串行总线序列开始前选择线上的建立时间。 | |
| 最大 ModSelL 保持时间¹ | tHD_ModSelL | 500 | µs | ModSelL 保持时间是从串行总线序列完成到模块选择状态更改的延迟。 |
注意 1:所有模块都需要支持这些建立时间和保持时间。模块初始化管理接口后,主机可以从寄存器映射中读取通告的 ModSelL 建立时间和保持时间。
B.2.7.2 波形时序#
图 B-9 展示了一个 I2CMCI 波形示例,时序参数在表 B-3 中指定。默认时钟速率最大为 400 kHz,可选支持最高 1 MHz。
图 B-9 I2CMCI 波形时序图
表 B-3 I2CMCI 波形时序参数
| 参数 | 符号 | 0.4 MHz | 1 MHz | 单位 | 条件 | ||
|---|---|---|---|---|---|---|---|
| 最小值 | 最大值 | 最小值 | 最大值 | ||||
| 最大时钟频率 | fSCL | 0 | 400 | 0 | 1000 | kHz | |
| 最小时钟脉冲低电平宽度 | tLOW | 1.3 | 0.50 | µs | |||
| 最小时钟脉冲高电平宽度 | tHIGH | 0.6 | 0.26 | µs | |||
| 最小 START 保持时间 | tHD.STA | 0.6 | 0.26 | µs | START 中 SDA 变低与 SCL 开始变低之间所需的延迟。 | ||
| 最小 START 建立时间 | tSU.STA | 0.6 | 0.26 | µs | START 中 SCL 变高与 SDA 开始变低之间所需的延迟。 | ||
| 最小数据输入保持时间 | tHD.DAT | 0 | 0 | µs | |||
| 最小数据输入建立时间 | tSU.DAT | 0.1 | 0.1 | µs | |||
| 最大输入上升时间 | tR | 300 | 120 | ns | 从(VIL,MAX=0.3Vcc)到(VIH,MIN=0.7Vcc),参见图 B-9。 | ||
| 最大输入下降时间 | tF | 300 | 120 | ns | 从(VIH,MIN=0.7Vcc)到(VIL,MAX=0.3Vcc),参见图 B-9。 | ||
| 最小 STOP 建立时间 | tSU.STO | 0.6 | 0.26 | µs | |||
| 最小 STOP 保持时间 | tHD.STO | 0.6 | 0.26 | µs |
B.2.7.3 事务时序#
表 B-4 流控制时序
| 参数 | 符号 | 最小值 | 最大值 | 单位 | 条件 |
|---|---|---|---|---|---|
| 最大 I2CMCI READ 延迟(时钟拉伸)(原称:T_clock_hold) | tRD | 500 | µs | 模块在 MCI 读事务中延迟返回所请求数据的最大时间(例如通过时钟拉伸)。 | |
| 完成对易失性存储器或寄存器的标准 WRITE 的最长时间 | tNACK | 10 | ms | 对代表易失性存储器或易失性管理寄存器的地址进行写事务后的最大事务保持时间。 | |
| 完成对非易失性存储器或寄存器的标准 WRITE 访问的最长时间 | tWR | 80 | ms | 对代表非易失性存储器或非易失性管理寄存器的地址进行写事务后的最大事务保持时间。 | |
| 最小事务间空闲时间 | tBUF | 20 | µs | 新事务开始前总线空闲的最短时间,在 STOP 与 START 之间以及 ACK 与 START 之间。 |
B.2.7.3.1 tWR 时序#
时序属性 tWR 是模块在对非易失性存储器进行单次或顺序写入后,在下一个基本管理操作被接受之前完成内部定时写周期所允许的最大时间。
写周期完成时间从写事务 STOP 条件的 SDA 从低到高边沿测量到下一个事务 START 条件的 SDA 从高到低边沿。
图 B-10 tWR 总线时序
B.2.7.3.2 tNACK 时序#
时序属性 tNACK 是模块在对易失性存储器位置进行单次或顺序写入后,在下一个基本管理操作被接受之前完成内部定时写周期所允许的最大时间。
写周期完成时间从写事务 STOP 条件的 SDA 从低到高边沿测量到下一个事务 START 条件的 SDA 从高到低边沿。
图 B-11 tNACK 总线时序
B.3 基于 SPI 的管理通信接口(SPIMCI)#
B.3.1 简介#
此 SPIMCI 规范是行业标准 SPI 总线的特化版本,用于发起方(主机)与一个或多个目标方(模块)之间的管理通信。
SPIMCI 规定了 SPIMCI 总线事务如何实现 CMIS 寄存器访问操作。
在连接一个主机和一个模块时,SPIMCI 需要四线电气接口;每增加一个模块需要增加一根专用的芯片选择线。
与 SPI 总线的关系
原始 SPI 总线用于将外设连接到控制器。它允许以全双工方式进行双向同步位串行数据通信,所有串行传输的二进制数据与控制器提供的时钟上升沿或下降沿同步。
注意:由于不良的社会联想,历史上的 SPI 信号名称 MISO 和 MOSI 被替换为社会中性术语 IOTI 和 IITO(见下文)。
与 I2CMCI 的关系
与第 B.2 节中描述的 I2CMCI 相比,SPIMCI 提供了一个重要的寻址增强。
I2CMCI 事务仅携带页局部的字节大小字节地址,因此需要特殊的页和组切换寄存器,而 SPIMCI 事务始终携带完整的 3D(组、页、字节)地址,并根据需要隐式进行组和页切换。此改进增强了吞吐量。
注意:可以很容易地为 I2CMCI 定义类似的全局寻址变体。
B.3.2 通信拓扑#
在 SPIMCI 总线上可以有一个发起方和一个或多个目标方。
发起方通过在任一时刻最多置位一个 CSn 信号来一次与一个目标方通信。
B.3.3 SPIMCI 控制信号#
由发起方控制的芯片选择信号(CSn)用于选择通信的目标方并界定总线事务。
因此,CSn 信号被视为 SPIMCI 物理层信号的一部分,而非单独的控制信号。
当使用多个目标方时,发起方必须为每个目标方提供一个单独的芯片选择信号,并确保最多一个此类信号被置位。
B.3.4 物理层信号#
下图说明了发起方与一个目标方之间的物理接口。
图 B-12 SPIMCI 物理层信号
SPIMCI 使用四个物理层信号来实现总线事务,其中三个可用作总线:
- CSn(芯片选择):专用低电平有效信号,用于选择目标方并启动和停止事务。CSn 拉低以启动与目标方的通信。CSn 拉高以将目标方从 SPI 总线断开(通常在事务结束时)。
- CLK(SPI 时钟):生成时钟信号(CLK)的设备称为发起方。用于同步发起方与所选目标方之间交换的二进制数据。
- IOTI(发起方输出,目标方输入)或 MOSI:串行二进制数据(也称 PICO,外设输入,控制器输出),从发起方到目标方传输数据。
- IITO(发起方输入,目标方输出)或 MISO:串行二进制数据(也称 POCI,外设输出,控制器输入),从目标方到发起方传输数据。
发起方到目标方的非共享芯片选择信号(CSn)用于选择该目标方并在同一时刻开始和停止事务。
B.3.5 通信速度#
SPIMCI 支持 1、2、4、8、12、16、20 MHz 的时钟速率。
发起方应最初使用最低速度查询目标方能力,并在从模块通告中确定能力后切换到更高速度(MciSpeedConfiguration)。
B.3.6 物理编码#
在任一方向上在发起方和目标方之间传输的数据与 CLK 信号同步。
在发起方处,CLK 信号的上升沿用于采样 IITO 信号并移出 IOTI 数据。
在目标方处,CLK 信号的上升沿用于移出 IITO 数据并采样 IOTI 信号。
低电压编码数字位值 0。高电压编码数字位值 1。
在事务期间,发起方和目标方分别通过 IOTI 和 IITO 线同时连续地在相反方向发送数据。
在总线事务期间任何时间点这些反向数据流段的含义和用途对每个管理事务的定义如下所述。
B.3.7 串行通信协议#
SPIMCI 串行数据通信协议管理用于与 CMIS 寄存器访问操作相关的数据传输的 SPI 总线事务。
由于 SPIMCI 是全双工接口,发起方同时发送数据(在 IOTI 总线上串行移出位)和接收数据(从 IITO 总线上串行采样位),目标方同样同时接收数据(从 IOTI 总线采样位)和发送数据(在 IITO 总线上串行移出位)。
串行时钟 CLK 边沿同步数据的移出和采入。
B.3.7.1 总线事务#
为使通信成为可能,发起方必须生成时钟信号(CLK)。
要开始总线事务,发起方通过置位 CS 信号(CSn)来选择所需的目标方。
要终止总线事务,发起方通过去置位 CS 信号(CSn)来取消选择所需的目标方。
注意:回顾一下,芯片选择(CSn)是低电平有效信号。
下图显示了 SPIMCI 总线事务的一般形式。START 条件(如下所述)决定了事务的开始。
一旦确定了 START 条件,协议区分三个阶段:
- 事务控制阶段(4 字节)
- 流控制阶段(N ≥ 1 字节)
- 数据传输阶段(M = EncodedSize + 1 字节)
图 B-13 SPIMCI 总线事务(通用)
如果发起方置位 CSn 的时间长于事务控制头中宣布的时间,目标方忽略 IOTI 数据并在 IITO 上发送未定义内容。
如果发起方置位 CSn 的时间短于事务控制头中宣布的时间,目标方停止处理当前事务,WRITE 事务的效果未定义或 READ 事务的副作用未定义。
B.3.7.1.1 事务控制阶段#
事务控制阶段涵盖发起方传输到目标方的前四个字节(32 位)。
事务控制字节分为多个位字段。
读/写(R/Wn)(传输位索引 0:0)
流中的第一位是读/写指示位(R/W)。
当此位为 1 时,正在请求读取。否则请求写入。
在事务控制阶段(前 32 位)成功完成后,目标方使用提供的信息解码要读取或写入的内部地址。
组(传输位索引 1:4)
位流中的接下来 4 位表示要访问的管理内存中的组索引。
注意:此格式不允许大于 15 的任意组索引值!
大小(传输位索引 5:15)
接下来 11 位编码要读取或写入的字节数。
如果无符号大小字段表示的数值为 n,则传输(n+1)字节的数据。
注意:如果大小字段表示的值为 0,则传输一个字节的数据。如果大小字段表示的值为 1,则传输两个字节的数据。在内存映射的适当区域中最多可传输 2048 字节,其中自动页递增覆盖页回绕。
页索引(传输位索引 16:23)
接下来 8 位表示要访问的管理内存中的页索引。
字节索引(传输位索引 24:31)
最后 8 位表示发送或接收数据的起始字节地址。如果发送多个字,则使用从指定地址开始的顺序寻址。
注意,地址递增逻辑受第 B.1.2 节中通用规则的约束。例如,常规页中的地址会回绕。如果在没有自动页递增的页上的事务期间到达页(或低位内存)末尾,则字节地址在当前 128 字节内存段内回绕,地址处理从当前 128 字节内存段的 00h 或 80h 继续,具体取决于访问的是低位内存还是高位内存。
B.3.7.1.2 流控制阶段(N 字节)#
流控制阶段跟在事务控制阶段之后。
在流控制阶段期间,发起方发送 N ≥ 2 个零值虚拟字节(目标方应忽略),同时目标方评估其处理所请求事务的能力,在流控制阶段的最后一个字节(以下称为流控制位)中返回 ACK 或 NACK。
流控制阶段的持续时间在当前总线速率为 N∙8 位持续时间。
N ≥ 2 的实际值由通告(MciFlowControlDuration)和当前配置的 SPI 总线速度(MciSpeedConfiguration)决定:根据通告的编码方法(MciFlowControlDurationEncoding),N 可以是固定数字,也可以是从给定持续时间和当前 SPI 速度确定的速度相关数字。详见第 8.3.10 节。
注意:发起方和目标方都必须以相同方式根据模块通告和主机配置的速度确定 N 的值。
目标方使用流控制阶段来解码事务控制头并确定它是否准备好处理事务中编码的命令。
在 READ 事务期间,流控制阶段为内部检索读取数据提供时间。
如果目标方正忙于处理先前的 WRITE 命令,目标方将在其 IITO 线上的流控制位上发送逻辑 1(忙,NACK)。
如果目标方可以接受请求的命令,它将在其 IITO 线上的流控制位上发送逻辑 0(空闲,ACK)。
目标方保证在流控制阶段的最后一个字节中发送流控制结果(ACK 或 NACK)。
B.3.7.1.3 数据传输阶段(M 字节)#
数据传输阶段跟在流控制阶段之后。宣布发送或请求接收的数据量(字节数 M)由 EncodedSize 字段确定为 M = EncodedSize + 1。
B.3.7.2 基本定义和协议元素#
B.3.7.2.1 起始条件(START)#
CSn 从高到低的转换是 START 条件。
所有 SPIMCI 总线事务以发起方产生的 START 条件开始。
B.3.7.2.2 停止条件(STOP)#
CSn 从低到高的转换是 STOP 条件。
所有 SPIMCI 总线事务必须以发起方产生的 STOP 条件终止。
常规 STOP 条件始终在预期时间点的 8 位边界处出现。
非常规 STOP 条件(也称为 ABORT 条件)出现在非 8 位边界处或早于预期。ABORT 终止事务,接收方必须丢弃或忽略任何未完整接收的字节。
注意:然而,完整接收的数据字节可以正常处理,也可以不处理。
B.3.7.2.3 总线字长(字节)和位串行传输顺序#
SPIMCI 总线字长为 8 位(一个字节)。
SPIMCI 总线字(即字节)以位串行方式传输,最高有效位(MSB)最先。
B.3.7.2.4 确认(ACK 和 NACK)#
如上所述,SPIMCI 使用其 IITO 线上的流控制位来确定目标方是否准备好接受命令(ACK)或正忙(NACK)。
B.3.7.2.5 TEST#
发起方可以使用专用的 TEST 事务来检查目标方是忙还是空闲。参见第 B.3.8.5 节。
B.3.7.3 协议复位和恢复#
B.3.7.3.1 上电复位#
SPIMCI 适配器(接口电路)在上电时进入复位状态。
B.3.7.3.2 协议违规#
只有少数可检测的协议违规:
发起方未在指定长度后发送 STOP。模块行为已部分规定。
目标方未以预期模式之一响应(流控制最后一个字节中的全零或全一)。
B.3.7.3.3 协议复位和恢复#
事务性数据传输协议在每次 CSn 去置位后复位。
在 SPIMCI 中,模块中的当前地址指针状态无关紧要,因为它在每个事务中被设置为显式传输的地址。
B.3.8 READ/WRITE/TEST 访问的 SPI MCI 事务#
SPIMCI 提供已定义的数据传输事务来实现以下基本寄存器访问操作。
| SPIMCI 事务 | 寄存器访问原语 | 章节 |
|---|---|---|
| 不支持:从当前字节地址读取一个字节 | VALUE = READ(1) | |
| 不支持:从当前字节地址开始读取 n 个字节 | VALUE = READ(n) | |
| 从给定字节地址读取一个字节 | VALUE = READ(ByteAddress, 1) | B.3.8.1 |
| 从给定字节地址开始顺序读取 n>1 个字节 | VALUES = READ(ByteAddress, n) | B.3.8.2 |
| 向给定地址写入一个字节 | WRITE(ByteAddress, Value) | B.3.8.3 |
| 从给定字节地址开始顺序写入 N>1 个字节 | WRITE(ByteAddress, Val1, …, ValN) | B.3.8.4 |
| 测试目标方是否准备好接受事务(ACK 轮询) | TEST() | B.3.8.5 |
B.3.8.1 从给定字节地址读取一个字节#
发起方生成 START 条件。
START 条件之后,发起方发送 32 位事务控制,读取位设置为 0。事务控制包含要读取的组、页和地址信息。指令数据的大小字段设置为 0,表示单字节读取。
然后发起方发送 N 个零值字节,允许目标方解码要读取的内部地址。
发起方可以读取其 IITO 线来确定目标方是忙(FFh)还是空闲(00h)。
如果目标方指示空闲,则发起方可以从 IITO 线上读出要读取的数据。
发起方生成 STOP 条件表示命令结束。
图 B-14 SPIMCI READ 事务
B.3.8.2 从给定字节地址读取 n 个字节#
发起方生成 START 条件。
START 条件之后,发起方发送 32 位事务控制,读取位设置为 0。事务控制包含要读取的组、页和地址信息。指令数据的大小字段设置为(n-1),表示 M = n 字节的多字节读取。
然后发起方发送 N 个零值字节,允许目标方解码要读取的内部地址。
发起方可以读取其 IITO 线来确定目标方是忙(FFh)还是空闲(00h)。
如果目标方指示空闲,则发起方可以从 IITO 线上读出要读取的数据。发起方读出大小字段指示的字节数。
发起方生成 STOP 条件表示命令结束。
图 B-15 SPIMCI READ N 事务
B.3.8.3 向给定字节地址写入 1 个字节#
发起方生成 START 条件。
START 条件之后,发起方发送 32 位事务控制,写入位设置为 1。事务控制包含要读取的组、页和地址信息。指令数据的大小字段设置为 0,表示单字节写入。
然后发起方发送 16 位逻辑 0 的流控制数据。在这 16 位期间,发起方可以读取其 IITO 线来确定目标方是忙(FFh)还是空闲(00h)。
如果目标方指示空闲,则发起方可以在 IOTI 线上输出要写入的数据。
发起方生成 STOP 条件表示命令结束。
图 B-16 SPIMCI WRITE 事务
B.3.8.4 向给定字节地址写入 n 个字节#
发起方生成 START 条件。
START 条件之后,发起方发送 32 位事务控制,写入位设置为 1。事务控制包含要读取的组、页和地址信息。指令数据的大小字段设置为(n-1),表示从给定地址开始的顺序多字节写入。
然后发起方发送 16 位逻辑 0 的流控制数据。在这 16 位期间,发起方可以读取其 IITO 线来确定目标方是忙(FFh)还是空闲(00h)。
如果目标方指示空闲,则发起方可以在 IOTI 线上输出要写入的数据。
发起方生成 STOP 条件表示命令结束。
图 B-17 SPIMCI WRITE N 事务
B.3.8.5 测试命令#
没有特定的 TEST 命令。相反,发起方在尝试从低位内存的字节地址 0 读取一个字节时检查目标方响应,其中目标方以 ACK(空闲)或 NACK(忙)响应。
更详细地说:
START 条件之后,发起方发送 32 位事务控制,所有 32 位均设置为 0。然后发起方发送 8∙N 个零值位,允许目标方解码要读取的地址。然后发起方从 IITO 线读取流控制响应字节,以确定目标方是忙(FFh)还是空闲(00h)。
发起方最终生成 STOP 条件表示命令结束。
图 B-18 SPIMCI TEST 事务
B.3.9 事务流控制机制#
B.3.9.1 延迟当前事务#
注意:与 I2CMCI 不同,目标方没有延迟完成当前事务的选项。
B.3.9.2 拒绝后续事务(事务保持)#
事务保持是目标方通过在流控制阶段的最后一个字节中发出 NACK 来拒绝新事务的临时阶段。
允许的最大事务保持持续时间在第 B.3.10 节中指定。
当目标方在其当前状态或条件下无法或不被允许接受新事务时,会执行事务保持。例如,在正确终止的写事务之后,目标方可能需要拒绝后续事务,以便在内部完成由先前事务表示的 WRITE 操作(由于第 5.2.4 节中指定的同步要求)。
B.3.10 时序规范#
注意:有关完整管理栈规范,应在此处添加时序规范。
附录 C:应用通告示例#
本附录展示了应用通告示例,以说明固定或可编程模块将如何通告其支持的应用(如第 6 章所述)。描述了以下案例:
- 可编程 400GBASE-DR4 模块,也可作为 4×100GBASE-DR 运行
- 固定 400GBASE-SR8 模块
- 可编程 400G-SR8 模块,也可作为 2×200G、4×100G 或 8×50G 分路运行
- 双用途有源光缆,用于 1×400G 或 2×200G 应用
表 C-1 中的第一个示例”400GBASE-DR4 收发器与双应用通告”说明了以 400GBASE-DR4 收发器运行但支持作为四个集成并行 100GBASE-DR 收发器替代运行的模块的应用通告。
在此示例中,主机可以在暂存控制集之一中选择应用 1 或应用 2(通过分别编程 AppSel 值 AppSel=1 或 AppSel=2)。AppSel=1(400GAUI-8 到 400GBASE-DR4)是上电时活跃控制集中填充的默认应用。
表 C-1 400GBASE-DR4 收发器与双应用通告
| 字节 | 位 | AppSel 代码 | 名称 | 值 | 描述 |
|---|---|---|---|---|---|
| 85 | 7-0 | N/A | MediaType | 02h | 光接口:SMF |
| 86 | 7-0 | 0001b | HostInterfaceID | 11h | 400GAUI-8 C2M |
| 87 | 7-0 | MediaInterfaceID | 1Ch | 400GBASE-DR4 | |
| 88 | 7-4 | HostLaneCount | 8 | 8 条主机通道 | |
| 3-0 | MediaLaneCount | 4 | 4 条媒体通道 | ||
| 01h:176 | 7-0 | HostLaneAssignmentOptions | 01h | 应用允许的第一主机通道号:通道 1 | |
| 7-0 | MediaLaneAssignmentOptions | 01h | 应用允许的第一媒体通道号:通道 1 | ||
| 90 | 7-0 | 0010b | HostInterfaceID | 0Dh | 100GAUI-2 C2M |
| 91 | 7-0 | MediaInterfaceID | 14h | 100GBASE-DR | |
| 92 | 7-4 | HostLaneCount | 2 | 2 条主机通道 | |
| 3-0 | MediaLaneCount | 1 | 1 条媒体通道 | ||
| 01h:177 | 7-0 | HostLaneAssignmentOptions | 55h | 应用允许的第一主机通道号:通道 1、3、5 和 7 | |
| 7-0 | MediaLaneAssignmentOptions | 0Fh | 应用允许的第一媒体通道号:通道 1、2、3、4 | ||
| 94 | 7-0 | 0011b | FFh | 支持的应用列表结束 | |
| 95 | 7-0 | HostInterfaceID | 00h | ||
| 01h:178 | 7-4 | HostLaneCount | 0 | ||
| 3-0 | MediaLaneCount | 0 | |||
| 7-0 | HostLaneAssignmentOptions | 00h | |||
| 7-0 | MediaLaneAssignmentOptions | 00h |
表 C-2 中的第二个示例”400GBASE-SR8 固定收发器应用通告”说明了不支持其他应用的固定 400GBASE-SR8 收发器的应用通告。
在此示例中,主机只能在暂存控制集之一中设置 AppSel=1。
表 C-2 400GBASE-SR8 固定收发器应用通告
| 字节 | 位 | AppSel 代码 | 名称 | 值 | 描述 |
|---|---|---|---|---|---|
| 85 | 7-0 | N/A | MediaType | 01h | 光接口:MMF |
| 86 | 7-0 | 0001b | HostInterfaceID | 11h | 400GAUI-8 C2M |
| 87 | 7-0 | MediaInterfaceID | 10h | 400GBASE-SR8 | |
| 88 | 7-4 | HostLaneCount | 8 | 8 条主机通道 | |
| 3-0 | MediaLaneCount | 8 | 8 条媒体通道 | ||
| 01h:176 | 7-0 | HostLaneAssignmentOptions | 01h | 应用允许的第一主机通道号:通道 1 | |
| 7-0 | MediaLaneAssignmentOptions | 01h | 应用允许的第一媒体通道号:通道 1 | ||
| 90 | 7-0 | 0010b | FFh | 支持的应用列表结束 | |
| 91 | 7-0 | HostInterfaceID | 00h | ||
| 01h:177 | 7-4 | HostLaneCount | 0 | ||
| 3-0 | MediaLaneCount | 0 | |||
| 7-0 | HostLaneAssignmentOptions | 00h | |||
| 7-0 | MediaLaneAssignmentOptions | 00h |
表 C-3 中的第三个示例”400GBASE-SR8 收发器支持 200GBASE-SR4、100GBASE-SR2 和 50GBASE-SR”说明了默认以 400GBASE-SR8 收发器运行但支持以各种速度(2×200G、4×100G、8×50G)分路到集成并行收发器的模块的应用通告。
在此示例中,主机可以在暂存控制集之一中写入 AppSel 1、2、3 或 4,其中 AppSel=1(400GAUI-8 到 400G-SR8)是上电时活跃控制集中填充的默认应用。
表 C-3 400GBASE-SR8 收发器支持 200GBASE-SR4、100GBASE-SR2 和 50GBASE-SR
| 字节 | 位 | AppSel 代码 | 名称 | 值 | 描述 |
|---|---|---|---|---|---|
| 85 | 7-0 | N/A | MediaType | 01h | 光接口:MMF |
| 86 | 7-0 | 0001b | HostInterfaceID | 11h | 400GAUI-8 C2M |
| 87 | 7-0 | MediaInterfaceID | 10h | 400GBASE-SR8 | |
| 88 | 7-4 | HostLaneCount | 8 | 8 条主机通道 | |
| 3-0 | MediaLaneCount | 8 | 8 条媒体通道 | ||
| 01h:176 | 7-0 | HostLaneAssignmentOptions | 01h | 应用允许的第一主机通道号:通道 1 | |
| 7-0 | MediaLaneAssignmentOptions | 01h | 应用允许的第一媒体通道号:通道 1 | ||
| 90 | 7-0 | 0010b | HostInterfaceID | 0Fh | 200GAUI-4 C2M |
| 91 | 7-0 | MediaInterfaceID | 0Eh | 200GBASE-SR4 | |
| 92 | 7-4 | HostLaneCount | 4 | 4 条主机通道 | |
| 3-0 | MediaLaneCount | 4 | 4 条媒体通道 | ||
| 01h:177 | 7-0 | HostLaneAssignmentOptions | 11h | 应用允许的第一主机通道号:通道 1 和 5 | |
| 7-0 | MediaLaneAssignmentOptions | 11h | 应用允许的第一媒体通道号:通道 1、5 | ||
| 94 | 7-0 | 0011b | HostInterfaceID | 0Dh | 100GAUI-2 C2M |
| 95 | 7-0 | MediaInterfaceID | 0Ch | 100GBASE-SR2 | |
| 96 | 7-4 | HostLaneCount | 2 | 2 条主机通道 | |
| 3-0 | MediaLaneCount | 2 | 2 条媒体通道 | ||
| 01h:178 | 7-0 | HostLaneAssignmentOptions | 55h | 应用允许的第一主机通道号:通道 1、3、5 和 7 | |
| 7-0 | MediaLaneAssignmentOptions | 55h | 应用允许的第一媒体通道号:通道 1、3、5、7 | ||
| 98 | 7-0 | 0100b | HostInterfaceID | 0Ah | 50GAUI-1 C2M |
| 99 | 7-0 | MediaInterfaceID | 07h | 50GBASE-SR | |
| 100 | 7-4 | HostLaneCount | 1 | 1 条主机通道 | |
| 3-0 | MediaLaneCount | 1 | 1 条媒体通道 | ||
| 01h:179 | 7-0 | HostLaneAssignmentOptions | FFh | 应用允许的第一主机通道号:通道 1、2、3、4、5、6、7、8 | |
| 7-0 | MediaLaneAssignmentOptions | FFh | 应用允许的第一媒体通道号:通道 1、2、3、4、5、6、7、8 | ||
| 102 | 7-0 | 0101b | FFh | 支持的应用列表结束 | |
| 103 | 7-0 | HostInterfaceID | 00h | ||
| 01h:180 | 7-4 | HostLaneCount | 0 | ||
| 3-0 | MediaLaneCount | 0 | |||
| 7-0 | HostLaneAssignmentOptions | 00h | |||
| 7-0 | MediaLaneAssignmentOptions | 00h |
表 C-4 中的第四个示例”8×50G AOC 应用通告示例”说明了支持一个 8×50G 主机接口或两个并行 4×50G 主机接口的 8×50G 有源光缆(AOC)的应用通告。
在此示例中,主机可以在暂存控制集之一中写入 AppSel=1 或 AppSel=2。AppSel=1(400GAUI-8)是上电时活跃控制集中填充的默认应用。
表 C-4 8×50G AOC 应用通告示例
| 字节 | 位 | AppSel 代码 | 名称 | 值 | 描述 |
|---|---|---|---|---|---|
| 85 | 7-0 | N/A | MediaType | 04h | 有源线缆 |
| 86 | 7-0 | 0001b | HostInterfaceID | 11h | 400GAUI-8 C2M |
| 87 | 7-0 | MediaInterfaceID | 03h | BER < 2.4e-4 的 AOC | |
| 88 | 7-4 | HostLaneCount | 8 | 8 条主机通道 | |
| 3-0 | MediaLaneCount | 8 | 8 条媒体通道 | ||
| 01h:176 | 7-0 | HostLaneAssignmentOptions | 01h | 应用允许的第一主机通道号:通道 1 | |
| 7-0 | MediaLaneAssignmentOptions | 01h | 应用允许的第一媒体通道号:通道 1 | ||
| 90 | 7-0 | 0010b | HostInterfaceID | 0Fh | 200GAUI-4 C2M |
| 91 | 7-0 | MediaInterfaceID | 03h | BER < 2.4e-4 的 AOC | |
| 92 | 7-4 | HostLaneCount | 4 | 4 条主机通道 | |
| 3-0 | MediaLaneCount | 4 | 4 条媒体通道 | ||
| 01h:177 | 7-0 | HostLaneAssignmentOptions | 11h | 应用允许的第一主机通道号:通道 1 和 5 | |
| 7-0 | MediaLaneAssignmentOptions | 11h | 应用允许的第一媒体通道号:通道 1、5 | ||
| 94 | 7-0 | 0011b | FFh | 支持的应用列表结束 | |
| 95 | 7-0 | HostInterfaceID | 00h | ||
| 01h:178 | 7-4 | HostLaneCount | 0 | ||
| 3-0 | MediaLaneCount | 0 | |||
| 7-0 | HostLaneAssignmentOptions | 00h | |||
| 7-0 | MediaLaneAssignmentOptions | 00h |
附录 D:初始化和去初始化场景示例#
本附录包含示例场景,说明模块和数据路径初始化或去初始化期间主机与模块之间可能的事件序列和交互。
有关模块状态机的信息请参阅第 6.3.2 节,有关数据路径状态机、应用和控制集的信息请参阅第 6.3.3 节。
以下示例场景说明了主机如何上电初始化或去初始化下电模块:
| 场景 | 描述 | 章节 |
|---|---|---|
| 快速硬件初始化 | 无需主机软件交互的上电和初始化 | D.1.1 |
| 快速软件初始化 | 最少主机软件交互的上电和初始化 | D.1.2 |
| 软件配置和初始化 | 主机配置模块的上电和初始化 | D.1.3 |
| 硬件去初始化 | 使用硬件控制的下电序列 | D.2.1 |
| 软件去初始化 | 使用软件控制的下电序列 | D.2.2 |
注意:为简单起见,示例可能故意省略了取决于模块通告或配置的微小行为变化(例如假设所有状态变化通知都已被标记)。
D.1 初始化示例#
模块上电初始化行为中在 ModuleLowPwr 状态暂停(用于主机软件控制)或通过 ModuleLowPwr 状态直接进入全运行状态(无主机控制)由 LowPwrRequestSW、LowPwrAllowRequestHW 设置和 LowPwrRequestHW 硬件信号决定(表 6-12)。
默认寄存器设置 LowPwrAllowRequestHW=1 和 LowPwrRequestHW=0(参见表 8-11)要求当需要主机软件控制启动时,LowPwrRequestHW 硬件信号被置位。
D.1.1 快速硬件初始化#
本节描述一个简单的模块上电序列示例,其中模块在硬件控制下完全上电,无需主机软件干预。
此场景具有以下特征:
- a. 模块从未上电状态上电(LowPwrAllowRequestHW=1 且 LowPwrRequestSW=0)
- b. 模块在硬件控制下完全上电(LowPwrRequestHW=DEASSERTED)
- c. 主机对所选应用使用默认设置
- d. 主机不使用自定义信号完整性设置(即 ExplicitControl 指示符)
- e. 主机不执行速率协商
| 步骤 | 主机操作 | 模块操作 | 模块状态 (M) / 数据路径状态 (D) |
|---|---|---|---|
| 0 | 主机施加 Vcc,去置位 LowPwrRequestHW,置位 ModSel(如支持),并去置位 Reset。主机确保在下面的步骤 1 之前,主机发射器已配置并启用,可为模块中的默认应用输出有效信号。 | ||
| 1 | 热插拔 | ||
| 2 | 主机检测到模块存在,等待中断置位 | 模块上电并初始化管理接口,设置上电默认值,如 LowPwrRequestSW=0、LowPwrAllowRequestHW=1、DPDeinit=00h、OutputDisableTx=0 和 OutputSquelchForceTx=0,并将上电默认数据路径配置写入活跃控制集和暂存控制集 0 | M=MgmtInit D=DPDeactivated |
| 3 | 模块看到 LowPwrS 转换信号在进入 ModuleLowPwr 时为 FALSE,并转换到 ModulePwrUp | M=ModuleLowPwr D=DPDeactivated | |
| 4 | 模块上电到高功率模式 | M=ModulePwrUp D=DPDeactivated | |
| 5 | 模块在进入 ModuleReady 时设置 ModuleStateChangedFlag | M=ModuleReady D=DPDeactivated | |
| 6 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块看到 DPDeinitS 转换信号为 FALSE,并将所有数据路径状态转换到 DPInit | M=ModuleReady D=DPInit |
| 7 | 模块根据活跃控制集中的配置初始化所有数据路径 | M=ModuleReady D=DPInitialized | |
| 8 | 模块看到 DPDeactivateS 转换信号为 FALSE,并将所有数据路径状态转换到 DPTxTurnOn | M=ModuleReady D=DPTxTurnOn | |
| 9 | 主机等待第二个中断置位以指示数据路径初始化完成 | 模块启用所有 Tx 输出 | |
| 10 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块在进入 DPActivated 时将数据路径状态变化标志设置为 1 | M=ModuleReady D=DPActivated |
| 11 | 主机使用已激活的数据路径承载实际流量 | 模块等待主机操作 | |
| 12 |
D.1.2 快速软件初始化#
本节描述一个简单的模块上电序列示例,其中模块在 ModuleLowPwr 状态下进入主机软件控制,以便主机在让模块使用默认应用和数据路径配置完成初始化之前验证模块能力和功耗。
此场景具有以下特征:
- a. 模块从未上电状态上电(LowPwrAllowRequestHW=1 且 LowPwrRequestSW=0)
- b. 模块功能在软件控制下初始化(LowPwrRequestHW=ASSERTED)
- c. 主机对所选应用使用默认设置
- d. 主机不使用自定义信号完整性设置(即 ExplicitControl 指示符)
- e. 主机不执行速率协商
| 步骤 | 主机操作 | 模块操作 | 模块状态 (M) / 数据路径状态 (D) |
|---|---|---|---|
| 0 | 主机施加 Vcc,置位 LowPwrRequestHW 和 ModSel(如支持),并去置位 Reset | ||
| 1 | 热插拔 | ||
| 2 | 主机检测到模块存在,等待中断置位 | 模块上电并初始化管理接口,设置上电默认值,如 LowPwrRequestSW=0、LowPwrAllowRequestHW=1、DPDeinit=00h、OutputDisableTx=0 和 OutputSquelchForceTx=0,并将上电默认数据路径配置写入活跃控制集和暂存控制集 0 | M=MgmtInit D=DPDeactivated |
| 3 | 模块在进入 ModuleLowPwr 时设置 ModuleStateChangedFlag | M=ModuleLowPwr D=DPDeactivated | |
| 4 | 主机检测到中断置位并读取标志寄存器,这将去置位中断 | 模块等待主机操作 | |
| 5 | 主机读取模块功耗要求和数据路径配置信息 | ||
| 6 | 主机配置并启用主机发射器,使其向模块输出默认应用的有效信号 | ||
| 7 | 主机清除 LowPwrAllowRequestHW¹ 位,这有效地启动了模块向高功率模式(ModuleReady)的转换 | 模块看到 LowPwrS 转换信号变为 FALSE,并转换到 ModulePwrUp | M=ModulePwrUp D=DPDeactivated |
| 8 | ¹ 为允许从现在开始的完全软件控制,主机禁用 LowPwrRequestHW 信号。或者,主机也可以去置位 LowPwrRequestHW 信号。 | 模块上电到高功率模式 | |
| 9 | 主机等待中断置位以指示向高功率模式转换完成 | 模块在进入 ModuleReady 时设置 ModuleStateChangedFlag | M=ModuleReady D=DPDeactivated |
| 10 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块看到 DPDeinitS 转换信号为 FALSE,并将所有数据路径状态转换到 DPInit | M=ModuleReady D=DPInit |
| 11 | 模块根据活跃控制集中的配置初始化所有数据路径 | M=ModuleReady D=DPInitialized | |
| 12 | 主机等待第二个中断置位以指示数据路径初始化完成 | 模块看到 DPDeactivateS 转换信号为 FALSE,并将所有数据路径状态转换到 DPTxTurnOn | M=ModuleReady D=DPTxTurnOn |
| 13 | 模块启用所有 Tx 输出 | ||
| 14 | 模块在进入 DPActivated 时将 DPStateChangedFlag 位置为 1 | M=ModuleReady D=DPActivated | |
| 15 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块等待主机操作 | |
| 16 | 主机使用已激活的数据路径承载实际流量 |
D.1.3 软件配置和初始化#
本节描述一个简单的模块上电序列示例,其中模块在 ModuleLowPwr 状态下进入主机软件控制,以便主机验证模块能力和最大功耗,然后配置模块功能,最后让已配置的模块完成功能初始化。此方法可能是以太网应用中最常用的初始化方法。
在此示例中,主机软件分两个单独的步骤上电模块和数据路径。
此场景具有以下特征:
- a. 模块从未上电状态上电(LowPwrAllowRequestHW=1 且 LowPwrRequestSW=0)
- b. 模块功能在主机软件控制下初始化(LowPwrRequestHW=ASSERTED)
- c. 主机选择模块通告的应用之一
- d. 主机初始化此应用的一个实例(即一个数据路径)
- e. 主机对所选应用使用默认设置
- f. 主机不使用自定义信号完整性设置(即 ExplicitControl 指示符为 0)
- g. 主机仅使用暂存控制集 0 配置模块(不使用可选的暂存控制集 1)
- h. 主机不执行速率协商
步骤 1-11 提供了如何从未上电状态将模块上电到 ModuleReady 状态的示例。步骤 12-28 提供了模块内单个数据路径初始化和激活的示例(这些步骤也可用于后续数据路径的初始化和激活,例如在分路等情况下)。
| 步骤 | 主机操作 | 模块操作 | 模块状态 (M) / 数据路径状态 (D) |
|---|---|---|---|
| 0 | 主机施加 Vcc,置位 LowPwrRequestHW 和 ModSel(如支持),并去置位 Reset | ||
| 1 | 热插拔 | ||
| 2 | 主机检测到模块存在,等待中断置位 | 模块上电并初始化管理接口,设置上电默认值,如 LowPwrRequestSW=0、LowPwrAllowRequestHW=1、DPDeinit=00h、OutputDisableTx=0 和 OutputSquelchForceTx=0,并将上电默认数据路径配置写入活跃控制集和暂存控制集 0 | M=MgmtInit D=DPDeactivated |
| 3 | 模块在进入 ModuleLowPwr 时设置 ModuleStateChangedFlag | M=ModuleLowPwr D=DPDeactivated | |
| 4 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块等待主机操作 | |
| 5 | 主机读取模块功耗要求 | ||
| 6 | 主机向 DPDeinit 寄存器写入 FFh 以防止模块到达 ModuleReady 时自动初始化数据路径,并向 OutputDisableTx 寄存器写入 FFh 以防止数据路径状态到达 DPInitialized 时自动激活数据路径 | ||
| 7 | 主机清除 LowPwrAllowRequestHW¹ 位,这有效地启动了模块向高功率模式(ModuleReady)的转换 | 模块看到 LowPwrS 转换信号变为 FALSE,并转换到 ModulePwrUp | M=ModulePwrUp D=DPDeactivated |
| 8 | ¹ 为允许从现在开始的完全软件控制,主机禁用 LowPwrRequestHW 信号。或者,主机也可以去置位 LowPwrRequestHW 信号。 | 模块上电到高功率模式 | |
| 9 | 主机等待中断置位以指示向高功率模式转换完成 | ||
| 10 | 模块在进入 ModuleReady 时设置 ModuleStateChangedFlag | M=ModuleReady D=DPDeactivated | |
| 11 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块等待主机操作 | |
| 12 | 主机读取应用通告寄存器 | ||
| 13 | 主机将所需的 AppSel 代码写入暂存控制集 0 中适用的数据路径配置控制寄存器 | ||
| 14 | 主机配置并启用主机发射器,使其向模块输出所选应用的有效信号 | ||
| 15 | 主机向暂存控制集 0 中的 ApplyDPInit 寄存器中对应于要配置的数据路径的主机通道的位写入 1。不属于该数据路径的主机通道在寄存器写入中被掩码(位清除)。主机通过单次写入 ApplyDPInit 寄存器执行此步骤。 | 模块验证暂存控制集 0 中请求的配置。如果配置被发现有效,模块将内容复制到活跃控制集,更新 DPInitPending,最后更新 ConfigStatus 字段 | |
| 16 | 主机等待模块操作 | 模块等待主机操作 | |
| 17 | 主机读取 ConfigStatus 字段以确认所请求的配置已被模块验证并接受(针对所选数据路径的所有通道) | ||
| 18 | 主机通过清除代表正在初始化的数据路径的主机通道的 DPDeinit 位来请求初始化新配置的数据路径。主机使用读-修改-写保留 DPDeinit 寄存器中其他通道的现有位值。DPDeinit 寄存器的新内容由主机在单次写事务中写入。 | 模块看到 DPDeinitS 转换信号为 FALSE,并将数据路径状态转换到 DPInit | M=ModuleReady D=DPInit |
| 19 | 主机等待中断置位以指示数据路径初始化完成 | 模块初始化数据路径并清除其 DPInitPending 位 | |
| 20 | |||
| 21 | 主机检测到中断置位并读取所有标志以清除中断 | 数据路径初始化完成后,模块在进入 DPInitialized 时设置 DPStateChangedFlag 位 | M=ModuleReady D=DPInitialized |
| 22 | 模块等待主机操作 | ||
| 23 | 主机通过清除 OutputDisableTx 寄存器中代表其媒体通道的位来请求激活数据路径。主机使用读-修改-写保留 OutputDisableTx 寄存器中其他媒体通道的现有位值。主机在单次写事务中写入 OutputDisableTx 寄存器的新内容。 | 模块看到 DPDeactivateS 转换信号为 FALSE,并将数据路径状态转换到 DPTxTurnOn | M=ModuleReady D=DPTxTurnOn |
| 24 | 主机等待中断置位以指示数据路径激活完成 | 模块启用正在激活的数据路径的所有 Tx 输出 | |
| 25 | |||
| 26 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 数据路径激活完成后,模块在进入 DPActivated 时设置 DPStateChangedFlag 位 | M=ModuleReady D=DPActivated |
| 27 | 主机使用已激活的数据路径承载实际流量 | 模块等待主机操作 | |
| 28 |
D.2 去初始化示例#
D.2.1 硬件去初始化#
本节描述一个简单的模块下电序列示例,其中模块在硬件控制下下电(LowPwrRequestHW 硬件信号从 DEASSERTED 转换到 ASSERTED),无需软件交互。
此场景具有以下特征:
- a. 模块先前在硬件控制下上电(LowPwrRequestHW=DEASSERTED)
- b. 至少一个数据路径处于 DPActivated 状态
| 步骤 | 主机操作 | 模块操作 | 模块状态 (M) / 数据路径状态 (D) |
|---|---|---|---|
| 0 | 模块已上电且至少一个数据路径已激活。LowPwrRequestHW = DEASSERTED,Reset = DEASSERTED,ModSel=ASSERTED(如支持)。 | 初始条件:模块完全配置并上电,至少一个数据路径处于 DPActivated 状态。M=ModuleReady D=DPActivated | |
| 1 | 主机置位 LowPwrRequestHW 信号 | 模块看到 DPDeactivateS 转换信号为 TRUE,并将所有数据路径状态转换到 DPTxTurnOff | M=ModuleReady D=DPTxTurnOff |
| 2 | 所有数据路径状态无需任何进一步的主机操作即转换到 DPInitialized | M=ModuleReady D=DPInitialized | |
| 3 | 模块看到 DPReDeinitS 为 TRUE,并将所有数据路径状态转换到 DPDeinit | M=ModuleReady D=DPDeinit | |
| 4 | 模块禁用所有 Tx 输出并去初始化数据路径资源 | ||
| 5 | 模块在进入 DPDeactivated 时将数据路径状态变化标志设置为 1 | M=ModuleReady D=DPDeactivated | |
| 6 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块看到 LowPwrExS 为 TRUE,并将模块状态转换到 ModulePwrDn | |
| 7 | 主机等待第二个中断置位以指示模块下电完成 | 模块将模块功率降低到低功率模式水平 | M=ModulePwrDn D=DPDeactivated |
| 8 | 模块在进入 ModuleLowPwr 时设置 ModuleStateChangedFlag | M=ModuleLowPwr D=DPDeactivated | |
| 9 | 主机检测到中断置位并读取所有标志以清除中断 | 模块等待主机操作 |
D.2.2 软件去初始化#
本节描述一个简单的模块下电序列示例,其中模块在软件控制下下电(LowPwrRequestHW 硬件信号 = ASSERTED)。此示例使用两步下电过程,首先去激活所有数据路径,然后使用 LowPwrAllowRequestHW 位下电模块。这可能使用的一个场景是:主机已去激活所有数据路径但希望更进一步,也将模块转换到低功率模式。请注意,如果主机希望稍后重新激活某个数据路径,此方法确实需要两步上电过程,主机必须先将模块转换到高功率模式,然后才能激活数据路径。
此场景具有以下特征:
- a. 模块先前在软件控制下上电(LowPwrRequestHW=ASSERTED)
- b. 至少一个数据路径处于 DPActivated 状态
| 步骤 | 主机操作 | 模块操作 | 模块状态 (M) / 数据路径状态 (D) |
|---|---|---|---|
| 0 | 模块已上电且至少一个数据路径已激活。LowPwrRequestHW = ASSERTED,ResetL = DEASSERTED,ModSel=ASSERTED(如支持)。 | 初始条件:模块完全配置并上电,至少一个数据路径处于 DPActivated 状态。M=ModuleReady D=DPActivated | |
| 1 | 主机将适用数据路径的所有主机通道的 DPDeinit 位设置为 1 | 模块看到 DPDeactivateS 转换信号为 TRUE,并将数据路径状态转换到 DPTxTurnOff | M=ModuleReady D=DPTxTurnOff |
| 2 | 所有数据路径状态无需任何进一步的主机操作即转换到 DPInitialized | M=ModuleReady D=DPInitialized | |
| 3 | 模块看到 DPReDeinitS 为 TRUE,并将所有数据路径状态转换到 DPDeinit | M=ModuleReady D=DPDeinit | |
| 4 | 模块禁用所有数据路径的 Tx 输出并去初始化数据路径资源 | ||
| 5 | 主机检测到中断置位并读取所有标志寄存器,这将去置位中断 | 模块在进入 DPDeactivated 时将数据路径状态变化标志设置为 1 | M=ModuleReady D=DPDeactivated |
| 6 | 模块等待主机操作 | ||
| 7 | 主机将 LowPwrAllowRequestHW 位设置为 1 | 模块看到 LowPwrExS 为 TRUE,并将模块状态转换到 ModulePwrDn | |
| 8 | 主机等待中断置位以指示模块下电完成 | 模块将模块功率降低到低功率模式水平 | M=ModulePwrDn D=DPDeactivated |
| 9 | 模块在进入 ModuleLowPwr 时设置 ModuleStateChangedFlag | M=ModuleLowPwr D=DPDeactivated | |
| 10 | 主机检测到中断置位并读取所有标志以清除中断 | 模块等待主机操作 |
附录 E:ApplyDPInit 行为#
E.1 默认行为(SteppedConfigOnly = 0)#
本附录说明了主机写入 Apply 寄存器之一后模块的不同行为,取决于通告 SteppedConfigOnly(00h:2.6)。
图 E-19 ApplyDPInit(默认:SteppedConfigOnly=0)
注意,具有状态相关行为的 ApplyImmediate 在稳态 DPSM 状态下受支持(如表 6-3 中所述)。
E.2 受限行为(SteppedConfigOnly = 1)#
图 E-20 ApplyDPInit(受限:SteppedConfigOnly=1)
注意,在此配置中不支持 ApplyImmediate。
附录 F:诊断功能使用示例#
本附录包含第 13h 页和第 14h 页上可用诊断功能的使用建议和示例。
注意:要使用这些诊断功能,模块应处于 ModuleReady 状态。应选择一个应用,但除此之外,这些诊断功能与数据路径状态之间没有特定关系。
F.1 启用和禁用图案发生器(主机侧或媒体侧)#
以下过程包含推荐的寄存器访问序列,用于将模块设置为主机侧(或媒体侧)图案生成模式。示例中使用主机侧寄存器,媒体侧寄存器显示在括号中。
- 写入组选择和页选择寄存器 00h:127-128 以选择适当的组
- 在字节 13h:177 中配置所需的运行模式
- 在字节 13h:145-151(13h:153-159)中配置所需的图案发生器配置和通道图案
- 在字节 13h:176-179 中配置所需的控制选项
- 通过写入 13h:144.7-0(13h:152:7-0)在所选通道上启用图案发生器
在上述命令序列之后,主机侧电气(媒体侧电气或光)输出将为已启用的通道生成所选图案。
注意:图案生成功能可能因模块而异。在某些模块上,当处于图案生成模式时,不提供逐通道控制,所有通道可能都在生成图案。在其他模块上(如设计用于支持分路的模块),所选通道可能处于图案生成模式,而其他通道要么被禁用,要么处于正常工作模式。
要在所选主机侧(媒体侧)通道上禁用图案发生器:
- 写入 13h:144.7-0(13h:152.7-0),清除代表所选通道的相关位
当在所选通道上禁用图案生成时,这些通道预计会恢复到工作模式(如果可能)。在某些模块上,只有当模块接口(主机侧或媒体侧)均未处于图案生成模式时,才能实现工作模式。模块复位可用于保证模块恢复到工作模式。否则,主机必须确保所有主机和媒体两侧所有通道上的所有图案生成模式均已禁用。
F.2 启用和禁用图案检查器(主机侧或媒体侧)#
以下过程包含推荐的寄存器访问序列,用于将模块设置为主机侧(或媒体侧)图案检查模式。示例中使用主机侧寄存器,媒体侧寄存器显示在括号中。
- 写入组选择和页选择寄存器 00h:127-128 以选择适当的组
- 在字节 13h:177 中配置所需的运行模式
- 在 13h:161-167(13h:169-175)中配置所需的图案检查器配置和通道图案
- 在 13h:176-179 中配置所需的控制选项
- 通过写入 13h:160.7-0(13h:168.7-0)在所选通道上启用图案检查器
当主机启用 PRBS 检查器时,模块预期会复位错误计数器并启用错误计数器开始计数。错误计数器的行为由字节 13h:177 定义。
要禁用图案检查器(在任何时候),包括在门控错误计数操作进行中:
- 清除字节 13h:160.7-0(13h:168.7-0)中代表所需通道的位
如果在门控操作进行中禁用图案检查器,所有错误计数器均为未定义。
在门控计数中间禁用被模块视为中止操作。
以下部分详细说明了一些错误计数器配置及其预期行为。
F.3 读取图案检查器错误计数器#
根据字节 13h:177 中的配置,图案检查器可用于多种场景。
以下部分描述了一些常用场景的推荐主机写入序列。
这些推荐序列仅供参考。这些示例中提供了媒体侧寄存器,但相同的序列也可应用于主机侧寄存器。
这些序列的示例应用具有 8 条主机侧通道和 4 条媒体侧通道。
F.3.1 非门控(连续)错误计数器,逐通道#
在此场景中,错误统计信息作为累积(非周期性、开放式)统计信息收集。
主机选择的运行模式#
- 13h:177.3-1 = 000b(非门控)
- 13h:177.5 = 0(不保持检查器处于复位状态)
- 13h:177.7 = 0(按通道复位错误计数)
- 13h:129.4 = 0(禁用周期性更新)
- 13h:177.0 = X(更新间隔无关紧要)
主机写入序列#
- 写入 13h:160.7-0(13h:168.7-0)以在所选媒体侧通道上启用图案检查器。
- a. 模块将配置和控制选项应用于已启用的通道。
- b. 由于配置为非门控且禁用周期性更新,最新的错误计数器在主机读取当前图案检查器数据时”按需”可用。
- 写入 14h 到页选择寄存器。由于错误信息为按需提供,模块可能需要额外时间来提供所选诊断数据。
- 写入 02h(04h)到诊断选择器 14h:128 以选择主机侧(媒体侧)的通道 1-4,或写入 03h(05h)以选择通道 5-8(例如用于 DR4、FR4、LR4)。
- 模块在写入字节 128 时将执行图案检查器错误计数器的读取。(模块不会清除错误计数器。)
- 读取字节 14h:138(14h:139)以确保图案检查器未失锁。
- 读取字节 14h:192-255 以获取错误计数器和总位数。
F.3.2 非门控(连续)错误计数器,逐通道,复位错误计数器#
在此场景中,错误统计信息作为区间统计信息收集。每通道的区间长度由主机控制。
配置假设#
- a. 13h:177.3-1 = 000b(非门控)
- b. 13h:177.5 = 0(不保持检查器处于复位状态)
- c. 13h:177.7 = 0(按通道复位错误计数)
- d. 13h:129.4 = 1(启用周期性更新)
- e. 13h:177.0 = 0(1 秒更新间隔)
主机写入序列#
- 写入位 13h:160.7-0(13h:168.7-0)以在所选媒体侧通道上启用图案检查器。
- a. 模块将配置和控制选项应用于已启用的通道。
- b. 由于配置为非门控且启用周期性更新,模块可能提供上一个更新周期的错误信息。
- c. 当主机读取当前图案检查器数据时,错误计数器也可能”按需”可用(此行为有意留给供应商决定)。
- 写入 14h 到页选择寄存器。为向主机提供更好的响应,模块可能返回上次更新的错误信息。
- 写入 02h(或 04h)到诊断选择器 14h:128 以选择主机侧(媒体侧)的通道 1-4,或写入 03h(05h)以选择主机(媒体)通道 5-8(例如用于 DR8、FR8、LR8)。
- 读取字节 14h:138(14h:139)以确保图案检查器未失锁。
- 要复位错误信息,主机可以设置位 13h:177.5。设置后:
- a. 模块(也可以从数据路径芯片读取然后)冻结当前错误信息。
- b. 模块将当前内部图案检查器计数器复制到计数结果中。
- 主机可以写入 11h-15h 到诊断选择器 14h:128 以选择收集的错误信息结果,然后读取字节 14h:192-255 以获取 BER 或错误计数器和总位数的结果。
要重新开始错误计数,主机可以清除位 13h:177.5。这将复位当前错误信息(选择器 01h-05h)而不影响错误信息结果(选择器 11h-15h)。
F.3.3 非门控(连续)错误计数器,所有通道,所有组#
在此场景中,错误统计信息作为主机控制的区间统计信息运行。
配置假设#
- a. 13h:177.3-1 = 000b(非门控)
- b. 13h:177.5 = 0(不保持检查器处于复位状态)
- c. 13h:177.7 = 1(在所有组的所有已启用通道上复位错误计数)
- d. 13h:129.4 = 0(启用周期性更新)
- e. 13h:177.0 = 1(5 秒更新间隔)
主机写入序列#
- 写入位 13h:160.7-0(13h:168.7-0)以在所选媒体通道上启用图案检查器。
- a. 模块将配置和控制选项应用于已启用的通道。
- b. 由于配置为非门控且启用周期性更新,模块可能提供上一个更新周期的错误信息。
- c. 当主机读取当前图案检查器数据时,错误计数器也可能”按需”可用,但此行为有意留给供应商决定。
- 写入 14h 到页选择寄存器。为向主机提供更好的响应,模块可能返回上次轮询的错误信息。
- 写入 02h(04h)到诊断选择器 14h:128 以选择主机侧(媒体侧)的通道 1-4,或写入 03h(05h)以选择主机(媒体)通道 5-8(例如用于 DR8、FR8、LR8)。
- 主机应读取字节 14h:138(14h:139)以确保图案检查器未失锁。
- 如果主机要复位错误信息,主机应设置位 13h:177.5。设置后:
- a. 模块(也可以从数据路径芯片读取然后)冻结当前错误信息。由于此组的位 13h:177.7 已设置,模块还将冻结所有设置了位 13h:177.7 的已启用组的当前错误信息。
- b. 模块将当前内部图案检查器计数器复制到计数结果中。模块将把所有设置了位 13h:177.7 的已启用通道和组的错误信息复制到错误信息结果中。
- 主机可以写入 11h-15h 到诊断选择器 14h:128 以选择所有组的收集错误信息结果,然后读取字节 14h:192-255 以获取各组中相应通道的 BER 或错误计数器和总位数的结果。
要重新开始错误计数,主机可以清除位 13h:177.5。这将复位当前错误信息(选择器 01h-05h)而不影响错误信息结果(选择器 11h-15h)。
附录 G:规范演进注意事项#
本附录记录了规范未来演进的注意事项。
本附录的受众是参与维护和演进 CMIS 的编辑和工作组。
CMIS 新修订版的”向后兼容性”或”跨版本互操作性”的期望特性对规范的允许更改和后续扩展都带来了微妙的约束。
本附录的目的是使这些微妙的约束对 CMIS 受众(特别是规范演进工作组)明确可见。
如下所述,应尽可能使用以下准则:
CMIS 演进准则:模块的新 CMIS 功能应以以下方式之一指定:在模块的默认配置中静默且无需关注地运行,或者在默认情况下被钝化,直到由了解新功能的主机显式启用。
G.1 定义#
CMIS 版本由一个包含两个组件的版本号指示,分别称为主修订号和次修订号。
- 从主机角度的向后兼容性意味着主机原则上始终可以与较旧的模块互操作(即主机可以管理使用比主机更早的 CMIS 版本的模块)。
- 从模块角度的向后兼容性意味着模块可以与较旧的主机互操作(即模块可以由实现比模块更早的 CMIS 版本的主机管理)。
G.2 跨版本兼容性#
主机可以查询模块的 CMIS 版本,而模块不知道主机实现的 CMIS 版本。
当模块支持的 CMIS 版本早于主机运行的 CMIS 版本时,主机至少在原则上可以适应已知的较旧 CMIS 版本来管理模块。
当模块支持的 CMIS 版本更新,因此对主机未知时,取决于主机的 CMIS 版本与更新的 CMIS 版本之间更改的性质:如果新版本仅提供兼容的扩展,或不兼容但已钝化的扩展(这些扩展使用其默认设置和行为可以正常工作),主机仍然可以使用其较旧 CMIS 版本支持的功能来管理模块。
G.3 CMIS 版本号的解释#
新 CMIS 修订版的 CMIS 版本将被定义以使主机能够使用以下规则:
- 如果模块报告的 CMIS 主修订号与主机相同或更小,则模块可以被管理(原则上,可能取决于主机动态适应较旧版本的能力)
- 如果模块报告的 CMIS 主修订号高于主机,则模块的行为可能不符合主机的预期,因此无法被管理
附录 H:NP 应用示例#
本附录展示了 NP 应用通告和 NP 应用预配置的示例,以说明第 7.6 节的规范。
注意:本附录仅与支持 NP 应用的模块相关。
H.1 通告示例#
以下通告示例探讨:
- 同构与混合复用应用
- 一个与多个替代复用应用
- 一个与多个并行复用应用
- 系统接口(DP)与单工(NP)应用
有关通告概念的描述,请参阅第 7.6.4 节。
有关所用通告寄存器的规范,请参阅第 8.2.12 节、第 8.4.13 节和第 8.15.5.5 节。
注意:所示的应用描述符序列不是预先确定的,可能因模块而异。
注意:在以下示例中,当 [5] 中存在多个合适的值或变体时,显示了接口 ID 的符号值,如 <400ZR> 分别为 400ZR DWDM 和 400ZR 单通道的 62 和 63。
H.1.1 支持同构复用的 400ZR DP 和 NP 应用的 400G 模块#
以下通告描述了一个除经典 400ZR 系统接口和 400ZR 单工应用外还支持简单(同构)复用的模块。
注意:非复用的 <400ZR> 系统接口实际上默认是 DP 应用,而非单工 NP 应用。该示例假设复用 NP 应用使用相同的媒体接口 ID。
注意:该模块还支持单工 NP 应用,可在不中断网络信号的情况下更改复用结构;这在 400ZR DWDM 应用中可能最有用。
表 H-1 400ZR NP 应用通告示例
| 页 | 字节 | 位 | 字段名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 00h | 86 87 | 7-0 7-0 | HostInterfaceIDApp1 MediaInterfaceIDApp1 | <400GAUI-8> 63 | ”400GAUI-8” 的 ID “400ZR” 的 ID(DP 应用) |
| 88 | 7-4 | HostLaneCountApp1 | 8 | ||
| 89 | 3-0 7-0 | MediaLaneCountApp1 HostLaneAssignmentOptionsApp1 | 1 0000 0001b | ||
| 01h | 176 | 7-0 | MediaLaneAssignmentOptionsApp1 | 0000 0001b | |
| 00h | 90 91 | 7-0 7-0 | HostInterfaceIDApp2 MediaInterfaceIDApp2 | <200GAUI-4> 62 | ”200GAUI-4” 的 ID “400ZR” 的 ID(NP 应用) |
| 92 | 7-4 | HostLaneCountApp2 | 4 | ||
| 93 | 3-0 7-0 | MediaLaneCountApp2 HostLaneAssignmentOptionsApp2 | 1 0001 0001b | ||
| 01h | 177 | 7-0 | MediaLaneAssignmentOptionsApp2 | 0000 0001b | |
| 00h | 94 95 | 7-0 7-0 | HostInterfaceIDApp3 MediaInterfaceIDApp3 | 0Dh 62 | ”100GAUI-2” 的 ID “400ZR” 的 ID(NP 应用) |
| 96 | 7-4 | HostLaneCountApp3 | 2 | ||
| 97 | 3-0 7-0 | MediaLaneCountApp3 HostLaneAssignmentOptionsApp3 | 1 0101 0101b | ||
| 01h | 178 | 7-0 | MediaLaneAssignmentOptionsApp3 | 0000 0001b | |
| 00h | 98 99 | 7-0 7-0 | HostInterfaceIDApp4 MediaInterfaceIDApp4 | <400GAUI-8> 62 | ”400GAUI-8” 的 ID “400ZR DWDM”(NP 应用) |
| 100 | 7-4 | HostLaneCountApp4 | 8 | ||
| 101 | 3-0 7-0 | MediaLaneCountApp4 HostLaneAssignmentOptionsApp4 | 1 0000 0001b | ||
| 01h | 179 | 7-0 | MediaLaneAssignmentOptionsApp4 | 0000 0001b | |
| 16h | 228 | 7-0 | MuxGranularity1 | 0 | 仅同构复用 |
| 248 | 7-0 | ExtAppDescriptor<15-8> | xxxx xxxxb | AppSel 1 为 DP,2、3、4 为 NP | |
| 249 | 7-0 | ExtAppDescriptor<7-1> | xxx1 1100b |
H.1.2 支持混合复用的 400ZR NP 应用的 400G 模块#
以下通告描述了一个使用 QSFP-DD 400ZR 模块原生 50G 通道粒度的混合复用模块(如主机接口 ID 100GAUI-2、200GAUI-4 或 400GAUI-8 所示,其中任何一个都可用于指定粒度)。
注意:为便于阅读,下面提供了表 8-149 的副本,以显示复用结构编码的含义。
表 H-2 400ZR NP 应用通告混合复用示例
| 页 | 字节 | 位 | 字段名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 00h | 86 87 | 7-0 7-0 | HostInterfaceIDApp1 MediaInterfaceIDApp1 | <400GAUI-8> <400ZR> | “400GAUI-8” 的 ID “400ZR” 的 ID |
| 88 | 7-4 | HostLaneCountApp1 | 8 | ||
| 89 | 3-0 7-0 | MediaLaneCountApp1 HostLaneAssignmentOptionsApp1 | 1 0000 0001b | ||
| 01h | 176 | 7-0 | MediaLaneAssignmentOptionsApp1 | 0000 0001b | |
| 00h | 90 91 | 7-0 7-0 | HostInterfaceIDApp2 MediaInterfaceIDApp2 | <200GAUI-4> <400ZR> | “200GAUI-4” 的 ID “400ZR” 的 ID |
| 92 | 7-4 | HostLaneCountApp2 | 4 | ||
| 93 | 3-0 7-0 | MediaLaneCountApp2 HostLaneAssignmentOptionsApp2 | 1 0001 0001b | ||
| 01h | 177 | 7-0 | MediaLaneAssignmentOptionsApp2 | 0000 0001b | |
| 00h | 94 95 | 7-0 7-0 | HostInterfaceIDApp3 MediaInterfaceIDApp3 | 0Dh <400ZR> | “100GAUI-2” 的 ID “400ZR” 的 ID |
| 96 | 7-4 | HostLaneCountApp3 | 2 | ||
| 97 | 3-0 7-0 | MediaLaneCountApp3 HostLaneAssignmentOptionsApp3 | 1 0101 0101b | ||
| 01h | 178 | 7-0 | MediaLaneAssignmentOptionsApp3 | 0000 0001b | |
| 16h | 228 | 7-0 | MuxGranularity1 | 0Dh | ”100GAUI-2” 的 ID:50G 通道 |
| 229 | 7-0 | MuxGranularity2 | 0 | 粒度列表结束 | |
| 230 | 7-0 | MuxGranularity3 | - | 无关紧要 | |
| 231 | 7-0 | MuxGranularity4 | - | 无关紧要 | |
| 232 | 31-0 | MuxStructsSupported1 | 0000 0000 0000 0000 0000 0001 0001 1110b | 同构复用的复用结构 ID 1、2、3 和混合复用的 4、8(另见下表) | |
| 236 | 31-0 | MuxStructsSupported2 | - | 无关紧要 | |
| 240 | 31-0 | MuxStructsSupported3 | - | 无关紧要 | |
| 244 | 31-0 | MuxStructsSupported4 | - | 无关紧要 | |
| 248 | 7-0 | ExtAppDescriptor<15-8> | xxxx xxxxb | AppSel 1、2、3 为 NP | |
| 249 | 7-0 | ExtAppDescriptor<7-1> | xxxx 1110b |
表 H-3 全局复用结构通告
| 复用结构 ID | HP 数量 | HP 宽度 [通道] | 每主机通道的 ID | |---|---|---|---|---|---|---|---|---|---| | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 0 | 8 | 1, 1, 1, 1, 1, 1, 1, 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 1 | 1 | 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 4, 4 | 1 | 1 | 1 | 1 | 5 | 5 | 5 | 5 | | 3 | 4 | 2, 2, 2, 2 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | | 4 | 3 | 4, 2, 2 | 1 | 1 | 1 | 1 | 5 | 5 | 7 | 7 | | 5 | 4 | 4, 2, 1, 1 | 1 | 1 | 1 | 1 | 5 | 5 | 7 | 8 | | 6 | 4 | 4, 1, 1, 2 | 1 | 1 | 1 | 1 | 5 | 6 | 7 | 7 | | 7 | 5 | 4, 1, 1, 1, 1 | 1 | 1 | 1 | 1 | 5 | 6 | 7 | 8 | | 8 | 3 | 2, 2, 4 | 1 | 1 | 3 | 3 | 5 | 5 | 5 | 5 | | 9 | 4 | 2, 1, 1, 4 | 1 | 1 | 3 | 4 | 5 | 5 | 5 | 5 | | 10 | 4 | 1, 1, 2, 4 | 1 | 2 | 3 | 3 | 5 | 5 | 5 | 5 | | 11 | 4 | 1, 1, 1, 1, 4 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 5 | | 12 | 5 | 2, 2, 2, 1, 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 8 | | 13 | 5 | 2, 2, 1, 1, 2 | 1 | 1 | 3 | 3 | 5 | 6 | 7 | 7 | | 14 | 5 | 2, 1, 1, 2, 2 | 1 | 1 | 3 | 5 | 5 | 7 | 7 | | 15 | 5 | 1, 1, 2, 2, 2 | 1 | 2 | 3 | 3 | 5 | 5 | 7 | 7 | | 16 | 6 | 2, 2, 1, 1, 1, 1 | 1 | 1 | 3 | 3 | 5 | 6 | 7 | 8 | | 17 | 6 | 2, 1, 1, 2, 1, 1 | 1 | 1 | 3 | 4 | 5 | 5 | 7 | 8 | | 18 | 6 | 2, 1, 1, 1, 1, 2 | 1 | 1 | 3 | 4 | 5 | 6 | 7 | 7 | | 19 | 6 | 1, 1, 2, 2, 1, 1 | 1 | 2 | 3 | 3 | 5 | 5 | 7 | 8 | | 20 | 6 | 1, 1, 2, 1, 1, 2 | 1 | 2 | 3 | 3 | 5 | 6 | 7 | 7 | | 21 | 6 | 1, 1, 1, 1, 2, 2 | 1 | 2 | 3 | 4 | 5 | 5 | 7 | 7 | | 22 | 6 | 2, 1, 1, 1, 1, 1, 1 | 1 | 1 | 3 | 4 | 5 | 6 | 7 | 8 | | 23 | 7 | 1, 1, 2, 1, 1, 1, 1 | 1 | 2 | 3 | 3 | 5 | 6 | 7 | 8 | | 24 | 7 | 1, 1, 1, 1, 2, 1, 1 | 1 | 2 | 3 | 4 | 5 | 5 | 7 | 8 | | 25 | 7 | 1, 1, 1, 1, 1, 1, 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 7 |
H.1.3 支持 400G 或 200G NP 应用替代的 400G 模块#
如果 H.1.2 中描述的模块在其单条媒体通道上替代支持使用 25G 主机通道粒度(而非 50G 粒度)的 200G NP,则需要此类型的额外复用应用描述符,第 16h 页中的通告可能如下所示:
表 H-4 多种复用粒度通告示例
| 页 | 字节 | 位 | 字段名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 16h | 228 | 7-0 | MuxGranularity1 | 0Dh | ”100GAUI-2” 的 ID:50G 通道 |
| 229 | 7-0 | MuxGranularity2 | <50GAUI-2> | “50GAUI-2” 的 ID:25G 通道 | |
| 230 | 7-0 | MuxGranularity3 | 0 | 粒度列表结束 | |
| 231 | 7-0 | MuxGranularity4 | - | 无关紧要 | |
| 232 | 31-0 | MuxStructsSupported1 | 0000 0000 0000 0000 0000 0001 0001 1110b | 同构复用的复用结构 ID 1、2、3 和 50G 通道混合复用的 4、8(另见下表) | |
| 236 | 31-0 | MuxStructsSupported2 | 0000 0000 0000 0000 0000 0001 0001 1110b | 25G 通道的复用结构与 50G 通道相同 | |
| 240 | 31-0 | MuxStructsSupported3 | - | 无关紧要 | |
| 244 | 31-0 | MuxStructsSupported4 | - | 无关紧要 |
H.1.4 支持并行 400ZR NP 或 DP 应用的 800G 模块#
以下配置通告了同时(而非替代)支持两个相同的并行 400G NP 应用(每个具有一条媒体通道)或 400G DP 应用,或其混合。
表 H-5 2×400ZR NP 应用通告示例
| 页 | 字节 | 位 | 字段名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 00h | 86 87 | 7-0 7-0 | HostInterfaceIDApp1 MediaInterfaceIDApp1 | <400GAUI-4> <400ZR> | “400GAUI-4” 的 ID “400ZR” 的 ID |
| 88 | 7-4 | HostLaneCountApp1 | 4 | ||
| 89 | 3-0 7-0 | MediaLaneCountApp1 HostLaneAssignmentOptionsApp1 | 1 0001 0001b | ||
| 01h | 176 | 7-0 | MediaLaneAssignmentOptionsApp1 | 0000 0011b | |
| 00h | 90 91 | 7-0 7-0 | HostInterfaceIDApp2 MediaInterfaceIDApp2 | <200GAUI-2> <400ZR> | “200GAUI-2” 的 ID “400ZR” 的 ID |
| 92 | 7-4 | HostLaneCountApp2 | 2 | ||
| 93 | 3-0 7-0 | MediaLaneCountApp2 HostLaneAssignmentOptionsApp2 | 1 0101 0101b | ||
| 01h | 177 | 7-0 | MediaLaneAssignmentOptionsApp2 | 0000 0011b | |
| 00h | 94 | 7-0 | HostInterfaceIDApp3 | <100GAUI-1> | “100GAUI-1” 的 ID |
| 95 | 7-0 | MediaInterfaceIDApp3 | <400ZR> | “400ZR” 的 ID | |
| 96 | 7-4 | HostLaneCountApp3 | 1 | ||
| 97 | 3-0 7-0 | MediaLaneCountApp3 HostLaneAssignmentOptionsApp3 | 1 1111 1111b | ||
| 01h | 178 | 7-0 | MediaLaneAssignmentOptionsApp3 | 0000 0011b | |
| 00h | 98 99 | 7-0 7-0 | HostInterfaceIDApp4 MediaInterfaceIDApp4 | <400GAUI-4> <400ZR> | “400GAUI-4” 的 ID “400ZR DWDM” |
| 100 | 7-4 | HostLaneCountApp4 | 4 | ||
| 101 | 3-0 7-0 | MediaLaneCountApp4 HostLaneAssignmentOptionsApp4 | 1 0001 0001b | ||
| 01h | 179 | 7-0 | MediaLaneAssignmentOptionsApp4 | 0000 0011b | |
| 16h | 228 | 7-0 | MuxGranularity1 | 0 | 仅同构复用 |
| 248 | 7-0 | ExtAppDescriptor<15-8> | xxxx xxxxb | AppSel 1、2、3 为 NP,4 为 DP | |
| 249 | 7-0 | ExtAppDescriptor<7-1> | xxx0 1110b |
H.1.5 用于 400ZR NP 应用和并行 DP 应用的 800G 模块#
以下配置通告了同时(而非替代)支持一个 400G NP 应用(具有一条媒体通道)和并行的一个 400G DP 应用(具有四条媒体通道)或四个 DP 应用(各具一条媒体通道)。
表 H-6 400ZR + 400G-DR4 或 4×100G-DR1 应用通告示例
| 页 | 字节 | 位 | 字段名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 00h | 86 87 | 7-0 7-0 | HostInterfaceIDApp1 MediaInterfaceIDApp1 | <400GAUI-4> <400ZR> | “400GAUI-4” 的 ID “400ZR” 的 ID |
| 88 | 7-4 | HostLaneCountApp1 | 4 | ||
| 89 | 3-0 7-0 | MediaLaneCountApp1 HostLaneAssignmentOptionsApp1 | 1 0000 0001b | ||
| 01h | 176 | 7-0 | MediaLaneAssignmentOptionsApp1 | 0000 0001b | |
| 00h | 90 91 | 7-0 7-0 | HostInterfaceIDApp2 MediaInterfaceIDApp2 | <200GAUI-2> <400ZR> | “200GAUI-2” 的 ID “400ZR” 的 ID |
| 92 | 7-4 | HostLaneCountApp2 | 2 | ||
| 93 | 3-0 7-0 | MediaLaneCountApp2 HostLaneAssignmentOptionsApp2 | 1 0000 0101b | ||
| 01h | 177 | 7-0 | MediaLaneAssignmentOptionsApp2 | 0000 0001b | |
| 00h | 94 95 | 7-0 7-0 | HostInterfaceIDApp3 MediaInterfaceIDApp3 | <100GAUI-1> <400ZR> | “100GAUI-1” 的 ID “400ZR” 的 ID |
| 96 | 7-4 | HostLaneCountApp3 | 1 | ||
| 97 | 3-0 7-0 | MediaLaneCountApp3 HostLaneAssignmentOptionsApp3 | 1 0000 1111b | ||
| 01h | 178 | 7-0 | MediaLaneAssignmentOptionsApp3 | 0000 0001b | |
| 00h | 98 99 | 7-0 7-0 | HostInterfaceIDApp4 MediaInterfaceIDApp4 | <400GAUI-4> <400G-DR4> | “400GAUI-4” 的 ID “400G-DR4” |
| 100 | 7-4 | HostLaneCountApp4 | 4 | ||
| 101 | 3-0 7-0 | MediaLaneCountApp4 HostLaneAssignmentOptionsApp4 | 4 0001 0000b | ||
| 01h | 179 | 7-0 | MediaLaneAssignmentOptionsApp4 | 0000 0010b | |
| 00h | 102 103 | 7-0 7-0 | HostInterfaceIDApp5 MediaInterfaceIDApp5 | <100GAUI-1> <100G-DR1> | “100GAUI-1” 的 ID “100G-DR1” |
| 104 | 7-4 | HostLaneCountApp5 | 1 | ||
| 105 | 3-0 7-0 | MediaLaneCountApp5 HostLaneAssignmentOptionsApp5 | 1 1111 0000b | ||
| 01h | 180 | 7-0 | MediaLaneAssignmentOptionsApp5 | 0001 1110b | |
| 16h | 228 | 7-0 | MuxGranularity1 | 0 | 仅同构复用 |
| 248 | 7-0 | ExtAppDescriptor<15-8> | xxxx xxxxb | AppSel 1、2、3 为 NP,4、5 为 DP | |
| 249 | 7-0 | ExtAppDescriptor<7-1> | xx00 1110b |
H.2 预配置示例#
参与 N:1 NP 应用实例的主机路径(HP)和网络路径(NP)组在单独的步骤中定义、预配置和开通。所有已开通的 HP 和 NP 的动态配置状态也被分别观察和控制。
有关更多信息,请参阅第 7.6.5 节。
注意:以下示例随意使用第一个暂存控制集实例。
注意:HP 通过 DP 寄存器(|h)管理,NP 通过 NP 寄存器(|h)管理。
H.2.1 具有未使用复用槽的 4×100G NP 应用#
假设第 H.1.2 节中描述的通告,以下寄存器预配置然后开通 4×100G ZR 的 NP 应用实例。
表 H-7 400ZR NP 预配置示例
| 页 | 字节 | 位 | 寄存器名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 10h | 145 | 7-0 | SCS0::DPConfigLane1 | 0011 000 0b | (AppSel, DPID, EC) = (3, 0, 0) |
| 146 | 7-0 | SCS0::DPConfigLane2 | 0011 000 0b | (AppSel, DPID, EC) = (3, 0, 0) | |
| 147 | 7-0 | SCS0::DPConfigLane3 | 0011 010 0b | (AppSel, DPID, EC) = (3, 2, 0) | |
| 148 | 7-0 | SCS0::DPConfigLane4 | 0011 010 0b | (AppSel, DPID, EC) = (3, 2, 0) | |
| 149 | 7-0 | SCS0::DPConfigLane5 | 0011 100 0b | (AppSel, DPID, EC) = (3, 4, 0) | |
| 150 | 7-0 | SCS0::DPConfigLane6 | 0011 100 0b | (AppSel, DPID, EC) = (3, 4, 0) | |
| 151 | 7-0 | SCS0::DPConfigLane7 | 0011 110 0b | (AppSel, DPID, EC) = (3, 6, 0) | |
| 152 | 7-0 | SCS0::DPConfigLane8 | 0011 110 0b | (AppSel, DPID, EC) = (3, 6, 0) | |
| 16h | 128 | 7-0 | SCS0::NPConfigLane1 | 0000 000 1b | (NPID, NPInUse) = (0, 1) |
| 129 | 7-0 | SCS0::NPConfigLane2 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 130 | 7-0 | SCS0::NPConfigLane3 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 131 | 7-0 | SCS0::NPConfigLane4 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 132 | 7-0 | SCS0::NPConfigLane5 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 133 | 7-0 | SCS0::NPConfigLane6 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 134 | 7-0 | SCS0::NPConfigLane7 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 135 | 7-0 | SCS0::NPConfigLane8 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 10h | 128 | 7 | DPDeinitLane8 | 1b | 保持第 4 HP 处于 DPDeactivated |
| 6 | DPDeinitLane7 | 0b | 初始化第 3 HP | ||
| 5 | DPDeinitLane6 | 0b | |||
| 4 | DPDeinitLane5 | 0b | 初始化第 2 HP | ||
| 3 | DPDeinitLane4 | 0b | |||
| 2 | DPDeinitLane3 | 0b | 初始化第 1 HP | ||
| 1 | DPDeinitLane2 | 0b | |||
| 0 | DPDeinitLane1 | 0b | |||
| 16h | 160 | 7 | NPDeinitLane8 | 0b | 完全初始化 NP(所有 8 条主机通道馈入该 NP) |
| 6 | NPDeinitLane7 | 0b | 注意:NP 的复用结构必须在活跃控制集中以 HP 的形式预配置,而每个 HP 的 DPSM 状态无关紧要。 | ||
| 5 | NPDeinitLane6 | 0b | |||
| 4 | NPDeinitLane5 | 0b | |||
| 3 | NPDeinitLane4 | 0b | |||
| 2 | NPDeinitLane3 | 0b | |||
| 1 | NPDeinitLane2 | 0b | |||
| 0 | NPDeinitLane1 | 0b |
H.2.2 支持并行 400ZR NP 应用的 800G 模块#
假设第 H.1.4 节中描述的通告,以下寄存器预配置一个 400ZR NP 应用实例和一个并行的 400ZR DP 应用实例。
表 H-8 2×400ZR NP 预配置示例
| 页 | 字节 | 位 | 寄存器名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 10h | 145 | 7-0 | SCS0::DPConfigLane1 | 0001 000 0b | (AppSel, DPID, EC) = (1, 0, 0) |
| 146 | 7-0 | SCS0::DPConfigLane2 | 0001 000 0b | (AppSel, DPID, EC) = (1, 0, 0) | |
| 147 | 7-0 | SCS0::DPConfigLane3 | 0001 000 0b | (AppSel, DPID, EC) = (1, 0, 0) | |
| 148 | 7-0 | SCS0::DPConfigLane4 | 0001 000 0b | (AppSel, DPID, EC) = (1, 0, 0) | |
| 149 | 7-0 | SCS0::DPConfigLane5 | 0100 100 0b | (AppSel, DPID, EC) = (4, 4, 0) | |
| 150 | 7-0 | SCS0::DPConfigLane6 | 0100 100 0b | (AppSel, DPID, EC) = (4, 4, 0) | |
| 151 | 7-0 | SCS0::DPConfigLane7 | 0100 100 0b | (AppSel, DPID, EC) = (4, 4, 0) | |
| 152 | 7-0 | SCS0::DPConfigLane8 | 0100 100 0b | (AppSel, DPID, EC) = (4, 4, 0) | |
| 16h | 128 | 7-0 | SCS0::NPConfigLane1 | 0000 000 1b | (NPID, NPInUse) = (0, 1) |
| 129 | 7-0 | SCS0::NPConfigLane2 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 130 | 7-0 | SCS0::NPConfigLane3 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 131 | 7-0 | SCS0::NPConfigLane4 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 132 | 7-0 | SCS0::NPConfigLane5 | 0000 100 1b | (NPID, NPInUse) = (X, 0) | |
| 133 | 7-0 | SCS0::NPConfigLane6 | 0000 100 1b | (NPID, NPInUse) = (X, 0) | |
| 134 | 7-0 | SCS0::NPConfigLane7 | 0000 100 1b | (NPID, NPInUse) = (X, 0) | |
| 135 | 7-0 | SCS0::NPConfigLane8 | 0000 100 1b | (NPID, NPInUse) = (X, 0) |
H.2.3 用于 400ZR NP 应用和其他并行 DP 应用的 800G 模块#
假设第 H.1.5 节中描述的通告,以下寄存器预配置五个 NP 应用实例(400G ZR + 4×100G DR1)。
表 H-9 400ZR + 4×100G-DR1 NP 预配置示例
| 页 | 字节 | 位 | 寄存器名称 | 值 | 备注 |
|---|---|---|---|---|---|
| 10h | 145 | 7-0 | SCS0::DPConfigLane1 | 0010 000 0b | (AppSel, DPID, EC) = (2, 0, 0) |
| 146 | 7-0 | SCS0::DPConfigLane2 | 0010 000 0b | (AppSel, DPID, EC) = (2, 0, 0) | |
| 147 | 7-0 | SCS0::DPConfigLane3 | 0011 010 0b | (AppSel, DPID, EC) = (3, 2, 0) | |
| 148 | 7-0 | SCS0::DPConfigLane4 | 0011 011 0b | (AppSel, DPID, EC) = (3, 3, 0) | |
| 149 | 7-0 | SCS0::DPConfigLane5 | 0101 100 0b | (AppSel, DPID, EC) = (5, 4, 0) | |
| 150 | 7-0 | SCS0::DPConfigLane6 | 0101 101 0b | (AppSel, DPID, EC) = (5, 5, 0) | |
| 151 | 7-0 | SCS0::DPConfigLane7 | 0101 110 0b | (AppSel, DPID, EC) = (5, 6, 0) | |
| 152 | 7-0 | SCS0::DPConfigLane8 | 0101 111 0b | (AppSel, DPID, EC) = (5, 7, 0) | |
| 16h | 128 | 7-0 | SCS0::NPConfigLane1 | 0000 000 1b | (NPID, NPInUse) = (0, 1) |
| 129 | 7-0 | SCS0::NPConfigLane2 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 130 | 7-0 | SCS0::NPConfigLane3 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 131 | 7-0 | SCS0::NPConfigLane4 | 0000 000 1b | (NPID, NPInUse) = (0, 1) | |
| 132 | 7-0 | SCS0::NPConfigLane5 | 0000 xxx 0b | (NPID, NPInUse) = (X, 0) | |
| 133 | 7-0 | SCS0::NPConfigLane6 | 0000 xxx 0b | (NPID, NPInUse) = (X, 0) | |
| 134 | 7-0 | SCS0::NPConfigLane7 | 0000 xxx 0b | (NPID, NPInUse) = (X, 0) | |
| 135 | 7-0 | SCS0::NPConfigLane8 | 0000 xxx 0b | (NPID, NPInUse) = (X, 0) |
附录 I:CMIS 贡献者#
OIF-CMIS-05.3