当服务器程序开始运行时,主进程就创建一个套接字,
并通过bind函数绑定,用函数listen进行监听,之后用lwip_accept进行接收,然后用sys_thread_new启动进程,processGet和Process Command函数分析数据包的内容并应用web serber定义的相关的命令实现相关的应用,write函数实现数据的发送,完成Socket服务并把数据发送给客户端。
Simulink中用TCP/IP模块,remote address参数设定为(211、80、192、237),端口设定为80,即与IP4_ADDR(&ipaddr,211,80,l92,237)和address.sin port=htons(80)设为一致,这样就保证了接收与发送网络地址和端口的一致性,保证数据传输的可实现性。设计发送的数据为:t=0:0.25:10,Y=sin(2*pi/10*t),数据列表如下:
对应的Simulink接收模块的数据图形显示如图5所示。
由图5我们可以看出,接收到的数据和发送的数据基本一致。
4 结论
本文研究了TCP/IP通信协议在Xilinx公司FPGA上的实现,介绍了其软硬件的系统组成及原理,通过建立一个例子加以说明和应用这个设计平台,证明了此平台设计可行性,并且完成了FPGA与Matlab的通信,为数据的实时显示及实时控制提供了很好的平台和设计方法,本设计也完成了CPU软核设计的实现,其功能可根据需要进行定制,非常灵活,不但引入了软核处理器和嵌入式操作系统Xilkernel,而且应用了Lw-IP_300b栈,使用大量的IP核,这样大大降低了系统平台的复杂度,缩短了开发的周期,其软硬件部分的设计分离的设计架构,使得整个系统修改和重构更加方便,真正实现了所谓的片上系统。而本设计采用Matlab接收数据,并且可利用其强大的数据采集、处理、仿真、实时动态显示的功能来更好完成数据分析研究。