fpga实现udp功能思路---【发送】

摘要:
分析实施的意义。使用fpga实现udp可以用于传输消息、图片等。作为一种不可靠的传输,udp通常传输图像或其他东西。目前,只讨论了传输方向,换句话说,fpga将整个消息发送到pc(或其他)。注意,下图中的红色部分是fpga需要计算的部分。udp中需要长度信息[8+data_len],ip报头中需要校验和和长度信息[28+data_len]。注:最后的mac层是要传输到phy芯片的数据。Udp头ip头4.参考资料见相关Udp资料。结合小冰以太网承包工具,可以更快地理解它。记得下载它。

注:很多基础内容并本文不做讲解,重点讲解fpga实现时需要注意的地方,没有用IP。[就这样]欢迎大家一起交流,Q群:912014800。

一。 实现的意义分析等。

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

二。效果展示

(1) 消息传输

  fpga实现udp功能思路---【发送】第1张

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

(2)图像传输

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

fpga实现udp功能思路---【发送】第2张

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

(1)整体报文

fpga实现udp功能思路---【发送】第3张

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

(2)udp包头

fpga实现udp功能思路---【发送】第4张

(3)ip包头

fpga实现udp功能思路---【发送】第5张

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

fpga实现udp功能思路---【发送】第6张

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

五。参考资料

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

 六。 附录

(1)crc 顺序

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

fpga实现udp功能思路---【发送】第7张

Ethernet II以太网帧格式:

目标MAC 源MAC 类型 数据 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个。

免责声明:文章转载自《fpga实现udp功能思路---【发送】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇thinkphp6事件监听和触发多个事件【FPGA总线篇章一】FPGA大话总线之AXI总线下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux服务器丢包故障的解决

Linux服务器丢包故障的解决 我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处理过程,结合Linux内核参数说明和TCP/IP协议栈相关的理论,介绍一些常见的丢包故障定位方法和解决思路。 在开始之前,我...

使用RawSocket进行网络抓包

aw socket,即原始套接字,可以接收本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的,一共可以有3种方式创建这种socket。 中文名 原始套接字 外文名 RAW SOCKET 作    用 网卡对该数据帧进行硬过滤 类    型 3种方式   目录 1 简介 2 总结 简介编辑 1.socke...

C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP)

原文引自:http://www.cnblogs.com/DebugLZQ/archive/2011/08/09/2132423.htmlC# code namespace UDPServer { class Program { static void Main(string[] args) { int recv; byte[] data = new byt...

常用和不常用端口一览表

常用端口对照端口:0服务:Reserved说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描,使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。端口:1服务:tcpmux说明:这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者...

容器跨主机网络通信学习笔记(以Flannel为例)

我们知道在Docker的默认配置下,不同宿主机上的容器通过 IP 地址进行互相访问是根本做不到的。 而正是为了解决这个容器“跨主通信”的问题,社区里才出现了很多的容器网络方案。 要理解容器“跨主通信”的原理,就一定要先从 Flannel 这个项目说起。 Flannel 项目是 CoreOS 公司主推的容器网络方案。事实上,Flannel 项目本身只是一个框...

网络编程(InetAddress类、UDP、TCP)

1、InetAddress类 (1)IP和端口号: IP(InternetProtocol,IP)互联网协议地址:唯一标识一台计算机。 端口号:用于区分不同的应用程序。取值范围是0~65535,其中0~1023被系统保留。 在计算机A访问计算机B是通过IP地址进行查找的,接着在计算机B上通过应用程序的端口号找到相应的程序。 (2)InetAddress类...