写DM9000网卡芯片驱动的预备知识
from:http://blog.sina.com.cn/s/blog_522a41b201009ha7.html
ETHERNET的接口实质是MAC通过MII总线控制PHY的过程。
MAC是MediaAccess Control的缩写,即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。以太网MAC由IEEE-802.3以太网标准定义。
MII(MediaIndependent Interface)即媒体独立接口,“媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。包括分别用于发送器和接收器的两条独立信道。每条信道都有自己的数据、时钟和控制信号。MII数据接口总共需要16个信号,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。
MII以4位半字节方式传送数据双向传输,时钟速率25MHz。其工作速率可达100Mb/s。MII管理接口是个双信号接口,一个是时钟信号,另一个是数据信号。通过管理接口,上层能监视和控制PHY。其管理是使用SMI(SerialManagementInterface)总线通过读写PHY的寄存器来完成的。PHY里面的部分寄存器是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。不论是物理连接的MII总线和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
EthernetInterface=MAC+PHY with MII
PHY是物理接口收发器,它实现物理层。包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。
100BaseTX采用4B/5B编码。PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。
PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突。
通信速率通过双方协商,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为AutoNegotiation或者NWAY。
隔离变压器把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。RJ-45中1、2是传送数据的,3、6是接收数据的。新的PHY支持AUTOMDI-X功能(也需要隔离变压器支持)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。
)。它可以实现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交换。
DM9000原理
DM9000 是Davicom公司的一款以太网控制芯片,在网络中它可自动获得同设定MAC地址一致的IP包,完成IP包的收发,再用一个单片机来结合完成上层协议,就构成了一个完整的网络终端。在单片机中嵌入了一个精简TCP/IP协议栈。
API 总共分7部分,包括网络接口层、动态内存管理模块、缓冲区管理模块、UDP层、TCP层、DHCP模块和DNS模块。
协议栈本身需求ROM空间为21KWord。
(1)内存工作原理DM9000 共有6 K Byte(0000h-3FFFh)内存,而读写内存由MWCMD、MRCMD这两个寄存器来控制。MWRL,MWRH寄存器提供现在写入内存的位置,MRRL,MRRH寄存器提供现在读取内存的位置。内存移动工作模式为每次移动1 个Byte(8bit)或2个Byte(16bit)。
(2)封包传送工作原理内存中默认值有3 KByte(0000h-0BFFh)提供给传送功能使用。而传送一个封包流程如下:①将要传送封包的长度,填入到TXPLL,TXPLH寄存器;②将要传送封包的资料由MWCMD 寄存器填入内存中;③由TCR寄存器使DM9000送出封包资料;④若内存的写入位置超过0BFFh时,自动将下一个位置回复到0000h。
(3)封包接收工作原理内存中默认值有13K Byte(0C00h-03FFh)提供给接收功能使用。在每一个封包,会有4个Byte存放一些封包相关资料。第1 个Byte是封包是否已存放在接收内存,若值为“01h”为封包已存放于接收内存,若为“00h”则接收内存尚未有封包存放。在读取其它Byte之前,必需要确定第1 个byte 是否为“01h”。第2 个Byte则为这个封包的一些相关讯息,它的格式像RSR寄存器的格式。第3和4个Byte是存放这个封包的长度大小。
接一个封包的流程如下:
①检查MRCMDX寄存器值是否为01,若是则有封包进入需读取;
②读取MRCMD,将前4 个Byte封包讯息读入;
③由前4 个Byte封包讯息取到待得封包长度(以Byte 为单位),连续读取MRCMD,将封包资料移到系统内存之中;
④若读取位置超过3FFFh 时,自动会移到0C00h。
1。认识网卡,我们上网必备组件之一。
网卡工作在osi的最后两层,物理层(PHY)和数据链路层(MAC,即MAC实现了一个数据链路层),物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。以太网卡中数据链路层的芯片称之为MAC控制器。很多网卡的这两个部分是做到一起的。他们之间的关系是pci总线接mac总线,mac接phy,phy接网线(当然也不是直接接上的,还有一个变压装置)。
下面继续让我们来关心一下PHY和MAC之间是如何传送数据和相互沟通的。通过IEEE定义的标准的MII/GigaMII(MediaIndependedInterfade,介质独立界面)界面连接MAC和PHY。这个界面是IEEE定义的。MII界面传递了网络的所有数据和数据的控制。
而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(SerialManagementInterface)界面通过读写PHY的寄存器来完成的。PHY里面的部分寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例如流控的打开关闭,自协商模式还是强制模式等。
我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的修改。
一片网卡主要功能的实现就基本上是上面这些器件了。
其他的,还有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。
很多网卡上还有BOOTROM这个东西。它是用于无盘工作站引导操作系统的。既然无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如RPL、PXE等。实际上它就是一个标准的PCIROM。所以才会有一些硬盘写保护卡可以通过烧写网卡的BootRom来实现。其实PCI设备的ROM是可以放到主板BIOS里面的。启动电脑的时候一样可以检测到这个ROM并且正确识别它是什么设备的。AGP在配置上和PCI很多地方一样,所以很多显卡的BIOS也可以放到主板BIOS里面。这就是为什么板载的网卡我们从来没有看到过BOOTROM的原因。
2。工作过程,
PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去。收数据时的流程反之。现在来了解PHY的输出后面部分。一颗CMOS制程的芯片工作的时候产生的信号电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的信号送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网现直接和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。
再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢?
这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。
隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有芯片被烧毁的,就是隔离变压器起到了保护作用。
10BaseT和100BaseTXPHY实现方式不同:10BaseT采用曼彻斯特编码,100BaseTX采用4B/5B编码。
曼彻斯特编码,常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示"1",从低到高跳变表示"0"。还有一种是差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为"1"。
如何读写dm9000的寄存器:
DM9000内部有64多个8位寄存器,常用 的有40多个。还有12个特殊的16位PHY寄存器,其中常用的PHY寄存器有4个。对其寄存器的读写有别于前面的64个寄存器。其寄存器的功能请参看 DM9000寄存器功能详解上下文。
如前面所说,DM9000是数据地址线复用的,即INDEX Port,DATA Port;DM9000访问的是地址端口,还是数据端口由A2信号线的电平决定。
那么可以做这样的宏定义:
#define DM9000_PPTR *(volatile uint16 *)(DM9000_BASE) //地址端口
#define DM9000_PDATA *(volatile uint16 *)(DM9000_BASE +4) //数据端口
其中 DM9000_BASE 是基地址,由板子的设计决定。
对64个8位寄存器的读写代码如下:
uint8 ior(uint8 reg) //读寄存器
{
DM9000_PPTR=reg;
return DM9000_PDATA&0xff;
}
void iow(uint8 reg, uint8 value) //写寄存器
{
DM9000_PPTR = reg;
DM9000_PDATA = value & 0xff;
}
其中由于MCU 的处理速度和DM9000 的处理速度可能有差别,最好加入适当的延迟。
对PHY16位寄存器的读写由8位寄存器的操作完成,代码如下:
uint16 phy_read(uint8 reg) //读PHY寄存器
{
uint16 val;
iow(DM9KS_EPAR, DM9KS_PHY | reg);
iow(DM9KS_EPCR, 0x0c);
iow(DM9KS_EPCR, 0x08);
val = (ior(DM9KS_EPDRH) << 8) | ior(DM9KS_EPDRL);
return val;
}
void phy_write(uint8 reg, uint16 value) //写PHY寄存器
{
iow(DM9KS_EPAR,DM9KS_PHY|reg);
iow(DM9KS_EPDRL,(value&0xff));
iow(DM9KS_EPDRH,((value>>8)&0xff));
iow(DM9KS_EPCR,0xa);
iow(DM9KS_EPCR, 0x08);
}
最后我们再一次读出DM9000的ID。
uint32 GetDM9000ID(void)
{
uint32 id_val;
DM9000_PPTR = DM9KS_PID_H;
id_val = (DM9000_PDATA & 0xff) << 8;
DM9000_PPTR = DM9KS_PID_L;
id_val+= (DM9000_PDATA & 0xff);
id_val = id_val << 16;
DM9000_PPTR = DM9KS_VID_H;
id_val += (DM9000_PDATA & 0xff) << 8;
DM9000_PPTR = DM9KS_VID_L;
id_val += (DM9000_PDATA & 0xff);
return id_val;
}
最近在看DM9000网卡驱动,一直不太明白,这几天问师兄,查资料总算明白了一点,在这里整理出来,也当加深理解。我刚刚学习ARM,很多东西不懂,理解错误或者不当之处还请指出,大家共同进步。
S3C2440是32位微处理器,有32根地址线,支持4GB存储空间。其中0-40000000的1G空间被分为8块128M空间,分别由NGCS0-NGCS7片选。DM9000的AEN地址使能引脚与S3C2440的NGCS4相连(对应匹配),对应的初始地址为0x2000000,地址范围为0x20000000-0x28000000。
1、 DM9000地址线
DM9000地址线SA4-SA9用于S3C2440选择DM9000网卡。因为DM9000的AEN地址使能引脚已经和S342440的NGCS4引脚相连,完成了选通,其余位可不连直接置位即可:SA9、SA8置为高电平,SA7置为低电平,SA6-SA4和TXD2-TXD0匹配(如果取DM9000 IO默认基地址,SA6-SA4可置为低电平)。
2、 DM9000数据线
DM9000数据线SD0-SD15与S3C2440数据线DATA0-DATA15相连。
3、 DM9000数据端口和命令端口的确定
由开始讨论知,对于DM9000网卡寄存器的操作在0x20000000-0x28000000的区间内进行,由于网卡IO默认基地址为300H,所以操作网卡对应内存的起始地址为0x20000300,又有DM9000网卡CMD端口与S3C2440的地址总线ADDR2相连,并且DM9000的CMD命令管脚有这样的特性:当为高电平时,从数据线传输的是数据,当为低电平时传输的是命令。
4、 具体程序
#define DM_ADD (*((volatile unsigned short*) 0x20000300))
#define DM_CMD (*((volatile unsigned short*) 0x20000304))
在定义端口,分别把0x20000300和0x20000304宏定义为DM_ADD和DM_CMD
寄存器读写操作函数
static void dm9000_reg_write(INT16U reg, INT16U data)
{
udelay(20);
DM_ADD=reg;
udelay(20);
DM_CMD=data;
}
static INT8U dm9000_reg_read(INT16U reg)
{
udelay(20);
DM_ADD=reg;
udelay(20);
return DM_CMD;
}
程序中volatile类型修饰符,在处理器对外部寄存器读写时几乎是必用的,作用是确保变量每次被调用的时候都会从内存中重新读取而不是读取内部缓存cache(处理器把常用的数据进行备份保存在此处,避免每次调用该数据时都要操作内存)里面的数据,尽管这样浪费的时间,可是提高了系统的准确性。
通过确定了地址线和数据线的连线,加上在内存里的地址映射,可以通过对内存的操作实现对寄存器的读取。具体过程是这样的:
当对以0x20000300(DM_ADD)为起始地址的内存空间进行操作时,对应的ADDR2管脚为低电平,CMD命令管脚为低电平,数据线传输的是地址,同理,当对0X20000304(DM_CMD)为起始地址的内存空间进行操作时,对应管脚为高电平,数据线传输的是数据。传输到外部芯片的地址选取寄存器,传输到外部芯片的数据写相应寄存器,这个过程由CMD控制,当CMD为低电平时选取寄存器(此时可以直接读取寄存器的内容),CMD为高电平时,写入寄存器(之前必须先选取寄存器)。在内存里的情况,这样理解。
![](http://img.e-com-net.com/image/info8/3982381035a1402f8b72a02251be0234.jpg)
原文请搜“PHY的基本知识”
注:PHY =PHYSICAL LAYER DEVICE 即物理层器件。此规范中提到的10/100 PHY 是指专用于以太网,支
持IEEE 802.3 10 Mbps 和 100 Mbps 物理层应用的收发器。即通过双绞线可使用在10 Mbps 和 100 Mbps
(10BASE-T 和100BASE-TX)以太网的物理层器件。有些PHY 可通过光纤收发器支持100 Mbps (100BASE-FX)
以太网,和此相关部分的设计见100FX 设计规范,本规范不涉及。以下将10/100PHY 简称为PHY。
1 目的:将成熟设计标准化,便于重复利用。通过对该规范的学习,能够掌握 PHY 原理并能做相关的设
计。
2 内容简介
2.1 设计目标
2.2 设计方法
2.3 PHY 的基本概念
2.4 原理描述
2.5 典型PHY 分析
2.6 典型原理图参考
2.7 典型PCB 参考
2.8 常见PHY 简单介绍
2.9 引用的资料和标准
2.10 PHY 调试方法和注意事项
3 设计目标:
3.1 正确、快速设计PHY 的原理图
3.2 正确、快速设计PHY 的PCB
3.3 快速调试出 PHY 的实际电路
4 设计方法:
4.1 阅读 PHY 设计规范,对其有一个全面的了解
4.2 仔细阅读要使用的 PHY 的相关资料
4.3 找出使用的 PHY 和规范中典型PHY 的不同之处,加以分析
4.4 在典型 PHY 设计基础上进行修改
5 PHY 的基本概念:
5.1 在 OSI 基准模型中,PHY 属于哪一层?
在OSI 的7 层基准模型中我们使用的PHY 属于第一层--物理层( PHY)。物理层协议可定义电气
信号、线的状态、时钟要求、数据编码和数据传输用的连接器。数据链路层可以通过定义好的接口
而与物理层通话。例如MAC 可以利用介质无关性接口( MII)与PHY 进行数据交换。
5.2 PHY 的基本作用:
5.3.1 对端口LINK 状态的判断;
5.3.2 自动协商,当然MAC 可以修改PHY 的寄存器间接控制自动协商;
5.3.3 完成MII(RMII)数据和串行数据流之间的转化:包括4B/5B 的编码的转化(不包括
10BASET);串并转换;最后转换成低压信号,根据端口不同的工作模式,转换方式也有所
不同。例如在100BASE-T 下是MLT-3;在10BASE-T 下是曼彻斯特编码。
5.3.4 在MII 的工作方式下,完成冲突检测。若是工作于RMII 模式下则此项任务由MAC 完成。
5.3 10/100M PHY 的接口。
5.3.1 PHY 与以太网的接口(MDI)(介质相关接口)
网络介质用于计算机之间的信号传递。100BaseT 主要采用三种不同类型的网络介质,分别是
100BaseTX,100BaseFX,和100BaseT4。
![]()
如上图所示,在统一的IEEE 802.3 MAC 层下面有三种不同的物理层介质,可以分别用来满足不同的
布线环境。其中,100BaseTX 继承了10BaseT5 布线系统,在布线不变的情况下,把10BaseT 设备更
换成100BaseTX 设备就可以直接升级为快速以太网系统;同样,100BaseFX 继承了10BaseFL 多模光
纤系统,也可以直接升级到100Mbps;对于一些较早的采用3 类UTP 的以太网系统,可以采用100BaseT4
进行升级。
5.3.1.1 100BASE-TX 是一种使用5 类数据级无屏蔽双绞线或屏蔽双绞线的快速以太网技术。它使用两
对双绞线,一对用于发送,一对用于接收数据。在传输中使用4B/5B 编码方式,信号频率为125MHz。
符合EIA586 的5 类布线标准和IBM 的SPT 1 类布线标准。使用同10BASE-T 相同的RJ-45 连接器。它
的最大网段长度为100 米。它支持全双工的数据传输。5 类电缆的传输速度最小为0.57bt/m(bt 表
示10ns),快速以太网规定网络接口phy 的延迟不能超过25bt,I 类中继器的任意两个端口的延迟不
能超过70bt,II 类中继器(所有端口都是100BASE-TX)的任意两个端口的延迟不能超过46bt。根据
以上计算,在保证能够完成冲突检测的前提下,5 类电缆布线的长度可以大于100 米。但是在电缆安
装的时候,必须符合EIA/TIA-568 标准,它描述了接线箱和网络节点之间的电缆长度。这一段长度在
以太网规范中定义为链段。100BASE-TX 规范支持最大长度为100 米的链段。就是说连接任意两个MDI
的网线的长度不能大于100 米。所以在100BASE-TX 中PHY 的设计只要保证最大长度100 米的应用。
5.3.1.2 100BASE-FX 是一种使用光缆的快速以太网技术,可使用单模和多模光纤。在传输中使用4B/5B
编码方式,信号频率为125MHz。它使用MIC/FDDI 连接器、ST 连接器或SC 连接器。它的最大网段长
度为150m、412m、2000m 或更长至10 公里,这与所使用的光纤类型和工作模式有关。它支持全双工
的数据传输。100BASE-FX 特别适合于有电气干扰的环境、较大距离连接、或高保密环境等情况下的
适用。
5.3.1.3 100BASE-T4 是一种可使用3、4、5 类无屏蔽双绞线或屏蔽双绞线的快速以太网技术。它使
用4 对双绞线,3 对用于传送数据,1 对用于检测冲突信号。在传输中使用8B/6T 编码方式,信号频
率为25MHz。符合EIA586 结构化布线标准。使用同10BASE-T 相同的RJ-45 连接器。它的最大网段长
度为100 米。
5.3.2 PHY 与MAC 的接口方式也有几种,如:MII,RMII,SMII,SSMII。一般我们目前使用PHY 都提
供RMII 接口,RMII 信号是根据PHY 内部的MII 的信号进行编码或译码,也就是说支持RMII 的PHY
内部都有MII 信号,只是未必有提供给用户。具体使用那一种的PHY 必须根据MAC 芯片对功能和接口
的要求来决定。
6 10/100 PHY 原理描述
6.1 定义:支持IEEE 802.3 10BASET 和 100BASET 物理层应用的收发器。
6.2 应用范围:交换机,中继器,网卡。
6.3 功能:PHY 是一个物理层的设备,是数据链路层的媒体访问控制部分和媒体的接口。PHY 对所有
传输的数据,只是进行编码转化,没有对有效数据信号进行任何分析或改变。但是MAC 所有的
数据传输都必须经过PHY 发送和接收才会传输到目标MAC。此外,PHY 还可以完成连接判断,
自动协商以及冲突检测。MAC 可以通过修改PHY 的寄存器完成对自动协商的监控,当然也可以
读取PHY 的寄存器来判断PHY 的状态。
图 5.1
![]()
其中:
AUI =ATTACHMENT UNIT INTERFAC (附属接口)连接单元接口
MDI =MEDIUM DEPENDENT INTERFAC (媒体依赖接口)介质相关接口
MII =MEDIA INDEPENDENT INTERFAC (媒体无关接口)
PLS =PHYSICAL LAYER SIGNALING (物理层信号)物理层信令子层
PCS =PHYSICAL CODING SUBLAYER (物理编码子层)
PMA =PHYSICAL MEDIUM ATTACHMENT (物理媒体附属)物理介质连接子层
PHY =PHYSICAL LAYER DEVICE (物理层器件)
PMD =PHYSICAL MEDIUM DEPENDENT (物理媒体依赖)物理介质相关子层
6.4 主要组成部分
由图5.1 可知PHY 工作在10Mbps 时和工作在100Mbps 时,其需要的功能不同。目前我们讨论的
10/100PHY 是将其做到了一起,内部都是由PCS/PMA/PMD 及媒体无关接口,MDI 接口组成的。只不
过是当PHY 工作在10Mbps 时,有些功能没有用到。
6.4.1 PCS(PHYSICAL CODING SUBLAYER):在100BASE-X 模式时,提供RMII 接口、4B/5B 编码、串并
转换以及冲突检测功能,同时只要TxEN 无效就提供“idle”信号给PMD 层。在10BASE-T 模式下只
提供接口和串并转换功能。
6.4.2 PMA(PHYSICAL MEDIUM ATTACHMENT):提供对LINK 状态的判断和载波侦听的功能,完成串行信
号和NRZI 信号之间的转化。PMA 使用标准的方法来判断端口的LINK 状态。当PMA 判断到对方设备
存在的时候,如果自动协商使能,就会开始同对方进行自动协商确定端口的工作模式;当对方不支
持自动协商的时候,端口的工作模式根据并行探测的结果。当有数据接收或者发送的时候会导致
CRS(carrier sense)的置位。在PMA 层,有的PHY 支持Far-End-Fault,例如MARVELL 88E3081
6.4.3 PMD(PHYSICAL MEDIUM DEPENDENT):提供对信号的scrambling/ descrambling;对信号进行编
码,在100TX 下是MLT-3 , 在10T 下是Manchester; polarity correction;baseline wander
correction 等功能。其中的scrambling(扰频)/ descrambling(解扰)和baseline wander(基
线漂移)功能是100BASETX 专有的。有的PHY 是双绞线与光纤可替换的,当工作于FX 模式的时候,
由PMA 提供pseudo-ELC(伪电缆)接口,PMD 的功能由光纤收发器完成。光纤收发器的具体描述
详见《100FX 设计规范》。
6.4.4 媒体无关接口
6.4.4.1 MII 接口
6.4.4.1.1 TXCLK(发送时钟): 由PHY 产生,为Reconciliation sublayer 到PHY 的TX_EN,TXD
和 TX_ER 信号的参考时钟。它的频率是正常数据传输速率的25%±100 ppm.,即若PHY 工作在
100Mbps,则TXCLK 的频率为25MHz;若PHY 工作在10Mbps,则TXCLK 的频率为2.5MHz。其占空比
为35%到65%之间。TXCLK 来源于PHY 的系统时钟,提供给MAC 作为发送使用的参考时钟。
6.4.4.1.2 RXCLK(接收时钟): 由PHY 产生,为PHY 到Reconciliation sublayer 的RX_DV,RXD 和
RX_ER 信号的参考时钟。它的频率是收到数据的传输速率的25%±100 ppm.,即若PHY 工作在
100Mbps,则RXCLK 的频率为25MHz;若PHY 工作在10Mbps,则RXCLK 的频率为2.5MHz。其占空比
为35%到65%之间。这个时钟的来源会根据端口的工作状态改变,当有数据接收的时候,时钟是从
接收到的数据中恢复出来的,当没有数据接收的时候,使用PHY 的系统时钟。(基本上是如此,当
然10M 和100M 略有不同,因为100M 传输的是5B 编码,当空闲的时候依然有数据传输)
6.4.4.1.3 TX_EN(传输使能): 由Reconciliation sublayer 产生,靠TXCLK 同步,在MII 上有
要发送的半元(nibbles)时有效(高有效),直到一个帧的最后nibbies 传输完后一个txclk 变无
效。
6.4.4.1.4 TXD(发送数据): 由TXD(0:3)四位组成。由Reconciliation sublayer 产生,靠TXCLK
同步,在TX_EN 有效时将数据传输给PHY,若TX_EN 无效,传给PHY 的数据无效。TXD0 为least 有
效bit。
6.4.4.1.5 TX_ER(传输译码错误):由Reconciliation sublayer 产生,靠TXCLK 同步,在TX_EN
有效时若TX_ER 有效(高有效)则说明其有效周期对应传输的数据有错误,对于这样的帧PHY 会将
其丢掉。同时当PHY 工作在10Mbps 时,不对TX_ER 信号做出反应。另有些Reconciliation sublayer
给不出来TX_ER,PHY 需将其对应的TX_ER 脚拉低。
6.4.4.1.6 RX_DV (接收数据有效): 由PHY 驱动,靠RXCLK 同步,从PHY 有数据要通过RXD 在MII
上发送nibbles 时有效(高有效),直到一个帧的最后nibbies 传输完后一个RXCLK 变无效。
6.4.4.1.7 RXD(接收数据): 由RXD(0:3)四位组成。从PHY 发到Reconciliation sublayer,靠RXCLK
同步。在RX_DV 有效时将数据传输给Reconciliation sublayer,若RX_DV 无效,则传给
Reconciliation sublayer 的数据无效。RXD0 为least 有效bit。
6.4.4.1.8 RX_ER(接收错误): 由PHY 产生,靠RXCLK 同步,在RX_DV 有效时若RX_ER 有效(高
有效)则说明其有效周期对应传输的数据有错误。
6.4.4.1.9 CRS(载波检测): 有效(高有效)表示PHY 有数据的发送或者接收,一旦信道空闲则无
效。当全双工的时候,只有接收会导致CRS 的置位。CRS 不需要时钟来同步。
6.4.4.1.10 COL (冲突探测): 有效(高有效)时表示媒体传输线上有冲突(即端口工作于半双工
同时有数据的接收和发送)产生,冲突消失即变无效。不需要时钟来同步。
6.4.4.1.11 MDC(管理数据时钟): 是管理接口为传输管理数据MDIO 而传输给PHY 的时钟信号,和
RXCLK 和TXCLK 没关系。最小周期为400ns。
6.4.4.1.12 MDIO(管理数据输入/输出): 是PHY 和STA (station management entity) 间的双向数据
通道,用来传输控制信息和状态。控制信息由STA 驱动,PHY 靠MDC 来同步采样;状态信息由PHY
驱动,STA 靠MDC 来同步采样。
6.4.4.2 RMII 接口:MII 每组有16 根线,RMII 每组减少到8 根,(两根TX,两根RX,TXEN,RXDV,CLK
和RXER(在PHY 上))取消了冲突检测,载波侦听,传输错误和4 根数据线,传输的参考时钟提高
到50MHZ。(在以10M 传输时,时钟为5MHZ,每十个脉冲采样一次就降为5MHZ)需要特别说明的是:
在MII 的时候,冲突检测由PHY 完成;但是RMII 的时候,冲突检测由MAC 完成。MAC 把TXEN 和CRSDV
信号的“近似与”作为冲突的判定标准。
6.4.4.3 SMII 接口:SMII 的时候,每组只有使用4 根线,数据线2 根,时钟线1 根(共享),同
步线1 根(共享)。传输的参考时钟为125MHZ。数据信号和控制(状态)信号被编码成一个个10BIT
的字段,由MAC 产生的同步信号SYNC 作为分界进行传输。MAC 每隔10 个CLK 产生一个SYNC 有效信
号(高有效)。当端口工作于100M 的时候,每一个分界表示一个字节;10M 的时候10 个分界才表示
一个字节。在接收方向上,除了数据传输,还有状态传输;但是在发送方向上只有数据传输。
6.4.4.4 SSMII 接口:Source Synchronous SMII,在SMII 中时钟信号和同步信号都是由MAC 产
生,当SMII 的传输延迟大于1nS 的时候此两个信号不能作为PHY 的传输依据,这样就有了SSMII
信号。SSMII 信号与SMII 信号的主要区别在于每个传输的方向上都有时钟信号和同步信号,MAC 或
者PHY 在自己的发送方向上都有驱动时钟和同步信号,确保传输到对方的时候信号的同步性。
6.4.5 MDI 接口:不同的PMD 对应着不同的MDI 接口,当端口工作于100M 的时候,主要有3
种网络介质,100BASETX、100BASEFX 和100BASET4。拿100BASETX 作为例子:100BASE-TX 是一种使
用5 类数据级无屏蔽双绞线或屏蔽双绞线的快速以太网技术。它使用两对双绞线,一对用于发送,
一对用于接收数据。在传输中使用4B/5B 编码方式,信号频率为125MHz。PHY 的MDI 接口通过隔离
变压器和RJ45 后与网线相接,主要目的是为了实现电气隔离和对电磁干扰的屏蔽。
6.5 工作原理:
6.5.1 Auto-negotiation 与Parallel Detection:
6.5.1.1 当连接的双方都有自动协商能力的时候,PHY 通过发送 FLP( Fast Link Pulse 快速链路
脉冲)来决定端口的工作模式,每一个FLP 脉冲群包括33 个脉冲,每个脉冲间隔62.5us,脉冲群
的间隔为16±8ms。奇数脉冲代表时钟长有,偶数脉冲表示数据,有脉冲信号为“1”,没有脉冲信
号为“0”。每个FLP 包含16bits 数据即所谓的“page”。所有的支持Auto-negotiation 的器件
必须能够读懂“base page”。有些phy 支持“next page”功能。通过交换“base page 互相相连
的两方可告知对方它的实际能力(速度、双工等)。PHY 选择双方都有的最高能力作为端口的工作
模式。
6.5.1.2 当连接的双方只有一方支持自动协商的时候,没有自协商能力的一方发送NLP(normal link
pulses in 10Mbps)或者Idle Symbols(100Mbps);有自动协商能力的PHY 探测线路上的速度信
息,配置端口为10M 半双工或者是100M 半双工。NLP 是每间隔16±8ms 发送一个脉冲,IDLE 就是
全“1”信号。
6.5.1.3 所以当强制端口工作于全双工的时候,就必须保证连接的对方也是强制于此种工作状态,
否则对方(具有自协商能力的一方)会选择端口的工作状态为半双工,双方能够连接上且按照各自
的模式工作。当连接的双方都没有自协商能力的时候,双方都发送NLP(normal link pulses in
10Mbps)或者Idle Symbols(100Mbps),如果探测到的速度信息与自己发送的一致,双方就按照自
己的工作模式LINK 上且开始工作。如果一方强制为100M 全双工,另一方为强制为100M 半双工的
时候,能够连接上且按照各自的模式工作。
6.5.2 Far End Fault Indication (FEFI):FEFI 是PHY 的一个可选的功能,它主要是为了避免
出现只有一方LINK 上的状态。例如:两个通过网络介质连接的端口,当有一个方向的连接介质出
现问题的时候,会导致甲方接收到信号认为LINK 上,而乙方没有接收到信号认为没有LINK 上。这
时乙方会发送84 个1 和一个0 来告诉甲方连接有问题。
6.5.3 Auto MDI/MDIX Crossover:Crossover 是PHY 的一个可选的功能,具有此功能的PHY 能
够根据对方的发送和接收信号,使用MDI 或者是MDIX。连接的双方,只要有一方具有Crossover,
就可实现功能。此时双方无论使用正线还是反线都能连接上。
6.5.4 SMI 管理接口:这个接口允许上层器件监控PHY。物理接口包括一个数据线(MDIO)和一
根时钟线(MDC)。MAC 利用SMI 可以完成以下功能:
6.5.4.1 写PHY 的寄存器:
强制端口的工作状态;指导PHY 完成自动协商;修改端口灯的显示模式;控制Crossover、FEFI
等功能是否实施。
6.5.4.2 读取PHY 的状态寄存器:
端口的连接状态;自动协商是否完成;PHY 选择的工作模式以及其它状态。
6.5.4.3 MAC 利用SMI 完成的主要功能(允许自动协商的时候):
上电的时候,MAC 修改PHY 的寄存器,控制端口是否进行自动协商,以及自动协商的能力,包括
双工、速度、流控等;读取PHY 的状态寄存器1,判断自动协商是否完成;若完成,读取PHY 寄
存器4 和寄存器5,比较确定最终的工作模式;当正常工作以后,MAC 会不断读取PHY 的状态寄存
器1,监控端口的连接状态。有的MAC 在正常上电的时候工作过程有所不同,如GT48350 只会设
置PHY 的流控能力,不会修改别的能力。
6.5.4.4 MAC 利用SMI 完成的附加功能:
一般的MAC 都留有SMI 接口,可以通过设置MAC 的寄存器,操作PHY 的寄存器。利用这个接口,
可以在任何时候操作PHY 的寄存器,以实现特殊的要求。如:控制灯的显示模式;Crossover 功能;
FEFI 功能;更改端口的工作状态等等。
6.5.5 简单工作过程:
6.5.5.1 以100Mbps 为例,在发送方向上,当MAC 没有数据传输时,PHY 往传输线上发送“idle”
空闲信号。有数据传输的时候,PHY 将MAC 传过来的数据编码为MLT-3 信号传输到网络线上:一
旦PHY 收到MAC 的前同步码序列后,它就发送J/K Start-of-Stream Delimiter (SSD)信号接着
传输包内容:剩余的前同步码、目的地址、原地址、帧长度、帧内容、CRC,一旦包结束,PHY 就
传输T/R End-of-Stream Delimiter (ESD)信号然后返回到传输“idle”信号。PHY 在内部必须完
成从MII(RMII、SMII)信号到MLT-3 信号的转化。首先PHY 从MII 接口接收MAC 发送的数据(如
果接口是RMII,则PHY 必须先把RMII 信号转化成MII 信号),4B/5B 编码器把数据从4B 编码方式
转化为5B 编码;再把5B 编码的并行数据转化为串行数据,这里用到了串并转化器;然后PHY 对
信号进行SCRAMBLE 处理,以减少传输线上总的能量辐射;接着PHY 还必须完成数据从NRZ 编码到
NRZI 编码的转化;最后把NRZI 信号转变为MLT-3 信号由Multimode DAC 模块发送到MDI 接口。
当然各个厂家的PHY 在完成以上的转变过程中,在先后的顺序上有一定的差别,但是都有包含以
上各个模块,并且保证向上和向下的接口是完全符合标准的。
6.5.5.2 以 100Mbps 为例,在接收方向上,PHY 必须把125M 的串行的MLT-3 信号转化为MII(RMII、
SMII)信号。PHY 从双绞线上接收MLT-3 信号。首先,AGC 模块对MLT-3 信号进行处理,去除信号中的直流
分量,实现baseline wander correction;数字锁相环会从接收到的数据恢复出125M 的时钟,ADC 模块利
用此时钟对MLT-3 信号进行采样;把MLT-3 信号转化为NRZI 信号;然后按照与发送相反的流程完成NRZI
到NRZ 信号的转化,DESCRAMBLE,串并转化,4B/5B 的译码;最后把处理完的信号送入FIFO,准备发送给
MAC。使用FIFO 的主要原因是纠正恢复时钟与系统时钟之间存在的差别。
6.5.5.3 对于 10/100M 自适应的PHY,当端口工作在10Mbps 和100Mbps 主要的区别在于:
6.5.5.3.1 对外的区别:工作于10Mbps 的时候,PHY 的MII 的时钟从25M 变为2.5M,所以在MII 上
的采样上应有所变化,对于MII 和RMII 接口是每10 个CLK 采样一次,对于SMII 接口是每100
个CLK 连续采样10 个CLK。在MDI 上传送的数据是曼彻斯特编码信号。在MAC 没有数据传输时,
PHY 在端口上传输的是Link pulses 即连接脉冲。其内部有link test 功能可以通过探测Link
pulses 来确认连接,如果link 失败则返回auto-negotiation 自协商阶段。
6.5.5.3.2 内部的区别:在10BASE-T 时其内部的扰频器(SCRAMBLE),4B/5B 编译码器,和NRZ/NRZI
转换器是不工作的,在编码转化方面使用串并转化器和NRZ/ Manchester 编码器。PHY 主要是把
接收进来的曼彻斯特编码转化为并行的4B 编码信号,通过MII(RMII、SMII)接口传递给MAC。
7 典型 PHY 分析
7.1 MARVELL 的88E3081
7.1.1 定义:8 端口10/100 Mbits/s 快速以太网收发器
7.1.2 特性
7.1.2.1 每个端口都能独立兼容 IEEE802.3 的100BASE-TX 和10BASE-T 或者100BASE-FX;
7.1.2.2 和 MAC 的接口支持RMII、SMII 和SSMII;
7.1.2.3 提供了标准的 SMI 接口;
7.1.2.4 在端口工作在 100BASE-TX 和10BASE-T 时支持MDI/MDIX 反转功能(CROSSOVER);
7.1.2.5 支持 IEEE802.3u 的自动协商功能;
7.1.2.6 100base-T 的性能超过150 米;
7.1.2.7 在关闭自动协商下的,支持Far End Fault Indicate;
7.1.2.8 支持串行和并行的 LED 灯的指示;
7.1.2.9 低的能量消耗,每个端口平均为300mw;
7.1.2.10 在 100base-FX 下支持PECL 接口;
7.1.2.11 标准的 JTAG 接口;
7.1.2.12 208 脚PQFP 封装。
7.1.3 PHY(M8E3081)原理图参考
7.1.3.1 由 M8E3081 组成的交换系统框图
![]()
![]()
7.1.3.2 88E3081 和隔离变压器及RJ-45 连结示意
![]()
说明:由于M88E3081 支持CROSSOVER 功能,所以选用隔离变压器的时候必须注意是否支持
CROSSOVER 功能。
7.1.3.3 芯片内部功能结构
![]()
发送功能块功能块附加说明:M88E3081 的内部的分层并没有完全按照802.3 规定。
发送:802.3 中规定串并转化在PCS 层;
接收:802.3 中规定CLOCK CRECOVERY 在PMA 层;串并转化 在PCS 层。
接收功能块
![]()
7.1.3.4 原理设计注意事项
7.1.3.4.1 M88E3081 的电源种类比较多,必须为每一种电源提供稳定的电压和足够的电流。
7.1.3.4.2 时钟信号:以RMII 为例,此时提供给M88E3081 的系统时钟为50MHZ,此时钟同样也作
为RMII 信号的参考时钟。由于MAC 和PHY 之间的数据传输使用的时钟都是由外部提供,这就要
求MAC 和PHY 的50M 的时钟必须同源且同相位。
7.1.3.4.3 复位信号:由于M88E3085 没有提供MII 接口,所以PHY 没有比MAC 先复位的必要。
7.1.3.4.4 SMI 接口:M88E3081 要求把MDIO 通过1.5K 的电阻上拉,但是这与一些MAC 的要求不符。
例如GT-48350 要求将MDC 和MDIO 的管脚下拉。实际上M88E3081 的SMI 接口并不稳定,MAC 通过
MDIO 读取M88E3081 寄存器的时候经常会出错。在原理设计的时候可以在MDIO 上预留一个并联的
电容,当然在PCB 布板的时候,必须注意MDC、MDIO 以及数据信号之间的串扰。
7.1.3.4.5 管脚的配置:
管脚SEL_FXTX 通过4.7K 电阻下拉表示端口工作于TX 模式下;管脚SDET+,SDET-是作为复用
管脚来使用的,在TX 模式下SDET+为“1”表示自动协商打开,“0”表示自动协商关闭;TX 模式
下自动协商关闭时SDET-为“1”表示100Mbps,“0”表示10Mbps,当自动协商打开时“1”表示
使用非屏蔽双绞线,“0”表示屏蔽双绞线;在FX 模式下自动协商自动关闭,SDET+,SDET-用来判
断是否有光纤信号的存在,当SDET+大于SDET-时表示有光纤信号存在,否则表示光纤信号不存
在。
管脚PHY_ADR_4,PHY_ADR_3 用来设置M88E3081 的高位地址,其设置值必须符合MAC 的要求;
管脚SEL_RMII 可以设定与MAC 的接口;
管脚DIS_FEFI 通过10K 电阻下拉,表示当自协商关闭时,FEFI 有效;
管脚FX_DUPLEX 通过10K 的电阻上拉,配置为FX 下 Full Duplex;
管脚TX_DUPLEX 通过10K 的电阻上拉,配置为TX 下Full Duplex;
管脚INT#如果不使用,可以通过10K 的电阻上拉;
管脚TDI,TCK,TMS 如果不使用,可以通过4.7K 电阻上拉。TDO 悬空;
管脚TRST#如果不使用,可以通过4.7K 电阻下拉;
管脚CONTROL 通过4.7K 的电阻接地;
管脚RSET-,RSET+通过2K 的电阻相连接;
管脚VREF 通过4.7UF 的钽电容接地,兼容通过4.7UF 钽电容与RSET+相连;
管脚HSDAC-,HSDAC+,TST_PT,LEDSER,LEDENA 悬空;
管脚LEDCLK 兼容10K 上拉和10K 的下拉,用来设定端口的CROSSOVER 功能;
管脚LED_DIST 通过10K 电阻下拉,设为正常的并行LED 状态。
7.1.4 典型 PHY(88E3081) PCB 设计注意事项
7.1.4.1 地平面
7.1.4.3.1 信号地(Signal Ground):地平面不要分割,要连续。信号层要用地或电源平面隔开。
7.1.4.3.2 机壳地(Chassis Ground):隔离变压器下及RJ-45 部分连结的地平面。与信号地的最小
间隔为0.05 英寸。如图七
![]()
图七
7.1.4.2 电源
7.1.4.3.1 88E3081 的电源有两种 3.3V 和 2.5V。其中VDDAH (analog power)和VDDO (digital I/O
power) 是3.3 V 电压;VDD (digital power) 和VDDAL (analog power) 是2.5 Volts。
7.1.4.3.2 其中VDDAH 和VDDO 由3.3V 的电源转化而来;VDD 和VDDAL 由2.5V 的电源转化而来,PCB
灌水时注意把各种电源分割开来。如下图所示:
![]()
![]()
7.1.4.3.3 要避免在 RJ45 和隔离变压器的近RJ45 端灌电源层。
7.1.4.3 信号线:
7.1.4.3.1 时钟信号要先走,要尽量走得短、直,少打过孔。不要将时钟线走到PHY 下面。从50M
时钟源到MAC 的走线长度与50M 时钟源到PHY 的走线长度不能相差过大。
7.1.4.3.2 RX+和RX-(或TX+和TX-)为一对差分信号。一对差分信号走线要在同一面上,要尽量
等长、等间距。发送的差分信号对与接收的差分信号对不要在同一走线层,中间必须间隔着地层。
![]()
7.1.4.3.3 连接REST+/-的2K 电阻要尽量靠近88E3081
7.1.4.3.4 避免将数字信号靠得很近且让走线平行过长。
8 典型PHY 分析
8.1 LUCENT 的LU3X34FTR
8.1.1 定义:4 端口10/100Mbits/s 快速以太网收发器
8.1.2 特性
8.1.2.1 每个端口都能独立兼容 IEEE802.3 的100BASE-TX 和10BASE-T 或者100BASE-FX;
8.1.2.2 MAC 的接口支持RMII 和SMII;
8.1.2.3 提供了标准的 SMI 接口;
8.1.2.4 支持 IEEE802.3u 的自动协商功能;
8.1.2.5 在关闭自动协商下的,支持Far End Fault Indicate;
8.1.2.6 并行的 LED 灯指示;
8.1.2.7 在 100base-FX 下支持PECL 接口;
8.1.2.8 128 脚SQFP 封装。
8.1.3 PHY(LU3X34FTR)原理图参考。
8.1.3.1 由 LU3X34FTR 组成的交换系统框图。
MAC MAC MAC MAC MAC MAC MAC MAC
SWITCH FABRIC
LU3X34FTR LU3X34FTR
RMII/SMII RMII/SMII RMII/SMII RMII/SMII RMII/SMII RMII/SMII RMII/SMII RMII/SMII
MAGNETICS MAGNETICS
RJ45 RJ45 RJ45 RJ45 RJ45 RJ45 RJ45 RJ45
TX+/-
TX+/-
TX+/-
TX+/-
TX+/-
TX+/-
TX+/-
TX+/-
RX+/-
RX+/-
RX+/-
RX+/-
RX+/-
RX+/-
RX+/-
RX+/-
8.1.3.2 芯片的内部的功能框图。
![]()
说明: 以上的两种PHY 的内部主要功能块都相同,对外的接口基本一致;但是内部各功能块的实现功能
的顺序,并不相同。例如扰频器和串并转化器。
8.1.3.3 原理设计注意事项
8.1.3.3.1 原理的设计中的注意事项可以参考 M88E3081,LU3X34FTR 的SMI 接口比M88E3081 要稳定。
8.1.3.3.2 管脚的配置:
管脚MDIO 需要并联一个1.5K 的上拉电阻;
管脚REF100_[0:3]通过一个301 欧的电阻连接到地,作为100BASETX 的参考电阻;
管脚REF10 通过一个4.65K 的电阻连接到地,作为10BASET 的参考电阻;
管脚TPTXTR 通过4.7K 的电阻下拉,上拉表示发送器的输出三态;
管脚ER 通过4.7K 的电阻下拉,上拉表示发送数据的上升沿小于3.5nS。
管脚PHYAD[4:3],必须根据MAC 的要求在相对应的管脚使用4.7K 的上拉电阻(内部已经
有40K 的下拉电阻);
管脚TESTMSEL 直接拉低;
管脚ISOLATE 直接拉低;
管脚INTZ 可以悬空;
管脚FOSEL 内部有40K 的下拉电阻,表示端口工作于双绞线模式,可以通过一个4.7K 的
电阻上拉表示端口工作于光纤模式;
a) 当选择光纤工作模式的时候:
管脚ANEN/SD+和管脚HD10/SD-作为光纤信号检测的正负输入端,不作为配置管脚;
b) 当选择双绞线工作模式的时候:
管脚ANEN/SD+,HD10/SD-PAUSE,FD10,FD100,HD100,PAUSE 能够配置PHY 相应的寄存器,设置
端口的工作状态。
8.1.4 典型 PHY(LU3X34FTR) PCB 设计注意事项
8.1.4.1 地平面
8.1.4.1.1 信号地(Signal Ground): 地平面不要分割,要连续。信号层要用地或电源平面隔开
8.1.4.1.2 机壳地(Chassis Ground):隔离变压器下及RJ-45 部分连结的地平面。与信号地的最小间
隔为0.2 英寸。
8.1.4.2 电源
8.1.4.2.1 LU3X34FTR 利用 3.3V 供电。供给4 个部分使用,分别是数字,模拟,PLL 和输出驱动,这
四个部分的供电必须分开,以免电源之间互相干扰。如下图所示:
![]()
8.1.4.2.2 要避免在 RJ45 和隔离变压器的近RJ45 端灌电源层。
8.1.4.3 信号线:
8.1.4.3.1 时钟信号要先走,要尽量走得短、直,少打过孔。不要将时钟线走到PHY 下面。从50M 时
钟源到MAC 的走线长度与50M 时钟源到PHY 的走线长度不能相差过大。
8.1.4.3.2 RX+和RX-(或TX+和TX-)为一对差分信号。差分线的走线必须尽量短,当信号的走线过大
的时候,走线会变成transmission line,将导致信号失真和EMI;一对差分信号走线要在同一面
上,要尽量等长、等间距。发送的差分信号对与接收的差分信号对不要在同一走线层,中间必须间
隔着地层;差分线的线宽可以为0.005 in.— 0.010 in,线距可以为 0.010 in。(1 inch 英寸=25.4
millimetres 毫米)
8.1.4.3.3 差分信号上必须有 100 欧的差分阻抗;RJ45 和 隔离变压器的“多余”管脚经过75 欧电阻和
高压电容接机壳地。隔离变压器的中间抽头可以连接到电源VDDO,以便于噪音(杂波)的吸收。
如图所示:
8.1.4.3.4 一般情况下,MII 信号的走线的长度不能超过17.1in;RMII 信号的走线的长度不能超过
8.6in;SMII 信号的走线的长度不能超过3.4in。如果超过以上长度必须使用一定的匹配方法,如
使用串行匹配电阻。
9 常见10/100M PHY 的简单介绍。
9.1 MARVELL 的M88E3081: 8 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T 或者100BASE-FX;和MAC 的接口支持RMII、SMII 和SSMII。
9.2 LUCENT 的LU3X34FTR: 4 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T 或者100BASE-FX;和MAC 的接口支持RMII 和SMII。
9.3 LEVEL ONE 的LXT970A: 单端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容
IEEE802.3 的100BASE-TX 和10BASE-T 或者100BASE-FX;和MAC 的接口支持MII。
9.4 LEVEL ONE 的LXT974A: 4 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T 或者100BASE-FX;和MAC 的接口支持MII。
9.5 INTEL 的LXT9785: 8 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T 或者100BASE-FX;和MAC 的接口支持RMII、SMII 和SSMII。
9.6 REALTEK 的RTL8204: 4 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T;有一个端口支持100BASE-FX;和MAC 的接口支持RMII。
9.7 AMD 的AM79C875: 4 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T;有一个端口支持100BASE-FX;和MAC 的接口支持RMII。
9.8 ALTIMA 的AC104QF: 4 端口10/100 Mbits/s 快速以太网收发器;每个端口都能独立兼容IEEE802.3
的100BASE-TX 和10BASE-T;有一个端口支持100BASE-FX;和MAC 的接口支持RMII。
10 参考资料
10.1 Carrier sense multiple access with collision detection (CSMA/CD)access method and physical
layer specifications (IEEE Std 802.3, 2000 Edition)。
10.2 芯片厂商提供的 datasheet: MARVELL 的M88E3081;
LUCENT 的LU3X34FTR;
INTEL 的LXT9785;
LEVEL ONE 的LXT974A。
10 PHY 常见问题分析和调试:
10.1 调试工具和调试方法:
10.1.1 调试工具:万用表,示波器,PC。
10.1.2 调试方法:测试芯片的电源,复位和时钟信号;测试MII 和MDI 上的波形。
10.2 常见问题调试:
10.2.1 现象:所有的端口都不能收发数据。
原因1:PHY 没有正常工作。
判定方法:保证端口具有自动协商能力,在端口没有LINK 的时候,测试PHY 是否有发送FLP 信号,
以此来判断PHY 是否已经工作。当然在MII 下可以测试MII 上的发送和接收时钟信号是否产生。
原因2:隔离变压器的问题。
判定方法:测试对比隔离变压器输入和输出信号是否相同。
附加说明:对于使用crossover 功能的PHY,必须选用支持此功能的隔离变压器。
原因3:MAC 的问题。
判定方法: 利用PC 向交换机发送数据包,测试MII(RMII)的RXD 上是否有相应的信号产生,如果
有问题可能在MAC。
10.2.2 现象:单个端口不能收发。
原因1:焊接问题。
判定方法:检测电路上管脚的焊接及阻容的使用。
原因2:器件问题。
判定方法:按照信号的流向来一步步地测试,分析出问题的位置。将两台PC(装有SNIFFER)连接
在不同的RJ45 口上,利用SNIFFER 向以太网发单帧(最好是广播帧 ),对信号进行跟踪测试。(自
动协商在100M)
A. 当端口没有 LINK 的时候,PHY 必须发送FLP。
B. 隔离变压器必须把信号按照 1:1 的比例转发。
C. 端口连接上 PC 后,快速链路脉冲消失,取而代之的是差分信号,否则PHY 工作不正常。
D. PC 发送一个单帧,这时交换机端口的LINK/ACT 灯会闪,否则PHY 不正常。
E. 利用示波器捕获 RMII 上是否有接收到信号,若没有PHY 不正常。
F. 捕获另一个接有 PC 的端口的RMII 信号是否存在,若没有MAC 工作不正常。
G. 发送方端口的 LINK/ACT 灯同样会有闪,否则PHY 不正常。
10.2.3 现象:数据收发的过程中内容出错(CRC)。
原因1:经过PHY 转发的数据信号不符合标准。
判定方法:对数据信号的波形测试,核对波形是否符合标准。
原因2:数据线上信号之间的相互串扰。(单口数据传输出错)
判定方法:对有疑问的数据线使用飞线。
原因3:数据线干扰了MDC(IO),导致MAC 对端口的LINK 状态的判断出错。(每个口均有数据
传输出错,此现象出现在M88E3081)
判定方法:对MDC(IO)信号使用飞线,或者使用匹配电阻(容)。
10.2.4 现象:交换机的长线性能不好。
原因1:PHY 本身的性能问题。
判定方法:更换PHY。
原因2:差分信号线上匹配电阻的摆放位置。
判定方法: 修改匹配电阻的位置,发送线上的匹配电阻靠近PHY,接收线上的匹配电阻靠近隔离
变压器。
10.2.5 现象:AC104QF 端口LINK 上了以后,对方刚开始发送的数据会丢失。
原因:AC104QF 会对线路的状态进行探测,修改内部的参数,导致在LINK 后的瞬间无法工作。
判定方法:LINK 上以后,过一会儿再发帧,数据不会丢失。
附加说明:当MAC 和PHY 集成的端口数目不一致的时候,比如8 口的MAC 连接着两个4 口的PHY,
此时两个PHY 共享一组MDC(IO)。在这种情况下必须配置好PHY 的地址,PHY 的地址在
MAC 和PHY 上都必须设置统一,否则MDIO 数据流会出错。
10.3 基本信号测试:
利用万用表、频率计以及示波器等工具,对PHY 的时钟、复位、电压和各种波形进行测试,
判断各种信号是否符合要求。具体方法可参考《SWITCH、HUB 电气特性测试规范 Ver:1.1》。以下
是一些波形的参考图。
附加图片说明:
图一:RMII 上的RXD 信号及PHY 的系统时钟
图二:RMII 上的TXD 信号及PHY 的系统时钟
图三:SMI 信号MDC 和MDIO
图四:MLT-3 信号
图一:PHY 的系统时钟及RMII 上的RXD 信号
图二: PHY 的系统时钟及RMII 上的TXD 信号
图三:SMI 信号MDIO 和MDC
图四:MLT-3 信号(一组差分信号对)