捷联惯性组合导航系统是一种完全自主的定位导航系统,它可以连续实时地提供位置、速度和姿态信息,短时精度较高,但误差随时间增长而不断积累。GPS导航系统能够全天候提供信息,且误差不随时间积累。因此,将它们组合起来,利用卡尔曼滤波技术进行融合,可以发挥各自优势,提高导航精度。由于捷联系统没有稳定的物理平台,惯性器件测量的数值不能直接进行导航计算,必须先经过大量、实时、精确的数学运算建立起数学平台,才能得到导航参数,在计算上较复杂,对计算机的性能要求高。为减小体积、重量和增加可靠性。文中提出利用PC104嵌入式工控机和FPGA设计一种双CPU结构的捷联惯性组合导航系统。系统中PC/104总线结构的嵌入式工控机来承担姿态解算任务,采用FPGA控制组合系统的采集模块,并利用其内部资源,设计了双口RAM模块、串口接口模块等。双CPU系统使PC104可以专注于解算,保证了系统的实时性。
1 捷联惯性组合导航系统总体方案
捷联惯导系统是将加速度计和陀螺仪沿载体坐标系安装,在进行导航参数计算时,需要是导航坐标系中的量。因此应先将惯性器件测得的比力和角加速度误差补偿后送入计算机进行实时计算,可以得到将比力从载体坐标系转换到导航坐标系的姿态矩阵。通过姿态矩阵可以确定载体的姿态信息。姿态矩阵常用的即时修正方法有欧拉角法、方向余弦法和四元数法,设计采用四元数法。为进行导航解算,选取地理坐标系为导航坐标系,三轴分别指向东向、北向和天向。
根据捷联惯性组合导航系统的特点,提出采用PC104总线嵌入式工控机的捷联惯性组合导航系统的硬件设计方案,系统包括数据采集和数据解算模块。数据采集模块由FPGA负责控制A/D转换将陀螺仪和加速度计输出的模拟信号转换为数字信号。在FPGA内部开辟一块存储单元,FPGA读取A/D的转换结果存放在内嵌的双口RAM中。FPGA通过双口RAM与PC104进行实时通信,FPGA把采集的数据进行处理后送入双口RAM中,然后发中断信号给PC104,通知其已经有数据可以处理。PC104收到中断信号后,将双口RAM中的数据取走进行处理和解算。FPGA和PC104同时工作,提高了系统的运行速度。系统要求数据采样频率为1kHz,数据解算频率为100Hz,外加时钟频率为40MHz。
2 系统硬件设计
数据采集部分采用Altera公司的EP2C35F672,它是CycloneⅡ系列产品之一,一个LAB中有16个LE,增加了乘法器模块,增强了DSP处理能力。由33 216个LE组成,片上有105个M4K RAM块,片内有35个18 x 18个硬件乘法器,片上有4个PLL,可以实现多个时钟域。PC104总线结构嵌入式工控机具有功耗低、单5 V供电、工作温度范围宽、可靠性高、抗震性好、结构小巧紧凑、浮点运算能力强、运算速度快等显著特点。最适合在嵌入式控制系统中应用。因此它是开发导航计算机的理想方案。
2.1 数据采集模块
数据采集部分由惯性测量元件、GPS接收机、信号调理部分、A/D转换电路和FPGA控制器等构成。在这部分中,FPGA主要完成同步产生A/D转换的时序,数字滤波和存储经A/D转换后的陀螺和加表的数据。惯性测量元件主要包括3个加速度计和3个陀螺仪,正交安装于坐标系的X轴、Y轴和Z轴,用于提供载体在载体坐标系上的比力和角速度,采用模拟信号输出,加速度计采用差分输出。由于惯性器件安装在一个密闭的容器中,受温度影响也比较大,必须采集温度信号对惯性器件进行补偿。A/D转换电路采用TI公司的A/D芯片ADS1258,ADS1258是一个灵活的、24位低噪声最优化的、快速的、多通道的、高分辨率的模拟/数字转换芯片。24位的精度是0.000 000 06,其理论值较16位A/D有较大的提高。根据芯片资料,ADS1258中的转换器可以提供最大23.7ksample/s的通道扫描速度,可以在<700μs的时间里完成一个完整的16通道扫描。模拟电压输入范围为±2.5V。
数据采集部分的功能之一是将加速度计和陀螺仪输出的模拟信号转换为数字信号,并将这一数字信号送入导航计算机。为提高系统的精度,在A/D转换前要先将加速度计和陀螺仪输出的信号进行放大,通过减法电路和低通滤波电路进行调理,然后再通过FPGA控制AD1258进行转换。读取转换数据,利用FPGA内部逻辑设计FIR数字滤波器,将处理后的数据送入FPGA内部的双口RAM,向主CPU发出数据准备好中断。这些由FPGA控制,保证了PC104实时处理和接收到的数据。用FPGA这种纯硬件结构实现的数据采集系统比用MCU等器件用软件控制的数据采集系统速度快,且容易修改。
采集模块的另一个功能是进行GPS数据采集。GPS输出经度、纬度和速度等信息。设计采用Jupitre21 GPS OEM模块,体积小、重量轻、功耗低,首次定位和重新捕获时间短,具有强大的抗干扰、抗遮挡能力。OEM板的输入、输出格式均按RS232串口通信协议,设定为8个数据位,1个起始位,1个停止位,无奇偶校验。GPS接收机数据输出通过RS-232串行口,它信号输出的频率比较低,大约每秒更新一次,接收的数据要完成解码才能用于组合系统的修正。本系统用FPGA实现RS232接口,用于接收GPS的数据。
2.2 导航解算模块
导航解算模块是捷联惯性组合导航系统的核心。该部分的功能主要完成姿态矩阵的即时修正、位置姿态信息的求取和卡尔曼滤波等运算。要求导航计算机对浮点数据的处理能力强,并且整个导航计算中涉及大量的矩阵计算,运算量较大。PC104采用中断机制工作,需要处理FPGA数据准备好中断请求、导航计算、滤波计算。
2.3 FPGA和PC104之间的通信
设计采用两个控制器结构,PC104要进行导航解算,就要将FPGA采集处理后的数据接收。若通过FIFO来传递数据,由于FIFO的先进先出原则,则存在一个采用频率和解算速率的配合问题。而系统又要求较好的实时性,即每次要进行解算都能立即得到最新的实时数据。双口RAM方式无论是通信速率还是硬件实现的难易程度上都是处理器问高速通信的最佳选择。系统采用双口RAM实现FPGA和PC104之间的数据共享。
双口RAM存储器具有两套独立的读写控制线、地址线和数据线。可以自由访问,互不干扰。用FPGA实现双口RAM的功能可以较好地解决并行性和速度问题,而且其灵活的可配置特性使得基于FPGA的双口RAM易于进行修改、测试及系统升级,可降低设计成本,缩短开发周期,减小了导航计算机的体积。因此本设计直接采用FPGA构建双口RAM,同时进行读写操作控制。PC104总线上的I/O地址范围为0000H~FFFFH,选取地址段0200H~027FH作为双口RAM的地址段,共128个地址单元。FPGA与PC104引脚电平不同,FPGA的I/O口供电电压为3.3 V,PC104的总线为5 V TTL电平。因此,为使系统安全稳定地工作,需要一个电平转换器件。在PC104和FPGA之间使用起电平转换作用的CPLD,同时由它产生地址译码电路。###反应###
3 软件设计
软件设计以满足导航参数解算为主,采集模拟的惯性测量器件及GPS数据,通过双CPU之间的软硬件形成呼叫和应答机制。由FPGA负责加速度计和陀螺仪输出信息的采集及数据处理,采用FPGA接收读取GPS的数据;PC/104工控机负责对FPGA采集到的数据进行解算。对控制采样及数据处理模块的软件设计主要是控制A/D转换,构建内部存储器、数字滤波器和串行接口等,采用硬件描述语言Verilog HDL。组合系统的解算由PC104完成,对PC104的软件设计采用C语言在DOS系统下在Turbo C中编写,导航解算应有不同的解算周期。因此,导航计算机系统软件设计分为FPGA软件和PC/104主控系统软件两部分。
3.1 FPGA软件设计
FPGA是按照主CPU的指令来执行对加速度计的数据采集和数据处理任务,然后将预处理的结果写入双端口RAM,供PC/104使用。FPGA内部的逻辑块包括时钟、A/D控制器、数字滤波器、双口RAM、接口单元等。数字滤波器的设计直接采用设计好的FIR滤波器的IP核。通过Verilog HDL语言对双口RAM的描述可以在FPGA内部实现双口RAM,并且进行读写控制。双口RAM在使用上需要注意的问题就是,可能会发生共享冲突,出现写入值和读出值出现混乱的状态。设计采用文献的方法设计双口RAM冲突解决方案。
在FPGA内部实现一个串口模块,采用GPS接收机默认的4 800 bit·s-1,首先将系统的40 MHz时钟进行分频,一般对数据进行过采样,以便正确接收GPS接收机的数据。取过采样频率为波特率的8倍。有了4 800×8 Hz的频率之后,进行串并转换。为防止毛刺信号被误认为是起始信号,定义一个2位的计数器进行判断起始位4次。接着用状态机实现对起始位、数据和停止位的检测,就可进行数据的接收。通过Verilog HDL语言编写接收GPS数据程序,采用状态机方法检测GPS数据起始符,本系统采用$GPRMC,(UTC时间),A,(纬度信息),N,(经度信息),E,(速度信息),289.0,020710,10.3,W×5B协议,本系统只用位置和速度信息对捷联惯导系统进行校正。接收到的GPS数据为对应ASCII值的二进制数。
3.2 PC104软件设计
数据解算采用PC104为核心处理器。采集的陀螺和加速度计的信息经过误差补偿后,将陀螺仪测量的角速度数据进行解算,得到姿态矩阵,再用姿态矩阵将沿载体坐标系的加速度测量的比力信息转换到导航坐标系上,进行积分运算,同时根据姿态矩阵中的元素可以解算出姿态角信息。再用GPS测量得到的位置、速度信息和捷联惯导系统解算得到的位置、速度的差值作为观测量,通过卡尔曼滤波,修正导航系统的参数,为惯性元件提供误差修正,以提高导航精度。将得到的位置、速度、姿态等信息输出,进行控制载体。PC104对双口RAM的端口地址读/写操作的函数为inport(int protid)和outport(int portid,int value),protid为端口地址,value为要发送数据。
4 结束语
文中以PC104为核心处理器,辅以FPGA控制采集和A/D转换,形成双CPU协作模式,通过双口RAM进行通信,主CPU可以专心进行导航计算,避免了因数据采集工作而降低效率。双CPU并行工作,相互配合,大大地提高了系统的整体效率。系统体积小、精度高、结构简单、功耗小。将导航参数通过串口输出,可应用于船舶、车辆、飞机等,能满足导航和定位的要求。