?

基于DSP水下主動聲吶探測指令控制系統設計

2023-10-17 05:04張楊梅
西安航空學院學報 2023年5期
關鍵詞:探測系統聲吶線程

張楊梅,畢 楊

(西安航空學院 電子工程學院,西安 710077)

0 引言

水下主動聲吶探測系統利用聲波對水下目標進行探測、定位、跟蹤及識別,在水下通信導航、魚雷制導、海洋環境勘探等方面有著廣泛的應用。自第一部用于偵測潛艇的主動式聲吶設備出現后,多國均投入了大量人力物力發展主動聲吶系統,但由于技術的限制、水下環境復雜,水下主動聲吶探測系統的發展緩慢。隨著微電子和嵌入式技術的發展,通過引入嵌入式處理器,水下主動聲吶探測系統的控制部件發生了巨大變化,其信號處理能力得到了顯著提升[1-3]。然而,傳統的水下主動聲吶探測系統大多是單機單控的相對獨立的設備,針對不同的環境和用途,需要設計不同的系統,其硬件結構和軟件體系相對固定和封閉,導致設備的通用性和擴展能力較差[4-5],限制了水下主動聲吶探測系統的擴展與兼容能力。因此,如何在有限的存儲空間和處理器處理速度下,充分利用軟硬件資源,將主動聲吶探測系統采集到的大量水聲信號數據快速、準確的發送給上位機,以便進行實時的處理、診斷和顯示,是整個水下主動聲吶探測系統的發展關鍵之一[6-8]。

水下主動聲吶探測系統根據上位機下發的控制指令完成各項任務,在工作狀態下需要完成對水下目標回波數據的采集、預處理及存儲,并實時將數據上傳到上位機進行顯示及分析,具有工作時間長、可靠性要求高、傳輸數據量大等設計要求。因此,本文設計了一個基于德州儀器(Texas Instruments,TI)公司開發的OMAP系列數字信號處理器(Digital Signal Processor, DSP)OMAP-L138的指令控制系統。

1 水下主動聲吶探測指令控制系統

水下主動聲吶探測系統是重要的海洋環境探測和水下目標檢測工具,在設計時需要遵循可靠性高、工作時間長、大規模數據傳輸等要求。水下主動聲吶探測系統結構示意圖如圖1所示,其中指令系統處于整個水下主動聲吶探測系統的關鍵位置,主要負責與上位機通信、處理信息、控制系統、傳輸數據,具有實現整個系統同步的功能。

由于本文所設計的指令控制系統在與上位機及其他設備進行指令通信的同時,還需要實時傳輸水下主動聲吶探測所產生的大量數據,整個系統對于數據和指令的傳輸速率及傳輸可靠性要求較高。同時,為了方便以后的升級以及再次開發,系統采用TI的OMAP-L138,并利用SYS/BIOS來簡化程序設計。

1.1 OMAP-L138

TI公司的OMAP-L138是一款高性能、低功耗浮點處理器,片上集成了一顆300 MHz的ARM核與一顆300 MHz的DSP核,雙核可同時工作,兼具ARM處理器與DSP處理器的優點。ARM核與DSP核共享高達128 KB的RAM,可通過該共享內存區域進行相互通信。OMAP-L138提供了豐富的外設接口,可以靈活地與各種外部設備進行通信,包括外部存儲器擴展接口(EMIFA和EMIFB)、串行數據接口(UART、SPI、GPIO等)、并行數據接口(UPP)、網絡通信接口、大容量存儲接口(MMC/SD、USB、SATA)、音視頻接口(VPIF、McASP)等[9]。

本文所設計并實現的基于OMAP-L138的水下主動聲吶探測指令控制系統連接示意圖如圖2所示。通過網口與上位機進行指令通信以及數據傳輸;通過UART接口與聲吶載體控制設備(轉臺)相連,控制調整聲吶載體的動作;通過SATA接口將水下主動聲吶探測系統在進行探測時采集到的大量數據存儲到外部存儲設備中;使用SPI接口向接收機發送TVG(時變增益控制)曲線調節接收機的增益;通過uPP接口向發射機、接收機發送各種指令及配置參數;通過EMIFA接口從接收機接收采集到的數據,并通過網口將數據打包上傳至上位機。不同的水下主動聲吶探測系統可根據需要進行適當裁剪和改變。

圖2 水下主動聲吶探測指令控制系統連接示意圖

1.2 SYS/BIOS

SYS/BIOS具有靈活的配置功能,能夠滿足多線程任務的各種需求,包括對線程的調度、同步與通信[10],其主要特點是實時性和高效性。實時性體現在搶占式的任務調度機制上,當中斷出現時,操作系統會在很短的時間內去調用中斷服務程序,沒有復雜的任務調度機制。高效性主要體現在簡單的系統調用上,CPU花費在系統調用上的時間遠遠小于系統有效執行任務的時間,使得SYS/BIOS僅占用極少的CPU資源。此外,SYS/BIOS還提供了豐富的應用函數接口和實時分析及配置工具,可以更加靈活地協調各個軟件模塊的執行,更加便捷地擴展系統功能,加快軟件的開發和調試進度。

SYS/BIOS可以根據用戶的需求,自動分配不同的資源。它可以實現對不同資源的快速響應,包括硬件中斷、軟件中斷、線程任務以及后臺線程。軟件中斷內部最多可分為32個優先級,線程任務最多有32個優先級??赏ㄟ^指定線程的優先級,使得SYS/BIOS能夠根據需要決定在某一時刻應該運行哪個線程,確保硬件中斷優先于軟件中斷,軟件中斷優先于線程任務。

水下主動聲吶中的指令控制系統不僅需要將所采集到的數據上傳給上位機,同時還需要與上位機保持通信,從上位機接收各種操作指令及配置參數[11],通過指令解析決定是否需要將指令繼續下傳給其它設備,并將指令執行結果發送給上位機。因此,水下主動聲吶探測的指令控制系統采用SYS/BIOS進行程序設計,給各個任務分配優先級,將任務調度的工作交給SYS/BIOS,簡化了整個系統控制程序。

2 軟件設計

2.1 指令控制系統軟件總體設計

指令控制系統的軟件部分基于C語言,通過模塊化程序設計來完成,主要包括以下幾個模塊:軟硬件資源初始化、主程序、串口通信中斷服務子程序、定時器中斷服務子程序等,指令控制系統工作流程圖如圖3所示。系統上電開機后,完成各軟硬件資源的初始化,包括SYS/BIOS系統內核初始化、中斷服務的初始化、IP和MAC地址的設定、啟動TCP及UDP服務器、探測參數的初始化以及各標準外設接口的初始化;然后系統進入等待狀態,等待上位機下發指令及參數數據;當系統接收到上位機下發的指令及參數數據后,先對指令進行解析,判斷指令的類別(如自診斷指令、參數配置指令、數據導出指令或啟動/停止探測指令);若指令為“自診斷”或“參數配置”,系統從指令中解析出該指令的執行設備編號,將該指令下發給相應執行設備,并在執行設備完成該指令后從指令執行設備接收指令執行結果,上傳給上位機,系統再次處于等待狀態;若指令為“數據導出”,系統將該指令下發給外部存儲設備,開始從外部存儲設備中讀取數據,同時將讀取出的數據上傳給上位機,系統再次處于等待狀態;若指令為“啟動探測”,系統首先通知發射機開始發出探測信號,待探測信號發射完畢后,通知接收機開始接收數據,并將接收到的數據處理后打包上傳給上位機;當系統接收到上位機的“停止探測”指令時,整個系統又處于等待狀態。

圖3 指令控制系統工作流程圖

2.2 線程調度管理

指令控制系統的軟件程序設計基于SYS/BIOS中的體系架構,根據水下主動聲吶探測系統的功能需求,創建TSK_control、TSK_TCP和TSK_UDP_send 3個任務線程,水下主動聲吶探測指令控制系統的3個任務線程如圖4所示,其中TSK_TCP為TCP通信任務(分為指令接收TSK_TCP_recv和指令應答TSK_TCP_send 2部分),負責與上位機之間的指令接收與應答通信,優先級最高;TSK_UDP_send為UDP通信任務,負責將水下主動聲吶探測系統采集到的水聲信號數據以UDP協議方式傳輸給上位機,優先級次之;TSK_control為信息處理線程,負責整個信息處理與邏輯控制,能夠被其它2個任務線程搶占,在沒有其他任務線程執行時始終不間斷地運行,因此優先級最低。

圖4 水下主動聲吶探測指令控制系統的3個任務線程

以接收“啟動探測”指令為例。系統上電開機并完成初始化后,啟動任務線程TSK_control;在上位機下發“啟動探測”指令后,會觸發任務線程TSK_TCP啟動,任務線程TSK_control的CPU使用權被任務線程TSK_TCP搶占,系統接收到該指令并進行指令解析;系統完成指令解析并發送完畢指令執行結果后,任務線程TSK_TCP結束,通過信號量將CPU的使用權返還給任務線程TSK_control;任務線程TSK_control將“啟動探測”指令下發給發射機,并在發射機發射完畢探測信號后將指令下發給接收機,通知接收機開始接收數據;當有水聲信號數據寫入系統時,任務線程TSK_UDP_send被觸發,取出并打包數據發送給上位機;在任務線程TSK_UDP_send運行過程中,若上位機下發“停止探測”指令,任務線程TSK_TCP被觸發,任務線程TSK_UDP_send被搶占,待系統接收指令并解析后,系統發送指令執行結果給上位機,任務線程TSK_TCP結束,并將CPU的使用權返還給任務線程TSK_UDP_send;當采集到的水聲信號數據全部發送給上位機后,任務線程TSK_UDP_send結束,將CPU的使用權返還給任務線程TSK_control繼續運行,等待上位機再次下發指令。

3 系統功能調試分析

3.1 大規模實時數據采集

大規模實時數據采集功能原理框圖如圖5所示。具體流程為:①接收機將采集到的水聲信號進行正交解調、低通濾波等處理后存儲在FIFO中;②當FIFO內存夠一定數量數據后,接收機產生GPIO中斷;③DSP收到GPIO中斷;④DSP通知EMIFA接口讀取數據;⑤數據從接收機讀出;⑥數據放入DSP緩存。其中,GPIO中斷服務程序的核心代碼如下:

圖5 數據采集功能原理框圖

void gpioInputIsr(Ptr ignore)

{

/*清除中斷狀態*/

pinCmdArg.pin = GPIO6_13_PIN; /*接收機通過GPIO6_13管腳產生中斷通知DSP讀取數據*/

Gpio_clearInterruptStatus(gpio0, &pinCmdArg, NULL);

/*通過EMIFA接口從接收機讀取數據*/

EMIFA_read(&destBuf, &srcBuf);

}

圖6所示為從SignalTap上截取的數據采集時序圖。Gpio_int管腳對應的是接收機發送給DSP的中斷,EMA_D管腳對應的是DSP采集到的數據。ADC采樣頻率600 kHz,接收機采樣頻率30 kHz,共采集5路32bits的I、Q信號。由于上位機的LabView用戶程序中UDP一次讀取最大字節數的限制,接收機每333 us產生一次GPIO中斷,一次向DSP發送400×8bits的數據??梢钥闯?DSP從接收機讀取數據的速度能夠跟上中斷的速度,且有空閑時間,說明本文中的指令系統能夠實現大規模實時數據采集功能。

圖6 數據采集時序圖

3.2 高速數據傳輸

高速數據傳輸功能原理框圖如圖7所示。對于放入緩存中的數據,在將其通過網口使用UDP協議上傳前,還需要給其添加包頭,放入標識編號,以利于上位機接收后對其進行處理,防止丟包所產生的錯誤積累。同時,也可根據應用需要,將數據通過SATA接口存入外接硬盤,以備后續研究。通過UDP傳輸數據的核心代碼如下:

圖7 數據傳輸功能原理框圖

while(1)

{

SemPend(Sem_UDP,SEM_FOREVER);

/*使用UDP協議發送數據*/

sendto(sudp, &UDP_data, size, flag, (struct sockaddr *)&sin1, sizeof(sin1));

}

圖8所示為上位機LabView用戶程序界面,界面顯示接收到的數據波形連續,無數據丟失。系統利用百兆光纖進行數據傳輸,在專線專用的情況下,能夠實現高速數據傳輸的功能,且無丟包。

圖8 上位機用戶程序界面

3.3 指令解析

指令解析功能原理框圖(以“啟動探測”指令為例)如圖9所示。具體流程為:①上位機下發指令,指令通過網絡傳輸至DSP;②網口接收到上位機下發的指令,產生網口硬件中斷;③CPU被網口硬件中斷搶占,掛起正在運行的任務,開始解析指令;④DSP根據指令解析結果,判斷需要將該指令下發給哪個外設;⑤指令執行完畢后,DSP接收指令執行結果;⑥DSP將指令執行結果通過網口上傳;⑦上位機接收指令執行結果。其中,指令解析的核心結構如下:

圖9 指令解析功能原理框圖(以“啟動探測”指令為例)

void decode(char *cmd, char *data)

{

/*判斷指令類型*/

switch(cmd_type)

{

/*指令1*/

case 1:

break;

/*指令n*/

case n:

break;

/*錯誤的指令*/

default:

break;

}

}

圖10所示為CCS調試界面,指令系統能夠正確解析上位機下發的指令,執行相應的操作,并將結果上傳給上位機。

圖10 CCS調試界面

4 結論

本文基于浮點DSP+ARM9雙核低功耗處理器OMAP-L138,設計并實現了一個用于水下主動聲吶探測的指令控制系統。該系統利用OMAP-L138上的各種接口與外設進行通信,利用其內置DSP核的高速數據處理能力完成大規模水聲信號數據的處理和快速傳輸。系統與上位機之間采用統一指令及參數數據格式進行通信,能夠對上位機下發的指令和參數進行解析,并根據解析結果完成相應功能或下發至對應的執行設備。系統軟件在SYS/BIOS的基礎上采用C語言編寫,結構簡單,能夠在滿足水下主動聲吶探測實時通信與大規模數據傳輸效率要求的同時,確保各執行設備之間數據通信的可靠性,減少各執行設備的運行開銷,系統功能模塊化,易于移植和擴展,能夠便捷地應用到聲吶、魚雷自導、水雷等不同功能的水下主動探測系統中。

猜你喜歡
探測系統聲吶線程
探索大洋的“千里眼”——聲吶
一種便攜式側掃聲吶舷側支架的設計及實現
聲吶
民用飛機貨艙煙霧探測系統研究
基于固體火箭和GPS測風技術的中低空氣象探測系統關鍵技術研發與應用
高可靠性火災探測系統設計
基于LDC1314的金屬探測系統靈敏度提升方法
淺談linux多線程協作
COTS技術在聲吶裝備中的應用
基于上下文定界的Fork/Join并行性的并發程序可達性分析*
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合