ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

光模块APSU_IEEE802.3dj D3p2

光模块APSU_IEEE802.3dj D3p2 协议没定稿瞅个大概APSU 适用速率200 Gb/s or higher per lane.设备之间必须通过底层互相“打招呼”确认在线然后一层一层往上汇报直到两头的大脑都能正常沟通才算真正自动连上APSU。APSU 不是个“按键”而是个“结果”你别把 APSU 当成一个具体的功能开关。它其实是设备之间互相确认“我通了、你也通了”之后自然产生的一种“双向奔赴”的状态。怎么才能触发这个状态看底层要想自动连上得满足三个条件发对暗号大家收发数据的格式得对。互相确认RTS/ILT就像打电话我喊你一声发 RTS你回我一句回 RTS咱俩都知道对方在线了变量变成 true。端到端打通不仅中间的路通了最顶上的大脑RS子层也得能互相聊天。这是一个“连坐”机制自下而上这套系统是一环扣一环的就像搭积木下面不稳上面就立不住最底层的两根线ISL得先连上线连上了里面的芯片PHY才能算连上芯片连上了扩展器Extender才算连上扩展器连上了整个物理层才算连上最后只有当两头的物理层都连上了这条完整的通信路Path才算彻底打通。如果自动连不上咋办如果这套自动确认的机制走不通标准也没把路堵死。你可以用“管理员手段management”去强制把它们连上。术语RTSReady-To-Send准备发送相当于我准备好了的信号告诉对面自己可以开始通信了。ILTInter-Sublayer Link Training子层间链路训练相当于跟对面对暗号协商信号参数确保双方能稳定传输数据。相干模块没有定义ILT接口 (Interface)除非另有说明接口是指 AUI 组件或 PMD。参见图 178B–3。子层间链路 (Inter-sublayer link, ISL)ISL 是连接两个子层的桥梁。它的物理形态 “两个接口 中间的通道/介质”。参见图 178B–1。路径 (Path)Path 是从一个 RS 到另一个 RS 的完整通信路线由多个 ISL 和中间子层串联而成。参见图 178B–1。对等接口 (Peer interface)Peer interface 就是 ISL 对面的那个接口。如果对面是 PMD它也可以叫 link partner。参见图 178B–2。Input and Output term correlationCMIS Module Data Path in systemILT和RTSILT 测试可以精确到单通道。而 RTS 机制就像个尽职的安检员它必须同时确认本地连接正常、远端对端就绪、自身功能正常才会给 ILT 放行让它正式进入收发数据的模式。ILT 的两种工作模式接口级整个接口共用 1 个 ILT 功能比较粗放。通道级如果接口里有 n 条通道那就给每条通道单独配 1 个 ILT 功能非常精细哪条通道坏了查哪条。RTS 是个“安检员”它要集齐信号才放行可以把RTS 功能想象成一个“门卫”或“安检员”而ILT 进入 DATA 模式就是“正式开工干活”。门卫不能瞎放人进去他必须确认以下三个地方都安全了才允许开工看本地检查自己和旁边挨着的接口相邻接口之间的连接状态好不好通过信号指示逻辑 SIL 确认。看远端检查对面对等接口是不是也准备好了通过 ILT 功能确认。看自身确认自己这个接口的 ILT 功能本身没问题。PAM4 接口在正式收发数据DATA模式之前是怎么一步步“热身”并互相打招呼的1. RTS 是个“发令员”在正式干活前发令员RTS要负责把设备的“心跳”时钟源切换到正确的工作频率上并且告诉周围的邻居相邻接口和远端的搭档对等接口“我准备好了”也就是把local_rts设为 true。2. 准备就绪的“四步走”流程第一步初始状态刚开机时发令员先按兵不动先说自己没准备好local_rts false。第二步看邻居等旁边的邻居相邻接口准备好了。怎么知道邻居准备好了邻居会喊一声“我OK了”SIGNAL_OK变成 READY 或 OK。第三步看训练进度如果设备正在做“考前突击训练”训练模式开启那就得等本地链路训练彻底达标了training_status变成 READY 或 OK才能往下走。第四步换时钟如果是重定时器retimer这种特殊设备这时候要把自己的“心跳”换成从邻居那里同步过来的稳定心跳恢复时钟。第五步举手示意以上条件全满足了发令员才正式举手说“我准备好进入 DATA 模式了”local_rts true。3. 怎么互相通知的对远端对等接口通过 ILT 功能把我的准备状态传过去。对旁边相邻接口通过服务接口把状态传过去。4. 一个重要的“佛系”规则在等自己准备好local_rts或者等对面准备好remote_rts的过程中标准里压根没规定超时时间No specified timeout。大白话就是死等只要条件没满足就一直等下去直到双方都点头为止绝不中途放弃。总结一句话接口要进 DATA 模式得先确认邻居OK、训练OK、时钟同步OK然后自己举手说OK再等对面也说OK。这个互相确认的过程没有倒计时必须100%确认才能正式开工。ILT 功能:高速公路通车前的试车流程。1. ILT 的三大工作模式三种状态TRAINING 模式考前突击训练如果开启了训练功能双方就会互发“固定长度的训练帧”。这就像两个人在互相磨合互相喊话“你声音大点”、“你语速慢点”请求更改状态、反馈本地接收状态直到双方都觉得配合默契了再商量着一起进入正式通车状态。LOCAL_PATTERN 模式原地踏步测试如果没开启训练功能ILT 就会自己生成一些特定的测试信号Pattern发给对面。这相当于单方面告诉对面“我这边一切正常准备好通车了你呢”DATA 模式正式通车训练或测试完美完成后正式放行真实业务数据。如果是从训练模式切过来的之前磨合好的参数比如预编码器状态会直接保留下来。2. 一个关键机制非正式模式下的“假数据”只要还没进入 DATA 模式ILT 就会“屏蔽”掉上层传来的真实业务数据而是自己生成“假数据”训练帧或测试Pattern发给对面。这保证了在没准备好之前不会把真实业务数据搞乱。tx_modeEnumerated variable that controls the content of the transmitter output of the lane when tx_disable is false. It is set by the training control state diagram (Figure 178B–10a and Figure 178B–10b) to one of the values:TRAINING:transmit training frames (see 178B.7.3)LOCAL_PATTERN:transmits a pattern specified by the clause or annex that defines the interface FILL: transmit either training frames or LOCAL_PATTERNDATA:transmit data from the PMA or Inner FECThere are three training pattern generator functions: synchronous PRBS13, free-running PRBS13, and freerunning PRBS31.3. 上下级汇报机制ILT 内部是分工合作的底层有针对每条通道的 ILT它们把各自的测试结果汇总给上层的“接口级 ILT”接口级 ILT 再统一向 RTS发令员汇报“我们所有通道都准备好了”local_rts true。4. 彻底搞砸了怎么办ISL_FAIL 状态如果在训练过程中遇到了无法自动恢复的致命错误进入了 ISL_FAIL 状态ILT 自己就无能为力了。这时候只能靠“管理员”management出面手动下达“重新训练”或“重启”的指令。至于管理员什么时候来管标准就不管了。总结一句话ILT 就是负责链路训练和测试的“试车员”。它通过发训练帧或测试信号让两端互相磨合、确认状态。等所有通道都试车成功后它才会向上级汇报并正式切换到 DATA 模式放行真实数据。如果试车彻底失败就只能呼叫管理员手动重启。ILT 负责“低头干活”RTS 负责“抬头看路”。ILT 把底层情况汇总给 RTSRTS 把高层决定传达给 ILT1. 一线员工ILT的工作职责独立干活接口里有几条物理通道就有几个独立的一线员工大家各自干各自的互不干扰。发假数据在没正式通车非 DATA 模式前他们负责自己生成“假数据训练帧”发给对面用来测试线路。自我调节收到对面的信号后他们要自己进行“自适应”调节比如微调均衡器旋钮把信号质量调到最佳状态。2. 向上汇报给 RTS 主管RTS 主管要盯着底下所有通道一线员工 ILT的干活情况。等所有通道都测试/训练完毕后ILT 会把情况汇报给 RTS 主管。RTS 主管汇总后会向对面的 RTS 主管Peer RTS宣告“报告我们接口下所有的通道都准备好了”即local_rts true。3. 向下传达给每通道 ILTRTS 主管还要把高层下达的指令或状态RTS states准确地传达给底下的每一个通道员工让它们知道现在处于什么阶段比如继续训练还是准备发车。4. 核心考核指标主管手里的关键变量作为主管RTS 手里捏着几个非常关键的“状态变量”来做决策training_status咱们部门内部的训练进度怎么样了全员达标了吗isl_ready结合内部进度我们这条链路ISL整体连通了吗remote_rts对面的主管对等接口准备好了吗2. 两种工作模式下的表现在 TRAINING训练模式下双方是“互动”的。接收器会发送特定格式的训练帧有 E1 和 O1 两种格式告诉对面的发送器“你现在的参数不行调大点/调小点”。具体能调哪些参数看接口类型。在 LOCAL_PATTERN本地模式模式下双方是“各玩各的”。发送器和接收器完全独立。接收器只管自己适应收到的信号发送器参数由管理员手动设置。它怎么告诉对面自己准备好了呢很简单只要把发送器的“静音键”关掉tx_disable false对面就知道你准备好了。双方用来“对暗号”的训练数据包到底长什么样1. 帧标记Frame marker专属的“敲门砖”训练帧的开头必须有一个极其特殊的标记16个连续的“3”加上16个连续的“0”。为什么这么设计因为这种组合在正常的控制、状态数据或测试信号里绝对不会出现。接收端一看到“3333...0000...”就知道“哦新的训练帧来了”这就叫唯一标识。2. 控制和状态字段用“差分曼彻斯特编码”发微信这两个字段各占 16 位用来互相传递“调参请求”和“当前状态”。怎么传用的是差分曼彻斯特编码DME。大白话就是通过电平“跳变”来代表 0 和 1。每个单元开头必须跳变一次如果中间再跳变一次就是“1”中间不跳变就是“0”。防错机制如果接收端发现对方发来的数据不符合这种跳变规则说明传输出错了那这一帧里的控制和状态信息就直接作废忽略。3. 训练模式Training pattern用来测试的“假数据”这部分是训练帧里的“大块头”数据主要用来让对方测试信号质量。它由伪随机码生成器PRBS产生有三种模式可选同步 PRBS13、自由运行 PRBS13/31。从 PAM2 到 PAM4 的升级刚开始进入训练状态时双方用最简单的 PAM2 调制和同步 PRBS13 来“热身”。但是如果要正式结束训练退出 TRAINING 模式双方必须都升级到更高级的 PAM4 调制。如果谁还在用 PAM2那训练就没法结束。总结一句话训练帧就是一个特制的包裹。它带着一个独一无二的“敲门砖”16个316个0里面装着用特殊编码DME写的“状态纸条”以及用来测试信号质量的“假数据”PRBS。双方必须按规矩发这个包裹并且最终都要升级到 PAM4 模式才能算训练成功。交互式调参协议与握手时序1. 三种“假数据”生成器PRBS为了让测试更真实系统准备了三种伪随机码PRBS生成器来产生测试数据同步 PRBS13每次发新训练帧时都会重置Seed。自由运行 PRBS13 / PRBS31这两种是“永动机”一旦开启就一直在后台跑不会随着训练帧的发送而重置。为了防止相邻通道互相干扰串扰标准规定相邻通道必须用不同的种子或错开时间保证它们发出的数据“不相关”。强制打断虽然自由运行生成器一直在跑但在发训练帧的“标记、控制、状态”这三个部分时生成器会被强制暂停覆盖把位置让给这些重要的控制信息。2. 数据是怎么变成 PAM4 信号的调制与编码生成器吐出的是普通的 0 和 1要变成 PAM4 信号得经过加工先把比特流拆成一对一对的 {A, B}。如果选PAM2只看 A 比特0 变成电平 01 变成电平 3。如果选PAM4把 {A, B} 组合起来通过“格雷码”映射成 4 种电平。如果开启了“预编码”还会再加一道特殊的数学处理工序让信号在高速传输时更稳定。3. 控制字段Control field互相喊话的“遥控器”训练帧里的控制字段16个比特其实就是双方用来互相指挥的“遥控器按键”主要包含以下几个功能初始条件请求相当于“一键换预设”直接让对方切换到某一套默认的均衡器参数。未准备好发送这是一个反向指示灯。如果这个位是 1说明我的local_rts是 false我还没准备好。调制/预编码请求告诉对方“请你把发送模式换成 PAM4并打开预编码”训练模式请求告诉对方“请你改发 PRBS31 测试信号”系数选择/请求相当于“微调旋钮”。如果不使用一键预设就可以通过这两个按键精确地让对方把某个具体的均衡器系数调大一点或调小一点。4. 遥控器上的“微调旋钮”系数请求除了“一键换预设”你还可以用遥控器进行“微调”。你可以指定某一个具体的均衡器系数比如 c(0)然后让它调大递增、调小递减或者直接关掉设为无均衡。5. 状态字段对方给你的“回执单”你发了指令对方怎么回复你通过状态字段Status field接收器就绪对方告诉你“我训练完了准备好收数据了”。帧锁定对方告诉你“我已经成功对齐了你的训练帧并且响应速度达标了”。系数选择回显 系数状态这两个是“微调旋钮”的确认回执。相当于对方说“收到我已经瞄准了你说的 c(1) 旋钮回显并且我已经把它调好了状态。”6. 极性检测与纠正正负极接反了怎么办如果双方接线时正负极接反了接收端在训练时就会发现信号是反的检测到反向帧标记。这时候系统会自动把 0、1、2、3 映射成 3、2、1、0 把信号翻转回来。而且这个“翻转记忆”在训练结束后也会保留确保正式传数据时依然是正确的。7. 调参的“三步走”流程178B.7.8双方调参非常有规矩不能乱发指令一键换预设流程先告诉对方“我要用预设 1”然后等对方回复“已更新”。等对方更新完后再把控制权切回“手动微调模式”。手动微调流程先告诉对方“我要调 c(1)”然后必须等对方回复“我已经瞄准 c(1) 了回显”并且“调好了状态”才能发下一个指令。排队机制上一个调参指令没执行完绝对不允许发下一个指令必须排队。设备在调参时既要“精准微调”又要“守住硬件安全底线”同时要求双方的通信必须极其迅速20ms内必须回应。只有当所有通道、本地、远端、邻居全都确认 OK 时整条链路才算真正准备就绪。1. 调参算法带“安全气囊”的微调178B.7.8.4接收端收到对方的调参指令后不能闭着眼睛瞎调它有一套严密的保护算法算一算目标值收到“加一步”或“减一步”的指令先算出目标值ck_ask。防撞墙限幅保护算出来的值如果超过了硬件支持的最大值ck_max或最小值ck_min就直接卡在边界上并回复对方“我已经顶到极限了”。防翻车CHECK_EQ 检查就算单个系数没超限系统还会检查“如果把这个系数调到这个值整体电路的电压/功耗会不会超标”如果整体超标也会拒绝并回复“均衡达到极限”。正常更新只有各项检查都通过了才会真正修改系数并回复“已更新UPDATED”。2. 握手时序天下武功唯快不破178B.7.10双方一来一回地调参不能慢吞吞的死线Deadline一旦帧锁定成功收到新指令后必须在20毫秒ms内给出确认回复。最佳实践标准强烈建议平均响应时间控制在2毫秒ms以内。怎么算确认比如你发了“我要调 c(1)”的指令对方回了一个帧里面的“系数回显”变成了 c(1)这就叫确认。3. 状态图的“最高解释权”178B.8.1标准文档里特别强调了一句如果文字描述和状态图打架了以状态图为准这在工程界叫“图表优先原则”。4. 几个关键变量178B.8.2.1adjacent_signal_ok旁边邻居的状态进行中/就绪/正常/失败。adjacent_intf_rx_ready邻居准备好没如果根本没有邻居就默认算作准备好。isl_ready整条链路ISL准备好没必须所有通道、本地和远端都说 OK这个变量才会变成 true。RTS 和 ILT 状态机运行所需的所有“血液”变量。它规定了设备如何判断自己和对面是否准备好、如何汇总各个通道的状态、如何处理时钟切换以及在遇到断线等突发状况时该采取什么应急策略。1. RTS 状态机的核心变量178B.8.2.1local_rts / remote_rts就是前面提到的“我准备好了”和“对面准备好了”。注意一个细节如果没开训练mr_training_enable false系统会默认认为对面已经准备好了remote_rts true。rts_status这是一个“总汇报变量”。它把本地的训练状态和远端的准备状态综合起来变成四种状态FAIL/OK/READY/IN_PROGRESS汇报给上层。training_status这是 ILT 的“总汇报变量”。它要求非常严格只要有一个通道失败FAIL整体就是 FAIL必须所有通道都 OK整体才算 OK。时钟与复位定义了怎么切换时钟USE_TX_CLOCK以及遇到大故障时怎么全局重启reset。2. 通道级的“调参”变量178B.8.3.1这部分全是底层干活用的变量。比如coef_req调参指令、coef_sel调哪个旋钮、coef_sts调参结果回执。它们把物理层收到的 0 和 1 翻译成了系统能懂的指令和状态。3. 断线重连的“应急策略”adj_los_mode如果相邻接口突然断线了Loss of Signal系统该怎么办这里有三种策略可选FAIL直接报错默认选项。SQUELCH静噪停止发送保持安静。LOCAL_PATTERN继续发本地测试信号假装没断线等对面回来。ILT 训练系统的所有底层“积木”。通过组合这些变量状态、函数动作、定时器时间控制和计数器容错记录设备就能自动完成从“找帧”、“调参”到“最终通车”的全部复杂工作。1. 核心状态变量系统的心跳本地与远端状态local_开头的变量代表“我”的状态remote_开头的代表“对面”的状态。比如local_rx_ready我接收准备好了和remote_rx_ready对面接收准备好了。模式选择local_mc_mode和local_tp_mode决定了当前发什么信号PAM2/PAM4以及发什么测试数据PRBS13/PRBS31。发送控制tx_disable是总开关tx_mode决定开关打开后发什么训练帧、测试模式还是真实数据。rx_ok终极目标当这个变量变成 true 时意味着信号格式对了、双方均衡器都调到最佳了可以正式通车了2. 核心函数系统的动作UPDATE_C / UPDATE_IC这就是前面讲过的“调参算法”用来微调均衡器或者一键换预设。SLIP滑动/错位测试这是个找帧的动作。就像拼图找不到头系统就把拼图往旁边挪一格SLIP看看能不能对齐。一直挪直到找到正确的帧标记为止。CHECK_REQ / ENCODE_STS负责检查对方的请求合不合法并把本地的状态打包编码准备回传给对方。3. 定时器系统的倒计时max_wait_timer训练启动后的最大等待时间。如果超时还没连上可能就要报错了。propagation_timer / quiet_timer都在 100~200 ms 之间。一个用于确认状态传播完成一个用于确认对方真的“闭嘴静默”了。recovery_timer系统出故障进入“恢复状态”后的短暂休息/重试时间20~30 ms。4. 计数器系统的记分牌good_markers / bad_markers连续找对帧标记的次数 / 连续找错的次数。这决定了系统能不能成功“锁定”帧。recovery_event_count记录系统崩溃/恢复了多少次。如果超过设定的上限max_recovery_events系统可能就会彻底放弃并报错。Retimer 和相干接口的 RTS 规则。最核心的经验教训是Retimer 在切换时钟源时必须极其谨慎必须在对外宣称“准备好”之前就把时钟切稳而相干接口的逻辑与 PAM4 一脉相承只是多了一个“是否静默输出”的选项。1. Retimer 的“换心手术”178B.9Retimer 就像是一个信号中继站它要把一边的信号接收、放大、再发给另一边。热身阶段在训练时Retimer 用的是自己的“本地心跳”本地时钟来发训练帧。换心手术等训练差不多了它必须把心跳换成从上游邻居那里同步过来的“恢复时钟”。安全原则标准极其强调“先换心再举手”。Retimer 必须在local_rts false还没对外宣称准备好的时候悄悄完成时钟源的切换。只有等心跳完全切换稳定了它才会把local_rts设为 true。这避免了在切换时钟的瞬间把数据传错。2. 相干接口的 RTS 流程178B.10 178B.11相干光模块Coherent的 RTS 逻辑和前面讲的 PAM4 逻辑非常相似只是变量名前面加了个c_比如c_local_rts。它的“热身通关条件”是自己训练完成了c_isl_ready。上游邻居也准备好了c_adjacent_intf_rx_ready。如果是 Retimer还得等“换心手术”做完。以上全满足c_local_rts才变 true。最后等对面也说 OK 了c_remote_rts大家一起切入 DATA 模式。3. 两种不同的“静默Squelch”脾气178B.11相干接口在没准备好时有两种处理输出的方式带静默With Squelch没准备好时直接把输出掐断静音不让垃圾信号发出去。不带静默Without Squelch没准备好时依然保持输出可能发的是无效信号或空闲信号。系统会根据硬件的具体设计选择跑哪一张状态图。相干接口的专属状态机细节底层变量必须通过 MDIO 等管理接口暴露出来供人调试厂商必须通过 PICS 表格来证明自己确实遵守了这套标准。1. 相干接口的专属变量与模式178B.11.2.1c_tx_mode 的丰富状态相干接口的发送模式比前面讲的 PAM4 更丰富。除了 TRAINING 和 DATA它还专门定义了QUIET静默、NOT-RTS未准备好信号、RTS准备好信号和FILL填充信号。这说明相干光模块在没准备好时能发出更明确的“状态信号”告诉别人自己处于什么阶段。带静默的特殊逻辑如果硬件支持静默QUIET当对面静默超过 100ms 时本地的接收就绪状态c_local_rx_ready必须强制变为 false。并且对于带静默的相干接口系统会直接默认对面已经准备好c_remote_rts true因为对面会通过其他专门的信号来沟通状态。2. 相干接口的专属定时器178B.11.2.3c_forward_clock_timer10~90 ms给时钟切换留出的缓冲时间。c_propagation_timer100~200 ms状态确认的传播时间。c_quiet_timer100~200 ms保持静默的最短强制时间。3. 怎么管怎么测178B.12 178B.13管理接口MDIO前面讲的那些高大上的状态变量比如local_rts、training_status在现实中工程师怎么查看和修改呢标准规定如果设备用了 MDIO 接口这些变量就必须一一对应到具体的 MDIO 寄存器地址上。如果不支持 MDIO也得有别的办法能读写这些变量。PICS协议实现一致性声明这是芯片/模块厂商的“考试承诺书”。厂商如果宣称自己的产品符合 178B 标准就必须填这张表逐项勾选“我实现了”、“我没实现”或“不适用”。这是为了保证不同厂家的设备连在一起时能正常互通。核心概念核心模块关键概念 / 机制核心规则与参数说明1. 调参算法带“安全气囊”的微调机制防撞墙超硬件最大/最小边界则卡死并回复极限。防翻车检查整体电压/功耗超标则拒绝并回复“均衡达到极限”。正常更新全项检查通过才修改系数并回复“UPDATED”。2. 握手时序极速通信要求死线 (Deadline)帧锁定后收到指令必须在 20ms 内回复确认。最佳实践平均响应时间建议控制在 2ms 以内。确认机制回复帧中的“系数回显”与指令一致即视为确认。3. 状态机与变量系统的“血液”与底层逻辑图表优先原则文字描述与状态图冲突时以状态图为准。链路就绪需所有通道、本地、远端及邻居全 OK 才算就绪。断线应急可选 FAIL(报错)、SQUELCH(静噪)、LOCAL_PATTERN(发测试信号)。4. ILT 训练系统底层“积木”与自动闭环核心变量rx_ok为终极目标信号与均衡达最佳。核心函数UPDATE_C(调参)、SLIP(滑动找帧对齐)。定时器最大等待、状态传播与静默确认(100~200ms)、故障恢复(20~30ms)。计数器记录连续找对/找错帧标记次数决定能否锁定。5. Retimer与相干专属规则与特殊处理Retimer“换心”先换心再举手必须在local_rts false时完成时钟切换。相干通关条件自身完成 上游邻居OK (Retimer)时钟稳定。静默处理带静默(掐断输出对面静默100ms本地强制变false) / 不带静默(保持发空闲信号)。6. 管理与合规调试接口与一致性声明相干发送模式增加 QUIET(静默)、NOT-RTS、RTS、FILL(填充) 状态。MDIO接口底层状态变量必须映射到 MDIO 寄存器供读写调试。PICS表厂商的“考试承诺书”逐项声明功能实现情况以确保互通。
返回列表