最专业的FPGA ZYNQ论坛--黑金动力社区

 找回密码
 注册
查看: 1866|回复: 14

Ethernet例程详解(一)

[复制链接]
Furance 发表于 2016-11-14 12:37:56 | 显示全部楼层 |阅读模式
本帖最后由 Furance 于 2016-11-18 16:05 编辑

整体思路:实现FPGA芯片和PC之间进行千兆以太网数据通信,通信协议采用EthernetUDP协议。FPGA通过GMII总线和开发板上的PHY芯片进行通信,PHY芯片把数据通过网线发给PC
我们先了解一下涉及到的各个ISO层:
Transport(TCP/UDP)—Network(IP)—DataLink(MAC)—Physical(PHY)
就是说数据进入Transport层后加入UDP报头,封装好后进入Network层加入IP头,封装好后进入Data Link层加入MAC帧头,最后送入PHY层进行编码之类的工作,使数据适合在双绞线上或其他物理媒质传输。

下面我们一层一层来说:
传输层UDP协议:
UDP(User Datagram Protocol)是一种提供不可靠的、基本的、低延迟的数据报通信,UDP的数据报头格式为:

UDP使用端口号为不同的应用保留其各自的数据传输通道。端口号占用2个字节。
数据报的长度是指包括报头和数据部分在内的总字节数,报头的长度是固定的8个字节,从理论上来说,包含报头在内的数据报最大长度为65535字节。
校验值采用一定的算法将数据进行运算得到2个字节的数据长度,在接收端重新对数据进行相同的运算再和校验和进行比对,看传输的数据是否有误,有错误的只是简单的将坏的消息扔掉。
网络层IP报头:

20个字节是固定的,后面的可变:
版本:4位,IP协议版本号,IPV4(0100)IPV6(0110)
首部长度:4位,一个单位表示4个字节,最大可以表示60字节。
区分服务:8位,现在使用的比较少,直接置0即可。
总长度:16位,指首部和数据之和的长度,单位为字节,故IP数据报的最大长度为65535字节。
标识:16位,当数据报由于长度超过IP数据报最大长度而必须分片时,这个标识字段的值就被复制到所有的标识中,相同的标识使分片后的各个数据报能正确的重装成原来的数据报。
标志:3位,只有后两位有意义。
最低位MF(More Fragment),MF=1代表后面还有分片的数据报,MF=0代表已经是数据报的最后一个。
中间位记为DF(Don’t Fragment),只有DF=0时才允许分片。
片偏移:12位,较长的分组在分片后,某片在原分组中的相对位置,单位为8个字节。
生存时间:8位,可通过路由器的最大值。
协议:8位,指出IP数据报交给上层中哪个过程处理,6表示TCP17表示UDP
首部校验和:16位,这个字段只校验IP数据报的首部。
源、目的地址:占4个字节。
数据链路层MAC帧头:

源、目的地址:占6个字节。目的地址为ff-ff-ff-ff-ff-ff为全广播模式。
类型字段:2个字节,代表上一层协议类型,0800代表上一层协议为IP协议,0806代表ARP协议。
帧校验:4个字节,一般使用CRC-32校验
至此,理论知识已经讲完,接下来编写协议封装代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
傻鱼 发表于 2017-8-7 14:45:09 | 显示全部楼层
回复可见好烦
llxx 发表于 2017-8-11 18:20:59 | 显示全部楼层
                        
hcs19910728 发表于 2017-11-14 09:17:51 | 显示全部楼层
代码在哪里
hcs19910728 发表于 2017-11-14 09:18:23 | 显示全部楼层
代码封装呢
我就是我CHT 发表于 2019-1-13 14:55:38 | 显示全部楼层
封装代码在哪里?
qqgf 发表于 2019-1-16 09:53:28 | 显示全部楼层
HAHAHAH谢谢
liaub07 发表于 2019-1-16 14:59:26 | 显示全部楼层
非常好xeixeini
熊熊火007 发表于 2019-1-22 11:46:58 | 显示全部楼层
学习学习,再看看TCPIP协议
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|@2009-2016 芯驿电子科技(上海)有限公司|小黑屋|手机版|Archiver|黑金动力社区 ( 沪ICP备11013590沪公网安备 31011702000003号 举报投诉电话:15300558155

GMT+8, 2019-2-18 21:30 , Processed in 0.081547 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表