基于W5300的以太网数据传输系统的设计与实现
2012-02-15吴昊严胜刚薛双喜
吴昊,严胜刚,薛双喜
(西北工业大学 航海学院,陕西 西安 710072)
现代数据采集领域中,越来越多的现场采集设备需要扩展网络功能以实现远程控制和数据传输。以太网以其成本低、易于集成和传输距离较远的优势得到了广泛应用[1]。传统的以太网解决方案是利用主控芯片连接物理层接口,在主控芯片内编写以太网协议来实现的,这种方法开发周期较长,难度较大,且由于以太网协议程序比较繁琐,运行起来不太稳定。而利用硬件协议栈芯片,只需要通过简单的配置和外部线路连接就可以实现以太网的数据传输功能,这种方法开发难度小、集成度高且运行稳定,已成为实现以太网数据传输的首选方案[2]。
鉴于此,文中设计了一个利用可编程逻辑器件控制W5300以TCP/IP为协议进行以太网数据传输的系统。其中,TCP/IP协议栈的处理交由硬件协议栈芯片W5300来完成,FPGA只需控制W5300即可[3]。
1 芯片介绍
W5300是WIZnet公司的一款单芯片器件,采用0.18μm CMOS工艺,内部集成10/100M以太网控制器、MAC层协议和TCP/IP协议栈,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。其主要性能特点[4-5]如下:
1)支持硬件 TCP/IP 协议栈:TCP、UDP、ICMP、IPv4、ARP,IGMP、PPPoE;
2)支持8路独立的网络连接端口SOCKETs同时工作;
3)内部拥有128 k字节TX/RX存储器用于数据通信,并可根据端口数据吞吐量灵活分配TX/RX存储器空间大小;
4)支持2种主机接口模式(直接寻址模式和间接寻址模式);
5)支持16/8 bit数据总线,传输速率高达50 Mbps;
6)支持第三方物理(PHY)接口。
2 系统硬件设计
在硬件设计时选择利用FPGA做为主控芯片,实现对W5300寄存器的读写及功能配置,其系统硬件结构如图1所示。
图1 系统硬件结构图Fig.1 Structure diagram of the hardware system
W5300与FPGA的接口信号有数据总线、地址总线以及一些控制信号线(如/RESET、/CS、/RD、/WR、/INT)。 W5300 工作在直接寻址模式下,FPGA通过地址总线可直接访问W5300内部的各个寄存器或存储器,直接寻址模式比间接寻址模式具有更高的访问速度。BIT16EN引脚决定数据总线模式:BIT16EN拉高时为16位宽数据总线模式,BITI6EN拉低时为8位宽数据总线模式。本设计将BIT16EN悬空,即拉高,使其工作在16位宽数据总线模式下。TEST_MODE[3:0]4个引脚用于配置PHY模式和厂商测试模式,这里将其都接地,设置成使用内部集成的PHY模式。在内部PHY运行控制模式的多种选择中,将OP_MODE[2:0]3个引脚接地,固定地选择了一种模式:自动握手模式。这样W5300是通过媒体接口的两路差分信号(RXIP/RXIN和TXOP/TXON)与网络隔离变压器连接。这些差分信号引脚都必须接一个50Ω(±1%)的电阻和一个0.1μF的电容,以达到良好的阻抗匹配效果。匹配电阻和匹配电容应该尽可能靠近W5300,以减少传输线上的阻抗和容抗。同时为了有良好的传输效果,两路差分信号的走线长度应相等且尽量靠近[1-6]。
图中的网络隔离变压器采用的是CYL公司PH16系列的PH163539集成芯片,它的作用有3点:1)传输数据,它把PHY送出来的差分信号用差模耦合线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端;2)隔离网络上不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备;3)能够滤除空间的电磁干扰,能对设备起到一定的防雷保护作用[7]。
本系统工作在内部PHY模式下,只能用25M的无源晶振来提供W5300的工作时钟。在工作过程中,W5300需要2种电源:3.3 V和1.8 V,其中1.8 V的内核工作电压由W5300自己产生,不需要外部提供,需要注意的是这种电压不能提供给W5300以外的其它器件。
3 系统软件设计
系统软件设计的主要任务是在Quartus II环境下用硬件描述语言VHDL实现FPGA对硬件协议栈芯片W5300的控制,以实现W5300与上位机的数据传输。在本系统的软件设计中,仅选用W5300的8个SOCKET中的SOCKET0进行通讯。W5300软件流程图如图2所示,首先复位W5300,再依次对W5300、SOCKET0进行初始化,然后进入数据通信状态。
3.1 W5300复位
W5300在工作之前需要进行上电复位,且复位信号/RESET至少要保持2μs的低电平,然后变为高电平,等待至少10 ms使得W5300内部锁相环稳定后,再进行W5300初始化等操作。
软件设计时,系统设置复位信号的低电平时间为6μs,通过对30 MHz的时钟进行计数来实现,当计数值达到30×6=180时,便将复位信号拉至高电平;然后接着计数,当计数值达到30×20×103=600 000时,便实现等待20 ms的要求;最后给出W5300复位完成信号,启动下一步工作。
3.2 W5300初始化
图2 系统软件流程图Fig.2 Flow chart of the software system
初始化W5300就是将相应的参数按照写时序要求写入寄存器即可,初始化分3个步骤:主机接口设置、网络信息设置和内部TX/RX存储器的分配。
在设置主机接口时,模式寄存器MR保持默认值0xB800,这样W5300便工作在16位总线宽度的直接访问模式;中断屏蔽寄存器IMR写入0xFFFF,不屏蔽任何中断。
在设置网络信息时,重复发送超时寄存器RTR与重复发送计数寄存器RCR采用默认值,默认值分别为0x07D0和0x0008,即重复发送超时时间为200 ms,重复发送次数为9次;本机硬件地址寄存器SHAR、网关IP地址寄存器GAR、子网掩码寄存器SUBR和本机IP地址寄存器SIPR配置参数如表1所示。
表1 网络参数配置Tab.1 Configuration of network parameters
在分配存储空间时,存储器单元类型寄存器MTYPER采用默认值0x00FF,即将前8个8k字节存储单元分配为TX存储器,后8个8k字节存储单元分配为RX存储器;通过TX存储器大小配置寄存器TMSR和RX存储器大小配置寄存器RMSR将SOCKET0的发送和接收存储器大小都配置为32 kB。
3.3 SOCKET0建立连接
完成 W5300初始化以后,W5300可以以 TCP、UDP、IPRAW或MACRAW的方式打开SOCKET发送或接收数据。在本设计中,W5300工作在TCP服务器模式下。
为了实现TCP通信,需要对SOCKET0进行初始化设置,然后进行侦听设置,完成TCP服务器建立,最后等待建立连接。通过 SOCKET0模式寄存器 S0_MR(P3:P0)和SOCKET0端口寄存器S0_PORTR分别设置通信协议和本机端口号(在TCP服务器模式,称之为侦听端口号),然后向SOCKET0控制寄存器S0_CR中写入0x0001执行OPEN命令,执行完OPEN命令后,如果SOCKET0状态寄存器S0_SSR改变为SOCK_INIT,则SOCKET0的初始化设置完成;再向S0_CR中写入0x0002执行侦听命令,若S0_SSR改变为SOCK_LISTEN,则侦听完成,W5300设置为TCP服务器;最后等待S0_SSR改变为SOCK_ESTABLISHED,若S0_SSR变为预期值,则建立了SOCKTE0连接,可以进行数据通信。
3.4 W5300接收数据
当W5300控制器收到接收数据控制命令时,进入接收数据状态。W5300接收数据的程序流程如图3所示。首先要判断SOCKET0的RX存储器中是否有接收到的数据,即读取SOCKET0接收数据报长度寄存器S0_RX_RSR的值,并判断该值是否等于零。如果S0_RX_RSR的值等于零,则继续判断,否则说明SOCKET0的RX存储器接收到数据,则进入下一步接收数据操作。当存储器中接收到数据时,要进一步判读SOCKET0模式寄存器S0_MR的对齐控制位,若S0_MR(ALIGN)=0,则从 SOCKET0的 RX FIFO寄存器 S0_RX_FIFOR读取需要接收的数据字节长度(这样做是由TCP模式数据格式来确定的),否则从S0_RX_RSR中读取数据字节长度。得到数据字节长度信息后要将其转换为数据字长度,作为读取S0_RX_FIFOR中接收内容的循环控制量。最后,要在向S0_CR写入0x0040,执行REVC命令,告知主机W5300已经完成数据的读取。
图3 W5300接收数据流程图Fig.3 Flow chart of W5300 receiving data
3.5 W5300发送数据
当W5300控制器收到发送数据控制命令时,进入发送数据状态。W5300发送数据程序流程如图4所示。首先要将需要发送数据字通过S0_TX_FIFOR复制到SOCKET0的TX存储器中,然后再将发送数据字节长度值写入SOCKET0的写长度寄存器S0_TX_WRSR,告知W5300需要向上位机发送数据的字节数。最后向S0_CR写入0x0020执行SEND命令,W5300收到此命令后对接收到的数据进行协议处理,并发送到网络中。数据发送完成后,SOCKET0的中断寄存器S0_IR会产生发送完成(SENDOK)中断,中断值为0x0010,软件清除该中断后表示完成一次发送。
图4 W5300发送数据流程图Fig.4 Flow chart of W5300 sending data
4 系统功能验证
为了测试网络的连通性,最直接的方式就是使用ping命令,向目标端发送ICMP回送请求报文,看目标端是否可达[8]。在主机端的DOS命令环境下输入命令:ping192.168.0.3(主机lP地址为192.168.0.2),从图5可以看出主机端收到了ICMP回送应答,证明目标端的IP层以下已经连通。
图5 DOS操作环境下测试结果Fig.5 Test results in DOSoperation system
在测试了连通性后,就可以进行通信测试了,可通过TCP&UDP测试工具向W5300发送网络控制指令,并接收W5300回传的数据数据。如图6所示TCP&UDP测试工具与W5300通信结果,通过上位机的TCP&UDP测试工具向系统网络接口发送一组数据,系统网络接口将收到的数据载回传给上位机,从图中可以看出,通信测试成功。
图6 TCP&UDP测试工具与W5300通信结果Fig.6 Communication results between TCP&UDP testing tools and W5300
5 结 论
经实验验证,系统运行稳定,实现了以太网的数据传输功能。系统结构简单、可靠性强、成本低廉,在无需引入操作系统的条件下,实现单芯片与Internet的连接,有很高的实用价值,可应用于现场采集设备的远程控制和数据传输等领域。
[1]王少克.基于W5300的高速硬件以太网解决方案[J].电子设计应用,2009,7(4):95-96.WANG Shao-ke.Solution of high-speed hardware Ethernet based on W5300[J].Electronic Design&Application,2009,7(4):95-96.
[2]谢希仁.计算机网络[M].北京:电子工业出版社,2008.
[3]胡为.基于FPGA的嵌入式系统Internet接入方案[D].西安:西安电子科技大学,2006.
[4]WIZnet.W5300 Datasheet Ver1.2.2[R].2008.
[5]High-Performance Internet Connectivity Solution W5300[S].WIZnet Inc,2008.
[6]柏军,张争气,王奇,等.基于网卡的某型声纳目标模拟系统的设计[J].计算机测量与控制,2010,18(4):854-856.PAI Jun,ZHANG Zheng-qi,WANG Qi,et al.Design of sonar target simulation system based on net card[J].Computer Measurement&Control,2010,18(4):854-856.
[7]吴金星.某雷达数据通信系统的设计与实现[D].西安:西安电子科技大学,2011.
[8]胡达.基于嵌入式平台的USB和以太网技术研究[D].哈尔滨:哈尔滨工程大学,2009.