Microchip嵌入式以太网硬件设计
发布时间:2019-04-24


如今,嵌入式设备已经无处不在。走在大街小巷,充斥着琳琅满目商品的广告机,马路上大大小小的高清网络监控摄像头,商场上大屏的led的显示器…….,而这些设备无一不是通过以太网路传输信号。今天我就来给大家介绍一下以太网的相关知识,以下内容大部分属于资料收集,但也夹杂着个人的经验、见解。文中结合IEEE802.3标准、网络的分析的理解进行描述。一般来说,像SPI、I2C、USB、PCI等总线类型的资料,都会包括电气接口和编程接口,对于以太网也类似。


1.概述
PHY是IEEE802.3 中定义的一个标准模块。OSI的7层基准模型中PHY属于第一层——物理层。PHY是数据链路层的媒体访问控制部分和媒体的接口。PHY 对所有传输的数据只是进行编码转化,没有对有效数据信号进行任何分析或改变,但是MAC 所有的数据传输都必须经过PHY 发送和接收才能传输到目标MAC。PHY还可以完成连接判断,自动协商以及冲突检测。MAC 可以通过修改PHY 的寄存器完成对自动协商的监控,当然也可以读取PHY 的寄存器来判断PHY 的状态。

PHY 寄存器的地址空间为5 位,因此寄存器范围是0 到31 ,最多有32个寄存器。IEEE802.3 定义了地址为0-15 这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义。但现在芯片功能很强大,32个寄存器远远不到,于是有的厂家就想出办法,使用page的方式来扩展。在看手册过程中发现,即使是0-15这类的寄存器,不同厂家在实现还是有点差异,所以,IEEE标准定义的寄存器只是在大的方面上说是标准的,细节方面如同一寄存器不同的位,功能也不一样,接下来我们就以Microchip的Ethernet的系列产品,给大家介绍一下,希望大家能够有个基本的认识。

10/100以太网PHY:
KSZ8081/91:单端口电压型PHY,具有EEE和WoL功能,
LAN87xx:单端口电流型PHY,具有EEE和WoL功能,
KSZ8061:单端口PHY,具有超低待机电流和Quiet-WIRE,
10/100/1000以太网PHY:
KSZ9031:单端口PHY,具有EEE和WoL功能

2.KSZ8061和KSZ9031
2.1 KSZ8061:10/100M PHY
支持Quiet-WIRE增强的EMI性能、EtherGREEN PHY技术
总功耗为150 mW
超深度休眠待机功耗,
具有信号检测唤醒功能(<1 uA)
固定延迟/快速链路建立(<20 ms)
LinkMD+链路信号质量指示器(SQI)
32引脚QFN(5x5mm)封装
工作温度范围为-40⁰C至105⁰C
AEC-Q100 2级支持
2.2 KSZ9031:10/100/1000 PHY
支持RGMII、GMII 接口
在工业和汽车应用中大量应用中稳健工作
单电源供电降低物料成本48/64引脚封装

3.PHY涉及的相关知识
3.1 auto polarity correction 自动极性反转
这项功能只有在1000base-T和10base-T用到,100base-T由于使用曼彻斯特编码,变为1不变为0所以不需要这个功能,在1000M情况下极性错误的纠正是靠idle情况下的波形来检测,一旦discrambler解码器锁定,每个pair的极性也就锁定不再更改,在10m的情况下则是通过link pulses来确定极性,auto polarity correction的检测开始与MDI交叉检测结束之后,同时这个功能存在兼容性问题,因为1000M情况下idle的波形的波动空间很大,存在一种情况就是波形无论正还是负都有一定的余量,那么一定情况下就会出项检测错误的情况,所以这种设计是一种防备设计,防备客户的网线用错,但是这种设计不能作为常规设计而随意连接网络的MDI +/-那样会造成兼容性错误。
3.2 crystal与oscillator
晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振与有源晶振(谐振)的英文名称不同,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。无源晶振需要借助于时钟电路才能产生振荡信号,自身无法振荡起来,所以无源晶振这个说法并不准确;有源晶振是一个完整的谐振振荡器。
3.3 RMGII
RGMII接口的TXC、RXC传输125,25.2.5M的clock,RXCTL\TXCTL用于发射控制信号,有四条TX四条RX,总共是12条线路,MDC和MDIO是对PHY寄存器的控制脚,和TXCTL\RXCTL不同,后者只控制RGMII的interface信号但是和RGMII的pin脚电平定义是一样的,RGMII的IO pin电平一致(这和上层使用的SOC有关,一般而言上层SOC的电平逻辑是和其使用的RGMII接口电平逻辑是一样的)。
3.4 INTB/PMEB pin,用于中断和电源管理
支持两种模式即active low和pulse low,后者在WOL events结束后电平自动恢复,但是这两种方式只有在PMEB模式下才是都可用的,WOL只支持active low,但是PMEB模式下即使是电平自动恢复也需要重置PMEB状态。
3.5 RESET pin
完全重置PHY,需要拉低10ms,重置完成,但是需要再等待50ms才能保证内部所有PHY寄存器都已经被清空。
3.6 PLLSET pin
上拉时当PHY进入ALDPS mode的时候,PLL会关闭,变得节能。
CFG_EXT\CFG_LDO0\CFG_LDO1设置RGMII口的电压
3.7 PHY Address
支持地址为0x01到0x07,全零为广播地址,关闭响应广播地址功能。
3.8 LED default setting
High/low active 取决于硬件设置,即对应脚在power on reset的时候为输入pin,此刻读到的数值决定是高有效还是低有效。

4.PHY上电基本配置流程
软件复位Reset Pin
等待linked state Finished
Enable Auto-NWAY(自动协商)强制force速率涉及双工匹配问题需注意
等待 自协商完成(读取vendor specific寄存器verify)
根据自协商result配置Mac层速率半双工/全双工模式


5.小结
一般而言,以太网硬件设计各个IC vender都会提供详细的参考设计资料,区别好电流型or电压型PHY,在PCB layout过程中理解好高速信号会存在对地的最小回环路径,做好相应的阻抗匹配,根据实际的应用场景配置好相应的寄存器参数,注意上电的时序。综合上述,相信你的硬件设计可以顺利完成,在上层应用在写Linux驱动时,Linux内核抽象出读写的函数phy_read和phy_write。在驱动中直接调用是没有问题的,当然,这需要MDIO等一切就绪后。HY寄存器为获取网卡信息的原始途径,如网络是否连接,对端(交换机或PC)的能力,等等。然后再给内核的网络子系统(通过Netif_carrier_on这类的函数)。好了,以太网硬件设计就先介绍到这里了,你Get到了吗?下回我们再聊聊linux 网络驱动的编写,如有相关问题想了解,欢迎留言。

免责声明:本文内容仅供参考,部分图片及文字来源于网络及原厂公开资料,如有侵权,请联系本公司删除。

欲了解此项目的细节或与我司在此项目上合作,请联系我司企业传播专员同事Queenie Jiang,邮箱:queenie.jiang@weikeng.com.cn,电话:+86 755 8294 3322