FPGA与以太网:概念知识与基本配置

参考:

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍-CSDN博客

OSI七层模型、TCP/IP四层模型(超详细!!!!!)-CSDN博客

TCP/IP LWIP FPGA 笔记_rltcpnet和lwip-CSDN博客

正点原子;

达芬奇Pro的以太网 PHY 芯片型号是YT8531(底板);

以太网概述

以太网(Ethernet)是当今现有局域网采用的最通用的通信协议标准,该标准定义了在局域网中采用的电 缆类型和信号处理方法。

以太网凭借其成本低、通信速率高、抗干扰性强等优点被广泛应用在网络远程监控、交换机、工业自动化等对通信速率要求较高的场合。

以太网是一种产生较早,使用相当广泛的局域网。

其最初是由 Xerox(施乐)公司创建并由 Xerox、 Intel 和 DEC 公司联合开发的基带局域网规范,后来被电气与电子工程师协会(IEEE)所采纳作为 802.3 的 标准。

以太网的分类有标准以太网(10Mbit/s)、快速以太网(100Mbit/s)和千兆以太网(1000Mbit/s)。

随着以 太网技术的飞速发展,市场上也出现了万兆以太网(10Gbit/s),它扩展了 IEEE802.3 协议和 MAC 规范, 使其技术支持 10Gbit/s 的传输速率。

在实际应用中,千兆以太网理论上最高通信速率为 1000Mbit/s,可以 胜任大部分的使用场景。

以太网通信离不开连接端口的支持,网络数据连接的端口就是以太网接口。

以太网接口类型有 RJ45 接口、RJ11 接口(电话线接口)、SC 光纤接口等。

其中 RJ45 接口是我们现在最常见的网络设备接口 (如:电脑网口),我们开发板使用的就是这种接口。

RJ45 接口

RJ45 接口俗称“水晶头”,专业术语为 RJ45 连接器,

由插头(接头、水晶头)和插座(母座)组成, 属于双绞线以太网接口类型。

RJ45 插头只能沿固定方向插入,设有一个塑料弹片与 RJ45 插槽卡住以防止脱落。 RJ45 接口样式如图 52.1.1 所示:

 

 

RJ45 接口定义以及各引脚功能在不同通信速率下的定义有区别,

图 52.1.2 是在 10M/100M 通信速率下 的定义,由下图可知,RJ45 插座只使用了 1、2、3、6 这四根线,

其中 1、2 这组负责传输数据(TX+、 TX-),而 3、6 这组负责接收数据(RX+、RX-),另外四根线是备用的。

 

从硬件的角度来说,以太网接口电路主要由 MAC(Media Access Control)控制器和物理层接口 PHY (Physical Layer,PHY)两大部分构成。

MAC 指媒体访问控制子层协议,它和 PHY 接口既可以整合到单颗芯片内,也可以独立分开,

对于本次设计来说,MAC 控制器由 FPGA 实现,PHY 芯片指开发板板载的 以太网芯片。

PHY 在发送数据的时候,接收 MAC 发过来的数据(对 PHY 来说,没有帧的概念,都是数据而不管什么地址,数据还是 CRC),

把并行数据转化为串行流数据,按照物理层的编码规则把数据编码转换为模拟 信号发送出去,接收数据时的流程反之。

PHY 还提供了和对端设备连接的重要功能,并通过 LED 灯显示 出自己目前的连接状态和工作状态。

当我们给网卡接入网线的时候,PHY 芯片不断发出脉冲信号来检测对 端是否有设备,

它们通过标准的“语言”交流,互相协商并确定连接速度、双工模式、是否采用流控等。

通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为 Auto Negotiation,即自协商。

 

MDIO 接口和PHY配置

MAC 和 PHY 芯片有一个配置接口,即 MDIO 接口,

可以配置 PHY 芯片的工作模式以及获取 PHY 芯 片的若干状态信息。

 

PHY 芯片内部包含一系列寄存器,用户通过这些寄存器来配置 PHY 芯片的工作模式

以及获取 PHY 芯片的若干状态信息,如连接速率、双工模式、自协商状态等。

这些寄存器

FPGA 通过 MDIO 接口对 PHY 芯片内部的寄存器进行配置。

通常情况下,PHY 芯片在默认状态下也可以正常工作,在做以太网通信实验时,对 MDIO 接口的配置不是必须的。

 

SMI 接口

MDIO 接口也称为 SMI 接口(Serial Management Interface,串行管理接口),SMI 提供了访问权限设备控制和状态寄存器,其配置方式和 IIC 类似。

控制 SMI 的寄存器集由 32 个 16 位寄存器组成,包括所有需要的 IEEE 指定寄存器。此外,通过设备寄存器 31 可以访问寄存器的附加寄存器。

包括

ETH_MDC(数据管 理时钟)

ETH_MDIO(数据管理输入输出)两条信号线。

ETH_MDC 为 ETH_MDIO 提供时钟,(MDIO在 MDC 信号的上升边缘上采集。)

ETH_MDC 的最大时钟不能超过 12.5Mhz。(MDC 采集速度应在 0 MHz 到 25mhz。)

ETH_MDIO 为双向数据引脚,既用于发送数据,也用于接收数据。

数据通过 SMI 使用具有可选和任意长度前导的 32 位帧传输,下图(文档26页)显示了用于读操作和写操作的SMI框架格式。

 

MDIO 接口的读写通信帧格式如下图所示:

Z:高阻态

Preamble:32 位前导码,由 MAC 端发送 32 位逻辑“1”,用于同步 PHY 芯片。

ST(Start of Frame):2 位帧开始信号,用 01 表示。

OP(Operation Code):2 位操作码,读:10 写:01。

PHYAD(PHY Address):5 位 PHY 地址,

  用于表示与哪个 PHY 芯片通信,因此一个 MAC 上可以连接多个 PHY 芯片

  (32个)。

REGAD(Register Address):5 位寄存器地址,可以表示 32 个寄存器。

TA(Turnaround):2 位转向,

  在读命令中,MDIO 在此时由 MAC 驱动改为 PHY 驱动,

  在第一个 TA 位,MDIO 引脚为高阻状态,

  第二个 TA 位,PHY 将 MDIO 引脚拉低,准备发送数据;

  在写命令中,不需 要 MDIO 方向发生变化,MAC 固定输出 2’b10,随后开始写入数据。

DATA:16 位数据,

  在读命令中,PHY 芯片将对应的 PHYAD 的 REGAD 寄存器的数据写到 DATA 中;

  在写命令中,PHY 芯片将接收到的 DATA 写入 REGAD 寄存器中。

  需要注意的是,在 DATA 传输的过 程中,高位在前,低位在后。

IDLE:空闲状态,

  此时 MDIO 为无源驱动,处于高阻状态,但一般用上拉电阻使其上拉至高电平。

TCP/IP四层模型

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)

是指能够在多个不同网络间实现信息传输的协议簇。

TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,

只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议

TCP/IP是在网络的使用中的最基本的通信协议。
TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。
TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。
TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

LWIP

LWIP 是瑞典计算机科学院(SICS)的 Adam Dunkels 等开发的一个小型开源的 TCP/IP 协议栈,

是 TCP/IP 的一种实现方式。

LWIP 是轻量级 IP 协议,有无操作系统的支持都可以运行。

LWIP 实现的重点是在保持 TCP协议主要功能的基础上减少对 RAM的占用,

它只需十几KB的RAM和40K左右的ROM就可以运行,

这使 LWIP 协议栈适合在低端的嵌入式系统中使用。

关于 LWIP 的详细信息大家可以去 http://savannah.nongnu.org/projects/lwip/这个网站去查阅。

MAC和PHY结构

从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意:

上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,

由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,

MAC集成进CPU而将PHY留在片外,这种结构是最常见的。

下图是网络接口内部结构图,虚框表示CPU,MAC集成在CPU中,PHY芯片通过MII接口与CPU上的MAC连接:

MAC

MAC(Media Access Control) 即媒体访问控制层协议。

MAC由硬件控制器及MAC通信协议构成。

该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC硬件框图如下图所示:

在发送数据的时候,MAC协议可以事先判断是否可以发送数据,

如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;(Packet)

在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。

该层协议是以太网MAC由IEEE-802. 3以太网标准定义。一般以太网MAC芯片的一端连接PCI总线,另一端连接PHY芯片上通过MII接口连接。

PHY

PHY(Physical Layer)是IEEE802.3中定义的一个标准模块,

STA(Station Management Entity,管理实体,一般为MAC或CPU)通过MIIM(MII Manage Interface)

对PHY的行为、状态进行管理和控制,而具体管理和控制动作是通过读写PHY内部的寄存器实现的。

PHY的基本结构如下图:

 

 

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,对它来说,都是数据)

然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去,收数据时的流程反之。


PHY还有个重要的功能就是实现CSMA/CD的部分功能,

它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,

一旦检测到网络空闲,再等待一个随机时间后将送数据出去.

如果两个碰巧同时送出了数据,那样必将造成冲突,这时候冲突检测机构可以检测到冲突,

然后各等待一个随机的时间重新发送数据。

 

PHY寄存器的地址空间为5位,

从0到31最多可以定义32个寄存器

(随着芯片功能不断增加,很多PHY芯片采用分页技术来扩展地址空间以定义更多的寄存器),

IEEE802.3定义了地址为0-15这16个寄存器的功能,地址16-31的寄存器留给芯片制造商自由定义,如下表所示:

MII

MII(Media Independent interface)即介质无关接口,它是IEEE-802.3定义的行业标准,

是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号,如下图所示:

 信号定义如下:

 

 

MAC 通过MIIM 接口读取PHY 状态寄存器以得知目前PHY 的状态。

例如连接速度、双工的能力等。

也可以通过 MIIM设置PHY的寄存器达到控制的目的。

例如流控的打开关闭、自协商模式还是强制模式等。

MII以4位半字节方式传送数据双向传输,时钟速率25MHz。(4x25)

其工作速率可达100Mb/s。当时钟频率为2.5MHz时,对应速率为10Mb/s。

MII接口虽然很灵活但由于信号线太多限制多接口网口的发展,后续又衍生出RMII,SMII等。

RMII

RMII(Reduced Media Independant Interface),精简MII接口,

节省了一半的数据线。

RMII收发使用2位数据进行传输,收发时钟均采用50MHz时钟源。信号定义如下:

其中CRS_DV是MII中RX_DV和CRS两个信号的合并,当物理层接收到载波信号后CRS_DV变得有效,将数据发送给RXD。

当载波信号消失后,CRS_DV会变为无效。

在100M以太网速率中,MAC层每个时钟采样一次RXD[1:0]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[1:0]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟。

 

SMII

SMII(Serial Media Independant Interface),串行MII接口。

它包括TXD,RXD,SYNC三个信号线,共用一个时钟信号,此时钟信号是125MHz,信号线与此时钟同步。

信号定义如下:

从波形可以看出,SYNC变高后的10个时钟周期内,TXD依次输出一组10bit的数据即TX_ER,TX_EN,TXD[0:7],

这些控制信息和MII接口含义相同。

在100M速率中,每一组的内容都是变换的,在10M速率中,每一组数据需要重复10次,采样任一一组都可以。

 

GMII

GMII(Gigabit Media Independant Interface),千兆MII接口。

GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。(8x125)SDR工作模式;

同时兼容MII所规定的10/100 Mbps工作方式。

GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。

信号定义如下:

RGMII

接口定义见 IEEE 802.3-2000

RGMII(Reduced Gigabit Media Independant Interface),精简GMII接口。

相对于GMII相比,RGMII具有如下特征:

发送/接收数据线由8条改为4条
TX_ER和TX_EN复用,通过TX_CTL传送
RX_ER与RX_DV复用,通过RX_CTL传送
1   Gbit/s速率下,时钟频率为125MHz
100 Mbit/s速率下,时钟频率为25MHz
10  Mbit/s速率下,时钟频率为2.5MHz


信号定义如下:

虽然RGMII信号线减半,

TXC/RXC时钟仍为125Mhz,

为了达到1000Mbit的传输速率,

TXD/RXD信号线使用DDR工作模式:

时钟上升沿发送接收GMII接口中的TXD[3:0]/RXD[3:0],

时钟下降沿发送接收TXD[7:4]/RXD[7:4],

并且信号TX_CTL反应了TX_EN和TX_ER状态,

即在TXC上升沿发送TX_EN,下降沿发送TX_ER,

同样的道理试用于RX_CTL,下图为发送接收的时序:

 RGMII 无补偿工作时序

  观察图中 RX_CLK(at Transmitter) 和 RX_CLK(at Receiver),RX_CLK(at Transmitter)为 HPY 时钟,在上升沿时对应输出数据为 RXD[3:0] 和 RXDV,在下降沿时对应出数据为 RXD[7:4] 和 RXERR,

即一个时钟周期对应 8bit 数、一个有效使能和一个错误信号。

RX_CLK(at Receiver) 是在 RX_CLK(at Transmitter) 的基础上相移 90°左右而得,这样采集到的数据会更加稳定。

posted @   NoNounknow  阅读(530)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示