在网口篇上中,笔者已经和诸位看官把Spartan_6 LX9 的网口软硬件相关资料一起开了,这一篇呢,笔者就和大家一起来看看这个软件具体的配置了…..好,废话少说,咱们动起手来……
本次UDP的软件设计部分,笔者分为几个部分,UDP_Send,UDP_Recieve,UDP_CRC这三个V文件来写,
分别是UDP的接受,UDP发送以及CRC校验部分,笔者还是跟大家一起来看看这个Send,Recieve的书写,为什么不讲CRC?因为是CRC的大家还是百度吧,是一个公式,具体推导嘿嘿,放在这里讲,笔者今天讲到天黑也讲不完,所以还是希望诸位看官,动起你们勤劳的双手来。好好算算就好……那咱们还是来说说这个Send module怎么写吧。。对了,小小提一句,笔者这里用的是Verilog。好了,这个UDP的发送部分其实很简单,也就是安装咱们上一篇提到的UDP数据包格式发送就可以了,100M 以太网呢,双绞线是4跟信号线TX[3:0],而时钟线是25Mhz,所以数据量是100Mbit/S,所以诸位发送模块接时钟25M就好,然后每一个时钟发送四个数据位。笔者的数据包初始化一部分就是下图了:
什么?你要全部代码?嘿嘿,不好意思,咱们这里只说说操作,和笔者觉得需要注意的小地方,代码还是诸位看官自行解决的吧。所以实际在初始化需要发送的UDP 报文字头包含信息主要有数据包首,UDP源机的MAC地址,IP地址,端口号,和UDP目标机的MAC地址,IP地址,端口号,以及数据包的大小。什么?不知道自己MAC地址是做什么的?请自行百度。整个代码其实也很简单,按照之前的UDP数据包顺序发送完这个数据格式,再发生UDP数据就好了,最后一组数据发送成CRC校验。既然怎么简单,笔者就不给诸位看官上结构图了…...相同道理,
接收部分诸位看官只需要进行将数据包格式看明白了应该也不是什么难事了……
下面笔者贴上一个RTL结构模块……
代买运行,下载到咱们小巧的Spartan_6 LX9开发板上,,,笔者还是贴一张开发板实例图。
file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1 1clip_image003.jpg
一端网线连接电脑网口,另一端USB延长线插在电脑HUB上,大致拍图如上,,,,
同时UDP发送数据,转包数据贴上一张
这里笔者贴的是网络抓包软件WiresShark的抓取数据包。。。
咱们还是简单说说这个图上的信息吧,上面笔者已经说了,笔者这里编写的是UDP数据包格式
UDP呢,不涉及网络的回馈信息,因此一般说法具有一定的出错率,这里软件转包的数据中,有一个
黄色框框里的软件识别并不是UDP格式的数据,也就是发送过程中,发送错误的,笔者下面贴了一个小图。
file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1 1clip_image005.png
剩下的便是发送正确的数据了,笔者的程序里只写了发送数据0x73 的简单验证程序,所以上面的软件抓包也就能说明问题了。表明UDP数据发送成功。。。。。
剩下的可能就是配置PC机上的IP,端口号等,保证正常通信,有人问,不是抓包成功了吗?怎么还要设置PC机。实际上Wiresshark是对网口的数据进行的获取,也就是说不管能不能正常通信,抓包软件都会对端口数据进行获取,而实际能不能也对应的上位机进行通信,还是得PC机上进行配置相应的参数等,,,
至于配置的参数,基本就是PC机端口号,网口IP,配置方法笔者还是建议百度(不是偷懒!!!)笔者该怎么做已经说了,如果还手把手教的话,我觉得这不是技术人员的素养。。。。
好,笔者最后贴上一张笔者用网口助手接收数据成功的图。
好了,本次笔者为大家的网口篇带来就这些了,咱们下次再见…… |