whilebreak

RGMII测试笔记2 UDP协议 基于开发板MiS603-X25

2
阅读(1573) 评论(3)

RGMII测试笔记2 UDP协议  基于开发板MiS603-X25

作者:汤金元  覃飞虎

日期:20150823

公司:南京米联电子科技有限公司

论坛:www.osrc.cn

网址:www.milinker.com

网店:http://osrc.taobao.com

博客:http://blog.chinaaet.com/whilebreak

在上一篇笔记中,本人测试了板卡的PHY部分通信可以稳定工作,那么接下来的工作就是测试下UDP通信协议了。首先本人想到的也是百度下UDP协议了。但是百度出来的结果简直眼花缭乱,没有标准,无从下手,下面本人列举下百度的结果。

百度百科:

UDP报文在IP数据包中的位置:

wpsCB8F.tmp

UDP报头:

wpsCBA0.tmp

IPV4协议报文头:

wpsCBB0.tmp

以上是本人检索的认为有价值的信息,但是,实在无法直接将这些信息消化掉。所以告诉各位一句话,网络不是万能的。

本设计完整的UDP数据结构:

wpsCBC1.tmp

PV4报头长度为20字节,并且本次测试程序接收后没有做任何处理。

UDP报头8字节

2字节源端口号,2字节目标端口号,2字节UDP长度,2字节UDP校验,本次程序中,校验和没有使用。

测试实验:

采用XCAP软件进行测试 软件下载地址:http://pan.baidu.com/s/1dD0gwP7

(1)打开XCAP软件,新建报文组和报文。

wpsCBD1.tmp

(2)双击报文,设置链路层参数。

wpsCBE2.tmp

(3)点击下一步,设置IP网络层参数。

wpsCBF3.tmp

(4)下一步,设置UDP端口。

wpsCBF4.tmp

(5)下一步,设置UDP发送数据。

wpsCC04.tmp

(6)保存,回到首页,勾选要发送的报文,选择千兆网网卡和发送间隔。

wpsCC05.tmp

程序分析

wpsCC16.tmp

程序简析:

Ram的应用:

wpsCC17.tmpwpsCC27.tmp

Chipscope抓取数据 UDP数据接收

wpsCC38.tmp

wpsCC39.tmp

(1)在上面第二幅图中,可以看见每一个data_o_valid脉冲,都对应着一个32位的UDP接收数据ram_wr_data。

(2)上图第二幅图中,接收了5个32位数据,最后1个数据不足4字节进行补0处理,第一个脉冲存06000000,第二个脉冲存12345678,第三个脉冲存00000000,第四个脉冲存00000000,第五个脉冲存00000000,(补齐了0),该接收与PC测试发送数据一致。

(3)由测试可以看出,在接收数据的同时,UDP数据即被存入RAM中,不耽误下一帧的接收,实现带宽最大化。

Chipscope抓取数据 UDP数据发送

wpsCC4A.tmp

wpsCC4B.tmp

PC端数据检测

wpsCC5B.tmp

对照XCAP接收到的数据,可以看出,发送结果和接收结果一致,另外可以通过观察数据包的结构核对UDP数据包结构。

源码地址:http://pan.baidu.com/s/1eQ97EKi

  1. 谢谢楼主分享!!学到了很多,不知楼主方便留一下联系方式如QQ吗?还有一点 关于MAC编程问题想请教您,谢谢!!!

  2. @weiqi7777 

  3. 好文,分析得很好了。