网口的那些事儿——如何设计一个网口电路和应用

一、以太网的简单介绍

早期的以太网标准是采用同轴线作为传输介质,网络是一种串联式共享总线网络,各主机通过遵循CSMA/CD(CarrierSenseMultipleAccesswithCollisionDetection)协议来保证网络的正常通讯。

在共享式以太网之时,使用一种称为抽头的设备建立与同轴电缆的连接。须用特殊的工具在同轴电缆里挖一个小洞,然后将抽头接入。此项工作存在一定的风险:因为任何疏忽,都有可能使电缆的中心导体与屏蔽层短接,导致这个网络段的崩溃。同轴电缆的致命缺陷是:电缆上的设备是串连的,单点的故障可以导致这个网络的崩溃。

这里写图片描述

80年代末期,非屏蔽双绞线(UTP)出现,并迅速得到广泛的应用。网络的物理拓扑变为星形,逻辑拓扑依旧是总线的。
这里写图片描述

HUB半双工仅仅是物理上的连接设备。

后来交换机出现了,才算是真正的以太网网络出现。
这里写图片描述

以太网的工作机制:自动协商,自动协商的主要功能就是使物理链路两端的设备自动通过交互信息 自动选择一种运行模式来运行。自动协商的内容主要包括双工模式 运行速率 流量控制等内容 一旦协商通过 链路两端的设备就锁定在这样一种运行模式下直到重新引导设备或重新插拔电缆。

二、常用概念解释

比特率:单位时间内传输二进制的位数,单位:bps
波特率:单位时间内传输码元的个数,单位:Baudps
带宽:信号频率上界和下界之差,度量介质传输能力
误码率:衡量数据在规定时间内数据传输精确性的指标

MII总线:在IEEE802.3中规定的MII总线是一种用于将不同类型的PHY与相同网络控制器(MAC)相连接的通用总线.网络控制器可以用同样的硬件接口与任何PHY
GMII(Gigabit MII):采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps.同时兼容MII所规定的10/100 Mbps工作方式,GMII接口数据结构符合IEEE以太网标准.该接口定义见IEEE 802.3-2000.

其中:
发送器:
• GTXCLK——吉比特TX..信号的时钟信号(125MHz)
• TXCLK——10/100Mbps信号时钟
• TXD[7..0]——被发送数据
• TXEN——发送器使能信号
• TXER——发送器错误(用于破坏一个数据包)
注:在千兆速率下,向PHY提供GTXCLK信号,TXD,TXEN,TXER信号与此时钟信号同步.否则,在10/100Mbps速率下,PHY提供TXCLK时钟信号,其它信号与此信号同步.其工作频率为25MHz(100M网络)或2.5MHz(10M网络).
接收器:
• RXCLK——接收时钟信号(从收到的数据中提取,因此与GTXCLK无关联)
• RXD[7..0]——接收数据
• RXDV——接收数据有效指示
• RXER——接收数据出错指示
• COL——冲突检测(仅用于半双工状态)
管理配置
• MDC——配置接口时钟
• MDIO——配置接口I/O
管理配置接口控制PHY的特性.该接口有32个寄存器地址,每个地址16位.其中前16个已经在”IEEE 802.3,2000-22.2.4 Management Functions”中规定了用途,其余的则由各器件自己指定.

RMII(Reduced Media Independant Interface):简化媒体独立接口是标准的以太网接口之一,比MII有更少的I/O传输.
RMII口是用两根线来传输数据的,MII口是用4根线来传输数据的,GMII是用8根线来传输数据的.MII/RMII只是一种接口,对于10Mbps线速,MII的时钟速率是2.5MHz就可以了,RMII则需要5MHz;对于100Mbps线速,MII需要的时钟速率是25MHz,RMII则是50MHz.

嵌入式系统可以用来接网口的有:MII,RMII,GMII,RGMII

以太网MAC地址: MAC地址有48位,但它通常被表示为12位的点分十六进制数。MAC地址全球唯一,由IEEE对这些地址进行管理和分配。每个地址由两部分组成,分别是供应商代码和***。其中前24位二进制代表该供应商代码。剩下的24位由厂商自己分配。

三、网口的组成和硬件设计

这里写图片描述
网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中.。
对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型:
1. CPU集成MAC与PHY;
2. CPU集成MAC,PHY采用独立芯片;
3. CPU不集成MAC与PHY,MAC与PHY采用集成芯片;

或则从硬件的角度来说以太网接口电路是由MAC控制器(一般的嵌入式处理器自带)和物理层接口(PHY)组成。
下面我直接上一张原理图来看看以太网网口电路的组成和设计到的一些引脚定义。


处理器自带RGMII
这里写图片描述

一般设计到电路设计的,我们会关系的是时钟,电压和信号线(滤波等问题不在这里的谈论范围)。
电路组成:
1、KSZ9031芯片,25MHz晶振(该电路使用的是无源晶振,外加2个18pF电容)提供25MHz的时钟电路,RGMII总线连接网络控制器(MAC)和PHY芯品。
2、KRJ-320DNL网口接头,自带变压器。
3、外部使用3V3和1V2电压供电


处理器不自带MII总线
本人比较喜欢用W5300,因此也以W5300为分析
W5300datasheet里的第一句话便是High-Performance Internet Connectivity Solution

这里写图片描述
W5300 is a 0.18 µm CMOS technology single chip into which 10/100 Ethernet controller, MAC,
and TCP/IP are integrated. W5300 is designed for Internet embedded applications where easy
implementation, stability, high performance, and effective cost are required.
由上面这段话可以看出W5300是集成MAC与PHY的。


四、后记

由于时间关系,下次我们再深入点去谈论下MAC和PHY的工作原理。包括以太网一些其他的问题。
最近博主也在搭建自己的博客主页,正在建立的初步阶段还是比较简陋,干货会慢慢上架,写贴上去引点流量,可能需要1-2个月才能看起来比较牛逼。。。。。
https://jkfeng1010.github.io/