(91404部隊,秦皇島 066001)
在無人機遙測系統(tǒng)中,機載脈沖編碼調(diào)制(Pulse Code Modulation,PCM)數(shù)據(jù)是飛行參數(shù)傳輸?shù)闹匾d體。為保證無人機飛行過程的可靠性和實時性,在航空遙測系統(tǒng)中通常需要進(jìn)行多臺計算機組網(wǎng)接收遙測基帶數(shù)據(jù),并完成PCM數(shù)據(jù)在遙測通道和以太網(wǎng)之間的轉(zhuǎn)換等任務(wù)。傳統(tǒng)的PCM遙測數(shù)據(jù)傳輸模塊通常采用工控機或加固計算機方案,受設(shè)備體積、重量的限制,不適合無人機等小型航空器的使用。為此,本文設(shè)計了基于嵌入式系統(tǒng)的遙測數(shù)據(jù)傳輸模塊,采用FPGA和ARM架構(gòu)完成PCM數(shù)據(jù)收發(fā)、解調(diào)和控制邏輯功能,實現(xiàn)了遙測PCM關(guān)鍵飛行參數(shù)的實時監(jiān)控。
系統(tǒng)主要實現(xiàn)外部遙測PCM數(shù)據(jù)收發(fā)、FPGA與ARM接口數(shù)據(jù)的快速交互,以及ARM控制以太網(wǎng)芯片完成網(wǎng)絡(luò)數(shù)據(jù)收發(fā)功能。系統(tǒng)總體設(shè)計框圖如圖1所示,主要由三部分組成:信號預(yù)處理模塊、FPGA組幀處理模塊和ARM顯示處理模塊。其中,前端預(yù)處理模塊主要將外部送來的PCM碼流數(shù)據(jù)轉(zhuǎn)換成對應(yīng)通道RS422串行接口電平信號,以便匹配FPGA電路的采集和處理。FPGA組幀處理模塊完成對RS422串行遙測數(shù)據(jù)的解幀和組幀功能,最終以并行交互的方式將PCM 數(shù)據(jù)提交至ARM顯示處理模塊。ARM顯示處理模塊主要用于存儲協(xié)議格式和配置參數(shù),篩選、過濾和處理PCM數(shù)據(jù),并將需要實時監(jiān)測的數(shù)據(jù)顯示在液晶屏上。
圖1 系統(tǒng)設(shè)計框圖
在設(shè)備工作之前,需要對PCM遙測數(shù)據(jù)所需的配置參數(shù)和協(xié)議格式進(jìn)行裝訂。上位計算機通過以太網(wǎng)將參數(shù)依次發(fā)送給ARM顯示處理模塊和FPGA組幀處理模塊,二者分別將需要的參數(shù)存儲至本地內(nèi)部的RAM緩存。FPGA外掛SRAM可以用來作為外部數(shù)據(jù)緩存,通過ARM控制網(wǎng)絡(luò)控制芯片完成以太網(wǎng)數(shù)據(jù)傳輸。
FPGA選擇Altera(現(xiàn)被英特爾收購)公司的EP3C25系列芯片,時鐘頻率可達(dá)50 MHz,等效邏輯門數(shù)約65萬門級,RAM容量為594 KB。ARM選擇LPC435X系列芯片,CPU為Cortex-M4架構(gòu),工作頻率可達(dá)204 MHz,片內(nèi)有高達(dá)1 MB Flash、136 KB的SRAM和16 KB的EEPROM存儲器,同樣片外采用SRAM緩存用于存儲大容量數(shù)據(jù)[1]。
遙測PCM數(shù)據(jù)碼流通信協(xié)議的幀格式普遍采用NRZ_L碼型,該碼型信號為RS422差分電平信號,而后級FPGA組幀處理模塊采集的是LVTTL信號。因此,在進(jìn)行PCM解調(diào)前需要將這種差分接口信號轉(zhuǎn)換為單端接口信號。采用差分驅(qū)動芯片DS26C32進(jìn)行信號電平轉(zhuǎn)換,得到單端接口的PCM數(shù)據(jù)。
PCM碼流解調(diào)電路的核心是將串行PCM碼轉(zhuǎn)換為并行數(shù)據(jù),該任務(wù)通過FPGA組幀處理模塊完成。實現(xiàn)PCM碼流串并轉(zhuǎn)換需要依次完成時碼信息解調(diào)、位同步、幀同步處理。
IRIG-B時碼[2]包含3種碼元,即0碼元、1碼元、P碼元。每個碼元持續(xù)10 ms,其中0碼元是持續(xù)2 ms的高電平,1碼元是持續(xù)5 ms的高電平,P碼源是持續(xù)8 ms的高電平,因此通過檢測各個碼元高電平持續(xù)時間即可實現(xiàn)碼元解碼。
由于遙測數(shù)據(jù)中含有大量飛行狀態(tài)信息,反映了設(shè)備的性能和各項指標(biāo),帶有大量涉密信息。為防止第三方非法獲取這些涉密信息,接收到的遙測數(shù)據(jù)都是加密后的數(shù)據(jù),密文數(shù)據(jù)中包含N字節(jié)的IRIG-B時碼信息。接收到的密文數(shù)據(jù)在進(jìn)行解密前,需要預(yù)先將時碼PCM幀數(shù)據(jù)流中N字節(jié)的IRIG-B時碼信息提取并緩存,對沒有時碼信息的數(shù)據(jù)流輸出進(jìn)行解密處理;當(dāng)數(shù)據(jù)解密后將緩存的該時碼信息恢復(fù)到原幀格式數(shù)據(jù)中正確位置,之后將數(shù)據(jù)傳輸做后續(xù)處理。實現(xiàn)原理框圖如圖2所示。
圖2 時碼信息提取原理圖
圖3 位同步原理圖
位同步數(shù)據(jù)處理電路主要用于將本地的同步脈沖與輸入PCM碼流實現(xiàn)精確同頻同相,并輸出位同步脈沖序列。位同步處理電路主要由鑒相器、分頻器、數(shù)字序列濾波器以及時鐘源等部分組成,如圖3所示。位同步處理主要通過數(shù)字鎖相環(huán)原理[3]實現(xiàn),在接收端使用二元鑒相器比較接收碼元和本地同步信號的相位,當(dāng)二者相位不一致(滯后或者超前)時,鑒相器產(chǎn)生相位誤差信號以調(diào)整本地同步信號的相位,直至獲得準(zhǔn)確的位同步信息。
幀同步數(shù)據(jù)處理的功能是從位同步器的輸出信號中提取幀同步碼組,以產(chǎn)生幀同步信號,從而實現(xiàn)并行數(shù)據(jù)和時鐘信號的數(shù)據(jù)分離。為了實現(xiàn)幀同步處理,幀同步處理電路在數(shù)字信息流中插入幀頭EB90H、幀尾146FH等特殊碼組,幀同步處理電路需要準(zhǔn)確識別出這些碼組,以確定幀結(jié)構(gòu)。
圖4 幀同步原理圖
幀同步原理見圖4。PCM數(shù)據(jù)按時鐘脈沖進(jìn)行串/并轉(zhuǎn)換,與本地幀同步碼、屏蔽位進(jìn)行同或相關(guān)檢測后,并與校驗門限值進(jìn)行判別比較,經(jīng)輸出控制最終得到幀數(shù)據(jù)脈沖、幀同步脈沖。
為避免漏檢和虛假字節(jié),保證幀同步器能夠可靠穩(wěn)定地工作,采用搜索、校驗和鎖定三態(tài)邏輯[4]。系統(tǒng)首先處于搜索態(tài),符合幀同步字格式后轉(zhuǎn)入校驗態(tài)。在校核驗態(tài)中如果沒有預(yù)期收到的幀格式長度和同步字,則轉(zhuǎn)入搜索態(tài);如果連續(xù)收到預(yù)定校驗次數(shù)m的幀格式數(shù)據(jù)后,轉(zhuǎn)入鎖定態(tài)。為了避免出現(xiàn)幀同步碼漏檢的風(fēng)險,提高幀同步器工作穩(wěn)定性,在鎖定態(tài)中當(dāng)連續(xù)漏檢達(dá)到預(yù)定漏檢次數(shù)n值時,幀同步才重新跳回搜索態(tài),否則繼續(xù)保持在鎖定態(tài)[5]。
FPGA與ARM之間采用并行接口通信,將FPGA作為ARM主機的一個存儲設(shè)備,通過ARM地址資源訪問FPGA接口,從而實現(xiàn)ARM與FPGA的并行數(shù)據(jù)交互。
為了提升FPGA與ARM之間數(shù)據(jù)傳輸速率,在FPGA內(nèi)部的FIFO電路中調(diào)用雙口RAM模塊,將該雙口RAM分成若干個分區(qū),其中緩存區(qū)A0和緩存區(qū)B0用來存儲來自ARM的網(wǎng)絡(luò)密文數(shù)據(jù),緩存區(qū)A1和緩存區(qū)B1用來存儲來自FPGA傳輸給ARM的解密后的數(shù)據(jù)。根據(jù)功能要求,為實現(xiàn)收發(fā)數(shù)據(jù)的單向碼流達(dá)到20 Mbps,采用了數(shù)據(jù)乒乓緩存操作原理,即將存儲數(shù)據(jù)收發(fā)分成“A0/B0組”和“A1/B1組”,使得網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)不間斷傳輸,從而提高數(shù)據(jù)吞吐能力[5]。雙口RAM內(nèi)部地址空間分配乒乓操作原理框圖如圖5所示。
圖5 雙口RAM地址空間分配
ARM向FPGA發(fā)送數(shù)據(jù)過程如下:來自ARM的數(shù)據(jù)按照幀格式長度存入內(nèi)部雙口RAM緩存區(qū)A0(或B0)中,同時FPGA通過控制邏輯預(yù)先讀取字節(jié)緩存區(qū)B0的數(shù)據(jù),將指定地址的時碼數(shù)據(jù)提取后存入內(nèi)部寄存器中,將剔除時碼信息的剩余幀字節(jié)數(shù)據(jù)通過并串轉(zhuǎn)換后輸出并進(jìn)行加密。下一次數(shù)據(jù)操作與前一次相似,即:先將網(wǎng)絡(luò)密文數(shù)據(jù)保存在緩存區(qū)B0中,讀取并發(fā)送緩存區(qū)A0中的數(shù)據(jù),通過控制切換完成網(wǎng)絡(luò)PCM數(shù)據(jù)發(fā)送的乒乓操作。
ARM從FPGA接收數(shù)據(jù)過程如下:接收來自信道的PCM數(shù)據(jù)按照幀格式長度存入外部SRAM緩存區(qū)A1(或B1)中,將內(nèi)部寄存器緩存的時碼信息與輸入比特流組合成對應(yīng)字節(jié)數(shù),保存到外部SRAM緩存區(qū)A1中,然后通過半?yún)^(qū)指示和中斷信號通知ARM處理器讀取數(shù)據(jù),繼續(xù)接收數(shù)據(jù),同樣加入時碼信息后,存入緩存區(qū)B1中,存滿后通知ARM將數(shù)據(jù)讀取,通過控制切換完成信道PCM數(shù)據(jù)接收的乒乓操作。
圖6 ARM顯示處理 流程圖
ARM顯示處理模塊是整個傳輸系統(tǒng)的主控制器,主要完成參數(shù)存儲、系統(tǒng)狀態(tài)監(jiān)測、重要參數(shù)實時顯示、數(shù)據(jù)本地存儲和網(wǎng)絡(luò)上傳等功能。根據(jù)流驅(qū)動的特點,通過在應(yīng)用層調(diào)用相關(guān)函數(shù),用C++語言實現(xiàn)整體的設(shè)計,具體的設(shè)計主流程如圖6所示。首先,系統(tǒng)加電初始化,ARM主機自檢,并掃描FPGA、網(wǎng)口狀態(tài)信息,然后讀取本地Flash存儲器中的配置信息,開放中斷。當(dāng)FPGA的雙口RAM半滿時,產(chǎn)生中斷信號,ARM讀取RAM中緩存的PCM數(shù)據(jù)字。當(dāng)ARM收到整幀PCM字后,根據(jù)預(yù)存配置信息挑選相應(yīng)的飛行參數(shù)信息,完成液晶屏顯示、本地存儲和網(wǎng)絡(luò)上傳工作。
通過搭建測試環(huán)境對系統(tǒng)的軟硬件功能和性能進(jìn)行了驗證。系統(tǒng)輸入采用串口調(diào)試助手發(fā)送一組固定幀結(jié)果的遙測PCM數(shù)據(jù)流,經(jīng)過本文傳輸系統(tǒng)處理后,得到液晶屏顯示結(jié)果以及本地存儲的數(shù)據(jù)文件。使用UltraEdit軟件打開和分析存儲的數(shù)據(jù)文件,經(jīng)同步比較輸入輸出內(nèi)容,可以發(fā)現(xiàn),幀頭、幀尾標(biāo)志分別為EB90H、146FH,固定幀數(shù)據(jù)為3C92 1B08 069D 0843H,附加4個字節(jié)幀計數(shù)器。大量試驗表明,本系統(tǒng)傳輸PCM數(shù)據(jù)穩(wěn)定可靠,實時傳輸能力強,滿足了設(shè)計要求。數(shù)據(jù)格式如圖7所示。
圖7 PCM數(shù)據(jù)存儲結(jié)果
[1] Altera Corporation.Cyclone device handbook,2008.
[2] 孫秋野,孫凱,馮健.ARM嵌入式系統(tǒng)開發(fā)典型模塊[M].北京:人民郵電大學(xué)出版社,2007.
[3] 單立超,謝雪松.基于FPGA的混合遙測數(shù)據(jù)復(fù)接技術(shù)的研究[J].電子技術(shù)應(yīng)用, 2013,38(10):12-14.
[4] 吳靜.基于USB總線的PCM解調(diào)器研制[J].科學(xué)技術(shù)與工程,2009,9(8):2068-2070.
[5] 田寶泉,李國星.機載PCM數(shù)據(jù)流實時監(jiān)控顯示系統(tǒng)的設(shè)計[J].科學(xué)技術(shù)與工程,2013,13(19):34-37.
嚴(yán)平(工程師),主要從事嵌入式軟件設(shè)計和測試方面的研究。