基于NETFPGA的可重构科学计算平台
EDK中还带有一些外设接口的IP核,如LMB、OPB总线接口、外部存储控制器、SDRAM控制器、UART、中断控制器、定时器等。利用这些资源,可以构建一个较为完善的嵌入式微处理器系统。
在FPGA上设计的嵌入式系统层次结构为5级。可在最低层硬件资源上开发IP核,或或已开发的IP核搭建嵌入式系统,这是硬件开发部件;开发IP核的设备驱动、应用接口(API)和应用层(算法),属软件开发内容。
利用MicroBlaze构建基本的嵌入式系统。通过标准总线接口—LMB总线和OPB总线的IP核,MicroBlaze就可以和各种外设IP核相连。
EDK中提供的IP核均有相应的设备驱动和应用接口,使用者只需利用相应的函数库,就可以编写自己的应用软件和算法程序。对于用户自己开发的IP核,需要自己编写相应的驱动和接口函数。
2.3.4MAC
MAC的控制采用了XILINX的IP EthernetLITE,简化以太网子系统。对于远程监视或控制应用中所需要的简单网络接口来说,最小化网络子系统就足够了。
MicroBlaze “Lite” Ethernet Subsystem:MicroBlaze以太网简化子系统
简化以太网子系统
利用不带中断的Ethernet Lite IP在简单的查询模式下实现设计就可以了。同时还可以将全部软件,包括简单的应用层,都存储在Xilinx FPGA中的本地存储器中。利用XPS中的基本系统构建向导(Base System Builder wizard)可以容易地创建这样的MicroBlaze设计。
2.3.5HTTP接口
·lwip网络协议栈
Lwip是Light Weight IP的缩写,它是专门为嵌入式系统应用的TCP/IP协议栈。Lwip既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。Lwip支持多网络接口下的IP转发,ICMP协议,UDP协议,TCP协议。不同于一般的TCP/IP协议栈,在Lwip的处理器模型中,所有TCP/IP协议栈都在一个进程当中完成,而不是在每一层都有一个单独的进程。这样TCP/IP协议栈就和操作系统内核分开了,避免了跨层传输数据时频繁的上下文操作。而应用层程序既可以是单独的进程也可以驻留在TCP/IP进程中。如果应用程序是单独的进程,可以通过操作系统的邮箱、消息队列等和TCP/IP进程进行通讯。如果应用层程序驻留TCP/IP进程中,那应用层程序就利用内部回调函数接口和TCP/IP协议栈通讯。
·SOCKET编程
网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符,它具有类似于打开文件的函数调用Socket()。基于操作系统的Socket编程有三种类型:流式套接字,数据报式套接字,原始式套接字。其中只有流式套接字提供一个面向连接的可靠的数据传输服务。
·服务器端HTTP协议的实现
HTTP协议是一种较为常用的应用层协议,它是Hypertext Transfer Protocol的缩写。HTTP协议采用客户端和服务器的模式,通过客户端向服务器发出请求,获得服务器端的响应。在本系统设计中SOPC系统作为HTTP协议的服务器。HTTP请求和响应的报文格式是相似的,报文有一个请求行/状态行和一个头部组成,有时还可能包括主体。在请求行中包括了请求类型,URL,版本等。在响应行中包括状态码,状态短语等。头部格式为:(头部名字:头值)。下面是一个HTTP请求的例子。
请求 | 应答 |
GET /usr/bin/image HTTP/1.1 Accept: image/gif Accept: image/jpeg | HTTP/1.1 200 OK Date: Mon,08-Jan-05 13:15:14 GMT Server: Challenger MIME-Version: 1.0 Content-length: 2048 (图像文件主体) |
表4-1 一个HTTP请求的例子
在EDK中,每一个外设IP模块都有自己的软件函数库。利用Libgen工具,将所需外设函数数库的头文件添加进工程中,通过调用这些函数可以操作和控制这些外设。例如对串口的操作如下:
//初始化串口,设置波特率等参数,清空发送和接收缓冲,禁止中断;
使用标准C语言进行应用程序的开发,编写相应的算法软件,完成系统功能。
将编写的程序代码利用mb-gcc编译工具,根据系统的软件一并,生成.ELF文件。在编译链接之前,若选择调试方式,就会在生成文件中加入调试接口SMDstub,进行程序的硬件调试。
利用系统的硬件模型以及RAM块的组织结构文件、ELF文件和用户结束文件,应用FPGA综合实现工具(如Xilinx XST)进行综合,然后下载生成的配置BIT文件到目标板上。利用EDK中提供的GDB调试工具可以进行程序调试。有两种调试方法:软件仿真和硬件调试。软件仿真可以进行程序的功能调试,在开发工具内部就可以进行,不需要硬件支持。硬件调试就是通过JTAG接口或串口(可在硬件设计时选择),连接到目标板上的应用系统中的XMD调试接口,将软件程序下载到系统中进行调试。本课题使用的目标板上的主芯片为Xilinx Spa
- 动态可重构系统的通信结构研究(06-06)
- 采用FPGA部分动态可重构方法的信号解调系统设计(06-05)
- 基于FPGA的动态局部可重构实现方法(06-04)
- 手持移动终端的可重构天线设计(12-20)
- 可编程模拟器件在接收机动态可重构结构应用(03-31)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)