基于NiosII与W5100的嵌入式Web服务器的设计与实现
摘要 本文介绍了嵌入式Web服务器和FPGA的NiosII软核处理器以及W5100网络接口芯片技术,提出了基于NiosII与W5100组合实现嵌入式Web服务器的设计方案,系统实现了提供静态和动态功能的嵌入式Web服务器。
【关键词】Web Nios II 嵌入式
一般来说,嵌入式设备的资源有限,RAM和ROM都非常小,都没有TCP/IP协议栈,不能连接以太网,所以在资源受限的情况下实现Web服务器功能是相当困难的。而随着FPGA这类大规模可编程逻辑器件的性能不断提高,以片上可编程系统技术为核心的嵌入式系统在众多应用领域崭露头角,特别是以Altera公司的Quartus II +Nios II为代表的软硬件平台解决方案,为嵌入式设备扩展丰富的RAM和ROM提供了便利。它提高了系统系能,具有可剪裁性和灵活性高、开发周期短的特点。
传统的以太网解决方案中,往往采用RTL8019AS等接口芯片实现,这种方案需要在主控制器内编写以太网通讯协议,实现软件TCP/IP协议栈,程序繁琐、耗费时间、对开发人员要求非常高,不利用系统的快速开发和稳定运行。在本设计中,我们采用NiosII软核和TCP/IP硬解码网络接口协议芯片W5100来实现,W5100是WIZnet公司开发的具有内部硬件协议栈的芯片,此方案能够大大减小硬件接口设计和网络编程工作量,并且可以实现可靠稳定运行的远程数据通信系统。
1 总体设计
1.1 系统原理
系统功能组成框图如图1所示。从图中看出,该系统用到了1片FPGA,FPGA中使用了NiosII软核,一片EPCS64,用来存储FPGA的配置文件。系统上电,从EPCS加载配置文件,将程序拷贝到SDRAM当中运行。客户端打开浏览器,输入Web服务器的IP地址,客户端通过网络发送HTTP请求,NiosII软核和W5100解析HTTP协议,读取存放在FLASH当中的网页文件以及存放在EEPROM当中的掉电配置的参数,以HTTP协议的形式发送回客户端浏览器。
1.2 Nios II处理器系统的设计
NiosII嵌入式处理器是Altera公司于2004年6月推出的第二代用于可编程逻辑器件的可配置的软核处理器。性能超过200MIPS。NIOSII采用了基于RISC结构的32位指令集,能与用户逻辑相结合,使用Altera公司的QuartusII软件以及SOPC工具可以将NIOSII处理器嵌入到系统中,编程至Altera的FPGA中。处理器具有32位指令集、32位数据通道和可配置的指令以及数据缓冲。它特别为可编程逻辑进行了优化设计,也为可编程单芯片系统设计了一套综合解决方案。
提供基于图形界面的系统定制工具SOPC Builder,可以很方便的进行片上系统的定制。它包含了很多常用接口的IP核,从SOPC元件库中选中后双击即可轻松添加进系统中,并能对接口的一些常用属性进行配置;对于一些SOPC元件库内不支持的模块,可以使用硬件描述语言设计实现其功能,并使其总线接口满足Avalon总线时序,从而作为用户自定义模块连接到总线上。本系统的处理器及外设架构如图2所示。
系统包括CPU、SDRAM、SDA、SCL、LAN_INT、FLASH、网络接口芯片W5100、JTAG_UART、TIMER、EPCS_FLASH_CONTROL等接口。除W5100之外其它在SOPC元件库中都有对应的IP核,可直接添加到系统中。W5100是我们自定义的模块,根据其手册使用硬件描述语言描述其接口,利用ComponentEdit定制其时序。W5100用来解析网络协议,是我们进行FPGA远程更新的关键部件。SDRAM用于程序的运行及及临时数据的存储。SDA、SCL是IIC接口,用于访问EEPROM,写入或读出参数配置的信息。LAN_INT为W5100的中断信号,用于及时通知NiosII软核处理发送或者接收中断。FLASH用来存储网页数据。JTAG_UART用来打印调试信息,以便于我们开发过程中的调试。EPCS_FLASH_CONTROL是FPGA配置芯片的接口,用于下载我们的配置文件。对于系统中各模块的访问地址,SOPC Builder会自动分配基地址,并根据该模块与Avalon总线接口的地址宽度计算模块占用的地址空间,生成结束地址。与同一条总线相连的各模块使用的地址区域不能有相互重叠的部分,否则会引起冲突。SOPC Builder也会为有中断信号接口的模块自动分配中断号,软件设计时使用该号码进行中断控制。同一条总线内相连的各模块使用的中断号不能有重复,否则也会引起冲突。
1.3 软件设计
浏览器与Web服务器之间采用HTTP(Hypertext Transfer Protocol)协议。HTTP是用来构建分布式、协同超媒体信息系统的应用层协议。它是一个通用的、无状态的协议,是万维网的基础。HTTP是在Web服务器和Web浏览器之间通信的协议,用来交互具有MIME格式的请求和响应报文。由于它规定了发送和处理请求的标准方式,规定了浏览器和服务器之间传输的报文格式和各种控制信息,允许不同种类的客户端相互通信而不存在兼容性问题。
通用网关接口CGI(Common Gate Interface)是一个用于定义Web服务器与其外部程序之间通信方式的标准或接口规范。它规定了一组标准的环境变量和参数格式,绝大多数的CGI程序被用来解释处理来自客户端输入的表单信息,并在服务器产生相应的处理,或将由此产生的相应动态信息反馈给浏览器。
如图3所示为Web服务器程序流程图。
2 关键问题及解决方法
2.1 网络接口芯片W5100
传统的网络接入设备大多采用软件方法实现,用软件设计TCP/IP协议栈,对开发人员软件能力要求很高。由于网络协议的复杂性,软件实现的协议稳定性欠佳,因此直接采用硬件协议栈实现网络接入具有设计简单、应用灵活的特点。
W5100是由WIZnet公司退出的一款多功能的单片网络接口芯片,内部集成有10/100M以太网控制器,主要应用于高度集成、高稳定、高性能和低成本的嵌入式系统中。支持全双工或半双工模式的应答模式,通信速率最高可以实现25Mbps,它将TCP/IP 协议栈、以太网的MAC机制模块和PHY模块三种功能融合为一体,并硬件化支持ARP、TCP、PPPoE、ICMP、UDP、以太网等协议类型,大大减轻了设计师的软硬件开发的复杂度,同时提供了多种总线接口方式(直接总线接口、间接总线接口、SPI总线),便于连接各种类型的CPU,可以满足不同应用场合的需求。
在本设计中,我们采用了直接总线接口的访问方式,采用15位地址线、8位数据线、/CS、/RD、/WR、/INT等信号线,定制用户逻辑外设W5100组件。
2.2 W5100组件的建立
SOPC Builder提供了一个元件编辑器,通过这个元件编辑器我们就可以将我们自己写的逻辑封装成一个SOPC Builder元件了。我们的W5100是基于Avalon总线中的Avalon Memory Mapped Interface(Avalon-MM),首先我们需要选择信号线及信号类型
然后我们将Interfaces标签页中Slave addressing 设置为NATIVE,选择静态地址对齐,根据系统时钟及W5100时序图,设置readwait和writewait为3个周期,其余默认。
3 测试
首先通过过广播找到Web服务器,然后将做好的网页文件通过网络和W5100下载到FLASH中,打开浏览器,输入需要访问的网页的地址,Web服务器收到要访问的网页,便从FLASH中找到该网页,从EEPROM中读取参数值代替网页中的变量,然后发送给浏览器。要访问的网页便动态的显示在客户端了。通过测试,我们实现了静态和动态功能的嵌入式Web服务器。
4 结束语
本文以FPGA芯片为核心,提出了基于Nios II和网络接口芯片W5100的嵌入式Web服务器,大大方便了用户的使用。通过采用网络接口芯片W5100大大减轻了软件以及硬件电路的复杂性,降低了成本;NIOS II的软硬件自由配置空间极大,其编程结构清晰、扩展方便,可以方便地调整系统和不断提升系统性能。
参考文献
[1]谢仕义,徐冰.嵌入式Web服务器的设计及其CGI实现[J].计算机工程与设计,2007,28(7).
[2]李兰英等.NiosII嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社, 2006:18-39.
[3]Altera Corporation.Quartus II Version 9.0 Handbook Volume 5:Embedded Peripherals[Z].2009.
[4]刘义才,林飞宇.基于W5100的远程控制设计[J].现代电子技术,2011,34(5):103-105.
[5]王卫亚,张大跃.计算机网络原理、应用和实现[M].北京:清华大学出版社,2007.
作者简介
张伏(1979-),工程师,主要研究方向为通信与系统。
作者单位
中国电子科技集团公司第54研究所河北省石家庄市050081