一、以太网简介

以太网(Ethernet)是当今最通用的通信协议标准,他规定了包括物理层的连线、电子信号、介质访问协议的内容。

优点:成本低、通信速率高、抗干扰性强

  • 标准以太网:10Mbit/S
  • 快速以太网:100Mbit/S
  • 千兆以太网:1000Mbit/S

1.1、以太网接口

引脚编号 引脚名称 说明
Pin1 TX+ 发送数据+                (发送差分信号:+)
Pin2 TX- 发送数据-                 (发送差分信号:-)
Pin3 RX+ 接收信号+                (接收差分信号:+)
Pin4 NC 未使用
Pin5 NC 未使用
Pin6 RX- 接收信号-                (接收差分信号:-)
Pin7 NC 未使用
Pin8 NC 未使用

1.2、PHY芯片

PHY芯片在发送数据时,首先将MAC(主机:单片机或者FPGA)发送过来的并行数据转化成串行数据,按照物理层的编码规则把数据编码转换为模拟信号,通过网口发送出去。

PHY芯片在接收数据时,首先将网络上(RJ45接口)发送过来的模拟信号转化成数据,再通过通信协议(MII、RMII、SMI)发送给MAC(主机单片机或者FPGA)。

当网卡接入网线时,PHY芯片不断发出脉冲信号来检测对端是否有设备,他们互相协商并确定连接速度、双工模式、是否采用流控制等,这个过程叫做“自动协商”。

总结:PHY芯片在网络通信中的作用是:主芯片 和网络设备 之间的 模拟信号 与 数字信号 的相互转换。

1.3、MII接口

MII即媒体独立接口,也叫介质无关接口。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。

名称 说明
ETH_RXC 该信号提供进行RX(主芯片接收)数据传输时的参考时序
ETH_RXDV RX(主芯片接收)数据有效信号
ETH_RXD[3:0]

数据接收信号。该信号是 4 个一组的数据信号,由 PHY 同步驱动,在MII_RXDV 信号有效时才为有效信号(有效数据)。MII_RXD[0] 为最低有效位,

MII_RXD[3] 为最高有效位。

当 MII_RX_DV 禁止、MII_RX_ER 使能时,特定的MII_RXD[3:0] 值用于传输来自 PHY 的特定信息。

ETH_TXC 该信号由主芯片提供,是主芯片TX发送数据传输时的参考时序
ETH_TXEN 发送数据使能信号
ETH_RXD[3:0]

数据发送信号。该信号是 4 个一组的数据信号,由 MAC 子层同步驱动,在MII_TXEN 信号有效时才为有效信号(有效数据)

MII_TXD[0] 为最低有效位

MII_TXD[3] 为最高有效位。

禁止MII_TXEN 时,发送数据不会对 PHY 产生任何影响

ETH_RESET PHY芯片复位信号
ETH _MDC

数据线,数据输入/输出比特流,用于通过MDC 时钟信号向/从PHY 设备同步传输状态信息。

(主芯片访问PHY芯片寄存器的接口)

ETH _MDIO

时钟线,周期性时钟,提供以最大频率2.5 MHz 传输数据时的参考时序。

MDC的最短高电平时间和最短低电平时间必须均为160 ns。MDC的最小周期必须为400 ns。在空闲状态下,SMI管理接口将 MDC时钟信号驱动为低电平。

(主芯片访问PHY芯片寄存器的接口)

1.4、其他接口简介

 精简介质独立接口:RMII  范降低了 10/100 Mbit/s 下微控制器以太网外设与外部 PHY 间的
引脚数。根据 IEEE 802.3u 标准。

 站管理接口:SMI  允许应用程序通过 2 线时钟和数据线访问任意 PHY 寄存器。该接口支持
访问多达 32 个 PHY。

二、以太网通信协议

2.1、以太网数据包格式(UDP为例)

以太网数据包分为几个部分:

  1. 前导码+帧起始定界符
  2. 以太网帧头(包含:目的MAC地址 + 源MAC地址 + 长度/类型)
  3. 以太网数据(IP首部+数据段(UDP首部、数据段、用户数据))
  4. 校验

        

  •         前导码(Preamble):为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1交替(55-55-55-55-55-55-55))实现数据的同步。
  •  帧起始界定符(SFD,Start Frame Delimiter):使用1个字节的SFD(固定值为0xd5)来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。
  • 目的MAC地址:即接收端物理MAC地址,占用6个字节。MAC地址从应用上可分为单播地址、组播地址和广播地址。
单播地址 第一个字节的最低位为0,比如00-00-00-11-11-11,一般用
于标志唯一的设备;
组播地址 第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于
标志同属一组的多个设备;
广播地址 所有48bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志
同一网段中的所有设备。
  •  源MAC地址:即发送端(本机)物理MAC地址,占用6个字节。
  • 长度/类型   :长度/类型具有两个意义,当这两个字节的值小于1536(0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。
  • 数据:以太网中的数据段长度最小46个字节,最大1500个字节。最大值1500称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素,因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置,通常以太网的有效数据字段小于1500个字节。
  • 帧检验序列(FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了4个字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。CRC数据校验从以太网帧头开始即不包含前导码和帧起始界定符。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。

在这里还有一个要注意的地方就是以太网相邻两帧之间的时间间隔,即帧间隙(IFG,
Interpacket Gap)。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来
恢复并为接收下一帧做准备的时间,IFG的最小值是96 bit time,即在媒介中发送96位原始数
据所需要的时间,在不同媒介中IFG的最小值是不一样的。不管10M/100M/1000M的以太网,两
帧之间最少要有96bit time

  • 10Mbit/s最小时间为:96*100ns = 9600ns;
  • 100Mbit/s最小时间为:96*10ns = 960ns;
  • 1000Mbit/s最小时间为:96*1ns = 96ns。

2.1.1 IP协议(太网数据帧中的数据段部分

IP协议是TCP/IP协议簇中的核心协议,也是TCP/IP协议的载体,IP协议规定了数据传输时
的基本单元和格式。 IP协议在以太网数据帧中的数据段部分

前20个字节和紧跟其后的可选字段是IP数据报的首部,前20个字节是固定的,后面可选字
段是可有可无的,首部的每一行以32位(4个字节)为单位。

  •   版本:4位IP版本号(Version),这个值设置为二进制的0100时表示IPv4,设置为0110时表示IPv6,目前使用比较多的IP协议版本号是4。
  • 首部长度:4位首部长度(IHL,Internet Header Length),表示IP首部一共有多少个32位(4个字节)。在没有可选字段时,IP首部长度为20个字节,因此首部长度的值为5。
  •  服务类型:8位服务类型(TOS,Type of service),该字段被划分成两个子字段:3位优先级字段(现在已经基本忽略掉了)和4位TOS字段,最后一位固定为0。服务类型为0时表示一般服务。
  • 总长度:16位IP数据报总长度(Total Length),包括IP首部和IP数据部分,以字节为单位。我们利用IP首部长度和IP数据报总长度,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16bit,所以IP数据报最长可达65535字节。尽管理论上可以传输长达65535字节的IP数据报,但实际上还要考虑网络的最大承载能力等因素。
  • 标识字段:16位标识(Identification)字段,用来标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。包序
  •   标志字段:3位标志(Flags)字段,第1位为保留位;第2位表示禁止分片(1表示不分片 0:允许分片);第3位标识更多分片(除了数据报的最后一个分片外,其它分片都为1)。
  • 片偏移:13位片偏移(Fragment Offset),在接收方进行数据报重组时用来标识分片的顺序。
  •  生存时间:8位生存时间字段,TTL(Time To Live)域防止丢失的数据包在无休止的传播,一般被设置为64或者128。(每转发一次-1)
  •  协议:8位协议(Protocol)类型,表示此数据报所携带上层数据使用的协议类型,ICMP为1,TCP为6,UDP为17。
  •   首部校验和:16位首部校验和(Header Checksum),该字段只校验数据报的首部,不包含数据部分;校验IP数据报头部是否被破坏、篡改和丢失等。
  •  源IP地址:32位源IP地址(Source Address),即发送端的IP地址,如192.168.1.123
  •  目的IP地址:32位目的IP地址(Destination Address),即接收端的IP地址,如192.168.1.102。
  •   可选字段:是数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍。

2.1.2   UDP协议(太网数据帧中的数据段部分,跟在IP首部后面)

UPD与TCP相比是:无连接、不可靠、高速率的传输方式,格式如下:

源端口号(16bit) 目的端口号(16bit)
UDP长度 (16bit) UDP校验和(16bit)
        UDP数据

UDP首部共8个字节,同IP首部一样,也是一行以32位(4个字节)为单位。

  •     源端口号:16位发送端端口号,用于区分不同服务的端口,端口号的范围从0到65535。
  • 目的端口号:16位接收端端口号。
  • UDP长度:16位UDP长度,包含UDP首部长度+数据长度,单位是字节(byte)。
  • UDP校验和:16位UDP校验和。UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP伪首部,UDP首部和UDP的数据部分。伪首部的数据是从IP数据报头和UDP数据报头获取的,包括源IP地址,目的IP地址,协议类型和UDP长度,其目的是让UDP两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。在大多数使用场景中接收端并不检测UDP校验和。

FPGA自学11——以太网通信相关推荐

  1. FPGA自学笔记--串口通信发送多字节数据(verilog版)

    1.需求分析 关于uart协议实现这部分大家可以参考我上一篇的博客.<FPGA自学笔记--串口通信实现(vivado&verilog版)>.在上一篇博客中,主要实现了将单字节的数据 ...

  2. 基于Xilinx artix 7的FPGA高级应用(二):千兆以太网通信(原理篇)

    本项目是基于Xilinx Artix7 XC7A35T芯片 以太网芯片选用的是RTL8211EG PHY芯片 MAC 和PHY接口标准是GMII 开发工具是vivado 2018.3 FPGA高级应用 ...

  3. (三.0)通过FPGA实现以太网通信原理及理解

    0.0 OSI模型的简单理解 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系 ...

  4. DE2-115 以太网通信之一88E1111网卡接收PC数据

    想利用手头上的DE2-115 写一个关于以太网通信的驱动,经过了这么多天的实验调试终于有了一些认识. 1.我在观察网卡发送数据与接收数据的过程中发现,我从fpga上的一个网卡发送数据,然后另一个网卡接 ...

  5. 以太网通信(1)UDP —— 数据发送

    目录 一.以太网通信简介 1.OSI七层模型 2.以太网数据包解析 3.IP首部校验和计算与检验 二.以太网通信实例 1.整体实验框图 2.发送部分时序图 3.实验代码及仿真结果 总结 一.以太网通信 ...

  6. ETH—Lwip以太网通信

    第39章     ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  7. 查看PLC IP 端口_详解S7-1500的以太网通信数据类型:TCON_IP_v4

    西门子S7系列PLC的开放式以太网通信过程包括如下几个步骤:建立连接(Establish connection).发送/接收数据(Send/receive data).断开连接(Disconnect) ...

  8. 关于PC端与PLC端以太网通信

    一.TCPIP通信 以太网通信基本上最先想到的是TCPIP 就是在PC端的VS上布置服务器端,我用的是VS2015,最长用的是WinSock2.h 大致的步骤就是: a.初始化版本号 b.建立套接字 ...

  9. fpga千兆以太网学习2

    关于PHY芯片 正点原子达芬奇PHY芯片的型号位RTL8211FD. PHY芯片基本功能视频中总结了4点: 1·fpga发送的数字信号由PHY芯片转换为模拟差分信号给RJ-45接口传输,RJ-45的差 ...

最新文章

  1. perm函数c语言_理解C语言(三) 字符串处理函数
  2. spring加载顺序
  3. 解读小米MoGA:超过MobileNetV3的移动端GPU敏感型搜索
  4. 举例什么时候会用到 call(), apply()
  5. 寒冰王座(DGA最长路/完全背包)
  6. URLScan工具配置方法第1/2页
  7. linux线程池简单实例
  8. 批量执行命令(SSH)
  9. Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解
  10. 不是程序员看不懂的21个梗,当你改错一行代码的时候...
  11. (56)UART外设驱动协议(一)(第12天)
  12. 数据通信技术初级工程师证题库
  13. 一个“技术文化人”的片段感悟
  14. Spark机器学习(一)—Spark相关
  15. MacBook入门之——添加打印机
  16. 技术干货 | Linkis实践:新引擎实现流程解析
  17. 苹果如何不显示云服务器照片,iPhone12如何隐藏照片 iPhone12不显示照片的三种方法...
  18. 从懵逼到恍然大悟之Java中RMI的使用
  19. Xmanager5 Passive 图形化界面安装时,界面出来之后鼠标点不了,鼠标点击无反应
  20. IOC框架---什么是IOC

热门文章

  1. 自称菜鸟的二本大龄程序员居然拿到百度offer,还有嘉实offer(百度三面面经)
  2. leetcode 5473-灯泡开关4
  3. 【HTML502】HTML基础02_标题_段落_文本格式化_链接
  4. android微信分享icon不能显示,微信分享 icon图片不显示问题
  5. iOS支付宝、微信支付
  6. 八分量基于区块链技术赋能我国工业互联网建设
  7. 【转】三款免费的在线项目管理工具
  8. 支持向量机(SVM)、支持向量回归(SVR)
  9. Vue3基础难点总结
  10. C4996:#(The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:)