袁 彥,竇珊珊
(中國電子科技集團(tuán)公司第三研究所,北京 100015)
本軟件為某聲探測系統(tǒng)全國產(chǎn)化DSP 平臺的信號處理軟件。該國產(chǎn)化平臺以兩片DSP[1],一片現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)和一片微控制單元(Micro Control Unit,MCU)為核心,數(shù)字信號處理器(Digital Signal Process,DSP)芯片外圍電路連接Flash 閃存和同步動態(tài)隨機(jī)存取內(nèi)存(Synchronous Dynamic Random-Access Memory,SDRAM),共同完成聲信號的實時采集、分發(fā)、信號處理以及探測信息上報等功能[2]。其硬件電路設(shè)計如圖1 所示。AD 采集芯片(ADC)同步采集多通道聲陣列信號,F(xiàn)PGA芯片控制采樣率和采樣通道數(shù),實時把采集的數(shù)據(jù)以中斷的形式分發(fā)到兩片DSP。DSPA 進(jìn)行實時的目標(biāo)定向算法,DSPB 接收到目標(biāo)方向信息后再進(jìn)行識別算法,同時DSPB 還接受上位機(jī)管控,可上報狀態(tài)信息,完成數(shù)據(jù)庫接收和自動更新功能。DSPA 和DSPB 把實時的探測結(jié)果發(fā)送至MCU,MCU 完成界面顯示,由網(wǎng)口上報探測信息。本文主要介紹雙片DSP 的軟件設(shè)計。
圖1 硬件電路設(shè)計示意圖
本文選用的低功耗浮點DSP 芯片F(xiàn)TQ6713J400,最高主頻處理能力為400 Mb·s-1。根據(jù)對算法復(fù)雜度的估算,設(shè)計時就把算法分為兩部分,即目標(biāo)定向算法和目標(biāo)識別算法,分別在DSPA和DSPB 上完成。DSP 信號處理軟件的時序控制如圖2 所示。
圖2 DSP 信號處理軟件的時序控制圖
DSP采用2個緩沖器(buffer)存儲數(shù)據(jù)的方式,保證聲信號的連續(xù)采集存儲并進(jìn)行計算。每一秒定向算法計算完成之后,DSPA 定向軟件把當(dāng)前秒計算的定向結(jié)果傳送給DSPB,DSPB 結(jié)合上一秒完成采集的數(shù)據(jù)進(jìn)行識別。聲探測主要針對低空慢速目標(biāo),連續(xù)兩秒之間的聲特性變化不大。基于這一特性,上一秒數(shù)據(jù)的定向結(jié)果配搭下一秒數(shù)據(jù)的識別結(jié)果是可行的方式,有效合理地解決了因為過大的計算量而分開兩片DSP 算法的時序問題。
本軟件為嵌入式軟件,與外部數(shù)據(jù)的交換通常采用中斷的形式。本軟件一共設(shè)計了3 個中斷,即兩個串口中斷和一個數(shù)據(jù)采集中斷,均設(shè)計采用IRQ 外部中斷的形式。兩個串口中斷是1 個字節(jié)產(chǎn)生1 次中斷。數(shù)據(jù)采集中斷是FPGA 采集滿512×16×2 字節(jié)產(chǎn)生1 次中斷,即1 秒的數(shù)據(jù)分4次發(fā)送完成。為了避免中斷嵌套,在中斷程序中只做必需的累加計數(shù)、設(shè)置標(biāo)志位等操作,把讀取串口數(shù)據(jù)或采集數(shù)據(jù)以及校驗等操作都放在主程序中。3 個中斷服務(wù)程序分別設(shè)置為vector5、vector6和vector7。核心代碼如下。
本軟件兩片DSP 同時接收FPGA 分發(fā)的數(shù)據(jù),為了有效地利用資源,對于SAD7606 采集的數(shù)據(jù),F(xiàn)PGA 內(nèi)部先入先出隊列(First Input First Output,F(xiàn)IFO)緩存采集數(shù)據(jù)。當(dāng)FIFO 滿512×16×2 個字節(jié),設(shè)置IO 變化,產(chǎn)生IRQ 中斷,通知DSP 到緩存中讀取數(shù)據(jù)。DSP 讀取完成后,也通過設(shè)置IO電平變化通知FPGA 可進(jìn)行下一次數(shù)據(jù)傳輸。流程如圖3 所示。
圖3 信號采集接口示意圖
低功耗FT-Q6713J400 浮點處理芯片[3]的主頻最高為400 Mb·s-1,本項目軟件依托硬件設(shè)計分為相對獨立的兩個部分。DSPA 主要完成目標(biāo)定向和環(huán)境噪聲監(jiān)測功能,DSPB 主要完成識別和通道自檢功能以及數(shù)據(jù)庫版本查詢和更新功能。軟件狀態(tài)轉(zhuǎn)換流程如圖4 所示。為了保證對信號處理的長期性和連續(xù)性,軟件設(shè)計每秒進(jìn)行一次定向和識別探測,所以定向或識別算法要保證在1 s 完成算法計算,即每秒最大計算量不能超過400 Mb·s-1。兩片DSP 共同完成探測和管控功能。
圖4 聲探測信號處理軟件狀態(tài)轉(zhuǎn)換流程
本文選用的Flash 是CXF256M8SN,對Flash采取按扇區(qū)擦除和字模式寫操作。每個扇區(qū)1 024字節(jié),可指定若干扇區(qū)進(jìn)行連續(xù)擦除。數(shù)據(jù)庫數(shù)據(jù)格式為Float 型,串口接收的是其對應(yīng)的32 位HEX 格式,按低字節(jié)在前、高字節(jié)在后接收并保存到Flash 中。本軟件的數(shù)據(jù)庫數(shù)據(jù)采用分包的方式,把數(shù)據(jù)庫數(shù)據(jù)分為大小相等的小包,按照通信協(xié)議分包發(fā)送[4-5]。
DSP 接收到查詢版本號指令后,會從相應(yīng)地址中讀取版本號并發(fā)送版本號回饋指令。DSP 串口接收到數(shù)據(jù)庫更新指令后,通過串口發(fā)出相應(yīng)的回饋指令,之后開始接收數(shù)據(jù)庫數(shù)據(jù)。DSP 接收到的每一小包數(shù)據(jù)都需要通過校驗,全部包數(shù)據(jù)收齊后,再進(jìn)行包號校驗。校驗正確后,才進(jìn)行下一步的Flash 擦寫。擦寫分為數(shù)據(jù)庫版本號擦寫和數(shù)據(jù)庫數(shù)據(jù)擦寫兩個部分。Flash 擦寫完成后,重新讀取Flash 中新燒寫的數(shù)據(jù)與DSP 接收到的數(shù)據(jù),再進(jìn)行二次校驗。校驗正確,由串口發(fā)送數(shù)據(jù)庫更新成功指令。此時,數(shù)據(jù)庫已經(jīng)更新為新的版本號。數(shù)據(jù)庫接收和更新流程如圖6 所示。
圖6 數(shù)據(jù)庫自動更新流程圖
FLASH 擦寫部分代碼和燒寫代碼如下。
本文介紹的FT-Q6713J400 是一款低功耗國產(chǎn)浮點DSP芯片,很適用于需要長期值守的探測設(shè)備。本軟件設(shè)計已成功應(yīng)用于某探測型號項目的分系統(tǒng)設(shè)計中。試驗結(jié)果表明,以雙片F(xiàn)T-Q6713J400為核心的軟件設(shè)計不僅能夠滿足探測系統(tǒng)較大計算量的要求,而且能實現(xiàn)遠(yuǎn)程管控,滿足系統(tǒng)的實時性要求。本文介紹的應(yīng)用方法和設(shè)計同樣適用于同類型的其他型號的DSP 芯片。