基于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通信实现的主要内容,如果未能解决你的问题,请参考以下文章