摘 要: 针对传统的定位终端系统结构和设计上的缺陷,利用Nios 软核处理器集成度高、配置灵活等特点,结合GPS和GSM模块,提出了一种基于SOPC技术的双定位终端系统设计方案。该方案通过SOPC Builder开发工具将Nios处理器、存储器和接口等组件快速地嵌入到高密度FPGA中,采用单个控制芯片完成了人机交互模块、控制模块和通信模块等功能,实现了高精度的实时定位功能。实践表明:该系统具有极好的灵活性、扩展性和通用性,且系统结构紧凑、功耗较低。 关键词: Nios;SOPC;GPS;GSM;定位终端
1 引言
随着FPGA技术的日益成熟,尤其是基于SOPC技术的嵌入式处理器的发展,解决了传统电路原理图设计中的许多不便, 使得在一块可编程芯片上实现整个嵌入式系统成为可能。FPGA也被大量地运用在定位系统当中,同时,加上GPS的不断改进和移动通信的飞速发展,定位系统被广泛地应用于各行各业,如军事、铁路和勘探等,并逐步深入到汽车定位、导航等民用领域。目前,大多数的定位终端产品均采用GPS作为主要的定位手段,且其处理核心采用微控制器,需要扩展大量的逻辑器件和接口转换功能模块,其产品开发周期长, 开发成本高, 产品升级不方便, 接口兼容性差,而且存在定位盲区。而用FPGA 实现定位终端系统, 能够将处理器, 存储器,I/O接口等组件集成在一块FPGA 上, 其设计灵活, 可裁减、可扩充、可升级、具有软硬件在系统可编程的功能,系统结构极为紧凑。为此,该设计充分利用了FPGA 强大的逻辑控制功能和Nios软核处理器的许多可配置标准外设接口功能,结合GPS和GSM功能模块, 设计了一款基于SOPC 技术的双定位终端系统。该系统通常由GPS模块完成定位,在特殊情况下可以开通GSM网络定位功能实现双定位,再通过GSM 网络将定位信息、时间和终端特殊信息传送到监控中心,或者接收监控中心传来的信息,完成定位和监控等功能。
2 基于Nios软核处理器的SOPC设计
2.1 Nios软核处理器
Nios处理器是Altera公司推出的一种用户可配置的16或32位RISC软核处理器,采用 5 级流水线和程序与数据存储器分离的Harvard结构。它包含16位的专用指令集、算术逻辑运算单元、同步地址发生器、16或32位数据总线、常用外设和接口, 以及并行多控制器Avalon 交换结构总线。与常见的硬核处理器相比,Nios软核处理器具有以下特点:
(1) 是一种可配置的软核,可以通过SOPC Builder对其参数配置以适应不同的场合;
(2) 有16和32 位两个版本,而指令集是16位的,减少了程序代码长度和指令存储宽度;
(3) 采用了滑动窗口选取大容量的窗口化通用寄存器组,加速了子程序的调用和返回;
(4) Avalon 交换结构总线支持所有总线控制器的并行事务处理,解决了传统处理器总线每次只能有一个控制器可以存取总线的带宽瓶颈;
(5) 可以容易地实现标准外设的裁减和扩充,完成系统的集成。
2.2 SOPC的体系结构及开发流程
Nios处理器系统通过Avalon交换结构总线将Nios处理器、存储器和接口等系统组件桥接在一起,形成一个接口统一的高性能SOPC系统。基于SOPC的系统设计包括硬件和软件两部分。硬件部分设计使用SOPC Builder生成Nios处理器,从标准库中添加外设,综合处理自定义系统,用Quartus II设计软件将Nios处理器和其它逻辑电路结合完成设计输入,然后进行编译,再将该硬件配置信息通过配置芯片装载到FPGA中。软件开发利用SOPC Builder生成的软件文件,用文本编辑器编写汇编语言或C/C++程序,用GNUPro软件开发工具进行程序设计、连接、编译和调试。综上所述,基于Nios处理器的SOPC开发流程可用下图1表示。

图1 基于 Nios 处理器的 SOPC 开发流程
从图1可以看出,整个设计采用自顶向下的设计模式。基于Nios处理器的SOPC设计具有完整、便捷和统一的开发平台,处理器软核和相关的功能模块都可以在相应的平台上快速灵活地定制。其设计流程具备包括处理器在内的完整的软硬件协同设计和验证手段,使设计者从以往繁琐的设计细节中解脱出来,极大地缩短了设计周期和节约了开发成本。
3 基于SOPC的系统硬件设计与实现
3.1系统硬件体系结构
定位终端系统的硬件由一块FPGA芯片和GPS模块, GSM 模块, 人机交互模块和控制模块等组成, 其结构框图如图2所示。FPGA芯片主要实现Nios软核处理器、片上存储器和各种接口等功能,其包括Nios系统和外设两部分。Nios系统包括Nios处理器、存储器、定时器、串行接口、并行接口和连接各个组件的Avalon交换结构总线。其中UART_0和UART_1分别实现与 GSM和GPS模块的串行通信,KEY_PIO和LCD_PIO实现与人机交互模块的连接,CTL_PIO用于特殊情况下对定位终端设备的简单控制。

图2 定位终端系统硬件结构框图
3.2 GPS 和 GSM 模块
GPS选用Motorola公司的M12 GPS模块,该模块具有12个并行通道,可同时跟踪12颗卫星,提供码跟踪和载波辅助跟踪,可串行输出纬度、经度、高度、速度、航向和时间等信息。与FPGA的主要连接有秒脉冲、数据接收和发送端口,都是LVTTL电平,可以和Cyclone 系列FPGA器件直接相连。GSM 模块采用 Siemens 公司的 TC35,该型号的 GSM 模块工作在 EGSM 900MHz 和 GSM 1800MHz 频率波段,提供话音和数据传输的无线连接,使用40引脚的零插力连接器作为控制数据、话音信号和电源线的应用接口。其串口通信波特率在 300bps-115kbps 之间可选,也可以在1200bps-115kbps 之间的8种波特率间自动适配。
3.3 其它模块
按键采用4X4的矩阵键盘,实现查询、控制命令输入和报警等功能。LCD显示选用OCMJ2X8 (32X128) 中文液晶图文显示屏,内含8X8(半高)、8X16(全高)点阵字符和16X16点阵国标一级汉字,通过输入ASCII码和区位码实现字符和汉字的显示,该显示屏具有清屏和上下左右移动功能,上电自动完成初始化。配置芯片采用EPCS4完成配置文件和程序的下载。
3.4 Nios 系统设计
该设计中的 FPGA 选用 Cyclone 系列器件 EP1C12F256I7, FBGA 封装。设计采用 Altera 公司的 Quartus II开发工具。其主要的设计过程如下:
(1) 执行 Quartus II 软件,创建新项目,项目名和顶层设计实名为posit;器件选择EP1C12F256I7;通过新建 Block Diagram/ Schematic File 命令创建一个 BDF 文件;
(2) 启动 SOPC Builder,系统名称命为 nios16,并选择语言为 Verilog;在 Nios 向导下添加 Nios Processor,选择处理器结构为 Nios-16,硬件栏的 Register File 选为128;
(3) 添加两个 On-Chip Memory,一个为4Kbytes 的16bits ROM,命名为 ROM_0,用作存放应用程序;另一个为 2Kbytes 的16bits RAM,命名为 RAM_0,用于缓存定位等信息;
(4) 添加一个 Interval timer,Initial Period设为1sec。
(5) 添加两个 UART,Baud Rate 都设为9600bps,分别与 GSM和GPS 模块连接;
(6) 添加一个 4bits 的PIO,选择Either Edge捕捉和 Edge中断,并命名为 key_pio;
(7) 添加一个 1bit的PIO,命名为lcdc_pio,和一个8 bits 的PIO,并命名为 lcdd_pio;
(8) 选择自动分配地址和中断命令,完成Nios 系统的设计。
(9) 去掉Software Components中的任何选项,然后单击Generate即可生成 Nios 系统;
(10) 在 Quartus II 的 BDF 窗口中加入生成的 Nios 系统,添加好输入输出引脚符号后保存为 posit.bdf, 即可完成综合硬件设计,如图4所示。

图4 综合硬件设计
(11) 选择 Start Analysis & Synthesis 开始分析和综合,完成后进行引脚分配,检查无误后执行 Start Assembler,对输入设计进行汇编;
(12) 将汇编好的编程配置文件posit.sof通过JTAG方式下载到定位终端目标板上,即可完成硬件的所有综合设计。
4 基于SOPC的系统软件开发
4.1 软件总体构成
定位终端软件主要完成定位信息的采集和定位终端与监控中心之间的数据通信,主要由主程序、按键处理程序、显示程序、GPS 信息处理程序和 GSM 信息处理程序组成。主程序完成系统的初始化、自检、人机交互操作和定位信息的处理等功能。
4.2 GPS 定位流程
GPS 模块输出的 GPS 定位信息服从NMEA -0183 通信标准。NMEA-0183 通信标准的输出数据采用的是 ASCII 码,其内容包含了纬度、经度、高度、速度、日期、时间、航向以及卫星状况等信息。主要的命令包括 GGA、GLL、GSA、GSV、RMC 和 VTG。这里以 RMC 记录语句为例说明定位系统的信息,它的格式为:
$GPRMC,hhmmss,s,ddmm.mmmm,NS,dddmm.mmmm,EW,rrr.r,aaa.a,ddmmyy,ggg.g,ew*。
其中 hhmmss 为 UTC 24 小时制的标准时间;s 为信号接收状态,A 为有效位置,V 为非有效位置; ddmm.mmmm 为纬度;NS 表示南北半球,N 为北半球,S 为南半球;dddmm.mmmm 为经度;EW 表示东西半球,E 为东半球,W 为西半球;rrr.r 表示速度;aaa.a 为方位角;ddmmyy 为日期;ggg.g 为磁偏角;ew 为地磁变化方向。
GPS 处理程序主要负责从GPS 系统接收定位等信息。
4.3 GSM 网络定位及通信
目前,中国移动和中国联通的移动通信网络既是语音通信网络,又是一个能提供丰富数据业务的网络,只要当地网络开通了位置服务功能,选用支持 STK 的 SIM 卡,即可通过 STK 命令得到位置信息。GSM 网络通信主要以短消息的方式进行,包括短消息的接收和发送。在短消息的收发程序设计中运用AT 命令来实现,其包括定位和监控信息的编码和解码、通信模式设定和联机测试、短消息的收发、收发数据的关键命令字的模式匹配等。
4.4 系统整合与实现
在完成上述硬件和软件基本设计的基础上,将所建的主程序文件main.c保存到项目目录下的nios_0_sdk/src中;执行 Nios SDK Shell 命令,在该命令行中将当前目录切换到src,然后用连接和编译命令 nb main.c 完成连编;调试可采用 nd main.srec 命令;将src目录中新生成的rom_0.hex 文件拷贝到项目目录下,在确认硬件配置和引脚分配没有问题的下,选择Quartus II中的开始编译,对该输入设计进行整体汇编,再将编译生成的配置文件 posit.pof 通过 ByteBlaster II 下载电缆在主动串行编程方式下下载到配置芯片EPCS4中;然后断电,断开调试和下载线,重新上电,即可完成该系统的设计功能。
5总结
在分析了定位终端系统结构和传统设计方案的基础上,运用GSM网络,不仅实现了定位终端和监控中心之间的无线通信功能,而且可以借助移动公司服务商提供的位置服务,实现GPS和GSM的双定位,克服了单一模块定位的不足。利用Nios 软核处理器集成度高、配置灵活的特点,通过SOPC技术解决了传统定位终端系统设计方案的缺陷,不仅具有设计风险小,结构简单和开发周期短等优点,而且还便于系统性能的扩展和升级,文中就其软硬件设计和系统整合进行了详细地阐述,并给出了具体设计方案。
本文作者创新点: 首先,采用FPGA代替了以微控制器为处理核心的传统设计方案,不需要扩展大量的逻辑器件和接口转换功能模块,其产品开发周期短, 开发成本低廉, 产品升级方便, 接口兼容性好;其次,将GPS和GSM功能模块结合实现定位功能,避免了通常以GPS为主要定位手段的单定位缺陷,定位可靠,不存在盲区。
参考文献:
1 曲立艳,邓志杰,徐登科等. 基于GSM GPS 短消息的车载移动终端的设计与实现[J].微计算机信息,2006,11-1:267-269.
2 郭书军,王玉花,葛纫秋. 嵌入式处理其原理及应用[M]. 北京:清华大学出版社, 2004.
3 Motorola. M12 Oncore User's Guide Supplement v1.1 [Z] , 2000.
4 Siemens. TC35 Siemens Cellular Hardware Interface Description v2.10 [Z], 2002.
5 Siemens. TC35 Siemens Cellular AT Command Set v2.10 [Z] , 2002.
|