本发明属于通信领域,涉及到一种提供了控制W5100实现以太网接口进行数据传输的方案。
背景技术:
伴随着计算机网络技术的发展,以太网随处可见,目前使用最为普遍的接口之一。目前物联网作为一个朝阳产业,也在快速发展。物联网要求每个设备都要有以太网的参与。实现以太网接口的方案有很多种,目前多以控制芯片CPU/MCU/FPGA等智能芯片和以太网Phy芯片作为解决方案。这种方案的优点是以软件为主,开发人员较多。而其缺点是需要编写大量繁琐的程序,和较长时间的调试。
基于这样的情况硬件实现以太网的方案就应运而生。W5100是WIZnet公司推出的固件网络芯片。该芯片集TCP/IP协议栈,以太网MAC和PHY为一体,支持TCP,UDP,IPv4,ICMP,ARP,IGMP和PPPoE等网络协议。内置16KB的发送/接收数据缓冲区,可以快速的进行数据交互,最大通信速率达25Mbps。W5100支持且自动识别全双工和半双工的数据传输模式,而且该芯片兼容10M和100M以太网。
因此如何使用W5100实现以太网接口的解决方案,是亟需解决的问题。
技术实现要素:
本发明提出一种基于FPGA和W5100的以太网装置及控制方法,为多网口互联,以及基于FPGA的网络通信,提供了一种稳定快捷,低成本的解决方案。
为达到上述目的,本发明的技术方案是这样实现的,一种基于FPGA和W5100的以太网装置,包括FPGA,以及通过FPGA的IO接口与FPGA连接的若干W5100芯片,所述FPGA通过有限状态机控制W5100芯片的接口时序。
进一步的,W5100芯片的地址总线ADDR14~ADDR0分别与FPGA的IO接口的地址总线ADDR14~ADDR0连接,数据总线DATA7~DATA0分别与FPGA的IO接口的数据总线DATA7~DATA0连接,片选信号线CS与FPGA的IO接口的CS连接,WR、RD、INT信号线分别与FPGA的IO接口的WR、RD、INT信号线连接。
进一步的,所述FPGA控制W5100芯片的有限状态机包括W5100_IDLE、W5100_INIT、W5100_Sn_INIT、W5100_JUDGE、W5100_DAT_RECV、W5100_DAT_SEND、W5100_CLOSED。
一种应用上述以太网装置的控制方法,步骤为:
(8)W5100_IDLE:对W5100进行复位,复位时间要大于2us;
(9)W5100_INIT:对W5100基础寄存器进行初始化;
(10)W5100_Sn_INIT:对SOCK端口进行设置以及建立TCP连接;
(11)W5100_JUDGE:在这个状态检测是否有终止连接请求,是否有数据接收或者发送,FIFO是否有数据;
(12)W5100_DAT_RECV:用于读取接收的数据;
(13)W5100_DAT_SEND:用于把数据写到发送缓冲区;
(14)W5100_CLOSED:关闭TCP/IP连接。
进一步的,步骤(2)主要包括:
基础设置,包括模式寄存器,中断屏蔽寄存器,重发时间寄存器,重发次数寄存器;
网络信息设置,包括网管地址寄存器,本机物理地址寄存器,子网掩码寄存器,本机IP地址寄存器;
端口存储信息设置。
进一步的,步骤(3)主要工作流程为:
(301)端口初始化,设置端口n模式寄存器,本机端口n的端口号,端口n命令寄存器;
(302)侦听,设置命令寄存器为侦听模式;
(303)等待连接成功,当收到远程对端发来的连接请求,W5100将回复ACK数据包,并把状态改变成连接状态,需要读取状态寄存器,以获得连接状态。
进一步的,步骤(5)主要工作流程为:
(501)获取读地址信息;
(502)根据端口n接收缓冲区RX的基地址和RX屏蔽地址计算物理地址;
(503)根据物理地址读取接收的数据。
进一步的,步骤(6)主要工作流程为:
(601)读取端口n发送存储器剩余空间寄存器,以便确定发送数据的大小;
(602)读取写指针寄存器,并计算物理地址;
(603)根据物理地址把数据写到发送缓冲区。
相对于现有技术,本发明所述基于FPGA和W5100的以太网装置及控制方法的有益效果为:
本发明使用低成本的FPGA+W5100是实现多网口项目的最优解决方案,FPGA与W5100的结合既简化了FPGA的开发难度,又简单了开发成本,由于FPGA的可编程与多IO特性,本发明可以应用在多接口,多协议的项目中。
附图说明
图1是FPGA与W5100的硬件连接示意图;
图2是控制W5100的状态机示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
本发明利用可编程逻辑器件FPGA,通过有线状态机控制W5100的接口时序,来控制以该芯片。由于FPGA的普通IO相较于MCU的GPIO多,因此,可用使用FPGA控制多个W5100以实现网络数据的中转,与通信协议的转换。如以太网转PCI,CAN等协议。由于FPGA的可编程与多IO特性,该专利可以应用在多接口,多协议的项目中。
如图1所示,W5100芯片的地址总线ADDR14~ADDR0分别与FPGA的IO接口的地址总线ADDR14~ADDR0连接,数据总线DATA7~DATA0分别与FPGA的IO接口的数据总线DATA7~DATA0连接,片选信号线CS与FPGA的IO接口的CS连接,WR、RD、INT信号线分别与FPGA的IO接口的WR、RD、INT信号线连接。
对于W5100的设计主要是通过有限状态机来控制其接口时序,以实现对W5100的模式配置和数据的读取与写入。其状态机的设计如图2所示:
对W5100状态控制的主要流程如下所示:
W5100_IDLE:对W5100进行复位,复位时间要大于2us;
W5100_INIT:对W5100基础寄存器进行初始化,主要有基础设置(模式寄存器,中断屏蔽寄存器,重发时间寄存器,重发次数寄存器),网络信息设置(网管地址寄存器,本机物理地址寄存器,子网掩码寄存器,本机IP地址寄存器)和端口存储信息设置;
W5100_Sn_INIT:对SOCK端口进行设置以及建立TCP连接。其主要工作流程为:①端口初始化,设置端口n模式寄存器,本机端口n的端口号,端口n命令寄存器;②侦听,设置命令寄存器为侦听模式;③等待连接成功,当收到远程对端发来的连接请求,W5100将回复ACK数据包,并把状态改变成连接状态。所以需要读取状态寄存器,以获得连接状态;
W5100_JUDGE:在这个状态检测是否有终止连接请求,是否有数据接收或者发送FIFO是否有数据(发送/接收数据的优先级);
W5100_DAT_RECV:①获取读地址信息,②根据端口n接收缓冲区RX的基地址和RX屏蔽地址计算物理地址(由于缓冲区大小的问题,以及数据包大小,读取数据时地址可能递增到最大后返回到基地址--反折);③根据物理地址读取接收的数据;
W5100_DAT_SEND:①读取端口n发送存储器剩余空间寄存器,以便确定发送数据的大小,②读取写指针寄存器,并计算物理地址,③根据物理地址把数据写到发送缓冲区;
W5100_CLOSED:关闭TCP/IP连接。
以上描述了本发明的基本原理、主要特征和实施方案等信息,但是本发明不受上述实施过程的限制,在不脱离发明精神和范围的前提下,本发明还可以有各种变化和改进。因此,除非这种变化和改进脱离了本发明的范围,它们应该被看作包含在本发明中。