1、基于 FPGA 的 WEB 服务器设计与实现 FPGA 课程设计 草鱼 草鱼 草鱼 草鱼 题目 : por k 草鱼 基于 FPGA 的 WEB 服务器设计与实现 草鱼草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 基于 FPGA 的 WEB 服务器设计与实现 I 摘要 草鱼 设计并实现了基于 草鱼 FPGA 草鱼 的嵌入式 WEB服务器 , 草鱼 简单介绍了 SOPC技术及构建方法和嵌入式 WEB 服务器 ;pork论述了该 WEB 服务器硬件和软件设计过程 ,在 FP 草鱼GA 中以 Nios 草鱼 II 软核处理器为主控制器 ,实时多任务操作系统 C/ 草鱼 OS-II 为软件运行平台
2、,Niche 草鱼 st 草鱼 ack 草鱼 TCP/ 草鱼 IP 为应用层通信 协议 ;pork外扩 Flash、 porkSRAM、 porkSDRAM存储器芯片和网络控制芯片 ,用户在 IE 浏览器中通过文件系统可以浏览存储在FL 草鱼 AS 草鱼 H 芯片中的网页 ,由于 CPU 本身是以软核的方式实现 ,其功能可根据需要进行定制 ,非常灵活 ;pork设计具有灵活 、 pork集成度高 、 pork开发周期短等优点 ;pork设计实现的基于 FP 草鱼 GA 的嵌入式 WEB 服务器能够达到预期的效果 。 草鱼草鱼 关键词 草鱼 : 草鱼 FPGA 草鱼;pork 草鱼SOPC;po
3、rk嵌入式 Web 草鱼;pork 草鱼 Nios 草鱼II 草鱼 ;pork 草鱼 C/ 草鱼 OS 草鱼 - 草鱼 II 草鱼 ;pork 草鱼 Niche 草鱼 stack 草鱼 TCP/ 草鱼IP草鱼 Abstract 草鱼草鱼 Embedded 草鱼 web 草鱼 server 草鱼 is 草鱼 designed 草鱼 and 草鱼 implemented 草鱼 based 草鱼 on 草鱼 FPGA. 草鱼 SOPC 草鱼technologys 草鱼 features 草鱼 and 草鱼 its 草鱼 construction 草鱼 method 草鱼 and 草鱼 embedde
4、d 草鱼 web 草 鱼 server 草鱼 are 草鱼 briefly 草鱼 introduced. 草鱼 Subsequently 草鱼 implementation 草鱼 of 草鱼 embedded 草鱼 web 草鱼 server 草鱼 is 草鱼detailedly 草鱼 discussed 草鱼 in 草鱼 terms 草鱼 of 草鱼 hardware 草鱼 and 草鱼 software, 草鱼 thereinto 草鱼 uses 草鱼 NiosII 草鱼soft 草鱼 intellectual 草鱼 property 草鱼 processor 草鱼 as 草鱼 prima
5、ry 草鱼 controller 草鱼 in 草鱼 FPGA 草鱼 , 草鱼 real-time 草鱼multitasks 草鱼 operating 草鱼 system 草鱼 C/OS-II 草鱼 as 草鱼 running 草鱼 platform 草鱼 of 草鱼 application 草鱼software 草鱼 , 草鱼 and 草鱼 Niche 草鱼 stack 草鱼 TCP/ 草鱼 IP 草鱼 as 草鱼 communication 草鱼 protocol 草鱼 of 草鱼 application 草鱼layer 草鱼 . 草鱼 Foreign 草鱼 expansion 草鱼 Fla
6、sh, 草鱼 SRAM 草鱼 ,SDRAM 草鱼 memory 草鱼 chips. 草鱼 Consumers 草鱼can 草鱼 use 草鱼 IE 草鱼 to 草鱼 browse 草鱼 over 草鱼 web 草鱼 page 草鱼 which 草鱼 is 草鱼 stored 草鱼 in 草鱼 Fl 草鱼 ash 草鱼 through 草鱼 the 草鱼file 草鱼 system. 草鱼 The 草鱼 function 草鱼 of 草鱼 the 草鱼 system 草鱼 can 草鱼 be 草鱼 customized 草鱼 according 草鱼 to 草鱼different 草鱼 requ
7、irement 草鱼 , 草鱼 because 草鱼 CPU 草鱼 is 草鱼 configured 草鱼 by 草鱼 soft 草鱼 IP 草鱼 , 草鱼 its 草鱼 constitute 草鱼 is 草鱼 very 草鱼 flexible 草鱼 , 草鱼 it 草鱼 has 草鱼 many 草鱼 advantages 草鱼 such 草鱼 as 草鱼 flexible 草鱼 design 草鱼 , 草鱼 optimum 草鱼 scale 草鱼 integration 草鱼 and 草 鱼 short 草鱼 period 草鱼 of 草鱼 development 草鱼 . 草鱼 Exper
8、iment 草鱼 result 草鱼 s 草鱼 show 草鱼 that 草鱼 it 草鱼can 草鱼 implemented 草鱼 all 草鱼 functions 草鱼 perfectly.草鱼 Key 草鱼 words 草鱼 : 草鱼 FPGA 草鱼 ;pork 草鱼 SOPC 草鱼 ;pork 草鱼 embedded 草鱼 Web;pork 草鱼 NiosII 草鱼 ;porkC/ 草鱼 OS 草鱼 - 草鱼 II 草鱼 ;pork 草鱼 Nichestack 草鱼TCP/IP基于 FPGA 的 WEB 服务器设计与实现 II 摘要 I 草鱼 Abstract I 草鱼 第一章 草鱼
9、绪论 - 1 -草鱼 1.1 草鱼 选题背景 - 1 -草鱼 1.2 设计要求 - 1 -草鱼 1.3 实现方法 - 2 -草鱼 1.3.1 硬件法 - 2 -草鱼 1.3.2 软件法 - 2 -草鱼 第二章 草鱼 设计方案概述 - 2 -草鱼 2.1 硬件设计 - 2 -草鱼 2.2 软件设计 - 5 -草鱼 第三章 草鱼 相关原理 - 5 -草鱼 3.1 三速以太网设计 - 5 -草鱼 3.2 实时操作系统 - 6 -草鱼 3.3 草鱼 C/OS-II 在 NiosII 中的移植 - 6 -草鱼 3.4 草鱼 TCP IP 协议栈 - 6 -草鱼 3.5 草鱼 NicheStack 草鱼
10、TCP/IP 协议栈的移植 - 8 -草鱼 第四章 草鱼 系统设计 - 8 -草鱼 4.1 硬件系统设计 - 8 -草鱼 4.1.1NiosII 处理器系统构建 - 8 -草鱼 4.1.2 设置基地址和中断 - 13 -草鱼 4.1.3 配置 NiosII 系统 - 13 -草鱼 4.1.4 生成 NiosII 系统 - 13 -草鱼 4.2 软件系统设计 - 14 -草鱼 4.2.1 C/OS-II 移植过程 - 14 -草鱼 4.2.2 草鱼 NicheStack 的初始化 - 15 -草鱼 4.3 调试运行 - 16 -草鱼 基于 FPGA 的 WEB 服务器设计与实现 - 1 - 第一
11、章 草鱼 绪论 草鱼 1.1 草鱼 选题背景 草鱼 随着 Internet 的发展 , 鲤鱼 各种设备与 Internet 相结合已成为了一种发展趋势 。 草鱼嵌入式 Web 服务器可以提供丰富的用户界面 , 鲤鱼 并进行进一步的开发丰富嵌入式功能 。 草鱼 具有成本低 、 pork体积小 、 pork高可靠 、 pork微功耗 、 pork环境适应能力强等诸多优势 , 草鱼 在通信和工业控制等领域正得到日益广泛的应用 。 草鱼草鱼 本文设计的的 Web 服务器是基于 FPGA 和 SOPC 技术的 NiosII 软核处理器 。 草鱼 SOPC是基于大规模 FPGA 的单片机系统 。 草鱼 S
12、OPC 将尽可能大而完整的电子系统 草鱼 , 草鱼 包括嵌入式处理器系统 、 pork接口系统 、 pork硬件协处理器或加速系统 、 porkDSP系统 、 pork数字通信系统 、 pork存储电路以及普通数字系统等 ,在单一 FPGA 中嵌入实现 。 草鱼 NiosII 是一个用户可定制的 CPU, 鲤鱼 用户可以增加新的外设 、 pork新的指令 ,分配外设的地址等 。 草鱼 用户可以在客户端通过 IE浏览器对服务器进行访问 ,浏览存储在 Flash芯片中的网页 。 草鱼草鱼 1.2 设计要求 草鱼 Web 服务器也称为 WWW(WORLD 草鱼 WIDE 草鱼 WEB)服务器 , 鲤
13、鱼 主要功能是提供网上信息浏览服务 。 草鱼 Web 服务器是可以向发出请求的浏览器提供文档的程序 。 草鱼 服务器是一种被动程序 : pork只有当 Internet 上运行在其他计算机中的浏览器发出请求时 , 鲤鱼 服务器才会响应 。 草鱼 Internet 上的服务器也称为 Web 服务器 , 鲤鱼 是一台在 Internet 上具有独立 IP 地址的计算机 , 鲤鱼 可以向 Internet 上的客户机提供 WWW、 porkEmail 和 FTP 等各种 Internet 服务 。 草鱼 Web 服务器是指驻留于因特网上某种类型计算机的程序 。 草鱼当 Web浏览 器(客户端)连到服
14、务器上并请求文件时 , 鲤鱼 服务器将处理该请求并将文件反馈到该浏览器上 , 鲤鱼 附带的信息会告诉浏览器如何查看该文件(即文件类型) 。 草鱼 服务器使用 HTTP(超文本传输协议)与客户机浏览器进行信息交流 。 草鱼草鱼 本设计是基于 Nios 草鱼 II 处理器的 HTTP 网页服务器 , 鲤鱼 它藉由 MicroC/OS-II操作系统上的 NicheStack 草鱼 TCP/IP协议栈来实现 , 鲤鱼 网页内容存放开发板的 Flash芯片中 。草鱼 网页服务器可以处理基本的一些网络请求 , 鲤鱼 包括 HTML, 鲤鱼 JPEG, 鲤鱼 GIF, 鲤鱼 PNG, 鲤鱼 JS, 鲤鱼CS
15、S, 鲤鱼 SWF, 鲤鱼 ICO 等文件 , 鲤鱼 并通过在网页上进行相应设置对开发板的相应模块进行操作 。 草鱼基于 FPGA 的 WEB 服务器设计与实现 - 2 - 草鱼 系统的整体架构图 草鱼 草鱼 1.3 实现方法 草鱼 1.3.1 硬件法 草鱼 根据已有的 TCP/IP 芯片直接作为以太网口 。 草鱼 该方法的优点是可靠性高 , 鲤鱼 执行速度快 , 鲤鱼 但硬件电路复杂 , 鲤鱼 价格昂贵 , 鲤鱼 硬件成本高 。 草鱼草鱼 1.3.2 软件法 草鱼 将 TCP/IP 协议以软件的方式写入系统的 ROM 中 。 草鱼 但是 TCP/IP 协议栈比较庞大 ,鲤鱼 在嵌入式系统中很
16、难完整地支持 TCP/IP 协 议栈 , 鲤鱼 因此需要精简 TCP/IP 协议 , 鲤鱼保留与需要相关的部分 , 鲤鱼 减少对系统资源的占用 。 草鱼草鱼 通过对上述方法的比较 , 鲤鱼 本设计采用第二种方法 。 草鱼 使用 Altera 公司的 NiosII 软核处理器与 NicheStack 草鱼 TCP/IP 协议栈相结合的方法来实现该 Web 服务器的功能 。草鱼草鱼 第二章 草鱼 设计方案概述 草鱼 2.1 硬件设计 草鱼 基于 FPGA 的 WEB 服务器设计与实现 - 3 - 草鱼 系统需要使用的硬件器件有 : por k草鱼 FPGA 芯片 草鱼 以太网 PHY 芯片 草鱼
17、LED 灯 草鱼 LCD 显示屏 草鱼 七段数码管 草鱼 SSRAM 芯片 草鱼 Flash 芯片 草鱼 草鱼 四位显示数码管图片 草鱼 SOPC 系统 Nios II 处理器 定时器 JTAG UART 片上存储单元 SGDMA 控制器 三速以太网控制器 外围硬设 LED 七段数码管 LCD显示屏 基于 FPGA 的 WEB 服务器设计与实现 - 4 - 草鱼 LED 灯草鱼 LCD 显示屏 草鱼 需要系统搭建的组件 : por k草鱼 NiosII 草鱼 CPU 草鱼 JTAG 草鱼 UART 接口 草鱼 片内存储器 草鱼 Avalon 三态总线桥 草鱼 SSRAM 接口 草鱼 Flash
18、 接口 草鱼 并行输入 /输出模块( PIO) 草鱼 定时器 草鱼 三速以太网接口 草鱼 DMA 总线控制器 草鱼 硬件的主要设计步骤为 : por k草鱼 在 SOPC 草鱼 Builder中构建 SOPC系统 。 草鱼 包括 NiosII软 核 CPU、 pork存储器接口( SDRAM、porkSRAM、 porkFlash 等) 、 pork以太网接口等 。 草鱼 创建 SOPC 系统的系统描述文件和原理图模型 ; por k草鱼 通过原理图将生成的 SOPC 系统模块添加到工程中 , 鲤鱼 并在原理图中继续为电路添加输入 、 por k输出 、 pork双向引脚及 PLL 等其他组件
19、 ; pork草鱼 为工程分配引脚并编译 , 鲤鱼 将编译的工程下载至开发板 , 鲤鱼 运行并调试 ; pork草鱼 基于 FPGA 的 WEB 服务器设计与实现 - 5 - 2.2 软件设计 草鱼 软件开发的部分分为两个部分 : pork客户端部分在 NiosII 草鱼 IDE 环境中的开发 , 鲤鱼 服务器部分在 C+Builder 环境中的开发 。 草鱼 基于 NiosII 的应用程序开发需要使用C/OS-II 实时操作系统和 NicheStack 草鱼 TCP/IP 协议栈两个组件的支持 。 草鱼 软件设计主要完成的任务如下 : p ork草鱼 初始化以太网设备 , 鲤鱼 C/OS-I
20、I实时操作系和 NicheStack 草鱼 TCP/IP 协议栈 ; pork草鱼 将缓存的数据分割为小包发送出去 ; p ork草鱼 处理 PC 端服务器返回的信息 , 鲤鱼 根据返回信息对象对缓存中的数据进行清除或重新发送 ; p ork草鱼 PC 上的 C+Builder 程序开发主要 完成的任务如下 : p ork草鱼 接受来自以太网的数据 , 鲤鱼 存储并显示 ; pork草鱼 判断丢失的数据并通知重发 ; p ork草鱼 如无数据丢失 , 鲤鱼 定时通知对方已收到内容 ; pork草鱼 配合对端进行传输速率的控制 ; p ork草鱼 第三章 草鱼 相关原理 草鱼 3.1 三速以太网
21、设计 草鱼 媒体访问层( MAC)作为以太网接口芯片的主要部分 , 鲤鱼 主要完成以太帧的检错和提供可靠的数据通路的功能 , 鲤鱼 以太网的物理层( PHY)负责建立传输介质和 MAC 层的链接 ,鲤鱼 将数据进行信号转换 。 草鱼 MAC 需要配置 PHY 的寄存器信息 , 鲤鱼 设定 PHY 的工作频率 、 pork接口传输介质选择及工作模式选择 。 草鱼 MDIO 接口是用来传输 MAC 对 PHY 器件控制管理的模块 草鱼 通过 Marvell 草鱼 88E1111 以太网 PHY 芯片为用户提供网络界面 。 草鱼 88E1111 芯片支持10/100/1000 草鱼 Mbps 传输速
22、率 , 鲤鱼 支持的 MAC 层传输界面有 GMII/MII/RGMII/TBI 等 。 草鱼 在Altera 三速以太网控制器的设计界面中 , 鲤鱼 以选择其 MAC 界面为 MII 或者 RGMII。 草鱼 MII 草鱼 (Media 草鱼 Independent 草鱼 Interface(介质无 关接口)或称为媒体独立接口 , 鲤鱼 它是 IEEE-802.3定义的以太网行业标准 。 草鱼 它包括一个数据接口 , 鲤鱼 以及一个 MAC 和 PHY 之间的管理接口 , 鲤鱼 MII 支持 10 兆和 100 兆的操作 。 草鱼 RMII 是简化的 MII 接口 , 鲤鱼 在数据的收发上它
23、比MII 接口少了一倍的信号线 , 鲤鱼 一般要求是 50 兆的总线时钟 , 鲤鱼 和 MII 一样 , 鲤鱼 RMII 支持 10兆和 100 兆的总线接口速度 。 草鱼 GMII 是千兆网的 MII 接口 , 鲤鱼 这个也有相应的 RGMII 接口 ,鲤鱼 表示简化了的 GMII 接口 。 草鱼 在 MAC 选项标签页面 , 鲤鱼 用户应该给以太网控制器 设置合适的值 。 草鱼 控制器须包含 MDIO 模块 , 鲤鱼 它用于给 PHY 芯片生成 2.5MHz 的 MDC 时钟 , 鲤鱼 这个 频 率 从 控 制 器 主 时 钟 分 频 而 得 。 草鱼基于 FPGA 的 WEB 服务器设计
24、与实现 - 6 - 草鱼 3.2 实时操作系统 草鱼 实时操作系统是指如果逻辑和时序出现偏差将会引起严重后果的系统 , 鲤鱼 由系统硬件(包括处理器芯片 、 pork存储芯片等) , 鲤鱼 固化在存储芯片的用户软件及操作系统组成 。 草鱼 有两种类型的实时系统 : pork软实时系统和硬实时系统 。 草鱼 软实时系统中 , 鲤鱼 系统的各个任务运行不限定完成时间 , 鲤鱼 速度越快越好 ; pork硬实时系统中 , 鲤鱼 各任务的执行不仅要无误还需 准时 。 草鱼 现在较为流行的实时操作系统有 : pork C/OS-II、 porkeCOS、porkRTLinux、 porkRTAI、 po
25、rkRTEMS 等 。 草鱼 C/OS-II系统是一个完整地 、 pork可移植 、 pork可固化 、pork可裁减 、 pork抢占式的实时多任务内核 , 鲤鱼 稳定性可靠性高 , 鲤鱼 允许嵌套多大 255层的中断嵌套 , 鲤鱼 符合本课题的要求 。 草鱼草鱼 3.3 草鱼 C/OS-II 在 NiosII 中的移植 草鱼 移植指的是一个实时内核能在其他的微处理器或微控制器上运行 。 草鱼 C/OS-II的绝大部分代码是 C 语言编 写 , 鲤鱼 仅部分与使用的处理器相关的代码需要重新编写 。草鱼草鱼 C/OS-II 的正常运行需要满足一下条件 : p ork草鱼 处理器的 C 编译器能
26、产生课重入型代码 ; p ork草鱼 处理器支持中断 , 鲤鱼 并能产生实时中断 ; pork草鱼 C语言可开 /关中断 ; p ork草鱼 处理器支持一定数量的数据存储硬件堆栈 ; p ork草鱼 处理器有将堆栈指针及其他 CPU寄存器内容读出并存储到堆栈或内存中的指令 ;p ork草鱼 3.4 草鱼 TCP IP 协议栈 草鱼 TCP/IP 协议全称传输控制协议 /网际协议 。 草鱼 TCP/IP 协议模型与 OSI 参考模 型一样采用了分层结构 , 鲤鱼 但是侧重于互连设备之间的数据传输 , 鲤鱼 而不是严格的功能层次基于 FPGA 的 WEB 服务器设计与实现 - 7 - 划分 。 草
27、鱼 该模型分为四层 : pork数据链路层 、 pork网络层 、 pork传输层 、 pork应用层 。 草鱼草鱼 数据链路层管理网络的连接并提供网络上的报文输入 /输出 。 草鱼 主要包括 ARP 地址解析协议和 RARP 逆地址解析协议 , 鲤鱼 以太网接口芯片及其驱动程序 。 草鱼草鱼 网络层处理报文的路由管理 , 鲤鱼 根据接收保温的信息决定报文的去向 。 草鱼 包含了TCP/IP 协议族里的 IP 协议 、 por kICMP 协议 、 porkIGMP 协议 。 草鱼草鱼 传输层的作用 是管理源和目的之间的报文传输 。 草鱼 这一层包含了两个协议 : pork有连接的 TCP 协
28、议 、 por k无连接的 UDP 协议 。 草鱼草鱼 应用层包括一些与用户相关的认证 、 pork数据处理 、 pork压缩等服务 。 草鱼 主要包括 FTP 协议 、 por kSMTP 协议 、 porkSNMP 协议 、 porkTelnet 协议等 。 草鱼草鱼 草鱼 草鱼 传统的 TCP/IP 协议的实现过于复杂 , 鲤鱼 需要占用大量的系统资源 。 草鱼 而嵌入式应用的系统资源往往很有限 , 鲤鱼 所以传统的 TCP/IP 并不适合本课题 。 草 鱼 因此需要把传统的 TCP/IP 在不违背协议标准的情况下进行改进 , 鲤鱼 以提高其实时性能 , 鲤鱼 减少占用的系统资源 , 鲤
29、鱼 从而满足本课题的应用要求 。 草鱼 这种用于嵌入式系统的实时 、 pork简单 、por k灵活的 TCP/IP 协议称为嵌入式 TCP/IP 协议 。 草鱼草鱼 目前 , 鲤鱼 常用的 TCP/IP 协议栈有 : porkBSD 草鱼 TCP/IP 协议栈 、 pork C/IP协议栈 、 porkLwIp 协议栈 、 pork IP 协议栈 、 porkOpenTCP 协议栈 、 porkNicheStack 协议栈等 。 草鱼 NicheStack 是针对于嵌入式系统 的通讯协议 , 鲤鱼 全部采用 ANSIC 书写 , 鲤鱼 占用极少的内存资源 。 草鱼 如内存的需求在 ARM 草鱼 32 位 CPU 上最小的 TCP/IP 只有 12.8K, 鲤鱼 而全功能的 TCP/IP 也只有 42.4K。 草鱼 NicheStack 草鱼 TCP/IP协议栈在业内被誉为灵活的最佳联网堆栈 。 草鱼草鱼 用户数据 用户数据 用户数据 Socket TCP UDP ICMP 协议 IP 协议 IGMP 协议 ARP 协议 硬件协议 RARP 协议 网络电缆 应用层 传输层 网络层 数据链路层