首页 > 其他分享 >FPGA与以太网:概念知识

FPGA与以太网:概念知识

时间:2024-03-27 13:23:32浏览次数:13  
标签:MII FPGA IP 知识 PHY TCP MAC 接口 以太网

参考:

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

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

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

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

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

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,下图为发送接收的时序:

 

标签:MII,FPGA,IP,知识,PHY,TCP,MAC,接口,以太网
From: https://www.cnblogs.com/VerweileDoch/p/18098759

相关文章

  • 前端学习-TypeScript菜鸟教程-002-TypeScript基础知识
    菜鸟教程链接基本是阅读教程,记笔记大部分为直接复制基础类型any,number,string,boolean,数组(如letx:number[]=[1,2]或letx:Array<number>=[1,2]),元组(letx:[string,number])enumenumColor{Red,Green,Blue};letc:Color=Color.Blue;void:用于标识方......
  • Qt小知识4.QWindow和QWidget
    1引言QWindow和QWidget都是Qt框架中用于创建和管理窗口的类,但它们在设计上服务于不同的目的和场景。这两者的区别不仅体现在API设计上,还体现在它们在Qt框架中的角色和使用方式上。2典型区别2.1继承结构和依赖QWidget继承自QObject和QPaintDevice,是所有窗口部......
  • Oracle 小知识
    --会乱码SELECTsys_guid()fromdual;--大写uuidSELECTRAWTOHEX(SYS_GUID())FROMdual;--小写SELECTlower(sys_guid())fromdual;--列拼接SELECTname||create_time||idaFROMSTUDENTs;--字符串拼接SELECT'张三'||'李四'||'王五'nameFROM......
  • E810-CQDA1 E810-CQDA2 E810-2CQDA2 E810-XXVDA2 E810-XXVDA4 英特尔®以太网800系列
    E810-CQDA1E810-CQDA2E810-2CQDA2E810-XXVDA2E810-XXVDA4英特尔®以太网800系列Linux性能调优指南(第二篇续)4.0性能故障处理4.1CPU利用率在工作负载运行时检查每个核心的CPU利用率。注意:与总体CPU利用率相比,每个核心的利用率与性能更相关,因为它提供了每个网络队列......
  • 【知识点】接口和抽象类的区别
    相同点:都不能实例化都可以被实现或者继承继承或者实现的子类需要实现全部抽象方法,否则需要声明为抽象类不同点:不同点抽象类接口声明abstractinterface继承/实现extendsimplements构造器可以有构造器不能有构造器方法抽象方法和具体方法抽象方法......
  • FPGA接口系列——UART
    FPGA接口系列——UART一、UART简介UART是一种采用异步串行通信方式的通用异步收发传输器。这里我们主要弄明白两个问题:①什么是串行通信,与并行通信有什么区别②同步串行通信和异步串行通信有什么区别③我们常说的UART和RS232以及RS485又有什么区别?串行通信和并行通信......
  • python理论知识及python解释器和pycharm安装
    【一】编程和编程语言是什么【1】什么是编程编程就是将人类语言转换为计算机能够识别的语言【2】什么是编程语言编程语言就是人与计算机之间的语言【3】为什么要出现编程语言?最根本的原因就是计算机无法识别人类语言【4】为什么要编程?编程就是为了让计算机能够理解......
  • HTML知识巩固(3)
    **HTML常用标签(这段的内容特别多所以可能会分很多段)**1.<h1>-<h6>标签<h1></h1><h2></h2><h3></h3><h4></h4><h5></h5><h6></h6>h标签也一般称为标题标签常常用于写标题这是h1标签效果这是h2标签效果这是h3标签效果这是h4......
  • java毕业设计企业知识产权管理系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在知识经济时代,知识产权已成为企业核心竞争力的重要标志。企业为了保护自主创新成果、维护商业利益和市场竞争力,需要对专利、商标、版权等知识产权进行有......
  • js基础知识进阶版
    雷迪斯andthe乡亲们 欢迎你们来到奇幻的编程世界 回顾一下吧!上篇我们学习了开始使用js、js的输出方式、js的语法、js的数据类型、隐性转换 、 显性转换、js转换为数值、js类型转换的应用、js转换为字符串、js转换为bool类型、js的运算符、js赋值运算符、js的比较运......