汽车以太网设计——自协商
随着智能网联汽车的飞速发展,车载网络对带宽、延迟和可靠性的要求呈指数级增长。汽车以太网作为新一代车载骨干网的核心,其底层连接的建立方式至关重要。今天,我们就来扒一扒汽车以太网物理层(PHY)建立连接的“前戏”——自协商机制(Auto-Negotiation, AN)。
在这篇文章中,我们将从最底层的编码规则开始,一步步解剖DME页面,探究主从仲裁逻辑,并揭秘防死锁的黑科技。
1. 沟通的语言 —— DME 编码规则
在两端设备开始“谈条件”之前,它们必须使用同一种语言。汽车以太网自协商阶段采用的是 DME(差分曼彻斯特编码)。
DME的编码规则非常精妙,它将时钟信号和数据信号融合在一起:
- 时钟位(clk):位于奇数位,电平肯定会发生翻转,这保证了接收端能够持续提取同步时钟。
- 数据位(data):位于偶数位。如果数据为1,电平发生翻转;如果数据为0,电平保持不变。
这种“自带时钟”的编码方式,确保了即使在链路极其不稳定的初始阶段,双方也能准确地识别出0和1。
2. 信件的信封 —— 92bits DME 页面的物理层解剖
当PHY芯片开始发送自协商信息时,它们发送的“信件”被称为 DME Page。一个完整的DME页面包含 92个bit 。
解剖这个92-bit的帧结构,我们可以看到它分为四个部分:
- 起始标志 (Start Delimiter):占据26个bit,用于唤醒对端并标识页面的开始。
- 数据段 (Data Payload):占据48个bit (D0-D47),这是承载自协商核心逻辑的有效数据区域。
- 校验码 (CRC):16个bit,用于校验D0-D47的数据完整性,防止数据在传输中受损。
- 结束标志 (End Delimiter):2个bit,表示当前页面传输结束。
3. 信件的内容 —— 48-bit 数据段结构与标识状态
这48个有效数据位 (D0-D47) 到底装了什么药?我们将其进一步拆解。
整个数据段被切分成了多个功能字段:
- S[4:0] 选择器字段 ():标识当前协商消息的类型体系。例如,当 S[4:0] 为
00001时,代表这是 IEEE Std 802.3 体系的协商,其他组合为保留,禁止发送 。 - E[4:0] 回送随机数与 T[4:0] 发送随机数 :这是用于防死锁的握手机制,稍后我们将详细展开。
- A[26:0] 技术能力字段:用于声明本端支持的速率和双工模式等。
在D10到D15这几个关键状态位上,包含了流控与状态指示信息:
- 暂停能力 C[1:0]:声明独立于PHY的MAC层流控能力。D10(C0) 表示支持对称暂停;D11(C1) 表示支持非对称暂停 (ASM DIR)。
- 状态指示:
- RF (D13):远端检测到故障。
- Ack (D14):确认收到了对端发送且CRC校验正确的DME Page。
- NP (D15):下页指示。1表示还有更多的Next Page需要发送;0表示发送完毕。
4. 谁是老大? —— Master/Slave 角色仲裁决策
在以太网通信中,必须有一端提供主时钟(Master),另一端恢复时钟(Slave)。自协商的一个核心任务就是决定谁做 Master,谁做 Slave。
仲裁的依据是数据段中的 T[4:0] 字段。
- T[4] 是偏好位:1代表倾向或强制成为Master,0代表倾向或强制成为Slave。
如果在协商时,情况A(两端偏好不同),那么事情很简单,直接按照偏好分配。但如果是情况B(两端偏好相同,且未被全部强制),这时候就需要拼“随机数”了:系统会比较完整的 T[4:0] 随机数值,数值大的一方将胜出成为 Master。
如果遇到情况C(两端都强制要求做Master或都强制要求做Slave),这就属于“一山不容二虎”或“群龙无首”,仲裁将失败,状态机会报错(Configuration Fault)。
上方 IEEE Table 98-4 详细列出了各种组合的仲裁结果
5. 打破僵局 —— 防死锁握手机制 (Nonce 交换)
刚刚提到,如果 T[4:0] 相同,数值大的一方成为 Master。但如果两边随机生成的 T[4:0] 一模一样怎么办?这就会引入死锁握手机制。
为了防止无限循环的死锁,协议规定:
- 发送随机数 T[4:0]:每次进入能力检测状态时,生成一个均匀分布的伪随机数(T[3:0] 为0到15)。
- 回送随机数 E[4:0]:当设备收到带有正确CRC的DME页面后,必须提取对端的 T[4:0],并填入自己的 E[4:0] 字段回送。如果未收到有效页面,则填全0 。
- 冲突避免逻辑 (Nonce Match Logic):如果PHY A发现收到的对端T[4:0]与自己生成的T[4:0]完全相同,它必须强行反转自己的最低位 T[0],并重新生成 T[3:1] ()。这样一来,下一次握手时双方的随机数就必然不同,巧妙地化解了死锁危机。
6. 达成共识 —— 技术能力集与 HCD 原则
解决完角色问题,接下来就是确定通信速率。此时轮到 A[26:0] 技术能力字段 登场了。
正如上方的“能力阶梯图”所示,不同的位代表了不同的车载以太网速率标准:
- A0 = 100BASE-T1 ()
- A2 = 1000BASE-T1 ()
- A3 = 2.5GBASE-T1 ()
- A4 = 5GBASE-T1 ()
- A5 = 10GBASE-T1 ()
- A1/A22/A9 等分别对应 10BASE-T1S/10BASE-T1L 等特定速率和双工模式 ()。
这里遵循一个至关重要的原则:HCD (Highest Common Denominator) 也就是“最高共同分母”原则 ()。简而言之,就是“双方支持的最高共同速率优先匹配” 。如果A支持100M和1000M,B支持1000M和2.5G,那么他们最终建立连接的速率将是共同支持的最高值——1000M。
(注:对于10BASE-T1L还有专属扩展位,如A23请求提高发送电平,A24声明收发高电平能力,A25代表EEE节能能力 ()。其余位多为预留 。)
7. 意犹未尽? —— 两种 Next Page 格式
如果基础的Base Page不足以表达所有的技术能力和配置信息(比如刚才提到的NP=1),PHY芯片就会继续发送下一页(Next Page)。
Next Page 有两种截然不同的格式,通过 MP (页类型) 位来区分:
- 消息页 (Message Page):包含格式化的消息代码 M[10:0],以及未格式化内容 U[31:0] 。这类页面通常用来传递标准定义的特定信息。
- 无格式页 (Unformatted Page):主要包含更大容量的无格式化内容,涵盖了 U[10:0] 以及 U[42:11] 区域。这类页面为厂商自定义配置或更高层协议信息的透传留下了充足的空间。
两类页面中都保留了 Ack (确认收)、NP (下页指示)、Ack2 (能力确认) 以及 T (反转位) 等控制字段,以确保多页消息能够按顺序被可靠地接收和解析。
8. 结语
从DME的物理层电平翻转,到48-bit数据段里的勾心斗角,再到防死锁机制的未雨绸缪,汽车以太网的自协商机制是一个严密、精巧且鲁棒的状态机。正是这些肉眼看不见的毫秒级握手,支撑起了今天智能汽车庞大数据流的高速、稳定运转。
在看完了今天硬核的底层协议后,大家可能会觉得这些 0 和 1 离我们有些遥远。别急,在后续的文章中,我们将把这些底层的 DME 报文,与大家日常开发和测试时实际接触到的配置直接挂钩! 比如,我们平时在台架或测试工具里勾选的“主/从模式(Master/Slave)”()究竟对应了哪个字段?我们设定的“百兆/千兆通信速率”()又是如何通过 HCD 原则最终生效的 ()?我们将结合实际的配置界面,带你打通从应用层到物理层的任督二脉,敬请期待!
希望这篇文章能帮你更好地理解这个看似枯燥却至关重要的汽车网络底层技术!如果有更多关于汽车以太网的疑问,欢迎在评论区交流。