本文主要介绍以太网drive side接口(mac和phy之间的接口),也被称为mii(media independent interface),支持从10m到100g的不同应用场合,主要包括mii、rmii、smii(cisco systems specification)、ssmii、s3mii、gmii、rgmii、sgmii、qsgmii(cisco systems specification)、tbi、rtbi、xgmii、xaui、rxaui、xlgmii、xlaui、cgmii、caui、higig(broadcom specification)、interlaken等接口,下面就针对10mbps到100gbps的不同接口进行介绍,最后介绍一下phy芯片的控制接口mdio bus。
1、mii接口
100mbps速率下,时钟频率为25mhz,10mbps速率下,时钟频率为2.5mhz。txc和rxc均由phy提供。phy在txc的上升沿采样txd上的数据,mac在rxc的上升沿采样rxd上的数据。
2、rmii接口
ref_clk是由外部时钟源提供的50mhz参考时钟,与mii接口不同,mii接口中的接收时钟和发送时钟是分开的,而且都是由phy芯片提供给mac芯片的。这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取的,所以在phy层芯片内的数据接收部分需要设计一个fifo,用来协调两个不同的时钟,在发送接收的数据时提供缓冲。phy层芯片的发送部分则不需要fifo,它直接将接收到的数据发送到mac就可以了。
3、smii(cisco systems specification)接口
ref_clk:所有端口共用的一个参考时钟,频率为125mhz,为什么100mbps速率要用125mhz时钟呢?因为在每8位数据中会插入2位控制信号。
txd/rxd以10比特为一组,以sync为高电平来指示一组数据的开始,在sync变高后的10个时钟周期内,txd上依次输出的数据是:txd[7:0]、tx_en、tx_er,控制信号的含义与mii接口中的相同;rxd上依次输出的数据是:rxd[7:0]、rx_dv、crs,rxd[7:0]的含义与rx_dv有关,当rx_dv为有效时(高电平),rxd[7:0]上传输的是物理层接收的数据。当rx_dv为无效时(低电平),rxd[7:0]上传输的是物理层的状态信息数据。
当速率为10mbps时,每一组数据要重复10次,mac/phy芯片每10个周期采样一次。mac/phy芯片在接收到数据后会进行串/并转换。
4、ssmii接口
5、s3mii接口
6、gmii接口
gmii的数据宽度为8位,gmii接口中的发送参考时钟gtx_clk和接收参考时钟rx_clk的频率均为125mhz(1000mbps/8=125mhz)。gmii接口中的gtx_clk是由mac芯片提供给phy芯片。
在实际应用中,绝大多数gmii接口都是兼容mii接口的,一般的gmii接口都有两个发送参考时钟:tx_clk和gtx_clk(两者的方向是不一样的),在用作mii模式时,使用tx_clk和8根数据线中的4根。
7、rgmii接口
rgmii的时钟频率为125mhz,tx/rx数据宽度从8为变为4位,为了保持1000mbps的传输速率不变,rgmii接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送gmii接口中的txd[3:0]/rxd[3:0],在参考时钟的下降沿发送gmii接口中的txd[7:4]/rxd[7:4]。rgmii同时也兼容100mbps和10mbps两种速率,此时参考时钟速率分别为25mhz和2.5mhz。
tx_en信号线上传送tx_en和tx_er两种信息,在tx_clk的上升沿发送tx_en,下降沿发送tx_er;同样的,rx_dv信号线上也传送rx_dv和rx_er两种信息,在rx_clk的上升沿发送rx_dv,下降沿发送rx_er。
8、sgmii接口
sgmii收发各一对差分信号线,时钟频率625mhz,在时钟信号的上升沿和下降沿均采样,参考时钟rx_clk由phy提供,是可选的,主要用于mac侧没有时钟的情况,一般情况下,rx_clk不使用。收发都可以从数据中恢复出时钟。
在txd发送的串行数据中,每8比特数据会插入tx_en/tx_er两比特控制信息,同样,在rxd接收数据中,每8比特数据会插入rx_dv/rx_er两比特控制信息,所以总的数据速率为1.25gbps=625mbps*2。
其实,大多数mac芯片的sgmii接口都可以配置成serdes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要phy层芯片,此时时钟速率仍旧是625mhz,不过此时跟sgmii接口不同,sgmii接口速率被提高到1.25gbps是因为插入了控制信息,而serdes端口速率被提高是因为进行了8b/10b变换,本来8b/10b变换是phy芯片的工作,在serdes接口中,因为外面不接phy芯片,此时8b/10b变换在mac芯片中完成了。8b/10b变换的主要作用是扰码,让信号中不出现过长的连“0”和连“1”情况,影响时钟信息的提取。
9、tbi接口
tbi即ten bitinterface的意思,接口数据位宽由gmii接口的8位增加到10位,其实,tbi接口跟gmii接口的差别不是很大,多出来的2位数据主要是因为在tbi接口下,mac芯片在将数据发给phy芯片之前进行了8b/10b变换(8b/10b变换本是在phy芯片中完成的,tbi在mac中完成了,所以每传输一个字节需要传输10bit数据)。
rbc0和rbc1是从接收数据中恢复出来的半频时钟,频率为62.5mhz,rbc0和rbc1不是差分信号,而是两个独立的信号,两者之间有180度的相位差,在这两个时钟的上升沿都采样数据。rbc0和rbc1也叫伪差分信号。除掉上面说到的之外,剩下的信号都跟gmii接口中的相同。
大多数芯片的tbi接口和gmii接口兼容。在用作tbi接口时,crs和col一般不用。
10、rtbi接口
rtbi接口数据位宽为5bit,时钟频率为125mhz,在时钟的上升沿和下降沿都采样数据,同rgmii接口一样,tx_en线上会传送tx_en和tx_er两种信息,在时钟的上升沿传tx_en,下降沿传tx_er;rx_dv线上传送rx_dv和rx_er两种信息,在rx_clk上升沿传rx_dv,下降沿传rx_er。
11、xgmii接口
xgmii接口的单端信号采用hstl/sstl_2逻辑,端口电压1.5v/2.5v,由于sstl_2的端口电压高,功耗大,现在已很少使用。
txc[3:0]:发送通道控制信号,txc=0时,表示txd上传输的是数据;txc=1时,表示txd上传输的是控制字符。txc[3:0]分别对应txd[31:24],txd[23:16],txd[15:8],txd[7:0]。
rxc[3:0]:接收通道控制信号,rxc=0时,表示rxd上传输的是数据;rxc=1时,表示rxd上传输的是控制字符。rxc[3:0]分别对应rxd[31:24],rxd[23:16],rxd[15:8],rxd[7:0]。
tx_clk:txd和txc的参考时钟,时钟频率156.25mhz,在时钟信号的上升沿和下降沿都采样数据。
rx_clk:rxd和rxc的参考时钟,时钟频率156.25mhz,在时钟信号的上升沿和下降沿都采样数据。156.25mhz*2*32=10gbps。
xgmii接口还有xlgmii(40gb)、cgmii(100gb)等变种。其基本已经被xaui/xlaui/caui接口取代了。
12、xaui接口
xaui接口有如下一系列的变种:rxaui、xlaui(40gb)、caui(100gb)等。
由于受电气特性的影响,xgmii接口的pcb走线最大传输距离仅有7cm,并且xgmii接口的连线数量太多,给实际应用带来不便。因此,在实际应用中,xgmii接口通常被xaui接口代替,xaui即10gigabit attachment unit interface,xaui在xgmii的基础上实现了xgmii接口的物理距离扩展,将pcb走线的传输距离增加到50cm,使背板走线成为可能。
源端xgmii把收发32位宽度数据流分为4个独立的lane通道,每个lane通道对应一个字节,经xgxs(xgmii extendersublayer)完成8b/10b编码后,将4个lane分别对应xaui的4个独立通道,xaui端口速率为:2.5gbps*1.25*4=12.5gbps。
在发送端的xgxs模块中,将txd[31:0]/rxd[31:0],txc[3:0]/rxc[3:0],tx_clk/rx_clk转换成串行数据从tx lane[3:0]/rx lane[3:0]中发出去,在接收端的xgxs模块中,串行数据被转换成并行,并且进行时钟恢复和补偿,完成时钟去抖,经过5b/4b解码后,重新聚合成xgmii。
xaui接口采用差分线,收发各四对,cml逻辑,ac耦合方式,耦合电容在10nf~100nf之间。
xaui接口可以直接接光模块,如xenpak/x2等。也可以转换成一路10g信号xfi,接xfp/sfp+等。
有些芯片不支持xaui接口,只支持xgmii接口,这时可以用专门的芯片进行xgmii→xaui接口转换,如bcm8011等。
xaui/xlaui/caui是四通道串行总线,采用的差分信号,cml逻辑传输,并且进行了扰码,大大增强了信号的抗扰性能,使得信号的有效传输距离增加到50cm。
xaui/xlaui/caui在物理结构上是一样的,收发通道独立,各四对差分信号线。
对于xaui总线,每对差分线上的数据速率为3.125gbps,总数据带宽为12.5gbps,有效带宽为12.5gbps*0.8=10gbps(因为xaui总线数据在传输前进行了8b/10b变换,编码效率为80%)。
对于xlaui总线,每对差分线上的数据速率为10.3125gbps,总数据带宽为41.25gbps,有效带宽为41.25gbps*(64/66)=40gbps(因为xlaui总线数据在传输前进行了64b/66b变换,编码效率为96.97%)。
对于caui总线,每对差分线上的数据速率为25.78125gbps,总数据带宽为103.125gbps,有效带宽为103.125gbps*(64/66)=100gbps(因为caui总线数据在传输前进行了64b/66b变换,编码效率为96.97%)。
13、interlaken
interlaken是cisco和cortina公司共同推出的一种高速通道化的c2c(芯片间)接口协议。主要用于10gbps端口的mac、oc-768sonet framer、下一代100gbps以太网集成电路、100gbps swich fabric与包处理器。主要有以下特征:
支持256个通道,可以扩展到64k;
与spi4.2(systempacket interface level 4 (spi-4) phase 2 revision 1: oc-192 system interfacefor physical and link layer devices.(oif-spi-4-2.1))类似,通过简单control word来表示packet;
通过meta frame完成各个lane的对齐;
协议本身和实际使用lane数目和serdes速率无关;
提供带外带内两种flow control方式,以及xon/xoff的整个接口的flow control;
采用64/67b数据编码;
接口本身性能随lane增加而同比增加。
tx_ddta[n:0]p/n:数据发送通道,cml差分电平,每对差分线速率为1~6.25gbps;
tx_fc_clk:数据发送通道带外流控参考时钟,lvcmos电平;
tx_fc_sync:数据发送通道带外流控同步信号,lvcmos电平;
tx_fc_data:数据发送通道带外流控数据信号,lvcmos电平;
rx_ddta[n:0]p/n:数据接收通道,cml差分电平,每对差分线速率为1~6.25gbps;
rx_fc_clk:数据接收通道带外流控参考时钟,lvcmos电平;
rx_fc_sync:数据接收通道带外流控同步信号,lvcmos电平;
rx_fc_data:数据接收通道带外流控数据信号,lvcmos电平;
14、mdio bus(smi(serial management interface))
mdio是一个以太网控制器的传输协议,广泛用于以太网控制器和phy之间的数据通讯。
mdio(management data input/output),管理数据输入输出总线。它是由ieee802.3定义的以太网行业标准,它承载着mac层和物理层通信的重任。mdio接口包括两根信号线:时钟线mdc,数据线mdio(双向),mac层芯片(或其他控制芯片)可以通过它们访问物理层芯片的寄存器,并通过这些寄存器来对物理芯片进行控制和管理。
mdc(management data clock):管理接口的时钟,是一个非周期信号,信号的最小周期为400ns(最快2.5mhz),最小正电平时间和负电平时间为160ns,最大正负电平时间无限制。
mdio(management data input/output):是双向的数据线,用来传送mac层的控制信息和物理层的状态信息。它与mdc时钟同步,在mdc上升沿有效。
14.1、mdio帧格式
pre:帧前缀域,为32个连续“1”比特,这帧前缀域不是必需的,某些物理层芯片的mdio操作就没有这个域。
st:帧开始标识码,为“01”。
op:帧操作码(读写操作),比特“10”表示此帧为一读操作帧,比特“01”表示此帧为一写操作帧。
phyad:phy芯片的地址,5个比特,每个芯片都把自己的地址与这5个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。一个系统最多联31个phy(地址0为保留)。
regad:用来选择物理层芯片的32个寄存器中的某个寄存器的地址。一个phy上最多32个寄存器地址(可以使用shadow value技术,访问更多的寄存器)。
ta:状态转换域,若为读操作,则第一比特时mdio为高阻态,第二比特时由物理层芯片使mdio置“0”。若为写操作,则mdio仍由mac层芯片控制,其连续输出“10”两个比特。
data:帧的寄存器的数据域,16比特,若为读操作,则为物理层送到mac层的数据,若为写操作,则为mac层送到物理层的数据。
idle:帧结束后的空闲状态,此时mdio无源驱动,处于高阻状态,但一般用上拉电阻使其处在高电平,即mdio引脚需要上拉电阻。
14.2、mdio操作时序
mdio工作流程如下:
preamle(pre):在没有传输数据的空闲状态时,数据线mdio处于高阻态(由于外部上拉,故一直为1)。
start of frame(st):mac驱动mdio线,出现一个2bit的开始标识码(01)。
operation code(op):mac驱动mdio线,出现一个2bit数据来标识是读操作(10)还是写操作(01)。
phy address(phyad):mac驱动mdio线,出现一个5bit数据标识phy的地址,对应该地址的phy芯片会响应。
reg address(regad):mac驱动mdio线,出现一个5bit的phy芯片寄存器地址(需要读/写的地址)。
turnaround(ta):写操作的话,mac驱动mdio线,出现10;读操作的话,mdio pin of mac must be put in high-impedance state,在第二个周期,phy驱动mdio线,出现0。
data,mdio串行读出/写入phy芯片寄存器的数据(16bit)。
最后mdio恢复成空闲状态(idle),同时mdio进入高阻状态。
本文主要介绍了以太网mac和phy之间的接口,支持10mbps到100gbps的不同速率等级,同时介绍了phy芯片的控制接口mdio总线。
PERM系列单/双通道消光比测试仪参数介绍
用LabVIEW实现控制三极管的老化测试系统设计
虹科干货 | 在Windows环境下安装虹科PCAN View及通讯测试指南
X-FAB宣布采用Cadence EMX Solver电磁仿真技术,加速创新通信和车用射频设计
iPhone11成为京东12月手机销量第一
针对10Mbps到100Gbps不同以太网Drive Side接口类型
AR和VR谁更有前途?微软和谷歌表态了
恒压电源常见基础知识问答
iPhone8什么时候上市?iPhone8最新消息:iPhone8搭载3D感应摄像头,能做到3D自拍、玩体感游戏?
极海APM32F003 MCU通过IEC 60730/60335功能安全认证
导轨式电表在智能电网中的应用
我国制造业大而不强 数字化与网络化建设迫在眉睫
采埃孚携手Aeva合作研发用于自动驾驶汽车的激光雷达传感器
2009-2012年中国电池隔膜行业市场调研及投资分析预测报
URP中的相机堆栈
小米5X、MIUI9、小米6亮银版已发布,小米Note3、小米6Plus、红米Pro2、红米Note5期待吗?
智慧医疗最基本的原则是什么
关于go语言实现的几种限流算法介绍
华捷艾米参加豪威科技大会 3D AI/MR解决方案共建产业生态
宝沃汽车的思路是新零售,为何不重品牌运营?