Xilinx FPGA的嵌入式系统开发过程

随着FPGA 技术的迅速发展,可编程片上系统(SOPC)作为一种特殊的嵌入式微处理器系统,融合了SoC和FPGA 各自的优点,并具备软硬件在系统可编程、可裁减、可扩充、可升级的功能,已逐渐成为一个新兴的技术方向。SOPC的核心是在FPGA上实现的嵌入式微处理器核,目前主要有Xilinx公司集成的32位软核MicroBlaze[1] ,32位PowerPC系列处理器硬核PowerPC405、PowerPC440,ARM公司的CortexA9,以及Altera公司的Nios系列微处理器软核等。本文主要介绍Xilinx公司的MicroBlaze 软核结构,对其体系结构、设计流程和相关开发工具一一进行介绍,并在实际的无线电监测系统[2]中采用此方案,构建了一个小型化、智能化、网络化的软件无线电处理平台。

1 MicroBlaze处理器结构
  MicroBlaze软核处理器是可配置的精简指令集(RISC)32位CPU,该RISC核针对Xilinx公司的FPGA芯片进行了优化。设计人员可以根据设计定制处理器的可选配置,根据版本的不同,配置不同的选项。该软核处理器具有以下几个方面的特征:
◆ 32个32位通用寄存器;
◆ 32位3个操作数的指令字,指令字有2种寻址模式;
◆ 分离的32位地址总线和数据总线;
◆ 具有高速的指令和数据缓存,3级和5级流水线操作;
◆ 灵活的总线结构,支持LMB、OPB、PLB、XCL、FSL片上总线接口等,新推出的系列还支持AXI总线接口;
◆ 支持MMU存储管理、FPU浮点单元、高速缓存、异常处理和调试逻辑等可根据性能需求和逻辑区域成本任意裁减的高级特性。

  MicroBlaze的这些特性极大地扩展了其应用范围,MicroBlaze处理器的内核仍在不断更新之中,目前使用的版本MicroBlaze v7.1,其内部架构如图1所示。

图1 MicroBlaze处理器结构图

图1中MicroBlaze处理器的外部接口定义如下:
① DPLB(Data Processor Local Bus)、DOPB(Data Onchip Peripheral Bus):数据接口,处理器本地总线,用于处理器与片内的设备数据交换。
② IPLB(Instruction Processor Local Bus)、IOPB(Instruction OnChip Peripheral Bus):指令接口,用于指令读取通道。
③ DLMB(Data Local Memory Bus):数据接口,本地存储器总线,用于高速数据交换。
④ ILMB(Instruction Local Memory Bus):指令接口,实现高速指令读取。
⑤ MFSL0~15(Main Fast Simple Link):FSL主设备数据接口,提供点对点数据通道;SFSL0~15(Slave Fast Simple Link):FSL从设备点对点数据接口。
⑥ DWFSL0~15:FSL主设备直接连接接口;DRFSL0~15:FSL从设备直接连接接口;
⑦ IXCL(Instruction side Xilinx CacheLink interface)和DXCL(Data side Xilinx CacheLink interface):分别为指令高速缓存接口和数据高速缓存接口。

2 EDK工具开发流程
  Xilinx公司嵌入式开发套件工具EDK[3]( Embedded Development Kit)为用于开发基于MicroBlaze 软核和PowerPC硬核处理器的SOPC系统提供了一个很好的工具平台。Xilinx公司的EDK工具主要包含:Xilinx Platform Studio(XPS)人机界面、嵌入式系统工具套件、嵌入式处理IP核、Platform Studio SDK(Software Development Kit,SDK)。XPS提供下面的特性:
◆ 能够添加核,编辑核参数,进行总线和信号连接,产生MHS文件;
◆ 能够产生和修改MSS文件;
◆ 支持Xilinx底层所有工具;
◆ 能够产生和观察系统块图和设计报告;
◆ 多用户软件应用支持;
◆ 项目管理;
◆ 过程和工具流程依赖管理。

  一个完整的嵌入式处理器系统设计通常包括3 个部分:硬件系统的构建、软件系统及存储器映射、应用程序开发。
  硬件系统的构建是指设计人员根据应用的需要而使用Xilinx的技术建立灵活的嵌入式处理子系统。硬件平台是由一个或多个处理器或外设连接到处理器总线构成的,EDK通过微处理器硬件规范(Microprocessor Hardware Specification,MHS)文件记录硬件平台信息。

  软件系统及存储器映射是由软件驱动和用于建立应用程序的操作系统组成的。所建立的软件映像文件只包含用户所使用到的一部分Xilinx的库。EDK通过微处理器软件规范(Microprocessor Software Spectifcation,MSS)记录软件平台信息。设计人员可以在软件平台运行多个应用程序。

  MHS和MSS数据文件定义了嵌入式系统,其开发流程如图2所示。

图2 EDK嵌入式系统软硬件开发流程

3 嵌入式系统应用设计
3.1 系统的硬件组成

图3 智能无线电监测管控系统硬件结构框图

本文以某智能无线电监测管控系统为例,采用基于FPGA的SOPC技术,选用的实验平台为Xilinx公司的XC4VSX35 FPGA开发平台[4]。图3表示的是系统中嵌入式处理器的硬件组成,这些硬件除A/D转换模块、干扰机和控制中心外,都集成在一块FPGA评估板上。系统以带有32位MicroBlaze软核的FPGA作为控制中心,处理经A/D变换后的侦察信号数据,然后通过以太网将数据传送到控制中心,并从控制中心传回控制参数。DDR_SDRAM作为片外存储器,用来弥补微处理器内部存储器容量小的缺点;CF卡存储系统软硬件的bit文件和网络配置文件;串口用来控制具有远程控制功能的侦察接收机,也可在调试时输出系统的运行信息。本文设计的嵌入式系统的各功能部件在FPGA 内部都以IP核的形式构建并连接,包括DDC和FFT自定义的IP核,它们分别以PLB总线和FSL总线挂接在MicroBlaze上,较好地满足了智能无线电监测管控系统的硬件设计需求。

3.2 系统的软件设计
  智能无线电监测管控系统的嵌入式软件包括嵌入式操作系统和网络应用程序。EDK集成了软件平台产生器、软件编译器和软件调试等工具,因此,软件设计也在EDK中进行。

  嵌入式操作系统是嵌入式软件技术的核心,介于嵌入式系统硬件和应用程序之间,负责调度并管理应用程序,完成对嵌入式系统硬件的控制和操作。嵌入式操作系统的选用主要考虑实时性、可靠性、功耗、可抑制性以及兼容性、软件开发难易程度等因素,本文选择Xilinx公司提供的实时操作系统Xilkernel[5]来进行软件开发。

  嵌入式系统应用软件主要是接收客户端指令和发送数据给客户端,通信方式为TCP/IP的网络数据通信协议,网络通信应用程序采用顺序执行的结构方式。为了能够响应外围设备的中断请求,在程序中为多个外围设备提供了相应的中断服务程序。网络应用程序软件流程图如图4所示。

图4 网络应用程序软件流程框图

3.3 实验结果
  系统使用ARONE接收机监测无线电信号,中频输出为10.7 MHz,A/D采集卡将采集的数据送入FPGA中,FPGA处理后将数据通过网络传输到PC机中,在PC机上开发网络客户端程序,对侦察的信号进行分析、记录、存储等操作。使用信号线将ARONE通信接收机输出端与A/D转换模块相连,A/D转换模块使用美国模拟器件公司的A/D转换器AD9460。在侦察接收机受控工作时,使用串口线将图3所示硬件系统与ARONE通信接收机串口输入相连;在侦察接收机自主工作和系统调试时,使用串口线将图3所示硬件系统与PC机相连,在超级终端中观看系统运行状态。将信号源与ARONE通信接收机信号输入端相连。将软硬件联合编译生成的bit文件下载到FPGA开发板上,在PC机上使用系统监测软件进行监测。图5是中频信号分析图,可得到信号电平大小、频率、带宽等信息;图6是频段扫描的频谱数据显示,在选定的频率范围内循环扫描,得到所有信号的电平、频率等信息。实验结果表明:通过合理规划FPGA资源和任务需要,在一块FPGA中实现了信号处理、接口与控制、网络数据传输的任务,能够很好地满足实际工程需要。

图5 中频信号分析

图6 频谱扫描

结语
  本文介绍了一种基于FPGA的嵌入式系统设计,利用此嵌入式系统实现了某智能无线电监测管控系统信号的采集、处理、传输等功能。同时,基于FPGA IP核的设计,使各功能部件集中在FPGA芯片上,满足了系统对体积、成本、功耗和灵活性的要求。

参考文献
[1] Xilinx.MicroBlaze Processor Reference Guide,2008.
[2] 杨小牛,楼才义,徐建良.软件无线电原理与应用[M].北京:电子工业出版社,2006.
[3] Xilinx.Embedded System Tools Reference Manual,2008.
[4] Xilinx.ML402 User Guider,2005.
[5] Xilinx.OS and Libraries Document Collection,2008
.
作者:路后兵(讲师),研究方向为嵌入式系统、软件无线电数字信号处理。