协议没定稿,瞅个大概
APSU 适用速率 200 Gb/s or higher per lane.设备之间必须通过底层互相"打招呼"确认在线,然后一层一层往上汇报,直到两头的大脑都能正常沟通,才算真正自动连上(APSU)。
APSU 不是个"按键",而是个"结果"
你别把 APSU 当成一个具体的功能开关。它其实是设备之间互相确认"我通了、你也通了"之后,自然产生的一种**"双向奔赴"的状态**。
怎么才能触发这个状态?(看底层)
要想自动连上,得满足三个条件:
- 发对暗号:大家收发数据的格式得对。
- 互相确认(RTS/ILT):就像打电话,我喊你一声(发 RTS),你回我一句(回 RTS),咱俩都知道对方在线了(变量变成 true)。
- 端到端打通:不仅中间的路通了,最顶上的大脑(RS子层)也得能互相聊天。
这是一个"连坐"机制(自下而上)
这套系统是一环扣一环的,就像搭积木,下面不稳上面就立不住:
- 最底层的两根线(ISL)得先连上;
- 线连上了,里面的芯片(PHY)才能算连上;
- 芯片连上了,扩展器(Extender)才算连上;
- 扩展器连上了,整个物理层才算连上;
- 最后,只有当两头的物理层都连上了,这条完整的通信路(Path)才算彻底打通。
如果自动连不上咋办?
如果这套自动确认的机制走不通,标准也没把路堵死。你可以用"管理员手段(management)"去强制把它们连上。
术语
RTS(Ready-To-Send,准备发送):相当于"我准备好了"的信号,告诉对面自己可以开始通信了。
ILT(Inter-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 correlation
CMIS Module Data Path in system


ILT和RTS
ILT 测试可以精确到单通道。而 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_PATTERN**DATA:**transmit data from the PMA or Inner FEC
There 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 把底层情况汇总给 RTS,RTS 把高层决定传达给 ILT
1. 一线员工(ILT)的工作职责
- 独立干活:接口里有几条物理通道,就有几个独立的一线员工,大家各自干各自的,互不干扰。
- 发假数据:在没正式通车(非 DATA 模式)前,他们负责自己生成"假数据(训练帧)"发给对面,用来测试线路。
- 自我调节:收到对面的信号后,他们要自己进行"自适应"调节(比如微调均衡器旋钮),把信号质量调到最佳状态。
2. 向上汇报(给 RTS 主管)
- RTS 主管要盯着底下所有通道(一线员工 ILT)的干活情况。
- 等所有通道都测试/训练完毕后,ILT 会把情况汇报给 RTS 主管。RTS 主管汇总后,会向对面的 RTS 主管(Peer RTS) 宣告:"报告!我们接口下所有的通道都准备好了!"(即:
local_rts = true)。3. 向下传达(给每通道 ILT)
- RTS 主管还要把高层下达的指令或状态(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个3+16个0),里面装着用特殊编码(DME)写的"状态纸条",以及用来测试信号质量的"假数据"(PRBS)。双方必须按规矩发这个包裹,并且最终都要升级到 PAM4 模式,才能算训练成功。
交互式调参协议与握手时序
1. 三种"假数据"生成器(PRBS)
为了让测试更真实,系统准备了三种伪随机码(PRBS)生成器来产生测试数据:
- 同步 PRBS13:每次发新训练帧时,都会重置(Seed)。
- 自由运行 PRBS13 / PRBS31:这两种是"永动机",一旦开启就一直在后台跑,不会随着训练帧的发送而重置。为了防止相邻通道互相干扰(串扰),标准规定相邻通道必须用不同的种子或错开时间,保证它们发出的数据"不相关"。
- 强制打断:虽然自由运行生成器一直在跑,但在发训练帧的"标记、控制、状态"这三个部分时,生成器会被强制暂停(覆盖),把位置让给这些重要的控制信息。
2. 数据是怎么变成 PAM4 信号的?(调制与编码)
生成器吐出的是普通的 0 和 1,要变成 PAM4 信号,得经过加工:
- 先把比特流拆成一对一对的 {A, B}。
- 如果选 PAM2:只看 A 比特,0 变成电平 0,1 变成电平 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.1)
- adjacent_signal_ok:旁边邻居的状态(进行中/就绪/正常/失败)。
- adjacent_intf_rx_ready:邻居准备好没?(如果根本没有邻居,就默认算作准备好)。
- isl_ready:整条链路(ISL)准备好没?(必须所有通道、本地和远端都说 OK,这个变量才会变成 true)。
RTS 和 ILT 状态机运行所需的所有"血液"(变量)。它规定了设备如何判断自己和对面是否准备好、如何汇总各个通道的状态、如何处理时钟切换,以及在遇到断线等突发状况时该采取什么应急策略。
1. RTS 状态机的核心变量(178B.8.2.1)
- local_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.9)
Retimer 就像是一个信号中继站,它要把一边的信号接收、放大、再发给另一边。
- 热身阶段:在训练时,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.1)
- c_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.3)
- c_forward_clock_timer(10~90 ms):给时钟切换留出的缓冲时间。
- c_propagation_timer(100~200 ms):状态确认的传播时间。
- c_quiet_timer(100~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表:厂商的"考试承诺书",逐项声明功能实现情况以确保互通。 |