根据通用船载自动识别系统(AIS)的协议栈,给出了一种基于链路层、网络层和传输层的嵌入式系统AIS系统平台设计,详细研究了其基于ARM+FPGA的硬件设计和基于μC/OS-II操作系统的软件设计。
通用船载自动识别系统AIS(Automatic Identification System)是一种基于自组织时分多址技术(SOTDMA)的海上无线通信系统,主要用于海上船与船之间、船与海上交通管理中心之间的相互识别和信息交互。同时这种系统也非常适合于没有通信基础设施支持、网络节点变化剧烈的场合,如航空交通管理。AIS使用统一的接口、统一的信息、统一的显示终端、统一的报警与记录,集各种功能于一体,非常有利于提高海上交通安全和设备技术水平。 在国际电信联盟(ITU)、国际电工委员会(IEC)、国际海事组织(IMO)和国际航标协会(IALA)的共同努力下,AIS已经成为海上船只出航必须装备的系统,并形成了业界标准。在这种背景下,本文提出了一种基于嵌入式系统的船载自动应答器的设计方案。 1 硬件设计概述 本文提出的AIS船载自动应答器在逻辑结构上是基于AIS协议栈的。AIS系统的协议栈实际上就是OSI的七层结构,如图1所示。本文的工作主要集中在图中的阴影部分,即链路层(包括三个子层)、网络层和传输层。
图1 AIS的协议栈
为了方便,将传输层与上层接口称为PI(Presentation Interface),主要是指各种传感器、全球定位系统GPS等航海设备,以及键盘、显示等人机接口。 将图1中后四层的功能分配为表1所示。将之映射到硬件,本文提出了一种基于传输层、网络层、链路层的硬件平台。硬件平台主要由嵌入式微处理器模块、FPGA模块、UART模块、人机接口模块和电源模块构成,如图2所示。
图2 AIS硬件平台框图
表1 AIS协议栈各层的功能
可以看出,嵌入式微处理器和FPGA构成了系统的核心。前者主要完成传输层、网络层和链路管理实体子层的功能,具体来说就是对AIS信息进行打包和拆包,以及选择适当的时隙接入信道;而后者主要完成数据连接服务子层和媒体接入控制子层的功能,具体来说就是实现HDLC协议和时隙同步。 1.1 嵌入式微处理器模块 嵌入式微处理器模块的核心器件是嵌入式微处理器S3C44B0X, S3C44B0X是Samsung公司设计的一款低功耗高性能的、基于ARM7TDMI内核和RISC指令集的32位高速处理器,大量应用于手持设备等无线终端。 考虑到功能、接口、资源等等需求,将ARM的寻址空间和中断资源组织分配如图3和表2所示。ARM可以通过JTAG和RS232串口两种方法调试,都可以在硬件上实现。ARM的UART、LCD控制器的应用将在稍后描述。
图3 S3C44B0X寻址空间分配表
表2 S3C44B0X中断资源分配表
1.2 FPGA模块 设计中,FPGA采用的是Xilinx公司的XC2S200,它是Spartan-II系列FPGA中的20万门器件。 FPGA被映射为ARM的一个外部存储器,同时也作为一个中断设备,如表2所示。并且ARM和FPGA之间留有一定的通用端口,以备系统扩展和升级。 本设计的一个特点是,FPGA的配置工作是由CPU采用被动串行模式完成的,配置文件可以通过串口下载到ARM的存储器中,然后编写相应的配置代码实现开机时FPGA的配置。这样即方便配置,又有利于系统升级。 1.3 UART模块 由于AIS应答器要求多达8路异步串口,用于连接各种航行传感器,而S3C44B0X仅提供2路UART口,因而必须外接UART控制器。本设计中采用的是Exar的XR16L788。连接方式如表2所示。 XR16L788是一款8通道的UART控制器。芯片内置的全局中断寄存器和其他应用模块使中断处理变得非常方便。 1.4 人机接口模块 人机接口模块主要包括LCD接口和键盘接口两个部分。S3C44B0X内部带有LCD控制器,使LCD的硬件接口和软件控制都相当简单。 键盘接口芯片采用的是ZLG7289,ZLG7289具有SPI串行接口功能,单片即可完成LED显示、键盘接口的全部功能,非常方便键盘和LED的控制。 2 软件设计概述 根据硬件设计思想,将船载自动应答器的软件也分成嵌入式微处理器软件和FPGA软件两个部分。其中嵌入式微处理器的软件设计是基于嵌入式实时操作系统μCOS-II的,而FPGA主要是使用VHDL描述其逻辑功能。 2.1 μC/OS-II的内核分析与移植 要使μC/OS-II正常工作,处理器必须满足如下要求: (1)处理器的C编译器能产生可重入代码; (2)可以打开或关闭中断;在μC/OS-II中定义了两个宏(macro)来关闭或打开中断,以避开不同C编译器厂商用不同的方法来处理关中断和开中断。这两个宏分别是:OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( )。 (3)处理器支持中断;μC/OS-II需要通过处理器产生的中断来实现多任务之间的调度。 (4)处理器支持能够容纳一定量数据的硬件堆栈; (5)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。 S3C44B0X处理器完全满足上述要求。移植工作主要就是对μC/OS-II的三个源文件OS_CPU.H,OS_CPU_C.C和OS_CPU_A.S进行改写。 2.2 CPU的软件设计方案 在AIS中,CPU有两个最重要的功能:一是AIS信息的打包、拆包处理,二是选择适当的时隙接入信道。为实现上述功能,软件中采用了两种数据结构和三种程序类型。 2.2.1两种数据结构 在AIS系统传输的所有信息中,最重要的信息就是船的位置报告。同时,由于AIS自组织接入方式的特殊性,网络中每个节点对信道要有实时、准确的知识,才能保证较高的接入率,从而提高网络的效率。鉴于上述考虑,在软件设计中,一方面采用结构体链表存储船舶位置信息,从而方便信息的插入、删除、排序等动态操作,而且节约存储空间;另一方面采用结构体数组存储时隙信息,实现对信道的实时预测和刷新。表3和表4给出了两种结构体的结构。
表3 船表结构体组成
表4 时隙表结构体组成
2.2.2 三种程序类型 嵌入式微处理器的程序被分为三种类型:主程序、中断服务程序、应用任务。 (1)主程序的主要工作是初始化并启动系统软硬件,其流程图如图4所示;
图4 主程序流程图
(2)中断服务程序主要是处理键盘中断、UART中断、FPGA中断和定时器中断,并向应用任务发送相应消息;
表5 基于μC/OS-II的应用任务列表
(3)应用任务是软件设计的核心,其主要功能一方面完成对AIS信息的打包、拆包,另一方面监听VDL信道,并按照SOTDMA算法选择适当的时隙接入信道。应用任务的定义如表5所示。 下图为中断服务程序与应用任务以及应用任务之间的逻辑关系。本图是整个软件设计的核心部分。
图5 中断服务程序与应用任务
2.3 FPGA的软件设计方案 图6是FPGA内部的功能框图。从图中可以看出,FPGA主要由三个模块构成,分别是控制与通信模块、HDLC模块和RAM模块。其中控制与通信模块的主要功能是接收ARM的命令和AIS信息包并通过HDLC发送信息,同时将HDLC接收到的信息发给ARM;RAM模块主要是用来存储发送和接收的信息;HDLC模块主要完成HDLC协议的打包、拆包工作。
图6 FPGA设计框图
本系统在硬件上以高性能的嵌入式微处理器和超大规模可编程器件为核心,在软件上采用嵌入式实时操作系统以及高效的逻辑描述语言,实际系统经调试证明,其性能、可靠性、可扩展性可很好的满足了AIS的应用要求。 而且在现今的数字系统设计中,以“嵌入式微控制器+FPGA”为核心的体系结构具有很大的灵活性,往往被作为一个通用的硬件平台,嵌入式微控制器的优势在于将微处理器内核与丰富外围接口紧密的结合在一起,FPGA的优势在于超高速、丰富的逻辑资源以及用户可灵活配置的逻辑功能。因此本系统在其他平台中也可以得到相应应用,这也正符合软件无线电“一机多能”的设计思想。 参考文献: 1 ITU-R Recommendation M.1371-1. Technical characteristics for a universal shipborne automatic identification system using time division multiple access in the VHF maritime mobile band. 2001 |