BCM84891L功能描述
10GBASE-T PHY、5GBASE-T PHY和2.5GBASE-T PHY的典型Data Path:
25GBASE-T PHY和40GBASE-T PHY的Data Path和上图类似,只是中间部分接口分别为“25GMII”和“XLGMII”。下面先对这三种标准PHY-MAC接口做一个简单介绍。
XGMII(Clause 46):32个数据信号(TXD<31:0> and RXD<31:0>), 4个控制信号(TXC<3:0> and RXC<3:0>), and 1个时钟信号(TX_CLK and RX_CLK)。当工作于10Gbps,时钟频率为156.25MHz(100ppm),上升沿和下降沿同时采样,156.25M Clk/(s×边沿)×2边沿×32bit/Clk=10Gbps; 当工作于5Gbps,时钟频率为78.125MHz(100ppm),上升沿和下降沿同时采样,78.125M Clk/(s×边沿)×2边沿×32bit/Clk=5Gbps;当工作于2.5Gbps,时钟频率为39.0625MHz(100ppm),上升沿和下降沿同时采样,39.0625M Clk/(s×边沿)×2边沿×32bit/Clk=2.5Gbps;
25GMII(Clause 106):32个数据信号(TXD<31:0> and RXD<31:0>), 4个控制信号(TXC<3:0> and RXC<3:0>), and 1个时钟信号(TX_CLK and RX_CLK)。其中时钟频率为390.625MHz(100ppm),上升沿和下降沿同时采样。390.625M Clk/(s×边沿)×2边沿×32bit/Clk=25Gbps;
XLGMII(Clause 81):64个数据信号(TXD<63:0> and RXD<63:0>), 8个控制信号(TXC<7:0> and RXC<7:0>), and 1个时钟信号(TX_CLK and RX_CLK)。其中时钟频率为625MHz(100ppm),上升沿采样。625M Clk/(s×边沿)×1边沿×64bit/Clk=40Gbps;
XGMII、25GMII和XLGMII是标准的PHY和MAC的接口。但在具体实践中,该类接口不适合作为PHY和MAC的PCB连接接口(信号数量极多,PCB布板工程师难度极大)。MultiGBASE-T PHY BCM84891L实践中实现了PHY标准功能模块(上图XGMII的右侧部分,称为MGBASE-T模块)之外,还额外实现了XFI/USXGMII接口(上图XGMII的左侧部分,称为XFI模块)。XFI/USXGMII接口就是一对Serdes差分信号,通过XFI/USXGMII接口实现BCM84891L PHY与MAC(CPU或者Switch chip)的PCB互联非常容易。下面分别就“MGBASE-T模块”和“XFI模块”分别做一个简介。
MGBASE-T模块:
发送路径:
将XGMII接口的64比特的并行数据格式化成适合在4对双绞线传输的数据。
Scramble and Frame:PHY每收到XGMII接口64比特信息数据,就会额外加1比特头(用于标记控制块和数据块)。然后进入加扰器(1比特头不加扰),对64比特信息数据进行加扰和随机化可以最大限度地减少基线漂移并确保远端设备正常从数据中提取时钟。进入PHY的所有数据(不包括1比特头)都被58位自同步加扰器加扰。这种加扰器可以保证以10gbps数据持续发送55年重复不会超过一次。完成加扰后65比特数据成为1个65B block。接着65B block进入成帧器,在成帧器中连续50个65B block会加入8比特CRC和1比特的辅助数据。此时PHY数据的基本单位长度为50×65+8+1=3259bit。
LDPC Encode:LDPC是一种可以在有噪信道上传输消息的纠错码。上述3259比特分为两部分“1723”和“512×3”。“512×3”部分不进入LDPC编码器,“1723”进入LDPC(1723,2048)编码器(产生了325比特编码开销)。此时PHY数据的基本单位长度为3259+325=3584bit。
DSQ128 Map: 3584bit数据每7比特分为一组(7比特的信息称为一个DSQ128 Symbol,一个DSQ128 Symbol由I分量和Q分量构成),总共512组DSQ128 Symbols。它们以DSQ128 Symbol为单位并行地方式在4对双绞线上传输。每个DSQ128Symbol符号映射到二维符号星座中的单个点。每两个800MBaud(分别为I分量和Q分量)时间间隔内传输4个DSQ128Symbol符号(一对双绞线一个DSQ128Symbol符号)。512组DSQ128 Symbols需要256个周期传输完毕。这一步每7比特数据又引入了1比特冗余。
Tomlinson-Harashima Precoder:THP在结构上类似于判决反馈均衡器(DFE),但它在发射机而不是接收机中使用,以避免DFE误差传播问题。THP的系数值由PMA Link training中确定,并且在数据传输期间保持固定。
DAC:使用集成数模转换器将预编码器的四个输出中的每一个数字信号转换为模拟信号。DAC用差分信号驱动100Ω双绞线(通过变压器)。对于100米(或更长)的双绞线,平均发送功率为4.2dBm,并且随着电缆长度的减少,功率值动态降低(利用PMA Link training的PBO实现)。
XGMII侧每50个时钟周期(156.25MHz)为一个基本时隙单位(T=50×1/156.25MHz= 0.32us)(基本时隙单位的数据量为:50×64=3200比特)。MDI侧每256个时钟周期(800MBuad)为一个基本时隙单位T=256×1/800MBaud=0.32us)(基本时隙单位的数据量为:512×4bit/Symbol×2 Symbol =4096比特,其中4096-3200=896比特即为编码开销;等价于双绞线中每传输4比特中有0.875比特编码开销)。
接收路径:
将从4对双绞线接收的数据转换成64比特的XGMII数据。
Four-Channel ADC:在四个导线对中的每一个上接收的信号经过一个ADC。
Clock Recovery:从设备利用CDR模块实现对主设备的时钟和相位锁定。
Matrix Crosstalk Canceler and Equalizer:用于消除近端串扰NEXT和远端串扰FEXT。
Echo Canceler:由于10G/5G/2.5GBASE-T中每条电缆对上的数据同时双向传输,回声损伤来自本地发射机的信号存在于每个接收机处。数字回波消除器从接收信号中减去回波的估计值。数字回声消除器系数是自适应的,以跟踪由不同的信道、发射机、电缆几何形状和环境条件。
LDPC Decoder:矩阵均衡、矩阵串扰消除和时钟恢复过程的目标是尽可能接近地重建链路伙伴发送的原始DSQ128符号。LDPC解码算法使用软判决解码以极大地帮助对接收到的符号块的正确检测。LDPC解码器使用软判决来恢复发送的LDPC块数据。DSQ128符号被解映射为7比特数据。在每个PHY帧中的恢复的数据位上计算CRC-8,并将其与发送的值进行比较以检测块错误。
Deframe and Descramble: 在LDPC解码之后,不再需要PHY级成帧,因为PHY级帧对于更高层是不可见的。每个恢复的PHY级帧包含足够的有效载荷数据以创建50个连续的65位XGMII数据/控制块。恢复的有效载荷数据比特用在发射机处使用的相同的58比特加扰器多项式进行解扰。该设备使用由物理编码子层(PCS)接收块同步的边流加扰器。
XFI模块:
XFI(10GBASE-KR)/5000BASE-X/2500BASE-X/5000BASE-R/2500BASE-R是一种高速串行接口,具有完全集成的10Gbs/5Gbs/2.5Gbs/1Gbs串行以太网PCS和物理介质连接(PMA)功能。它包括64位/66比特编码和8B/10B编码、块加扰、时钟乘法单元(CMU)以及时钟和数据恢复(CDR)功能。
发送路径:
XFI(10GBASE-KR)接收来自XGMII接口的数据。数据经过64位/66位编码,然后在传输之前进行加扰。
64-Bit/66-Bit Encoder:XFI(10GBASE-KR)侧的PCS将64位数据编码为66位块,通过插入必要的控制码以适合在链路上进行传输。
Scrambler:从64位/66位编码器接收的66比特数据块通过加扰器多项式方式加扰,然后传递到gearbox上。
XFI (10GBASE-KR) Ingress TX Gearbox:TX Gearbox是一个缓冲器,为在PMA子层中对66位比特数据进行高效串行化做准备。
XFI (10GBASE-KR) Ingress TX Serializer:数据从Gearbox中读出,然后转换为10.3125 Gb/s的串行流,并在芯片外驱动输出。
XFI (10GBASE-KR) CMOS Differential Serial Output Interface:CMOS差分串行输出(XFI_OP/N)必须是交流耦合的。CMOS差分输出以+1.0V供电。这些高速CMOS差分输出由100Ω差分传输线的差分对组成。输出驱动器后端接至50Ω片上,以抑制任何反射。
接收路径:
XFI(10GBASE-KR)接收来自MAC(CPU或者Switch chip)接口的数据,并将以10.3125-Gb/s的速率向双绞线方向发送。
Limiting Amplifier:差分限幅放大器提供XFI(10GBASE-KR)输入的低电平信号放大。接收差分电压峰间摆幅可以在85mVppd和1200mVppD之间即可。串行输入在差分线之间有一个内部100Ω终端,并有内部偏置。
XFI/10GBASE-KR Serial Input Interface:XFI(10GBASE-KR)串行输入(XFI_IP/N)具有内置交流耦合。
XFI/10GBASE-KR Equalizer:BCM84891L包括一个可编程均衡器,它提供以串行输入信号为中心的频率响应峰值,以减少由长PCB布线引起的ISI的负面影响。
XFI/10GBASE-KR Deserializer:XFI(10GBASE-KR)串行数据流由串并转换器转换成并行的64位数据。CDR输出对串并转换器进行计时。在正常操作下,CDR从数据中恢复时钟。如果不存在数据,则从内部参考时钟恢复时钟。该级的输出被发送到RX Gearbox。
XFI/10GBASE-KR Egress RX Gearbox:RX Gearbox是一个缓冲器,用于接收来自PMA子层的串行数据并将其转换为66比特数据块。
Descrambler:对66比特数据块进行解扰。
64-Bit/66-Bit Synchronizer/Decoder:帧同步器搜索有效的同步头比特以识别66比特数据帧的边界。当获得有效的同步标头时就实现了锁定。
XFI兼容接口:
BCM84891L的XFI接口支持MDI侧5G和2.5G的传输速率(标准的XFI接口只支持MDI侧10G速率,因为标准的XFI接口用于MAC接10GBASE-R光模块的场景)。博通XFI兼容接口通过利用“数据速率整形Buffer Gearbox”插入或删除IDLEs的方式来实现对MDI侧的5G和2.5G速率的支持。因为Buffer容量小的缘故,MDI侧工作于5G模式时最大包长度需小于15KB,MDI侧工作于2.5G模式时最大包长度需小于10KB。
USXGMII:
USXGMII提供MAC和PHY之间100M/1G/2.5G/5G/10G多种速率的支持。相对于XFI兼容模式(博通私有标准,并且不支持100M和1G),这种基于通用标准实现的接口应用场景更加广泛。笔者建议软件设计方式如下:程序通过I2C DDM检测SFP模块的类型,当SFP模块为MultiGBASE-T电模块时(电模块PHY的接口固定设置为USXGMII),将MAC的接口类设置为USXGMII;当SFP模块为10GBASE-R光模块时,将MAC的接口类设置为XFI。
MultiGBASE-T未完待续……