美章网 资料文库 以太网数据通信接口的设计范文

以太网数据通信接口的设计范文

本站小编为你精心准备了以太网数据通信接口的设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

以太网数据通信接口的设计

以太网是应用十分广泛的计算机网络技术,它以低成本、易集成和较远传输距离等的优势获得了广泛的使用[1]。一般的以太网传输方案是使用主控芯片与物理层接口相连接,而后将以太网协议写入在主控芯片内来完成以太网的通信,但是这种的开发周期很长,难度也很大,是因为有着比较复杂以太网协议的程序,并且运行起来不太稳定[2];另一种就是使用以太网协议栈芯片,只需要经过一些简单的寄存器配置以及外部连线便可以实现以太网的通信,并且这种方法开发难度较小,集成度较高而且运行很稳定,已成为实现以太网通信的最佳方案[3]。鉴于此,笔者提了一种基于以太网协议栈芯片W5300,以UDP为协议为基础的的以太网数据通信系统。FPGA完成对W5300的配置,而TCP/IP协议栈的处理交由W5300完成。

1系统硬件设计

在硬件系统中时选取FPGA做为主控芯片,完成W5300各个寄存器的读、写配置以及功能的配置,硬件结构如图1.1所示。W5300与FPGA通过数据总线、地址总线,以及一些其他的控制信号线(如/RESET、/CS、/RD、/WR、/INT)相连接。W5300与控制器的接口模式分为直接和间接地址模式,数据总线又分为16位和8位。在本文中采用的是16位数据总线的直接地址模式,BIT16EN引脚需连接到高电平,但是该引脚有内部上拉电阻,所以直接将其悬空。物理层便采用W5300内部的PHY,TEST_MODE[3:0]的4个引脚全部接地,配置为内部集成的PHY模式,将OP_MODE[2:0]的三个引脚接地,配置为自动握手模式。FPGA可以经过地址总线直接访问W5300内的各个寄存器和存储器,通过进行相应寄存器的描述,完成对W5300的配置,当配置完成后,由媒体独立接口的两路差分信号对与计算机的网络接口直接连接。当W5300从网络上接收到控制命令后,W5300模块便从其中把接收到的控制指令取出,并将其存入FIFO中,通过进行指令解析来读取产生的相应控制信号,从而完成数据通信功能。

2系统软件设计

W5300内部集成了TCP/IP协议,故我们只需要设计Socket接口。这样可以大大简化设计流程,同时使得微控制器的处理能力和系统资源的使用率减少。软件流程图如图2.1所示。

2.1W5300的初始化W5300初始化就是根据写时序的要求对应的寄存器进行相关的描述。首先,设置socket1中断,即将0x01写入中断屏蔽寄存器,然后设置网关IP地址,W5300硬件地址,IP地址和子网掩码等参数,具体配置如表2.1所示。W5300的模式寄存器采用的是默认值(0x3800),此时与W5300与FPGA的接口模式为直接寻址方式,使用8位数据总线。重复发送计数寄存器RCR采用默认值(0x0008),即重复发送的九次,重复发送超时寄存器RTR也采用默认值(0x07d0),即重复发送超时时间为200ms。在UDP协议模式下,W5300传输超时指的是ARP超时,所以默认情况下,ARP超时为1.8s。TX/RX寄存器空间的分配也使用默认值,即8个独立的socket平均分配128k字节存储空间。

2.2SOCKET1的初始化W5300完成初始化后,接着对socket1进行初始化。本设计中W5300工作在UDP模式下。先将0x02写入socket1模式寄存器设S1_MR,此时socket1处于UDP单播模式下。然后把socket1的端口号设置为8000,即将0x1f40写入socket1源端口寄存器。然后执行打开命令,即将0x01写入socket1的命令寄存器写S1_CR。最后,读取socket1状态寄存器S1_SSR的值,并判断是否为0x22,如果S1_SSR值为0x22,便说明已经进入了UDP协议模式,socket1初始化完成,如果该值不为0x22,便说明socket1没有进入UDP模式,此时,将0x10写入socket1的命令寄存器S1_CR,关闭socket1。然后重复上述操作,直至初始化完成。

2.3W5300接收数据状态机进入socket1接收数据状态后,根据接收到的UDP数据报格式,通过读取S1_RX_FIFOR寄存器,从socket1的RX存储器中将接收到数据报的目的IP地址、目的端口号和数据报长度值读取出来。继而再通过S1_RX_FIFOR不断的将真正的UDP数据报从socket1的RX读出,每次读取完一个字节,便增加了1字节计数变量,并比较变量i和数据包长度值。若变量i的值小于包长度值,表明UDP数据报并没有收完,然后继续接收。若变量i的值等于包长度值,则表明这个包接收到了一个完整的UDP数据报。最后便是执行RECV命令,将0x40写入socket1命寄存器令S0_CR,通知W5300已完成数据接收,此时,socket1完成数据接收,程序流W5300接收的程序流程图如图2.2所示。

2.4W5300发送数据状态机进入状态后socket1发送数据状态后,先访问socket1的发送存储器剩余空间寄存器S1_TX_FSR,读取它的值,然后判断socket1的发送存储器能否容纳一个完整的包数据。若发送缓冲区剩余的空间比发送数据长度大,则从FIFO中取出需要进行传输的数据,并把需要发送的数据复制至socket1的TX存储器,而后在socket1的写长度寄存器S1_TX_WRSR写入发送数据的长度值,告知W5300要上位机发送的数据字节数。最后便是执行发送命令,将命令值0x10写入socket的命令寄存器S1_CR,W5300接收到这个命令后便对收到数据惊醒处理,并将其发送至网络。完成数据发送后,socket1的中断寄存器产生发送完成中断(SEND_OK=0x10),该中断清除以后,再读取S1_RX_RSR寄存器的值,并判断改制是否为0,进而可以知道状态机是否进入数据接收状态或者数据发送状态,W5300发送数据的程序流程如图2.3所示。

3系统功能验证

在测试工具中填入发送端(W5300)和接收端(计算机)的IP地址,点击连接网络,会弹出“网络连接成功”窗口,并且以太网连接指示灯D4点亮,说明与计算机网络层连接成功。利用UDP调试助手,根据UDP数据报的格式给W5300发送10个字节的网络控制命令(C0A800031F40000255AA),然后接收W5300的回传数据。数据发送成功后,开始接收从W5300回传的数据,在低电平将数据从FIFO中读取出来,再把读出的数据发送回计算机,在上位机上显示。经过多次测试,并采用UltraEdit数据查看软件可知本系统能够正确的完成数据通信功能。查看结果如图3.1所示。左图数据从00递增至F9,帧计数有4个字节,每帧的帧计数是连续递增的;帧尾有两个字节,分别是EB、90。右图为为了进一步验证通信的正确性,将FIFO中的数据格式更改,此时,W5300从FIFO中读取的为递减的数据,数据从FF递增至06,帧计数有4个字节,每帧的帧计数是连续递增的;帧尾有两个字节,分别是EB、90。

4结语

本文对基于太网协议芯片W5300的以太网接口设计方案进行了详细的介绍,该设计方案的有开发周期短、低成本、易实施等的优势,通过验证,系统很好的实现了基于UDP协议的数据通信,并且在有着很好的稳定性和实时性,速率方面也有着良好的表现。

作者:冯宪 陈晔 刘驰 单位:中北大学信息与通信工程学院 中北大学计算机与控制学院