董勝 岳春生 劉擁軍
摘 要: 基于軟件通信體系架構(gòu)無法實現(xiàn)對FPGA等專用處理器的兼容,依據(jù)CP289協(xié)議的容器和組件模型思想以及MHAL接口規(guī)范,針對高速率、多接口、較大規(guī)模的ATCA硬件平臺和高速、實時信號處理的需求,通過分層抽象的方法,設(shè)計一個標準化的FPGA組件開發(fā)環(huán)境。并設(shè)計FFT組件驗證該開發(fā)環(huán)境的可行性和合理性,實現(xiàn)了在ATCA平臺上FPGA專用處理器與SCA體系架構(gòu)的融合以及波形組件的可移植。
關(guān)鍵詞: 軟件通信體系架構(gòu); 軟件無線電; FPGA組件; CP289協(xié)議; MHAL接口規(guī)范; ATCA平臺
中圖分類號: TN911.2?34; TN014 文獻標識碼: A 文章編號: 1004?373X(2018)08?0030?04
Abstract: Software communication architecture (SCA) cannot realize compatibility with special processors like FPGA. According to the container and component model of CP289 protocol and MHAL interface specification, and in allusion to the high speed, multi?interface and relatively large scale ATCA hardware platform and the requirement of real?time signal processing, a standard FPGA component development environment is designed by using the hierarchical abstraction method. The FFT component is designed to verify the feasibility and rationality of the development environment. The integration of special FPGA processor with SCA and portability of waveform component are realized on the ATCA platform.
Keywords: SCA; SDR; FPGA component; CP289 protocol; MHAL interface specification; ATCA platform
軟件通信體系架構(gòu)(Software Communication Architecture,SCA)為軟件無線電(Software Defined Radio,SDR)定義了最基本要求的實現(xiàn)框架,構(gòu)建了一個開放式、標準化和通用性強的軟件體系架構(gòu)[1]。目前基于SCA的SDR系統(tǒng)獲得通用處理器(General Purpose Processor,GPP)的良好支持。針對在FPGA處理器上難以集成SCA架構(gòu)的問題,2004年SCA3.0提出硬件抽象層互聯(lián)(HAL?C)的概念[2]。硬件抽象層通過對具體硬件的抽象,實現(xiàn)了在軟件無線電設(shè)備開發(fā)過程中軟件的設(shè)計和通用硬件平臺相分離。為了更好地實現(xiàn)專用硬件組件的復(fù)用和移植,在隨后的SCA3.1中提出了組件可移植規(guī)范(CPS),并在此基礎(chǔ)上經(jīng)過廣泛的討論和征求意見,形成了專用處理器組件可移植補充建議(SHP),即CP289[3]。文獻[4]提出MHAL接口標準,通過在核心框架與FPGA之間加入代理,明確規(guī)范了代理與FPGA之間的數(shù)據(jù)格式來實現(xiàn)FPGA在SCA中的應(yīng)用。與此同時,國內(nèi)外的一些研究團隊提出基于FPGA設(shè)計ORB引擎的方法,通過實現(xiàn)CORBA報文的解析和封裝,使FPGA直接支持CORBA通信從而實現(xiàn)與SCA架構(gòu)的融合[5?8]。
基于HAL?C和MHAL接口標準,實現(xiàn)了波形外部接口的抽象,減小了硬件平臺結(jié)構(gòu)對軟件設(shè)計的影響,但所提供的接口較少、功能有限,且很多技術(shù)細節(jié)不對外開放。CP289中提出標準化波形組件的運行環(huán)境,保證了波形的可移植,然而怎樣設(shè)計容器架構(gòu)并提供一個標準的實時的運行環(huán)境仍然是一個問題,CP289中也未做出解答。基于FPGA設(shè)計ORB引擎能夠?qū)崿F(xiàn)FPGA無縫地融入到SCA系統(tǒng)中,但ORB引擎設(shè)計比較復(fù)雜,在運行過程中會有大量的計算資源和存儲資源被占用,造成資源的浪費。本文針對ATCA平臺板卡多處理器及高速背板交換技術(shù)的特點,采用基于CP289協(xié)議的容器和組件模型思想以及MHAL接口規(guī)范,利用分層抽象的方法構(gòu)建一個標準化的FPGA組件運行環(huán)境,實現(xiàn)FPGA專用處理器與SCA體系架構(gòu)的融合以及波形組件的可移植。
在CP289協(xié)議中,容器為FPGA波形組件提供了標準化的運行環(huán)境,使得波形組件與運行的環(huán)境相分離,并為SCA核心框架提供對組件的管理、控制和配置等操作。本設(shè)計中的容器主要結(jié)構(gòu)如圖1所示。針對ATCA平臺高速背板傳輸接口(如Rapid I/O,XAUI,PCIE等)和ATCA平臺多層管理的特點,設(shè)計了可移植、可裁剪的基于FIFO的數(shù)據(jù)傳輸層,而板卡上多處理器間的傳輸通過透傳模塊實現(xiàn)。
1.1 復(fù)位管理器和時鐘管理器
復(fù)位管理器主要是對整個計算單元和各個組件的復(fù)位進行控制。每個組件都有一個復(fù)位信號,都連接于容器。容器給出的復(fù)位信號主要是全局復(fù)位信號,主要受控于外部硬件復(fù)位信號和控制命令發(fā)出的全局復(fù)位命令。時鐘管理器主要是根據(jù)外部時鐘源和內(nèi)部組件的需要產(chǎn)生多個時鐘信號,容器一般只使用一個鎖相環(huán)產(chǎn)生一組時鐘,組件開發(fā)者可以根據(jù)需要使用FPGA的其他鎖相環(huán)。
1.2 數(shù)據(jù)傳輸層
數(shù)據(jù)傳輸層以數(shù)據(jù)包為基本數(shù)據(jù)單元進行傳輸和路由分發(fā),對板卡進行加載、配置、控制、狀態(tài)獲取等操作,如圖2所示。數(shù)據(jù)傳輸層是為具體板卡所定制的,與板卡的結(jié)構(gòu)和技術(shù)特點緊密相關(guān)。傳輸層提供通信接口的驅(qū)動支持,根據(jù)平臺的類型,主要包括通信接口、PCI接口、PCIE接口、10/100/1 000M網(wǎng)口、萬兆網(wǎng)接口等,和外圍存儲接口,如DDR?RAM接口、SRAM接口、FLASH接口等。為了將這些接口的驅(qū)動本地化,在接收端和發(fā)送端分別設(shè)計了一個基于FIFO的緩沖池,并對FIFO的狀態(tài)進行檢測,以保證傳輸?shù)目煽啃浴?img alt="" src="https://cimg.fx361.com/images/2018/04/17/qkimagesmoetmoet201808moet20180808-2-l.jpg"/>
對于數(shù)據(jù)傳輸層而言最大的任務(wù)是在下行數(shù)據(jù)輸入時按照數(shù)據(jù)傳輸協(xié)議進行解析和判斷,判斷是否是本板卡的數(shù)據(jù)包,如果不是本板卡的數(shù)據(jù)包,則丟棄;如果是本板卡的數(shù)據(jù)包,則進一步解析后發(fā)送到硬件抽象層。而上行數(shù)據(jù)在經(jīng)過傳輸層輸出時同樣需按照數(shù)據(jù)傳輸協(xié)議進行封裝打包,若在輸出過程中存在多個通道同時傳輸,則需要依據(jù)各通道的優(yōu)先級進行傳輸申請,實現(xiàn)數(shù)據(jù)的有序傳輸。
1.3 硬件抽象層MHAL
MHAL是一個底層的通信模型,它為SCA系統(tǒng)中不同處理單元(CE)上的波形組件和硬件之間的通信提供標準的協(xié)議和接口,從而顯著提高波形應(yīng)用的可移植性。由于MHAL建立了DSP,F(xiàn)PGA與GPP之間的標準通信方式,因此它實現(xiàn)了SCA各處理平臺之間的互聯(lián)互通,使得DSP,F(xiàn)PGA波形可以很好地集成到SCA系統(tǒng)中。
下行數(shù)據(jù)經(jīng)過“MHAL幀解析”后分為控制接口數(shù)據(jù)和通信接口數(shù)據(jù),控制接口數(shù)據(jù)能夠?qū)崿F(xiàn)對應(yīng)用組件的控制和組件參數(shù)配置,通信接口數(shù)據(jù)為應(yīng)用組件傳輸待處理的數(shù)據(jù)。
組件處理完數(shù)據(jù)后經(jīng)過互聯(lián)層向傳輸層進行傳輸申請,若申請反饋同意傳輸,則需要將OCP接口轉(zhuǎn)換為MHAL幀格式從而實現(xiàn)上層數(shù)據(jù)在傳輸層的傳輸,若申請反饋不同意傳輸,則繼續(xù)向傳輸層申請傳輸,如圖3所示。
1.4 互聯(lián)層
互聯(lián)層負責(zé)本處理器內(nèi)部組件間的通信互聯(lián),因為組件都采用的是標準OCP接口,故對于FPGA內(nèi)的組件互聯(lián)不需要進行數(shù)據(jù)格式的轉(zhuǎn)換,直接進行管腳映射的方式就能實現(xiàn)。
CP289協(xié)議中提出了使用開放核協(xié)議(OCP)來設(shè)計和實現(xiàn)FPGA上的組件接口。OCP協(xié)議[9]全面考慮了各種組件應(yīng)用,提供了豐富的組件接口信號,可以實現(xiàn)基本傳輸、突發(fā)傳輸、亂序傳輸?shù)榷喾N傳輸方式。但提供的接口過于繁雜,難以直接使用。CP289根據(jù)組件的功能需要,綜合考慮性能以及可重用性等方面的因素,規(guī)定了組件的三種接口[10],如圖4所示。
1) 控制接口 (WCI)??刂平涌跒槿萜魈峁┝丝刂坪凸芾斫M件的通道和方法,實現(xiàn)對組件的初始化、運行、停止、釋放、測試、配置參數(shù)寄存器等功能。該接口的定義和實現(xiàn)對于任何組件來說都是一樣的,波形組件開發(fā)者只需要實現(xiàn)該接口,而不必考慮與SCA核心框架之間的交互,這方面的工作都由容器負責(zé)完成。
2) 通信接口 (WDI)。通信接口可分為“發(fā)送端”和“接收端”,分別用于數(shù)據(jù)的發(fā)送和接收,通信接口負責(zé)與容器以及容器之中其他組件之間的數(shù)據(jù)通信。
3) 本地服務(wù)接口。本地服務(wù)接口為組件功能實現(xiàn)提供資源服務(wù)的接口,主要包括時鐘、復(fù)位以及存儲器訪問等標準的本地服務(wù),以及實現(xiàn)波形組件的各種功能。
此外,CP289還對各種組件接口的實現(xiàn)細節(jié)以及時鐘提供方式、存儲器訪問方式等做了進一步的約束,圖5所示為組件在程序中的接口定義。
圖6所示為組件在容器環(huán)境中的工作流程,用戶通過平臺控制軟件的核心框架將程序下載到FPGA芯片中,加載完畢后首先初始化應(yīng)用組件,通過控制端口給組件發(fā)送初始化命令,接著發(fā)送連接器初始化命令,初始化階段組件和連接器默認為接收狀態(tài)。配置連接器參數(shù)可以明確組件的端口發(fā)送的源地址、目的地址、數(shù)據(jù)位寬等關(guān)鍵參數(shù)。組件參數(shù)根據(jù)用戶應(yīng)用需求也是通過控制端口進行配置,例如A/D組件的采樣頻率。打開連接器后,組件就可以進行數(shù)據(jù)的接收和發(fā)送,保證了整個數(shù)據(jù)通道的暢通。組件開始工作后,就會根據(jù)應(yīng)用需求進行相應(yīng)的數(shù)據(jù)處理。數(shù)據(jù)處理結(jié)束后關(guān)閉組件,待數(shù)據(jù)通過連接器發(fā)送完畢后關(guān)閉連接器,然后釋放組件,使組件處于脫離狀態(tài),以減小運行功耗。
為了測試組件化開發(fā)環(huán)境的可行性和合理性,設(shè)計了FFT組件。FFT組件同樣需要采用標準的OCP接口,控制接口是組件作為Slave端的OCP接口,為實時操作,不支持回讀,不支持接收響應(yīng),每個組件只有一個控制接口。通信端口組件既可以作為Slave端又可以作為Master端,當組件接收容器傳來的數(shù)據(jù)時,組件作為接收方,容器作為發(fā)送方,當組件處理完數(shù)據(jù)后,則容器作為接收方,組件作為發(fā)送方。由圖7可觀察到,F(xiàn)FT組件OCP端口各信號輸出正常,說明容器結(jié)構(gòu)設(shè)計的可行性和合理性。
本文基于FPGA等專用處理器難以與SCA系統(tǒng)融合的現(xiàn)狀,針對硬件結(jié)構(gòu)較為復(fù)雜的ATCA平臺,設(shè)計了一個標準化的FPGA組件開發(fā)環(huán)境,同時設(shè)計了FFT組件驗證該開發(fā)環(huán)境的可行性和合理性,實現(xiàn)了在ATCA平臺上FPGA專用處理器與SCA體系架構(gòu)的融合以及波形組件的可移植。
參考文獻
[1] GONZALEZ C R A, DIETRICH C B, REED J H. Understanding the software communications architecture [J]. IEEE communications magazine, 2009, 47(9): 50?57.
[2] 張曉波,竇衡.SCA規(guī)范下FPGA的硬件抽象層設(shè)計[J].電子元器件應(yīng)用,2010,12(2):73?76.
ZHANG Xiaobo, DOU Heng. The design of the hardware abstraction layer of FPGA in the SCA specification [J]. Electronic component &; device applications, 2010, 12(2): 73?76.
[3] Joint Program Executive Office. Extension for component portability for specialized hardware processors (SHP) change proposal 289 (CP289): JTRS V3.1x [S]. [S.l.]: Joint Program Executive Office, 2005.
[4] JPO J. Modem hardware abstraction layer API 2.13 [M]. San Diego: JTRS Standard, 2010.
[5] 高宏偉,吳宇,施峻武,等.基于SCA的軟件無線電在FPGA上設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(19):103?107.
GAO Hongwei, WU Yu, SHI Junwu, et al. Design and implementation of SCA?based SDR on FPGA [J]. Modern electronics technique, 2011, 34(19): 103?107.
[6] 譚翔.基于SCA架構(gòu)的SoPC設(shè)計與實現(xiàn)[D].長沙:國防科技大學(xué),2011.
TAN Xiang. Design and implementation of SoPC based on SCA [D]. Changsha: National University of Defense Technology, 2011.
[7] PrismTech. OpenFusion CORBA Products [EB/OL].[2011?04?12].http://www.prismtech.com/sectionitem.asp?id=570&;sid=18&;
sid2=10&;sid3=251.
[8] BECKWITH W, DELLER S, G. THOMPSON J. Hardware communications infrastructure supporting location transparency and dynamic partial recon?figuration: US2008/0229326A1 [P/OL]. [2008?09?18].
[9] OCP?IP. OCP Specification Release 2.2 [EB/OL]. [2006?03?01]. http://www.ocpip.org.
[10] 鄧剛,高宏偉,周軍輝,等.FPGA上SCA波形組件接口的設(shè)計與實現(xiàn)[J].信息通信,2012(4):16?18.
DENG Gang, GAO Hongwei, ZHOU Junhui, et al. Design and implementation of SCA waveform component interface on FPGA [J]. Information &; communications, 2012(4): 16?18.