网口扫盲一:Mac与Phy组成原理的简单分析

2019-01-17 17:21:31 17

网络适配器又称网卡或网络接口卡(NIC),英文名Network Interface Card.它是使计算机联网的设备.平常所说的网卡就是将PC机和LAN连接的网络适配器.网卡(NIC) 插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其它设备能够识别的格式,通过网络介质传输.数据在计算机总线中传输是并行方式即数据是肩并肩传输的,而在网络的物理缆线中说数据以串行的比特流方式传输的,网卡承担串行数据和并行数据间的转换.网卡在发送数据前要同接收网卡进行对话以确定最大可发送数据的大小,发送的数据量的大小,两次发送数据间的间隔,等待确认的时间,每个网卡在溢出前所能承受的最大数据量,数据传输的速度.

它的主要技术参数为带宽,总线方式,电气接口方式等.它的基本功能为:从并行到串行的数据转换,包的装配和拆装,网络存取控制,数据缓存和网络信号.

网卡的主要工作原理:发送数据时, 计算机把要传输的数据并行写到网卡的缓存,网卡对要传输的数据进编码(10M以太网使用曼切斯特码,100M 以太网使用差分曼切斯特码), 串行发到传输介质上.接收数据时, 则相反.

1. 网卡的基本构造

以最常见的PCI 接口的网卡为例,一块网卡主要由 PCB 线路板,主芯片,数据汞,金手指(总线插槽接口) ,BOOTROM,EEPROM,晶振,RJ45接口,指示灯,固定片等等,以及一些二极管,电阻电容等组成.网卡包括硬件和固件程序(只读存储器中的软件例程),该固件程序实现逻辑链路控制和媒体访问控制的功能,还记录唯一的硬件地址即mac地址,网卡上一般有缓存.网卡须分配中断irq及基本i/o端口地址,同时还须设置基本内存地址(base memory address)和收发器(transceiver)

  1. 网卡的控制芯片:网卡中最重要元件,是网卡的控制中心,有如电脑的cpu,控制着整个网卡的工作,负责数据的传送和连接时的信号侦测.早期的10/100Mbps的双速网卡会采用两个控制芯片(单元)分别用来控制两个不同速率环境下的运算,而目前较先进的产品通常只有一个芯片控制两种速度.

常见的 10/100/1000M bps自适应网卡芯片有 Intel 的8254* 系列,Broadcom 的BCM57**系列,Marvell的
88E8001/88E8053/88E806*系列,Realtek的RTL8169S-32/64,RTL8110S-32/64(LOM),RTL8169SB,RTL8110SB(LOM) ,RTL8168(PCI Express) ,RTL8111(LOM,PCI Express) 系列,VIA 的VT612*系列等等.

  1. 晶体震荡器:负责产生网卡所有芯片的运算时钟,其原理就象主板上的晶体震荡器一样,通常网卡是使用20或25hz的晶体震荡器.千兆网卡使用62.5MHz或者125MHz晶振.

  2. boot rom插槽:如无特殊要求网卡中的这个插槽处在空置状态.一般是和boot rom芯片搭配使用,其主要作用是引导电脑通过服务器引导进入操作系统.boot rom就是启动芯片,让电脑可以在不具备硬盘,软驱和光驱的情况下,直接通过服务器开机,成为一个无硬盘无软驱的工作站.没有软驱就无法将资料输出,这样也可以达到资料保密的功能.同时,还可以节省下购买这些电脑部件的费用.在使用boot rom时要注意自己使用何种网络操作系统,通常有boot rom for nt,boot rom for unix,boot rom for netware等,boot rom启动芯片要自行购买.

  3. eeprom:从前的老式网卡都要靠设置跳线或是dip开关来设定irq,dma和i/o port等值,而现在的网卡则都使用软件设定,几乎看不见跳线的存在.各种网卡的状态和网卡的信息等数据都存在这颗小小的eeprom里,通过它来自动设置.里面记录了网卡芯片的供应商ID,子系 统供应商ID,网卡的MAC地址,网卡的一些配置,如SMI总线上PHY的地址,BOOTROM的容量, 是否启用BOOTROM引导系统等东西

  4. 数据汞:这是消费级PCI 网卡上都具备的设备,数据汞也被叫做网络变压器或可称为网络隔离变压器.它在一块网卡上所起的作用主要有两个,一是传输数据,它把 PHY 送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端;一是隔离网线连接的不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备.除此而外,数据汞还能对设备起到一定的防雷保护作用.

  5. rj-45和bnc接头: rj-45是采用双绞线作为传输媒介的一种网卡接口,在100mbps网中最常应用.bnc是采用细同轴电缆作为传输媒介.

  6. 信号指示灯:在网卡后方会有二到三个不等的信号灯,其作用是显示目前网络的连线状态,通常具有tx和rx两个信息.tx代表正在送出资料,rx代表正在接收资料,若看到两个灯同时亮则代表目前是处于全双工的运作状态,也可由此来辨别全双工的网卡是否处于全双工的网络环境中.也有部分低速网卡只用一个灯来表示信号,通过不同的灯光变换来表示网络是否导通.

  7. WOL:有些网卡会有WOL的功能, WOL网络开机的功能(wake on line).它可由另外一台电脑,使用软件制作特殊格式的信息包发送至一台装有具wol功能网卡的电脑,而该网卡接收到这些特殊格式的信息包后,就会命令电脑打开电源,目前已有越来越多的网卡支持网络开机的功能.

2. 网卡的分类

  • 以传输速率可分为:

10Mbps网卡,100Mbps网卡,1000Mbps网卡,10GMbps网卡.目前常见的三种架构有10baset,100basetx与base2,前两者是以rj-45双绞线为传输媒介,传输速率分别为10Mbps和100Mbps.而双绞线又分为category 1至category 5五种规格,分别有不同的用途以及频宽,category通常简称cat,只要使用cat5规格的双绞线皆可用于10/100mbps的网卡上.而10base2架构则是使用细同轴电缆作为传输媒介,传输速率只有10Mbps.这里提到的10Mbps或100Mbps是指网卡上的最大传送速率,而并不等于网络上实际的传送速度,实际速度要考虑到传送的距离,线路的品质,和网络上是否拥挤等因素,这里所谈的bps指的是每秒传送的bit(1个byte=8个bit).而100Mbps则称为高速以太网卡(fast ethernet),多为PCI/PCI-E接口.当前市面上的pci网卡多具有10/100/1000Mbps自动切换的功能,会根据所在的网络连线环境来自动调节网络速度.1000 Mbps以太网卡多用于交换机或交换机与服务器之间的高速链路或backbone.

  • 以接口类型可分为:

ISA接口网卡,PCI/ PCI-X/ PCI-E接口网卡,USB接口网卡和笔记本电脑专用的PCMCIA接口.现在的ISA接口的网卡均采用16bit的总线宽度,其特性是采用programmed i/o的模式传送资料,传送数据时必须通过cpu在i/o上开出一个小窗口,作为网卡与pc之间的沟通管道,需要占用较高的cpu使用率,在传送大量数据时效率较差. PCI接口的网卡则采用32bit的总线频宽,采用bus master的数据传送方式,传送数据是由网卡上的控制芯片来控制,不必通过i/o端口和cpu,可大幅降低cpu的占用率,目前产品多为10/100Mbps双速自动侦测切换网卡.

  • 以传输方式可分为:

半双工网卡,全双工网卡.半双工网卡无法同一时间内完成接收与传送数据的动作,如10base2使用细同轴电缆的网络架构就是半双工网络,同一时间内只能进行传送或接收数据的工作,效率较低.要使用全双工的网络就必须要使用双绞线作为传输线才能达到,并且也要搭配使用全双工的集线器,要使用10base或100basetx的网络架构,网卡当然也要是全双工的产品.

  • 以传输介质可分为:

rj-45双绞线的网卡与bnc的同轴电缆两种,有的网卡同时具有两种接头,可适用于两种网络线,但无法两个接头同时使用.另外还有光纤接口的网卡,通常带宽在1000 Mbps.

  • 其它网卡:

从网络传输的物理媒介上还有无线网卡,利用2.4GHz的无线电波来传输数据.目前ieee有两种规范802.11和802.11b,最高传输速率分别为2Mbps和11Mbps,接口有PCI,USB和PCMCIA几种. 

1. general

下图是网口结构简图.网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中.

对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型:

  1. CPU集成MAC与PHY;

  2. CPU集成MAC,PHY采用独立芯片;

  3. CPU不集成MAC与PHY,MAC与PHY采用集成芯片;

本例中选用方案二做进一步说明,因为CPU总线接口很常见,通常都会做成可以像访问内存一样去访问,没必要拿出来说,而Mac与PHY之间的MII接口则需要多做些说明.

下图是采用方案二的网口结构图.虚框表示CPU,MAC集成在CPU中.PHY芯片通过MII接口与CPU上的Mac连接.

在软件上对网口的操作通常分为下面几步:

  1. 为数据收发分配内存;

  2. 初始化MAC寄存器;

  3. 初始化PHY寄存器(通过MIIM);

  4. 启动收发; 

2. MII

MII接口是MAC与PHY连接的标准接口.因为各厂家采用了同样的接口,用户可以根据所需的性能、价格,采用不同型号,甚至不同公司的phy芯片.

需要发送的数据通过MII接口中的收发两组总线实现.而对PHY芯片寄存器的配置信息,则通过MII总的一组串口总线实现,即MIIM(MII Management).

下表列出了MII总线中主要的一些引脚

PIN Name

Direction

Description

TXD[0:3]

Mac to Phy

Transmit Data

TXEN

Mac to Phy

Transmit Enable

TXCLK

Mac to Phy

Transmit Clock

RXD[0:3]

Phy to Mac

Receive Data

RXEN

Phy to Mac

Receive Enable

RXCLK

Phy to Mac

Receive Clock

MDC

Mac to Phy

Management Data Clock

MDIO

Bidirection

Management Data I/O

 

 

 

 

 

 

 

 

 

 

 

 

MIIM只有两个线, 时钟信号MDC与数据线MDIO.读写命令均由Mac发起, PHY不能通过MIIM主动向Mac发送信息.由于MIIM只能有Mac发起, 我们可以操作的也就只有MAC上的寄存器.

3. DMA

收发数据总是间费时费力的事,尤其对于网络设备来说更是如此.CPU做这些事情显然不合适.既然是数据搬移, 最简单的办法当然是让DMA来做.毕竟专业的才是最好的.

这样CPU要做的事情就简单了.只需要告诉DMA起始地址与长度, 剩下的事情就会自动完成.

通常在MAC中会有一组寄存器专门用户记录数据地址, tbase与rbase, cpu按MAC要的格式把数据放好后, 启动MAC的数据发送就可以了.启动过程常会用到寄存器tstate.

4. MAC

CPU上有两组寄存器用与MAC.一组用户数据的收发,对应上面的DMA;一组用户MIIM,用户对PHY进行配置.两组寄存器由于都在CPU上,配置方式与其他CPU上寄存器一样,直接读写即可.数据的转发通过DMA完成.  

5. PHY

该芯片是一个10M/100M Ethernet网口芯片

PHY芯片有一组寄存器用户保存配置,并更新状态.CPU不能直接访问这组寄存器,只能通过MAC上的MIIM寄存器组实现间接访问.同时PHY芯片负责完成MII总线的数据与Media Interface上数据的转发.该转发根据寄存器配置自动完成,不需要外接干预.