基于ARM 微处理器的机载语音告警系统设计
扫描二维码
随时随地手机看文章
摘要: 针对某型现代军用飞机的研制要求,设计了基于ARM 微处理器的机载语音告警系统。该系统硬件设计采用立体数字语音转换器,并对语音采用差分方式输出以提高抗干扰能力,设计了50 ms 掉电保护。软件采用U-Boot 的移植及告警命令优先级的调度处理技术,并将大语音库从NAND Flash 直接加载到SDRAM 中,减小发音间隔。其应用结果表明,该机载语音告警系统能根据战场形势变化解析告警命令后对飞行员发出告警语音,并且接收到告警命令到发出告警语音间隔小于40 ms,适应现代复杂多变的战场环境,告警语音音质清晰、无间断音。
飞机语音告警系统是新型飞机必备的一种机载设备,其作用是将飞机当前的工作状态、危险状况或者通过数据链获取的作战任务命令,实时以语音方式告知飞行员[1]。在飞机飞行过程中飞行员一般是通过安装在座舱里的操作台、仪表和告警信号灯来了解飞机各个系统的工作状态。由于飞行员在飞行时为完成相应的飞行任务, 注意力高度集中在飞行高度、速度和雷达参数等数据信息上,对飞机故障信息的注意力要相对弱一些,这样就会出现飞行员不能及时地对故障采取措施,从而导致严重的飞行事故。同时,目前大多数新研制或改装的飞机都有数据链系统,许多作战任务命令不再单纯依靠地面指挥人员或长机的语音传达,可通过数据链或根据战场态势产生,并及时告知飞行员,因此,针对某新型飞机的研制要求,设计了基于ARM 单片机的语音告警系统。
1 系统总体框架设计与工作原理:
语音告警系统由以下6 部分组成: 语音命令输入单元、语音命令真伪和优先权判断单元、告警语音播放单元、电源及其监控单元、自检测单元和调试接口,系统设计框图如图1 所示。
系统的语音告警数据可以通过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)为单位进行擦除。操作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 个周期传送。[!--empirenews.page--]
2.2 音频及功放单元:
系统采用CS4331 完成数字音频信号的转换,CS4331是完全立体声数字音频转换器, 集成了数字插值、调制、数模转换、低通滤波功能。CS4331 转换后的模拟信号功率经放大后以差分方式输出,如果存在干扰信号,会对差分信号产生相同的干扰,通过二者之差,干扰信号的有效输入为零,达到了抗共模干扰的目的,音频转换及功放电路如图3 所示。
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 时,产生复位信号以确保系统工作正常。[!--empirenews.page--]
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 所示。
4 结论
实践证明, 采用ARM 微处理器和数字音频转换器设计的机载语音告警系统工作稳定、可靠,告警语音的控制和播放更加灵活、快速,适应复杂多变战场环境,符合体积小、重量轻、功耗低的机载需求。