通过FPGA实现以太网通信原理及理解

时间:2024-03-15 10:34:28

0.0 OSI模型的简单理解


OSI(Open System Interconnect),即开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互联的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即OSI开放系统互连参考模型。

通过FPGA实现以太网通信原理及理解通过FPGA实现以太网通信原理及理解

这里根据笔者的理解以及相关资料的查询,觉得这个OSI通信与笔者所学专业有很大的差距,因此这里不详细展开,只是最一些简单的总结,帮助下面的理解以及作为知识的积淀。上图为通信原理课程中老师的PPT图片,所学的通信原理属于物理层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3.HTML.等。
表达层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。例如图片的格式可以是PNG,BMP等
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。类似于断点续传
FPGA所关注的是一下四层。
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。
一下两层都是有IEEE802.3指定的标准
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Medium access control,MAC)子层。
物理层(Physical Layer)在局部局域网上传送数据帧(data frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。就是RJ45以及PHY芯片都是属于物理层。
通俗的理解就是不断在原始数据中加入一些提前约定好的数据作为标志信息,从而为数据的传输提供便利。如下图

通过FPGA实现以太网通信原理及理解

通过FPGA实现以太网通信原理及理解
这篇文章特别好,帮助理解:如何生动形象、切中要点地讲解 OSI 七层模型和两主机传输过程?

0.1 基础知识之以太网简介


以太网(Ethernet)不同于互联网,是当今现有局域网采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。以太网凭借其成本低、通信速率高、抗干扰性强等优点被广泛应用在网络远程监控、交换机、工业自动化等对通信速率要求较高的场合。
电气与电子工程师协会(IEEE)所采纳一些外企巨鳄的基带局域网规范作为802.3的标准(这大概就是行业规则的制定)。以太网分为标准以太网(10Mbit/s),快速以太网(100Mbit/s)以及千兆以太网(1000Mbit/s),甚至出现了万兆以太网(10Gbit/s,需要修改IEEE802.3协议与MAC规范)!!
以太网通信离不开连接端口的支持,网络数据连接的端口就是以太网接口。以太网接口类型有RJ45接口,RJ11接口(电话线接口),SC光纤接口等。其中RJ45接口是我们现在最常见的网络设备接口。就是我们俗称的水晶头。

通过FPGA实现以太网通信原理及理解

通过FPGA实现以太网通信原理及理解

1 内部原理及构成


PHY(fai–读四声)芯片
这里主要使用的就是PHY芯片,他的作用就是将网口与数据与FPGA数据进行互联。这里可以理解其就是FPGA将数据传输给PHY芯片,然后PHY芯片在将数据传输到网口进行传输,然后另外一侧通过网口,PHY芯片,还原数据到相应的MAC层。

通过FPGA实现以太网通信原理及理解

这里就是设计时序了。基本就很容易,是FPGA很擅长的事情!!!
Realtek RTL8201CP是一个快速以太网物理层收发器,它为MAC层提供了可选择的MII(媒体独立接口)或SNI(串行网络接口)接口,实现了全部的10/100M以太网物理层功能。SNI接口仅支持10Mbps的通信速率,而MII最大支持100Mbps的通信速率,所以本次收发实验采用的是MII接口。RTL8201CP芯片的参数可以通过MDC/MDIO接口来配置,因为其默认的参数就可以实现MII接口的自适应10M/100M收发数据,因此可不必对芯片做配置。
具体的时序设计以及代码的书写将在下问展开

2 以太网通信协议

通过FPGA实现以太网通信原理及理解

各个字符都有特定的作用,就是传输的数据具体是什么。
前导码(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个字节。
在这里还有一个要注意的地方就是以太网相邻两帧之间的时间间隔,即帧间隙(IFG,
Interpacket Gap)。帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,IFG的最小值是96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的。不管10M/100M/1000M的以太网,两帧之间最少要有96bit time,IFG的最少间隔时间计算方法如下:

————————————————
版权声明:本文为CSDN博主「ty_xiumud」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41467882/article/details/102572198