(廣州海格通信集團(tuán)股份有限公司 廣州 510663)
波形軟件具有可移植性是軟件無(wú)線電的重要優(yōu)勢(shì)[1],是軟件通信體系結(jié)構(gòu)(SCA)規(guī)范期望達(dá)到的最基本的目的之一,是在SCA 硬件平臺(tái)上實(shí)現(xiàn)不同體制之間互連、互通和互操作的技術(shù)前提[2]。
目前主流的無(wú)線通信波形都被劃分為物理層、接入層、鏈路層以及網(wǎng)絡(luò)層四個(gè)部分,而SCA 硬件平臺(tái)常用的架構(gòu)是DSP+FPGA+GPP的模式[3],一般來(lái)說(shuō),物理層是部署在DSP和FPGA 上,接入層是部署在DSP 上,鏈路層和網(wǎng)絡(luò)層則是部署在GPP上。作為無(wú)線通信信號(hào)處理的核心器件,DSP承載了最重要的一部分算法,而由于它必須兼顧信號(hào)處理的實(shí)時(shí)性以及SCA 架構(gòu)的靈活性,因此DSP軟件的可移植性也是SCA 中較為復(fù)雜的一部分工作。
一個(gè)完整的基于SCA 架構(gòu)的DSP 軟件可以分為五個(gè)部分:軟件框架、硬件驅(qū)動(dòng)庫(kù)、硬件抽象層、操作系統(tǒng)、波形組件。它們之間的相互關(guān)系如圖1所示。
圖1 基于SCA 架構(gòu)的DSP軟件組成
操作系統(tǒng)提供了各類線程和信號(hào)量支持,為硬件抽象層和波形組件的運(yùn)行提供了必要的軟件環(huán)境。對(duì)于Ti的DSP芯片而言,目前可以支持的操作系統(tǒng)是Ti自己開(kāi)發(fā)的嵌入式實(shí)時(shí)操作系統(tǒng)DSP/BIOS。一般來(lái)說(shuō),這一部分是不需要用戶開(kāi)發(fā)的,Ti公司已經(jīng)提供了完整的DSP/BIOS 軟件包以及常用的API函數(shù)。開(kāi)發(fā)者可以根據(jù)需要建立各類不同功能的硬中斷、軟中斷、任務(wù)以及后臺(tái)線程[4~5]。
硬件驅(qū)動(dòng)庫(kù)的意義在于對(duì)于軟件開(kāi)發(fā)人員屏蔽繁瑣的硬件操作、寄存器配置等工作。針對(duì)DSP芯片上的外設(shè)或其它可配置功能的API庫(kù),包括對(duì)DMA、定時(shí)器、TCP、VCP、HPI、EMIF、GPIO、PCI、McBSP 等模塊的初始化、參數(shù)配置以及使用[6]。
軟件框架本身不是實(shí)現(xiàn)波形功能所必需的,它的作用是為硬件抽象層和波形組件的集成提供一個(gè)軟件環(huán)境,包括數(shù)據(jù)流、控制流、接口定義以及調(diào)用關(guān)系等。
硬件抽象層通過(guò)屏蔽硬件平臺(tái)的底層傳輸機(jī)制、封裝標(biāo)準(zhǔn)的通信接口,實(shí)現(xiàn)波形組件間通信方式與具體硬件平臺(tái)的分離,保持波形組件底層通信訪問(wèn)接口的一致性,從而易于在異構(gòu)硬件平臺(tái)間移植波形組件,提高了波形應(yīng)用的跨平臺(tái)可移植性[7]。
波形組件是對(duì)軟件功能模塊進(jìn)行的面向?qū)ο蟮姆庋b,它具有便于描述、便于集成、便于移植的特點(diǎn)[8]。一般來(lái)說(shuō),可以根據(jù)無(wú)線通信分層上來(lái)對(duì)組件進(jìn)行劃分,結(jié)合通信設(shè)備實(shí)際的接口功能,可以將一個(gè)完整的無(wú)線通信系統(tǒng)劃分為射頻控制設(shè)備、中頻處理設(shè)備、基帶協(xié)處理組件、基帶處理組件、接入層組件、鏈路層組件、網(wǎng)絡(luò)層組件、安全密碼設(shè)備、波形管理設(shè)備以及IO 設(shè)備等。這樣劃分的好處是對(duì)每一層而言,都有明確的功能和接口定義,便于對(duì)象化和組件化,而且從劃分粒度上來(lái)說(shuō)比較適中。
硬件抽象層采用分層架構(gòu)模式,共分為接口交互層、邏輯層和驅(qū)動(dòng)層。其中接口交互層提供了與上層組件(如波形組件,波形管理組件等)進(jìn)行數(shù)據(jù)交互的接口和協(xié)議,如MOCB 接口等[9]。邏輯層負(fù)責(zé)使用驅(qū)動(dòng)層提供的操作,從而實(shí)現(xiàn)硬件抽象層對(duì)上層組件提供的服務(wù)。驅(qū)動(dòng)層負(fù)責(zé)提供對(duì)實(shí)體(共享內(nèi)存等)的獨(dú)立的單一功能的操作。
根據(jù)功能將DSP的硬件抽象層劃分為若干模塊,其中外部接口模塊統(tǒng)一提供對(duì)上層的服務(wù)接口,如讀數(shù)據(jù)接口、寫(xiě)數(shù)據(jù)接口。控制管理模塊提供對(duì)硬件抽象層的相關(guān)控制服務(wù)。路由表維護(hù)模塊提供了表輸入和表查詢等對(duì)注冊(cè)有系統(tǒng)和波形相關(guān)參數(shù)的表的操作接口。數(shù)據(jù)傳輸管理模塊提供了數(shù)據(jù)接收和數(shù)據(jù)發(fā)送的接口,該模塊是實(shí)現(xiàn)數(shù)據(jù)傳輸服務(wù)的關(guān)鍵模塊。事件模塊提供了一個(gè)中斷設(shè)置的內(nèi)部接口和一個(gè)中斷響應(yīng)函數(shù)的外部接口。通過(guò)事件驅(qū)動(dòng)可以輔助完成數(shù)據(jù)的傳輸,通過(guò)設(shè)置不同的事件可以實(shí)現(xiàn)多種類型的數(shù)據(jù)傳輸。存儲(chǔ)區(qū)管理模塊提供了寫(xiě)數(shù)據(jù)和讀數(shù)據(jù)接口,主要功能在于調(diào)用底層的驅(qū)動(dòng)進(jìn)行數(shù)據(jù)交互操作。各個(gè)模塊之間的功能以及調(diào)用關(guān)系如圖3所示。
圖2 DSP硬件抽象層分層架構(gòu)
圖3 DSP硬件抽象層內(nèi)部模塊接口調(diào)用關(guān)系圖
通常硬件抽象層會(huì)要求波形組件將LD 號(hào)與某個(gè)信號(hào)量綁定,運(yùn)行過(guò)程中硬件抽象層通過(guò)該信號(hào)量來(lái)通知波形組件一個(gè)讀或者寫(xiě)操作的完成。對(duì)于波形組件來(lái)說(shuō),則需要使用操作系統(tǒng)API建立一個(gè)進(jìn)程來(lái)等待讀或者寫(xiě)操作的通知。在某些特殊條件下,為了提高波形組件的反應(yīng)速度,則需要硬件抽象層通過(guò)硬中斷或軟中斷來(lái)通知波形組件。在另一種極端情況下,波形組件則可以在后臺(tái)線程中去輪詢來(lái)自于硬件抽象層的通知。
硬件抽象層最重要的就是實(shí)現(xiàn)DSP內(nèi)部的組件對(duì)其它芯片上的組件的讀寫(xiě)操作,為了對(duì)組件屏蔽硬件信息,硬件抽象層以LD 號(hào)來(lái)映射實(shí)際物理地址并提供給波形使用。根據(jù)組件能夠感知的性能將讀寫(xiě)分別劃分為阻塞式和非阻塞式兩種類型,以讀操作為例,可分為ReadWait和ReadNoWait兩個(gè)函數(shù),這兩種操作流程如圖4所示。
圖4 阻塞式讀流程
圖5 非阻塞式讀流程
可以看出,非阻塞式的操作可以實(shí)現(xiàn)DMA 和CPU 的并行工作,能夠提高軟件的運(yùn)行效率,這在嵌入式實(shí)時(shí)處理軟件中是非常有意義的。但是非阻塞的操作要求操作系統(tǒng)提供信號(hào)量或中斷等異步機(jī)制,會(huì)增加系統(tǒng)設(shè)計(jì)的復(fù)雜度,實(shí)際設(shè)計(jì)的時(shí)候需要綜合考慮。
實(shí)現(xiàn)波形的組件化的首要工作是對(duì)波形進(jìn)行組件劃分,一般來(lái)說(shuō)按照分層結(jié)構(gòu)可以將組件劃分為基帶協(xié)處理組件、基帶處理組件、媒體接入組件、邏輯鏈路組件以及無(wú)線網(wǎng)絡(luò)組件,如圖5所示,其中射頻中頻設(shè)備和安全密碼設(shè)備一般作為硬件平臺(tái)的一部分,不屬于波形的范疇。
圖6 無(wú)線通信系統(tǒng)組件劃分
假設(shè)某無(wú)線通信系統(tǒng)中,基帶處理組件實(shí)現(xiàn)的功能包括信道編碼、調(diào)制解調(diào)、信道交織和解交織、信號(hào)同步、信道估計(jì)、均衡等,則基帶處理組件的端口示意如圖6所示,這里的User一般為相鄰的媒體接入組件和基帶協(xié)處理組件。
圖7 基帶處理組件端口示意圖
其中,BBProcDataConsumer接口繼承自Packet:PayloadStatus接口,同時(shí)自定義了一個(gè)pushPacket函數(shù),該接口被鏈路控制組件調(diào)用,使基帶處理組件獲得下行數(shù)據(jù)。同時(shí),在媒體接入組件上也應(yīng)實(shí)現(xiàn)一個(gè)BBProcDataConsumer接口,用于接收基帶處理組件發(fā)送過(guò)來(lái)的上行數(shù)據(jù)。pushPacket函數(shù)的原型為pushPacket(in CF::OctetSequence payload)。
BBProcDataProducer接口繼承自Packet::PayloadControl接口,與BBProcDataConsumer接口配合使用,為用戶提供設(shè)置傳輸分組長(zhǎng)度的功能。圖7列出了基帶處理組件實(shí)現(xiàn)的主要API。
圖8 基帶處理組件API接口定義
SCA作為一種先進(jìn)的通用通信平臺(tái)體系架構(gòu),已成為業(yè)界實(shí)現(xiàn)軟件無(wú)線電平臺(tái)可重構(gòu)、可移植的重要突破點(diǎn)。其中硬件抽象層則是最核心也最復(fù)雜的一部分,雖然在美軍標(biāo)中對(duì)于硬件抽象層有詳細(xì)的定義和說(shuō)明,但是由于差異性,不可能照搬美軍標(biāo)中的相關(guān)內(nèi)容,根據(jù)我軍通信需求和現(xiàn)有通信體制,制定適應(yīng)實(shí)際情況的SCA 標(biāo)準(zhǔn)對(duì)其實(shí)際應(yīng)用有至關(guān)重要的意義,并最終影響裝備的設(shè)計(jì)和使用模式。目前,這方面的工作仍有待進(jìn)一步探索。
[1]范建華,呂遵明.可移植波形軟件設(shè)計(jì)與實(shí)現(xiàn)研究[J].現(xiàn)代軍事通信,2006(14):17-20.
[2]SCA 規(guī)范對(duì)我軍戰(zhàn)術(shù)無(wú)線通信系統(tǒng)發(fā)展的影響[J].現(xiàn)代軍事通信,2006(14):44-49.
[3]邱永紅,王庭昌,范建華,等.無(wú)線通信系統(tǒng)模塊信息化設(shè)計(jì)標(biāo)準(zhǔn)體系的研究[J].解放軍理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2003(2):11-16.
[4]德州儀器公司.TMS320的DSP/BIOS用戶指南,2004(4).
[5]德州儀器公司.TMS320的DSP/BIOS應(yīng)用編程接口參考指南,2004(4).
[6]德州儀器公司.TMS320C6000 外設(shè)參考指南,2002(2).
[7]中國(guó)人民解放軍總裝備部.GJB 5082-2004.戰(zhàn)術(shù)無(wú)線通信系統(tǒng)軟件通信體系結(jié)構(gòu)[S].北京:總裝備部軍標(biāo)出版發(fā)行部,2004-05.
[8]劉獻(xiàn)科,張棟嶺,陳涵生.軟件定義無(wú)線電及軟件通信體系結(jié)構(gòu)規(guī)范[J].計(jì)算機(jī)工程,2004(1):95-96.
[9]黃耕文,孟堅(jiān),劉建軍,等.基于SCA 的高速數(shù)據(jù)波形設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代軍事通信,2006(14):37-40.