基于ARM微处理器的机载语音告警系统设计
2010-06-05宋霄罡翟正军任岚昆
宋霄罡,翟正军,任岚昆
(西北工业大学 计算机学院,陕西 西安 710072)
飞机语音告警系统是新型飞机必备的一种机载设备,其作用是将飞机当前的工作状态、危险状况或者通过数据链获取的作战任务命令,实时以语音方式告知飞行员[1]。在飞机飞行过程中飞行员一般是通过安装在座舱里的操作台、仪表和告警信号灯来了解飞机各个系统的工作状态。由于飞行员在飞行时为完成相应的飞行任务,注意力高度集中在飞行高度、速度和雷达参数等数据信息上,对飞机故障信息的注意力要相对弱一些,这样就会出现飞行员不能及时地对故障采取措施,从而导致严重的飞行事故。同时,目前大多数新研制或改装的飞机都有数据链系统,许多作战任务命令不再单纯依靠地面指挥人员或长机的语音传达,可通过数据链或根据战场态势产生,并及时告知飞行员,因此,针对某新型飞机的研制要求,设计了基于ARM单片机的语音告警系统。
1 系统总体框架设计与工作原理
语音告警系统由以下6部分组成:语音命令输入单元、语音命令真伪和优先权判断单元、告警语音播放单元、电源及其监控单元、自检测单元和调试接口,系统设计框图如图1所示。
图1 系统设计框图Fig.1 Block diagram of system design
系统的语音告警数据可以通过JTAG预先装载到非遗失的NAND Flash中,系统上电后自动将告警软件和语音告警数据加载到SDRAM中。系统工作时,通过RS422接收外系统传来的一个或多个告警命令,按照告警命令的优先级依次发出告警语音。当新的告警命令优先级高于当前告警命令时,中断当前告警语音;当高优先级的告警命令处理结束后,接着依次发出较低一级的告警语音。
2 硬件设计
2.1 ARM处理器单元
ARM处理器单元由S3C2440型ARM、存储单元的NAND Flash和SDRAM组成。
2.1.1 S3C2440寻址原理
S3C2440是基于ARM920T内核的16/32位RISC微处理器[2],提供32位地址总线,可以访问4 Gb的线性地址空间,而S3C2440的内部地址总线是30 b,能够访问的最大外部地址空间是1 GB,可见S3C2440仅利用ARM920T 32位地址空间的低30位。S3C2440将1 GB的外部地址空间分成了8个存储器组,每个组的大小128 MB,其中6个用于ROM、SRAM 等存储器,2个用于 ROM、SRAM、SDRAM 存储器。S3C2440对外寻址时,采用了部分译码的方式,低位地址线用于外围存储器的片内寻址,高位地址线用于外围存储器的片外寻址。高3位ADDR[29:27]来选择该地址属于哪一个存储器组,ADDR[26:0]来实现相应存储器组的内部寻址,寻址范围为128 MB,从而使得其外围地址访问空间为1 GB。
2.1.2 存储单元设计
NAND Flash接口信号较少(如图2所示),数据宽度只有8 b,没有地址总线,地址、数据总线复用,串行读取,以页(page)为单位进行读写,以块(block)为单位进行擦除[3]。操作NAND Flash时,先传输命令,然后再传输地址,最后读写数据。本系统采用64 M×8 bit的K9F1208,其组织方式可以分4类地址:
1)Column Address表示数据在半页中的地址,大小范围0~255,用 A[0:7]表示;
2)Halfpage Pointer表示半页在整页中的位置,即在0~255空间或256~511空间,用A[8]表示;A[8]=00为上半页,A
[8]=01为下半页;
3)Page Address表示页在块中的地址,大小范围0~31,用 A[9:13]表示;
4)Block Address表示块在Flash中的位置,大小范围0~4 095,A[14:25]表示。
对NAND Flash操作时,地址分4个周期传送。
图2 S3C2440与NAND Flash连接图Fig.2 Interface connection diagram between S3C2440 and NAND Flash
2.2 音频及功放单元
系统采用CS4331完成数字音频信号的转换,CS4331是完全立体声数字音频转换器,集成了数字插值、调制、数模转换、低通滤波功能。CS4331转换后的模拟信号功率经放大后以差分方式输出,如果存在干扰信号,会对差分信号产生相同的干扰,通过二者之差,干扰信号的有效输入为零,达到了抗共模干扰的目的,音频转换及功放电路如图3所示。
图3 音频转换及功放电路Fig.3 Audio converter and amplifier circuit
2.3 电源及其监控单元
机载设备要求能耐受飞机电源的浪涌、冲击,并能够在掉电50 ms内系统仍能正常工作,必须设计电源滤波和掉电保护模块。采用法拉电容对电源模块做特殊设计,其电路如图4所示。
二极管VD1和R2实现了系统的正常供电,二极管VD2和R1完成储能电容C1的充电,并能够限制加电瞬间的充电电流。VD1,VD2和VD3的单向导电性保证储能电容C1在飞机电源掉电时,只给本电路板供电。同时电阻R2和电容C2,C3一起用于电源滤波,消除电源浪涌和尖峰。依据电路保持工作所需能量需与法拉电容减少能量相等[4]的原则,可知:
式中,C为法拉电容的标称容量,F;Uwork为电路中的正常工作电压,V;Umin为电路能工作的最低电压,V;T为电路中要求的保持时间,s;I为电路的负载电流,A。
则有
由式(3)推导可得:
根据语音告警系统的设计方案和所选用的元器件,系统正常工作所需要的电流约为0.2 A,系统工作电压为3.3 V,最小工作电压为3 V,要求掉电时间为0.05 s,据此由式(4)可计算出所需要的法拉电容为:
按照10倍的设计余度,本文选择0.47 F电容作为储能元件,可实现掉电时间最大为700 ms的掉电保护,完全满足机载设备的要求。
图4中MAX811为电源监控器件,当监控到系统电源低于阈值3 V时,产生复位信号以确保系统工作正常。
图4 掉电保护处理电路Fig.4 Power-down protection circuit
3 软件设计
3.1 U-Boot的移植
因 1.1.4 版本 U-Boot(Universal Boot Loader)并不支持本系统设计所使用的微处理器S3C2440,但对S3C2410有完善的支持[5]。本文U-Boot移植工作在微处理器S3C2410的基础上展开,U-Boot移植操作实际上就是根据系统硬件资源对相关的文件进行修改。本系统相关硬件由S3C2440嵌入式微处理器、64 MB的NAND Flash、64 MB的SDRAM及串口组成,这里关键介绍存储系统的初始化部分:
1)Flash驱动程序采用board/Cmi/Flash.c,由于Cmi中的flash.c写入时要交换字节,因而删除了其write_short()和write_buff()函数,利用 board/ep7312/Flash.c 中 write_word()和 write_buff()函数,并且把flash.c中的FLASH_BASE_PRELIM改为CFG_FLASH_BASE。 把 FLASH_BLOCK_SIZE改为 0x4000,(NAND Flash K9F1208块的大小是16 KB。
2)Board/smdk2410/smdk2410.c 中函数 dram_init() 定义了SDRAM的真实地址和实际大小。由于本设计中,SDRAM的大小为64 MB,所以修改Include/configs/Smdk2410.h中的PHYS_SDRAM_1_SIZE,改为 0x04000000。
经过以上修改后生成目标代码,通过JTAG将二进制文件烧入NAND Flash。烧写成功后通过超级终端进行测试,测试结果表明U-Boot移植成功并且可以在系统板上稳定运行。
3.2 系统软件流程
系统的软件流程如图5所示,系统上电或复位后,从NAND Flash启动,S3C2440把 NAND Flash的前4 KB加载到SDRAM中,并把SDRAM的首地址设为0x00000000,CPU从0x00000000开始执行。NAND Flash的前4 KB程序中包含从NAND Flash把BootLoader(引导加载程序)的其余部分装入SDRAM的程序,进行系统初始化;系统接收到RS422接口传来的告警命令后首先进行告警命令真伪及优先权判定,当判定当前告警命令为真并且为优先级最高后,系统从SDRAM读取告警语音数据;当检测到此时系统无新告警命令或高优先级命令时,将语音数据输出给音频转换器进行解码、数模转换,功率放大后把告警语音送到飞行员耳机完成故告警语音播放。
3.3 告警命令优先级调度单元
语音告警系统功能是以分布在飞机各处的主要传感器信号为触发,将飞机当前的工作状态、危险状况或通过数据链获取的作战任务命令,根据信息的重要紧急程度的不同,在语音告警系统里将各系统的告警命令分成了不同的告警优先级。一般将告警命令分为3级:危险级、警告级、注意级[6],这样按优先权将告警命令分成先后顺序。本系统采用的告警命令优先级调度流程如图6所示。
图5 系统软件流程Fig.5 Flow chart of system software
图6 告警命令优先级调度流程Fig.6 Flow chart of warning-command priority
4 结 论
实践证明,采用ARM微处理器和数字音频转换器设计的机载语音告警系统工作稳定、可靠,告警语音的控制和播放更加灵活、快速,适应复杂多变战场环境,符合体积小、重量轻、功耗低的机载需求。
[1]张忍.基于MP3的飞机语音告警系统设计[D].成都:电子科技大学,2009.
[2]Samsung Electronics.S3C2440a 32-bit CMOS microcontroller user's manual[EB/OL].[2010-04-03].http://www.docin.com/p-24716747.html.
[3]Samsung Electronics.K9F1208 Datasheet[EB/OL].(2004-04-24)[2010-04-03].http://www.samsung.com/Products/Semiconductor/Flash/TechnicalInfo/datasheets.htm.
[4]江健琦.法拉电容在掉电保护中的应用[J].单片机与嵌入式系统应用,2007(6):49-50.JIANG Jian-qi.The application of farad capacitor in the power-off protection[J].Microcontrollers&Embedded Systems,2007(6):49-50.
[5]张徽,张华春.U-Boot在S3C2440上的移植方法[J].电子器件,2007,30(4):1423-1426.ZHANG Hui,ZHANG Hua-chun.Porting method of U-Boot in S3C2440 board[J].Chinese Journal of Electron Devices,2007,30(4):1423-1426.
[6]李景春,王忠良,丁兆军.飞机语音告警系统的研究[J].沈阳航空工业学院学报, 2003,20(3):14-15.LI Jing-chun,WANG Zhong-liang, DING Zhao-jun.Study on airplane sound-warning system [J].Journal of Shenyang Institute of Aeronautical Engineering, 2003,20(3):14-15.