宋霄罡,翟正軍,任嵐昆
(西北工業大學 計算機學院,陜西 西安 710072)
飛機語音告警系統是新型飛機必備的一種機載設備,其作用是將飛機當前的工作狀態、危險狀況或者通過數據鏈獲取的作戰任務命令,實時以語音方式告知飛行員[1]。在飛機飛行過程中飛行員一般是通過安裝在座艙里的操作臺、儀表和告警信號燈來了解飛機各個系統的工作狀態。由于飛行員在飛行時為完成相應的飛行任務,注意力高度集中在飛行高度、速度和雷達參數等數據信息上,對飛機故障信息的注意力要相對弱一些,這樣就會出現飛行員不能及時地對故障采取措施,從而導致嚴重的飛行事故。同時,目前大多數新研制或改裝的飛機都有數據鏈系統,許多作戰任務命令不再單純依靠地面指揮人員或長機的語音傳達,可通過數據鏈或根據戰場態勢產生,并及時告知飛行員,因此,針對某新型飛機的研制要求,設計了基于ARM單片機的語音告警系統。
語音告警系統由以下6部分組成:語音命令輸入單元、語音命令真偽和優先權判斷單元、告警語音播放單元、電源及其監控單元、自檢測單元和調試接口,系統設計框圖如圖1所示。

圖1 系統設計框圖Fig.1 Block diagram of system design
系統的語音告警數據可以通過JTAG預先裝載到非遺失的NAND Flash中,系統上電后自動將告警軟件和語音告警數據加載到SDRAM中。系統工作時,通過RS422接收外系統傳來的一個或多個告警命令,按照告警命令的優先級依次發出告警語音。當新的告警命令優先級高于當前告警命令時,中斷當前告警語音;當高優先級的告警命令處理結束后,接著依次發出較低一級的告警語音。
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
系統采用CS4331完成數字音頻信號的轉換,CS4331是完全立體聲數字音頻轉換器,集成了數字插值、調制、數模轉換、低通濾波功能。CS4331轉換后的模擬信號功率經放大后以差分方式輸出,如果存在干擾信號,會對差分信號產生相同的干擾,通過二者之差,干擾信號的有效輸入為零,達到了抗共模干擾的目的,音頻轉換及功放電路如圖3所示。

圖3 音頻轉換及功放電路Fig.3 Audio converter and amplifier circuit
機載設備要求能耐受飛機電源的浪涌、沖擊,并能夠在掉電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
因 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移植成功并且可以在系統板上穩定運行。
系統的軟件流程如圖5所示,系統上電或復位后,從NAND Flash啟動,S3C2440把 NAND Flash的前4 KB加載到SDRAM中,并把SDRAM的首地址設為0x00000000,CPU從0x00000000開始執行。NAND Flash的前4 KB程序中包含從NAND Flash把BootLoader(引導加載程序)的其余部分裝入SDRAM的程序,進行系統初始化;系統接收到RS422接口傳來的告警命令后首先進行告警命令真偽及優先權判定,當判定當前告警命令為真并且為優先級最高后,系統從SDRAM讀取告警語音數據;當檢測到此時系統無新告警命令或高優先級命令時,將語音數據輸出給音頻轉換器進行解碼、數模轉換,功率放大后把告警語音送到飛行員耳機完成故告警語音播放。
語音告警系統功能是以分布在飛機各處的主要傳感器信號為觸發,將飛機當前的工作狀態、危險狀況或通過數據鏈獲取的作戰任務命令,根據信息的重要緊急程度的不同,在語音告警系統里將各系統的告警命令分成了不同的告警優先級。一般將告警命令分為3級:危險級、警告級、注意級[6],這樣按優先權將告警命令分成先后順序。本系統采用的告警命令優先級調度流程如圖6所示。

圖5 系統軟件流程Fig.5 Flow chart of system software

圖6 告警命令優先級調度流程Fig.6 Flow chart of warning-command priority
實踐證明,采用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.