一种用VHDL设计嵌入式WebServer的方案
摘要:近几年嵌入式Internet开始迅猛发展,但绝大多数嵌入式Internet都使用微控制器和相应的软件来实现。本文介绍一种基于硬件来实现嵌入式Web Server的方案。该方案的核心思想是用VHDL语言来设计实现,并且用FPGA进行验证。
关键词:VHDL Internet协议 控制信息协议 数据报
最近几年随着Internet应用的迅猛发展,Internet的通信协议,特别是TCP/IP协议,已成为嵌入式Internet的主体构架;然而,仅仅使用嵌入TCP/IP协议对许我应用来说远远不够,它们要求更高层次的信息传输和交换方式。在原有嵌入TCP/IP协议基于上加入HTTP/1.1将构成一个功能较为简单的嵌入式Web Server,它可以接收和发送一些简单的数据和命令。如果再将这些嵌入通信协议和Web功能用VHDL来实现的话,将大大降低嵌入成本,满足嵌入式产品对Web功能的要求。
1 嵌入式Web Server中的协议裁减
嵌入式Web Server中用到的通信协议较多,若全部采用,将导致整个嵌入式Web Server异常复杂,而且费用显著增加。因此,为保证嵌入式Web Server最简化,必须对一些主要的通信协议进行相关的裁减,减小整个硬件设计的复杂性。
1.1 IP协议
IP在网络中主要实现2个基本功能:寻址和分段。IP可以根据数据报头中包括的目的地址将数据报传送到目的地。在此过程中,IP负责选择传送的通道。如果有些网络内只能传送小的数据报,IP可以将数据报重新组装并在报头域内说明。
javascript:window.open(this.src);" style="cursor:pointer;"/>
在嵌入式Web Server中,由于只需传送一些简单的数据和命令,数据报的长度很小,足以适合在任何网络中传送,因此对于分段的功能可以裁减不要。
IP数据包头如图1所示。
在IP数据包头中,服务类型是指一些服务质量的参数,这些参数用于在特定网络指示所需要的服务。而选项包括时间戳,安全和特殊路由,在数据包中可以没有。因此,为简化嵌入Web Server的复杂程度,这2个字段都可以忽略,而且不用作任何处理。标识是发送时用于帮助重组分段包的,段偏移量是指示这个段在数据报中什么位置。由于不采用分段功能,因此这些字段都无须考虑也不用作任何处理,而且标记字段第2位必须为1,表示是不可分段的。
1.2 ICMP协议裁减
ICMP协议用于报告在数据报过程中的错误,它在以下几种情况下发送ICMP消息:未达目的地、超时、参数总是、源拥塞、重定向、回送或回送响应、时间戳和时间戳响应、信息请求或信息响应。
由于嵌入式Web Server只是一个具有简单Web功能的模块,并且它对外部传感器和网络之间只是简单的数据传输和命令的发布;因此跟成本相比较而言,许多可靠性措施可以忽略不计,只考虑一些必要。在ICMP消息报告中,回送或回送响应消息、信息请求或信息响应消息在网络信息处理中至关重要,因此予以采用;其它消息报告可以忽略,保证嵌入式Web Server最简化。
1.3 TCP协议裁减
TCP,即传输控制协议,是一种面向连接的传输层协议。通过使用序列号和确认信息,TCP协议能够向发送方提供到达接收方的数据包的传送信息。当传送过程中出现数据包丢失情况时,TCP协议可以重新发送丢失的数据包,直到数据成功到达接收方或者出现网络超时为止。TCP协议还可以识别重复信息,丢弃不需要的多余信息。使网络环境得到优化。如果发送方传送数据的速度大大快于接收方接收数据的速度,TCP协议可以发送和接收的数据响应。TCP协议能够把数据传送信息传递给所支持的更高层次的协议或应用使用。
但在嵌入式Web Server中,考虑到实现的情况和复杂性,对于TCP协议,除了采用数据包传送机外,重新发送和数据流控制机制都可以忽略不计。因此在嵌入式Web Server中,只传送一些简单的数据和命令,而且数据量很少,因此,在系统中不会产生网络拥塞,只需在其它客户端或访问端上用流量控制机制就可以了。同时由于嵌入式Web Server功能简单,重新发送的可靠性不大;如果真的要求重发的话,可以与嵌入式Web Server重新进行连接,来完成传送任务。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 硬件结构
由于TCP协议、IP协议和ICMP协议被简化,整个协议的处理只需由协议状态机来完成。它须负责接收IP数据报、做相应的检验和消息处理、协议解释、根据接收到的信息进行TCP状态的转换、构造IP发送数据报。
整个嵌入式Web Server的硬件结构如图2所示。嵌入式Web Server由本地网络协议处理器、TCP处理器、IP数据包接收和发送处理及存储器、嵌入式Web Server IP的地址寄存器、传感器数据采集接口组成。在嵌入式Web Server的传感器数据采集接口的数据直接传送到主页存储器中。
IP数据报处理检查数据报是否发送给嵌入式Web Server以及是否有效。
TCP状态机是一个简化的TCP连接过程,只有6个状态,不包括错误情况和错误处理。
HTTP的存储器包含了接收到的HTTP的报头。如果接收到的IP包体有一个有效HTTP载荷,那么HTTP/1.0协议解释器会搜索存储器寻找相应的回答。IP数据报构造器根据HTTP/1.0协议解释器搜索结果构造发送的包体。其中地址、端口号、确认号、序列号是根据接收到的数据包体产生的,而校验码是根据发送的数据产生。其它信息则是从数据接口和主页内存中形成的。
整个硬件设计采用了VHDL语言,采用Xilinx的FPGA进行仿真。
3 VHDL设计javascript:window.open(this.src);" style="cursor:pointer;"/>
整个嵌入式Web Server的具体的VHDL设计在这里不多说明,只介绍其核心的TCP状态机的状态转移顺序和转移条件的设计。整个协议状态机有6种状态,还可以分离出6种事件,这些事件的发生可以引起状态间相互转换,如图3所示。
SYN表示连接请求;ACK(SYN)表示连接确认;RST表示拒绝建立连接;FIN(CLOSE)主动关闭连接请求;ACK(FIN)关闭连接确认;TIME OUT计时等待结束。
TCP状态机的VHDL的设计代码省略。
4 结论
嵌入式Web Server的网络连接既可以采用以太网方式,也可以采用蓝牙技术,这可以根据需要来选定。采用硬件来解决嵌入式Web Server,关键在于它的复杂度很低,而且可以根据需要嵌入到相应的运用系统的芯片中去,减少了开发时间,降低了成本。采用VHDL使设计移植更加方便。