1 概述

浅谈Clause 73自协商中描述了三种自协商。

  1. Clause 28规范了使用双绞线作为传输介质的10/100/1000BASE-T(电)以太网的自协商功能。
  2. Clause 37规范了1000BASE-X (光)以太网的自协商。
  3. Clause 73规范了Backplane Ethernet以及40GBASE-CR4,100BASE-CR10以太网的自协商。
    1000BASE-X 速率已经固定为1000M,不用协商。其中双工模式可协商。
    曾遇到问题:在代码中判定端口up只考虑了link信号,没考虑AN信号,导致插入光转电模块点灯异常。

强制模式和自协商模式

强制
自协商
自协商
概念:连接速率和双工模式
光口:在PCS层,先链路同步.
光口只能1000M速率,双工模式可协商
发送I码,Idle码流.
强制端可识别C码,自协商端不可识别I码.
互发I码则都能UP
C码,configuration码流
互发C码,连续收到3个相同C码&码流匹配&双工模式匹配,
则返回ACK应答C码,对端收到ack后up.
电口:发送快速连接脉冲

本端配置为强制:本端发送I码,本端可识别C 码
本端配置为自协商:本端发送C码,本端可识别C 码,可识别连续3个C码后发送ACK给对端

下面介绍Clause 37 1000BASE-X相关内容:

2 编解码

什么是code-group?

单个的8B/10B编码之后的10bit数据。

有序集(ordered_set),C码是什么样?

ordered_set是:若干code-group数据组成的有序集。
C码就是0xBC 0xB5或者0xBC + 0x42
1/2/4个连续code-groups,没有3个的。
在这里插入图片描述

什么是comma+?

comma+:0011111
comma-:1100000
在/I/和/C/的传输期间,协议规定,来保证comma+的发送频率>=comma-的发送频率。
对于28.5来说,就是要初始极性是负的,然后会发送含comma+的28.5。

这样做是为了确保与通用组件的兼容性。
只有3个code-group包含comma,分别是/K28.1/(0x3C)、/K28.5/(0xBC)和 /K28.7/(0xFC)。
在没有传错的情况下,comma不可以出现在其他的code-group中。
comma不可以由两个相邻的code-group的首尾一部分组成,也就是只能在一个code-group内,不能跨边界组合成comma。
有一些例外:
/K28.7/用于诊断的目的。+ 110000 0111
/K28.x/, /D3.x/, /D11.x/,/D12.x/, /D19.x/, /D20.x/, or /D28.x/

/K28.7/ [7:0]+ /D3.1/ [7:0]=110000 0111 + 110001 + 1001 +
可以看出comma+出现在[4:0]+[7:6],出现了跨越单个code-group边界,并且组合成了comma的情况。

为什么有两种/C1/和/C2/?

保证在配置期间发送的所有k28.5都含有comma+。

/C1/  BC  B5 
    +110000 - 0101  - 101010 - 1010 -
    -001111 + 1010  + 101010 + 1010 +
 
 /C2/  BC  42 
    +110000 - 0101  - 101101 + 0101 +
    -001111 + 1010  + 010010 - 0101 -

从上面的10B编码极性推导结果可以得出结论:
a)发完/C1/:0xBC + 0xB5之后极性会翻转。
b)发完/C2/:0xBC + 0x42之后极性不会变。

对于不变的Config_Reg值,发完/C1/ + /C2/后的极性与开始时的极性相反。
为什么不受Config_Reg内容的影响?
因为Config_Reg的值发2次之后要么2次都反,要么两次都不变,最终都是不变,故线路的极性取决于/C1/ + /C2/。

这样保证在配置期间发送的所有k28.5都含有comma+,也就是发完之后的极性是负的。

/C1/和/C2/会一直交替发送?还是只要极性调整为负的就不发/C1/?

暂不知晓

可能是依据Config_Reg的值来计算的极性。

为什么有/I1/和/I2/两种?和应用场景

/I1/:发完极性翻转
/I2/:发完极性不变
协议规定:
一个包、/C1/或者/C2/之后的首个/I/码,需要让线路极性回到负极性,故需要两种/I/码。
在数据流中添加或者减少一个/I2/并不会影响线路极性,这样就方便实现CTC功能。

/S/包头0xFB

0xFB+/I/单个包传输
0xFB+0xF7连续发包

/T/包尾0xFD

有两种结尾的可能
a) /T/R/R/ = 0xFB+0xF7+0xF7
b) /T/R/K28.5/.= 0xFB+0xF7+k28.5

何时选用 /T/R/R/结尾?

协议规定:k28.5要放在偶数位置,通过是否新增一个/R/来调节。

/R/载波扩展0xF7

a)用于扩展载波事件,发完/T/R/后,才开始发送/R/,所以会延时2个字节时间。
b)用于报文与报文的分隔
c)END2:用于/T/的第1个/R/
d)END3:用于/T/的第2个/R/

/V/错误传播0xFE

/V/用来告诉对端,产生了传输错误。

3 自协商

自协商有基页(base page)和下一页(Next page),都是通过/C/传送的。本文不关注下一页的内容,只关注基页的内容。

Base Page是什么格式?

rsvd用0填充;
16‘b0000_0xxx_x000_xxxx完整
忽略RF和PS和NP
16‘b0000_0xx0_0000_00x0
就4种情况:
16’h04_00:全双工&no-ack
16’h02_00:半双工&no-ack
16’h04_02:全双工&ack
16’h02_02:半双工&ack

在这里插入图片描述

PAUSE(PS1\PS2)暂停是怎么用的?

{PS1,PS2}含义
2’b00无暂停
2’b01向链路伙伴不对称暂停
2’b10对称暂停
2’b11向本地设备既不对称暂停又对称暂停

Annex 31B.细说对称暂停
Annex 31B.细说非对称暂停

远端错误RF1/RF2的含义

在这里插入图片描述

ACK的含义是什么?

1:本端已经成功接收连续3帧且匹配的rx_Config_RegD15:D0值(对端发来的base page或者next page)。

基页只有双工模式的协商,速率的协商呢?

1000BASE-X只协商双工模式,不用协商速率。

成功3次收到config_reg[15:0],后置高ack
NP=1,请求next page 信息被发送

Serial-GMII Specification

sgmii如何协商速率?

sgmii发送的基页和1000BASE-X不同,如下:
在这里插入图片描述

自协商过程

在这里插入图片描述

cause 28规范了使用双绞线作为传输介质的以太网的自协商功能 (中文翻译)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐