千兆PHY详解及调试举例
全文约18000字。
从硬件上来说,一般PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII接口将信号交给MAC芯片进行处理。一般MAC芯片为纯数字电路。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。
下图为RTL8211的原理框图,详细的数据手册链接如下:
http://download3.dvd-driver.cz/realtek/datasheets/pdf/rtl8211e(g)-vb(vl)-cg_datasheet_1.6.pdf
图8‑17 RTL8211原理框图
下图是Ti的DP83865原理框图,详细的数据手册链接如下:
http://www.ti.com/product/DP83865/technicaldocuments
图8‑18 DP83865原理框图
下图为88X3140/3120的原理框图,详细的数据手册链接如下:
https://www.marvell.com/products/transceivers/alaska-x-gbe.html
图8‑19 88X3140/3120原理框图
通过几个PHY片的原理框图可以总结出下面的简化PHY片的原理框图。
图8‑20 PHY简化的原理框图
从上图可知,PHY它包含了多个功能模块,功能模块的多少会因需要的不同而有所增减,比如:
只有10GBase-R、40GBase-R、100GBase-R的PCS需要FEC;
40GBase-R的PCS需要2个PMA、100GBase-R的PCS需要3个PMA;
只有≥1Gbps以上的背板应用场景才会用到AN。
接下来详细介绍上图中各个功能模块:
表8‑6 各个功能模块的作用
名称 | 作用 | |
---|---|---|
PLS | Physical Sublayer Signaling | 对MAC给的信息进行传递,只在1Mb/s、10Mb/s的应用场景才出现; |
PCS | Physical Coding Sublayer | 对MAC给的信息进行编码,应用于≥100 Mb/s的应用场景,比如完成8B/10B、64B/66B、256B/257B编码;实现 IEEE802.3 协议规定的 Ethernet PCS 层。 |
FEC | Forward Error Correction | 前向纠错,与10GBase-R、40GBase-R的PCS 搭配; |
RS-FEC | Reed-Solomon Forward Error Correction | Reed-Solomon前向纠错,比单纯的FEC纠错能力更强,与100GBase-R的PCS 搭配,采用256B/257B编码; |
PMA | Physical Medium Attachment | 物理介质连接子层。执行并串/串并转换;GEPHY 的控制和数字处理模块,其完成芯片的启动控制、信号间干扰消除、基带漂移消除、回声信号消除、线对间串扰消除等功能 |
PMD | Physical Medium Dependent | 物理介质相关子层。信号转换到特定介质上或反向转换 |
AN | Auto-Negotiation Function | 自动协商,使背板两侧的Device能够互换信息以发挥出彼此最大的优势;实现 IEEE802.3 协议规定的自协商等功能。 |
图中还有连接各个模块间的接口比较特殊,这里面在单独列出来,如下表所示:
表8‑7 各个模块间的接口
名称 | 备注 | |
---|---|---|
PLS与PMA间的接口 | AUI | Attachment Unit Interface |
PCS与FEC间的接口 | XSBI | 10-Gigabit Sixteen Bit Interface |
PMA与PMA间的接口-可以是chip to chip,也可以是chip to module | XLAUI | 40 Gigabit Attachment Unit Interface,4条lane,每条lane的数率是10.3125Gbps; |
CAUI | 100 Gigabit Attachment Unit Interface,10条lane,每条lane的数率是10.31250Gbps; | |
PMA与PMD间的接口 | nPPI1 | Parallel Physcial Interface |
1:nPPI特定出现在PMD所接的媒介是光纤的情况下,比如40GBase-SR4、100GBase-SR10、40GBase-LR4协议。也就是说这种情况下的PMD是光模块,nPPI就必然是一种chip to module间的接口,这也是IEEE802.3标准与OIF_CEI标准兼容的地方之一。nPPI按照通道数量的不同分成两种。
·XLPPI:40 Gigabit Parallel Physcial Interface,4条lane,每条lane的数率是10.3125Gbps;
·CPPI:100Gigabit Parallel Physcial Interface,10条lane,每条lane的数率是10.3125Gbps;
1.1.1选型
使用外部PHY时,首先第一步就是要对要使用的PHY进行选型,不同应用场合选型标准不一,主要包括以下几个方面:
1、速率:千兆、百兆、十兆,现在大部分PHY的速率都是三个速率兼容的;
2、IO口电平:这部分主要涉及到主控和PHY能否通信的问题,例如FPGAde bank电压设计的是1.8V,而常规的PHY是不兼容1.8V IO电平的(常规2.5V or 3.3V),这就需要选型时需要注意。
3、品牌:公司选用的时候会有自己合作的品牌,当然会有FAE的技术支持,这个不需要考虑太多。如果是个人使用调试,一定要选用一个常规的PHY,因为应用的比较多,这样应用时留给自己的“坑”比较少,同时调试的时候会有很多应用经验,最后就是一定要选用大厂的芯片,即使后面没有别人的应用经验分享,大厂都会有自己的网页论坛,你可以在上面留言,也会有一些技术支持的。
4、媒体独立接口:这个和主控有关,是选用MII、RGMII、SGMII接口,不同芯片接口不同。
5、Media types:这个和自己应用场合有关,是背板连接,还是通用网口连接,这个主要有:BASE-T、BASE-X等等
6、封装:这个是和PCB设计有关,如果自己应用PCB尺寸比较小,用大的封装PHY肯定不合适。
7、应用环境和价格:这部分主要看自己应用场合,例如高温环境,就需要选用温宽较宽的PHY。价格就无需多说,理论数上这是第一应该考虑的问题。
8、资料完整性:如果是自己设计,一定要考虑资料完整性,对于一些公司,他们的资料相对封闭,尤其是datasheet和refence,网上可能有资料,但是一定要确认是不是最新的,因为大公司会根据用户的反馈实时更新数据手册中的bug。还有参考设计这些,会让自己的研发周期大大减少。
以上各个方面问题,不分先后,不同应用场合考虑的重点不一样。
1.1.2PHY硬件设计
这部分不是要学会硬件设计,二是要学会看硬件的相关配置,尤其出现一些问题时,首先要确认硬件是否有问题,然后才看代码是否有问题。
PHY的硬件总结起来就是四方面:
1、电源;
2、时钟
3、复位
4、IO
电源
电源是整个PHY能否正常工作的基本条件,下面总结一下某一款PHY的电源需求,如下:
表8‑8 电源
Supply Voltages | Operating rage | ||
---|---|---|---|
Minimum( V) | Typical( V) | Maximum( V) | |
AVDD33_AFE | 3.135 | 3.3 | 3.465 |
AVDD33_COM | 3.135 | 3.3 | 3.465 |
AVDD33_LDO | 3.135 | 3.3 | 3.465 |
AVDD33_OSC | 3.135 | 3.3 | 3.465 |
AVDD33_REG | 3.135 | 3.3 | 3.465 |
DVDD | 1.045 | 1.1 | 1.155 |
VDD3P3 | 3.135 | 3.3 | 3.465 |
2.375 | 2.5 | 2.625 | |
1.71 | 1.8 | 1.89 |
注: AVDD33_*与 VDD3P3 无关, 不管 VDD3P3 接任何电压, AVDD33_*均接 3.3V。
AVDD33_*是模拟电,主要给PHY内部模拟部分供电,一般这个不会随着应用而改变,应用时,注意这部分和数字3V3的隔离,一般采用π型滤波,建议每一个名称都用一个π型滤波进行隔离,不建议合在一起供电。
而DVDD这个电,一般是核电,主要给PHY内部核供电,典型电压1.0/1.1/1.4等,这部分注意一点就是,PHY一般都会提供一个内部LDO或DC-DC,将3V3转成DVDD需要的电压,例如上面的AVDD_LDO就是输入电压,REG_OUT就是输出电压,典型应用电路如下:
图8‑21 DVDD供电电路
这个应用PHY都会有一个配置管脚选择内部供电还是外部供电,建议预留外部供电,防止外部应用环境复杂的情况下,内部供电不稳定,例如,电磁干扰导致内部供电不稳定,最后导致网络LINK不稳,丢包等情况。
VDD3P3这个主要设置数字IO电平的电压,例如FPGA或者其他主控RGMII接口只有2.5V电平,那VDD3P3就需要接2.5V电,其他类似。
时钟
时钟包括MII接口时钟和PHY工作时钟,MII接口时钟一般都由主控提供,做好信号完整性即可。
PHY的工作时钟有很多种方式,下面是某一PHY的时钟设置:
表8‑9 PHY时钟选择
CLKSEL | CLK25 | CKXTALIN | CKXTALOUT | 备注 |
---|---|---|---|---|
0 | 接时钟源 | 接 0 | 板级浮空 | |
1 | 接 0 | 接晶体 | 接晶体 | |
接时钟源 | 板级浮空 | 时钟源电压幅值要求不大于1.5Vpp,时钟源与 CKXTAL1之间需要交流耦合 1uF 电容 |
一般PHY都有一个CLKSEL配置引脚,该引脚接0,需要外接时钟源,可以通过主控或者有源晶振提供时钟源,这时CKXTALIN需要接地,防止EMC测试不通过;
CLKSEL接高电平时,可以外接晶体,这时CLK25需要接地,原因同上。
同时一般PHY还有一个CLK125,这个是输出引脚。
当采用接时钟源时如果是主控提供时钟源,一般预留一个外部晶振以面对复杂的应用环境对长时钟链路的影响。
复位
PHY的复位引脚,主要用来复位整个PHY片,这个引脚一般主控都会有专用的引脚,这个引脚没什么特殊的,主要需要评估主控的驱动能力是否满足,该引脚一般是高阻,所以大部分主控的普通IO也都满足驱动能力。
复位唯一需要注意的是PHY的上电时序,下面是某一PHY的时序要求:
图8‑22 PHY复位时序
为了保证PHY的稳定工作,一般的PHY都是先电源供电,然后时钟工作,最后进行复位,具体的时序要求,可以查看相关的数据手册。
IO
IO部分,主要包括配置接口、MII接口、MDIO接口和MDI接口。
MII接口这个主要注意和主控的电平匹配及信号完整性即可;PHY 芯片内部含有一些列寄存器,用户可通过这些寄存器来配置 PHY 芯片的工作模式以及获取 PHY 芯片的若干状态信息,如连接速率、双工模式、自协商状态等。PHY 内部寄存器的读写通过 MDIO 接口进行。注意MDO口的上拉,其他就是主控的配置PHY,后面会详细介绍。
MDI接口或其他输出接口,常规应用时一般都是MDI接口,注意PHY是否需要再MDI接口上做匹配电路。MDI接口后面一般会接变压器,注意变压器的抽头电压。如果是其他接口,例如BASE-X,注意AC耦合电容的放置位置。
这里注意一下,如果使用RGMII接口,RGMII接口可以通过内部寄存器设置延迟模式和非延迟模式,具体含义如下:
一般的 PHY 芯片都支持两种 RGMII 发送端口的时序关系。一种称为非延时模式,如下图所示:
图8‑23 RGMII发送端非延时模式(来源88E1512datasheet,下同)
即要满足时钟信号 TXC 的边沿对准数据信号 TXD[3:0]和控制信号 TX_CTL 有效窗口中心附近的位置,也就是说 TXC 比其他信号存在 2ns( 90°相位)(2ns来源:当 RGMII 接口工作于 1000M 速率时, TXC 和RXC 时钟信号都为 125MHz,那么单个接口的数据率便等同于 250Mbps,单个信号的有效数据窗最大为 4ns。)左右的延时。
另一种为延时模式,如下图所示。
图8‑24 RGMII发送端延时模式(来源88E1512datasheet,下同)
这种时序要求 TXC 的边沿不其发送的数据 TXD 和控制信号 TX_CTL 边沿对齐,所有信号具有相同的相位。
一般来说,大部分 PHY 芯片默认都是采用正常时序模式,可通过 MDIO 接口设置寄存器,或者芯片特殊功能引脚将其配置为延时模式。
配置IO
这部分是PHY能工作在不同应用的主要部分,目前我应用最复杂的PHY就是Marvell的88E1111,有7个config引脚,有N种应用,下面就针对88E1111的配置进行解读,学会了88E1111的硬件配置,其他的PHY也就会了。