基于FPGA的UDP通信实现

Posted 571328401-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于FPGA的UDP通信实现相关的知识,希望对你有一定的参考价值。

一、UDP协议介绍

  UDP是User Datagram Protocol 的简称,中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC768是UDP的正式规范。UDP在IP报文的协议号是17(即0x17)。

 

二、数据、UDP、IP、MAC四个报文的关系

  数据是打包在UDP协议中,UDP协议又是基于IP协议之上的,IP协议又是走MAC层发送的,即从包含关系来说:MAC帧中的数据段为IP数据报,IP报文中的数据段为UDP报文,UDP报文中的数据段为用户希望传输的数据内容,如“Hello,welcome to FPGA !”。下图为使用UDP协议发送“Hello,welcome to FPGA !”的数据层层打包示意图:

技术图片

 

 图1

技术图片

 

 图2

 

三、UDP封包格式

        技术图片

 

   各个字段的组成

     (1) 前导码:

      8‘h55、8‘h55、8‘h55、8‘h55、8‘h55、8‘h55、8‘h55、8‘hd5

     (2)mac首部:

    技术图片

 

     (3)IP首部:前20个字节是IP首部

技术图片

 

       具体的各个字节就不细讲了,讲下IP首部校验和(ip_checksum).

      手动计算:

           在发送数据时,计算IP数据报的校验和,步骤如下:

           a、将校验和字段置为 0 ,然后将IP包头按照16比特分成多个单元,如包头不是16比特的倍数,则用0比特填充到16位比特的倍数;

           b、对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算时直接丢掉溢出的高位),将得到的和的反码填入校验字段;

    (4)UDP首部

 技术图片

 

 ******* 16位UDP长度:UDP包头 + 数据;

 ******* 16位UDP校验和:要求不高时可以设为全零;

    (5)Crc

 

 

 

 

 

 

以上是关于基于FPGA的UDP通信实现的主要内容,如果未能解决你的问题,请参考以下文章

Node.js权威指南 - 实现基于TCP与UDP的数据通信

UDP千兆光通信整体认知与概述

fpga的以太网通信

Arduino基于UDP协议的远程通信

Python中的端口协议之基于UDP协议的通信传输

基于UDP协议的socket通信