文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.11.008
中文引用格式: 袁揚(yáng),譚月輝,孫慧賢,等. 基于ZedBoard的SCA架構(gòu)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(11):31-33,37.
英文引用格式: Yuan Yang,Tan Yuehui,Sun Huixian,et al. Design and implementation of SCA based on ZedBoard[J].Application of Electronic Technique,2015,41(11):31-33,37.
0 引言
軟件通信體系架構(gòu)(Software Communications Architecure,SCA)是美軍在聯(lián)合戰(zhàn)術(shù)無(wú)線電系統(tǒng)(Joint Tatical Radio System,JTRS)中針對(duì)GPP環(huán)境提出的軟件無(wú)線電實(shí)現(xiàn)框架,結(jié)合JTRS后續(xù)推出SCA補(bǔ)充標(biāo)準(zhǔn)對(duì)SCA架構(gòu)進(jìn)行裁剪,可在硬件資源有限的嵌入式硬件平臺(tái)上搭建小型化SCA架構(gòu),增強(qiáng)系統(tǒng)軟件的可重用性和可移植性,是實(shí)現(xiàn)嵌入式可重構(gòu)系統(tǒng)的主要架構(gòu)之一。ZedBoard是Xilinx公司推出的首款融合了GPP和FPGA的嵌入式開發(fā)環(huán)境,可滿足大部分嵌入式系統(tǒng)開發(fā)的需求,是嵌入式開發(fā)環(huán)境的必然發(fā)展趨勢(shì),但是由于FPGA中的應(yīng)用組件都由具體的邏輯電路實(shí)現(xiàn),完全不同于GPP上的程序調(diào)用執(zhí)行,所以SCA架構(gòu)在ZedBoard平臺(tái)上會(huì)有諸多實(shí)現(xiàn)問題[1]。
本文首先介紹了ZedBoard平臺(tái)硬件結(jié)構(gòu),提出了基于ZedBoard的SCA架構(gòu)的總體設(shè)計(jì),并重點(diǎn)針對(duì)SCA架構(gòu)在ZedBoard平臺(tái)上難以實(shí)現(xiàn)的問題,通過(guò)深入分析研究Modem硬件抽象層(Modem Hardware Abstration Layer,MHAL)標(biāo)準(zhǔn)和Open Core Protocol(OCP) 接口協(xié)議,結(jié)合ZedBoard硬件結(jié)構(gòu)設(shè)計(jì)了MHAL硬件平臺(tái)外部抽象接口和SCA波形組件容器,有效地解決了SCA架構(gòu)在ZedBoard上的實(shí)現(xiàn)問題,為在ZedBoard上實(shí)現(xiàn)以SCA架構(gòu)為核心的系統(tǒng)開發(fā)打下了基礎(chǔ)。
1 基于ZedBoard的SCA架構(gòu)總體設(shè)計(jì)
ZedBoard平臺(tái)是Xilinx公司最新推出的首款融合了ARM Cortex A9雙核和FPGA的全可編程片上系統(tǒng),兼?zhèn)銰PP和FPGA的特點(diǎn)和優(yōu)勢(shì)。ZedBoard平臺(tái)的核心是Xilinx的Zynq-7020芯片,主要包括processing system(PS)和programmable logic(PL)兩部分。其中PS部分包含雙核的ARM Cortex A9處理器,不僅負(fù)責(zé)整個(gè)ZedBoard開發(fā)板的管理和配置,也可作為獨(dú)立的芯片單獨(dú)使用,是ZedBoard平臺(tái)的系統(tǒng)控制核心,同時(shí)還集成了SIMD多媒體處理引擎(NEON)、內(nèi)存管理器(MMU)等功能模塊和多種對(duì)外擴(kuò)展接口,具有很強(qiáng)的功能擴(kuò)展能力。PL部分主要包括Xilinx的高性能7系列FPGA,作為PS部分的補(bǔ)充提供了豐富的IO資源和高速數(shù)字處理能力[2-3]。
基于ZedBoard的SCA架構(gòu)總體設(shè)計(jì)如圖1所示,為充分發(fā)揮ZedBoard平臺(tái)PS部分的高性能系統(tǒng)控制能力,設(shè)計(jì)將SCA架構(gòu)的核心框架、中間件和操作系統(tǒng)在PS部分的ARM上實(shí)現(xiàn);而PL部分的高速數(shù)字處理能力和可重配置特點(diǎn)非常適合SCA應(yīng)用層波形組件的實(shí)現(xiàn)。本文通過(guò)自行設(shè)計(jì)的MHAL硬件抽象接口和OCP波形組件容器來(lái)解決SCA架構(gòu)在FPGA上的實(shí)現(xiàn)問題,并利用ZedBoard平臺(tái)的APC接口和IO總線實(shí)現(xiàn)PS部分的核心框架和FPGA波形組件間的消息傳輸,下面對(duì)MHAL硬件抽象接口和FPGA波形組件容器進(jìn)行重點(diǎn)講述。
2 MHAL硬件抽象接口設(shè)計(jì)
Modem硬件抽象層MHAL是JTRS辦公室在2007年頒布的接口標(biāo)準(zhǔn),其初衷是為SCA系統(tǒng)中不同處理單元的通信提供標(biāo)準(zhǔn)的協(xié)議和接口,同時(shí)也涉及了硬件平臺(tái)外部接口的抽象,為實(shí)現(xiàn)SCA消息在ZedBoard上的標(biāo)準(zhǔn)傳輸提供了方法[4-5]。本文深入分析研究了MHAL標(biāo)準(zhǔn),并結(jié)合ZedBoard開發(fā)環(huán)境,對(duì)MHAL消息結(jié)構(gòu)進(jìn)行了修改,重新定義了MHAL硬件抽象接口的功能結(jié)構(gòu)和接口函數(shù),分別設(shè)計(jì)了ARM和FPGA的MHAL消息發(fā)送和接收結(jié)構(gòu),完成了MHAL硬件抽象接口的設(shè)計(jì)。
2.1 MHAL消息結(jié)構(gòu)設(shè)計(jì)
MHAL消息從最低有效位到最高有效位以地址遞增的方式進(jìn)行排列,本文對(duì)MHAL標(biāo)準(zhǔn)中的消息結(jié)構(gòu)進(jìn)行了修改和擴(kuò)充,添加了消息起始符和消息類型字段,使其能更好地滿足SCA架構(gòu)在ZedBoard上的實(shí)現(xiàn)需求,其消息結(jié)構(gòu)如圖2所示,其他字段與MHAL標(biāo)準(zhǔn)中的消息結(jié)構(gòu)一樣,在此不做贅述。
?。?)消息起始符:本文設(shè)置了專門的16 bits消息起始符用來(lái)界定消息的起始,以13位巴克碼為基礎(chǔ)取值為“1111100110101000”,大大提高了MHAL消息接收和解幀的準(zhǔn)確性。
?。?)消息類型:獨(dú)立的16 bits消息類型字段用來(lái)指示MHAL消息的類型和附屬信息,可以提高M(jìn)HAL消息解析效率,使FPGA波形組件容器準(zhǔn)確地將消息發(fā)送到相應(yīng)的功能模塊。前3 bits指示MHAL消息類型,其對(duì)應(yīng)關(guān)系如表1所示;后續(xù)比特分為三部分,分別指示MHAL消息源的處理編號(hào)、組件編號(hào)和端口編號(hào)。
2.2 MHAL硬件抽象接口結(jié)構(gòu)設(shè)計(jì)
結(jié)合MHAL標(biāo)準(zhǔn)和ZedBoard平臺(tái)特點(diǎn),本文設(shè)計(jì)的MHAL硬件抽象接口功能結(jié)構(gòu)如圖3所示,主要包括通用代理、MHAL消息接收結(jié)構(gòu)和MHAL消息發(fā)送結(jié)構(gòu),結(jié)合上文規(guī)范的MHAL消息結(jié)構(gòu)屏蔽了ARM和FPGA硬件平臺(tái)的外部接口,實(shí)現(xiàn)了SCA消息在ZedBoard的ARM和FPGA之間的標(biāo)準(zhǔn)傳輸。
2.2.1 通用代理設(shè)計(jì)
通用代理由SCA核心框架的ExecutableDevice接口通過(guò)execute()函數(shù)創(chuàng)建,是運(yùn)行在ARM上的一個(gè)SCA中間件對(duì)象,具有核心框架規(guī)定的CF::Resource、CF::PortSupplier和CF::Port等組件接口,根據(jù)目標(biāo)邏輯地址實(shí)現(xiàn)與對(duì)應(yīng)FPGA組件的通信。
通用代理作為FPGA波形組件在ARM上的代理接受核心框架的調(diào)用和管理,并將SCA消息轉(zhuǎn)換為MHAL報(bào)文,添加目標(biāo)邏輯地址字段后發(fā)送到ARM MHAL發(fā)送結(jié)構(gòu),是實(shí)現(xiàn)FPGA波形組件和ARM核心框架橋接的適配器。
2.2.2 ARM MHAL發(fā)送和接收結(jié)構(gòu)設(shè)計(jì)
ARM MHAL發(fā)送和接收結(jié)構(gòu)由MHAL設(shè)備組件實(shí)現(xiàn),提供信源函數(shù)和信宿函數(shù)服務(wù),實(shí)現(xiàn)對(duì)MHAL消息的封裝和發(fā)送、接收和解封裝。結(jié)合ZedBoard平臺(tái)ARM+FPGA的硬件結(jié)構(gòu)特點(diǎn),本文對(duì)MHAL標(biāo)準(zhǔn)中的GPP API結(jié)構(gòu)進(jìn)行了擴(kuò)充和修改,使其更好地與ZedBoard開發(fā)環(huán)境相契合,下面以ARM發(fā)送結(jié)構(gòu)為例進(jìn)行講述,其UML圖如圖4所示。
MHAL發(fā)送結(jié)構(gòu)收到由通用代理發(fā)送來(lái)的MHAL報(bào)文后,通過(guò)builsMhalMsg()等函數(shù)將其封裝為完整的MHAL消息并存儲(chǔ)在MHALMsg[MAX_MHAL]中,end-
BuildMhalMsg()函數(shù)結(jié)束MHAL消息封裝流程,再由 pushPacket()函數(shù)通過(guò)外部傳輸鏈路將MHAL消息發(fā)送到對(duì)端的MHAL接收結(jié)構(gòu)。
2.2.3 FPGA MHAL發(fā)送和接收組件設(shè)計(jì)
FPGA MHAL發(fā)送和接收組件由一系列接收和發(fā)送MHAL消息的實(shí)體構(gòu)成,與ARM MHAL發(fā)送和接收結(jié)構(gòu)功能基本一致。本文以Multi-Depth FIFO節(jié)點(diǎn)為基礎(chǔ)設(shè)計(jì)了FPGA MHAL發(fā)送和接收組件,其具有允許多條消息隊(duì)列等待接收,支持按字節(jié)處理消息的優(yōu)點(diǎn),增強(qiáng)了FPGA對(duì)MHAL消息的處理能力,很好地滿足了FPGA上MHAL消息發(fā)送和接收的需求。下面以FPGA MHAL接收組件為例,本文采用Verilog硬件編程語(yǔ)言封裝了其外部接口,其外部端口和功能如表2所示。
3 FPGA波形組件容器設(shè)計(jì)
容器是FPGA波形組件的直接運(yùn)行環(huán)境,為實(shí)現(xiàn)SCA對(duì)FPGA波形組件的調(diào)用和控制提供本地服務(wù)和API[1],使得FPGA上的波形組件能像GPP組件一樣被核心框架管理,是在ZedBoard上實(shí)現(xiàn)SCA架構(gòu)的重要組成部分。
開放核協(xié)議OCP片上子系統(tǒng)通信定義了一個(gè)高效的、和總線相對(duì)獨(dú)立的、可配置的、可升級(jí)的接口,并可通過(guò)Verilog、VHDL等硬件編程語(yǔ)言實(shí)現(xiàn),非常適合FPGA開發(fā)環(huán)境[6-7]。本文基于OCP接口設(shè)計(jì)了FPGA波形組件容器,規(guī)范了容器提供的服務(wù)和波形組件接口,實(shí)現(xiàn)了SCA核心框架對(duì)FPGA組件的管理以及異構(gòu)組件間互通,大大提高了FPGA波形組件的可移植性和可重用性,其結(jié)構(gòu)如圖5所示。
3.1 OCP互連模塊設(shè)計(jì)
OCP互聯(lián)模塊作為FPGA波形組件容器的核心,是實(shí)現(xiàn)容器對(duì)組件控制和管理功能的主要承擔(dān)者,主要由控制模塊、通信模塊、本地服務(wù)模塊和相應(yīng)的OCP接口組成。其中控制模塊是OCP互聯(lián)模塊的樞紐,為FPGA波形組件提供了與SCA波形組件接口相對(duì)應(yīng)的initialize()、start()和stop()等操作,便于核心框架對(duì)FPGA波形組件控制命令的執(zhí)行。
OCP互聯(lián)模塊的工作流程為:控制模塊進(jìn)一步解析FPGA MHAL接收組件接收到的MHAL消息,并判斷出此消息的類型。如果是控制消息、連接消息或者斷開連接消息,則根據(jù)MHAL消息中的目標(biāo)邏輯地址找到目標(biāo)組件并完成相應(yīng)控制操作;如果是數(shù)據(jù)消息,則交由通信模塊處理。通信模塊根據(jù)MHAL消息中的目標(biāo)邏輯地址將數(shù)據(jù)消息發(fā)送到目標(biāo)組件,并將接收到的組件返回?cái)?shù)據(jù)消息交由控制模塊進(jìn)行封裝等處理。本地服務(wù)模塊為容器中的組件提供時(shí)鐘信號(hào)和復(fù)位信號(hào)。
3.2 組件OCP接口設(shè)計(jì)
為了使FPGA波形組件與容器的OCP互連模塊無(wú)縫連接,本文以O(shè)CP接口為基礎(chǔ)設(shè)計(jì)了FPGA組件的封裝接口。組件OCP接口與OCP互聯(lián)模塊的功能模塊相對(duì)應(yīng),包括組件控制接口、組件通信接口和本地服務(wù)接口。
組件控制接口采用以容器為Master,組件為Slave的模式,采用RTL編程語(yǔ)言實(shí)現(xiàn)了initialize()、run()和release()操作,與組件SCD文檔中組件IDL端口定義保持一致,很好地滿足了核心框架對(duì)FPGA組件的控制操作需求。
組件通信接口根據(jù)組件與容器具體的通信情況分為組件Master只寫、組件Master只讀和組件Slave只寫三種模式,并定義了不同模式下所需的端口,可滿足組件通信的各種需求。
本地服務(wù)接口與本地服務(wù)模塊相對(duì)應(yīng),用來(lái)接收OCP互聯(lián)模塊提供的時(shí)鐘信號(hào)和復(fù)位信號(hào)。
4 結(jié)論
本文緊跟當(dāng)前系統(tǒng)開發(fā)硬件平臺(tái)的趨勢(shì),以Xilinx最新推出的ZedBoard平臺(tái)為背景,針對(duì)SCA架構(gòu)在專用硬件平臺(tái)上實(shí)現(xiàn)的諸多問題,通過(guò)深入分析研究MHAL標(biāo)準(zhǔn)和OCP協(xié)議,對(duì)MHAL消息結(jié)構(gòu)進(jìn)行了修改和擴(kuò)充,結(jié)合ZedBoard開發(fā)環(huán)境設(shè)計(jì)了ARM和FPGA上的MHAL消息發(fā)送和接收結(jié)構(gòu),并根據(jù)SCA核心框架對(duì)組件的管理需求設(shè)計(jì)了容器功能模塊和FPGA組件接口,最終完成了MHAL硬件抽象接口和FPGA波形組件容器設(shè)計(jì),有效地解決了SCA架構(gòu)在ZedBoard上的實(shí)現(xiàn)問題,為在ZedBoard上實(shí)現(xiàn)以SCA架構(gòu)為核心的系統(tǒng)開發(fā)打下了基礎(chǔ)。
參考文獻(xiàn)
[1] 常濟(jì)菘.基于SCA的可移植FPGA波形結(jié)構(gòu)及組件接口設(shè)計(jì)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2009.
[2] 肖志遠(yuǎn),杜啟亮,田聯(lián)房,等.基于Zedboard的視覺導(dǎo)航除草機(jī)器人控制系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(6):27-29.
[3] 楊旭,湯永福,孟憲元,等.基于Zedboard的嵌入式自動(dòng)調(diào)諧系統(tǒng)設(shè)計(jì)[J].測(cè)控技術(shù),2014,33(9):84-86.
[4] 王彥剛,呂遵明,萬(wàn)留進(jìn).基于SCA規(guī)范的硬件抽象層應(yīng)用程序接口分析[J].計(jì)算機(jī)應(yīng)用,2014(A02).
[5] 方詠嫻.手持通信終端的硬件抽象層研究及其FPGA實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2011.
[6] 王荊林.基于OCP的FPGA可復(fù)用波形組件設(shè)計(jì)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007.
[7] 鄧剛,高宏偉,周軍輝,等.FPGA上SCA波形組件接口的設(shè)計(jì)與實(shí)現(xiàn)[J].信息通信,2012(4):16-18.