[FPGA] FPGA实现UDP 转

[复制链接]
 楼主| gaochy1126 发表于 2019-3-31 13:53 | 显示全部楼层 |阅读模式

一。 实现的意义分析等。

  用fpga实现udp可以用来传消息、图片等,udp本身作为一种不可靠的传输,一般也就传图像什么的啦,暂时只讲发送方向,也就是fpga向pc(或者其他。。)传输,学会了发送方向,接收就可以自己搞定啦。

二。效果展示

(1) 消息传输

  

  通过wireshark和网络助手,可以抓到测试数据(目测没有什么可解释的)。

(2)图像传输

    上位机显示图像(在此对徐大神表示感谢):


三。协议重点分析(只分析我认为比较重要的,是时候借用一些大牛的图片了。。。需要注意的是,以下图片红色的部分是fpga需要计算的,在udp中需要长度信息[8+data_len],在ip头中需要校验和和长度信息[28+data_len])

(1)整体报文

注:最后的mac层就是要传给phy芯片的数据。FCS采用crc32,注意计算的时序,MAC帧头为7个0x55和一个0xD5。

(2)udp包头


(3)ip包头

四。模块设计架构[懒得画,直接看综合后的吧]

模块功能:用户主要输入给该模块一个8bit位宽的包文,该模块就可以把用户的数据发给phy芯片[简单,方便,以千兆网为例]。

五。参考资料

  自己看看相关udp的资料,结合小兵以太网发包工具可以更快速的理解,记得下载。其他软件需要的自己去搜寻吧,大家加油。[完]

六。 附录

(1)crc 顺序

默认从最高位开始传输,调换顺序后从最高位开始传输。



Ethernet II以太网帧格式:

目标MACMAC 类型 数据 FCS
6字节 6字节 2字节 46-1500字节 4字节

所以最小6+6+2+46+4 = 64,最大6+6+2+1500+4 = 1518。
(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)

而udp头和IP头 占用28个 46-28 = 18 . 也就是说最小长度要大于等于18个

本帖子中包含更多资源

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

×
 楼主| gaochy1126 发表于 2019-3-31 13:53 | 显示全部楼层
看看udp的数据配置格式,很多的代码都是根据报文的格式编码的。           

评论

多谢支持  发表于 2020-9-15 22:20
 楼主| gaochy1126 发表于 2019-3-31 13:54 | 显示全部楼层
IP数据报长度 = 20字节IP首部 + 8字节UDP首部 + 1473字节用户数据 = 1501字节,超过了以太网规定的1500字节的MTU,所以需要进行分片

评论

多谢支持  发表于 2020-9-15 22:20
 楼主| gaochy1126 发表于 2019-3-31 13:55 | 显示全部楼层
以太网,刨除数据帧帧头,最多传输的长度为1500,也就是说,如果一个ip数据报,长度大于1500,则需要分片。

评论

多谢支持  发表于 2020-9-15 22:21
 楼主| gaochy1126 发表于 2019-3-31 14:11 | 显示全部楼层
数据的话如果小于18字节的话,就要在后面补够18字节(以太网数据规定每帧最小的数据是64byte),然后再交给IP网络层进行处理   

评论

多谢支持  发表于 2020-9-15 22:22
 楼主| gaochy1126 发表于 2019-3-31 14:11 | 显示全部楼层
以太网规定每帧的最小发送间隔需要注意一下。         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1148

主题

11651

帖子

26

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1148

主题

11651

帖子

26

粉丝
快速回复 在线客服 返回列表 返回顶部