(公安部第一研究所,北京 100048)
軟件無線電技術最早是美國在海外戰(zhàn)爭中為解決互聯(lián)互通互操作提出來的,美國軍方提出Speakeasy項目以及JTRS(聯(lián)合戰(zhàn)術無線電系統(tǒng))計劃,標志著軟件無線電進入快速發(fā)展階段。該計劃是美軍為保證不同設備間的互通性,使各軍種間實現(xiàn)高效、可靠的協(xié)同通信而研制的三軍通用軟件無線電臺。民用移動通信的需求也是軟件無線電技術發(fā)展進步的巨大驅(qū)動力,移動通信經(jīng)歷了從第一代模擬系統(tǒng)到目前第四代商用通信系統(tǒng)開發(fā)研制,存在著多標準多模式共存、硬件資源無法共用等問題,用一個全球統(tǒng)一的標準實現(xiàn)無縫隙覆蓋通信體系已成為設備制造商、運營商和用戶的共識。軟件無線電即是利用一個開放式、標準化、模塊化的通用硬件平臺,通過可編程的軟件實現(xiàn)不同的系統(tǒng)功能,諸如通信協(xié)議、工作頻段、調(diào)制方式,提升系統(tǒng)的靈活性,體現(xiàn)出硬件資源的重用性。
當前的無線通信領域典型的軟件無線電平臺代表有微軟的Sora平臺和美國國家儀器研制的USRP平臺。這兩個平臺都需要借助PC來實現(xiàn)軟件無線電數(shù)字信號處理,無法保障數(shù)據(jù)處理實時性和高強度計算,不利于設備的集成,更多地用于科研仿真類項目。隨著無線通信、微電子等領域的不斷發(fā)展,小型化、高集成度的軟件無線電平臺成為軟件無線電技術落地應用的基石。Xilinx公司研制的ZYNQ可擴展處理平臺為All Programmable概念而生,同時具有軟件、硬件和I/O的可編程特性。ZYNQ芯片集成了一個基于雙核ARM的處理子系統(tǒng)和一個可編程邏輯。ARM與FPGA之間的數(shù)據(jù)交互使用AXI接口,最高吞吐量達到9.6 Gbit/s,可以滿足高速通信需求。
本文將首先提出基于ZYNQ和AD9361的軟件無線電平臺框架,設計實現(xiàn)AXI總線接口和SPI控制接口,移植嵌入式Linux系統(tǒng),并完成各類接口驅(qū)動開發(fā),利用ZYNQ邏輯資源開發(fā)高速通信算法,并通過仿真驗證平臺的正確性。
針對專用無線通信系統(tǒng)低功耗小體積的應用需求,本文提出了如圖1所示的軟件無線電框架平臺。該平臺由Xilinx公司推出的全可編程器件ZYNQ和ADI公司的高性能射頻收發(fā)器AD9361組成。
全可編程器件ZYNQ包含ARM處理器資源和FPGA邏輯資源,雙核芯片的設計有利于降低專用無線通信系統(tǒng)的功耗和布板尺寸。ARM處理器資源非常豐富,除了基于ARM CortexA9的雙核應用處理器外,還包括片內(nèi)存儲器接口、外部存儲器接口、各類I/O外設和連接接口。用戶可根據(jù)應用需求合理使用ARM處理器資源和邏輯資源來配合完成相應的應用開發(fā)。一般來說,在專用的無線通信系統(tǒng)開發(fā)中,可利用ARM側(cè)處理器資源開發(fā)邏輯控制程序,利用FPGA側(cè)邏輯資源開發(fā)數(shù)據(jù)處理高速算法,例如ADC、DAC、混頻、濾波、增益控制等。ARM側(cè)可以單獨使用,不依賴于PL(Programmable Logic,可編程邏輯)部分,可以裸機或嵌入式操作系統(tǒng)開發(fā)。整個平臺是以ARM為核心的處理器平臺,PL可以看成是PS(Processor System,處理器系統(tǒng))的另一個具有可重配置特性的“外設”,作為PS部分的一個從設備,受ARM處理器控制。ZYNQ中ARM與FPGA之間的數(shù)據(jù)交互通過AXI接口,滿足實時和高速通信的需求。
AD9361射頻收發(fā)器是ADI公司推出的面向3G和4G基站應用的高性能、高集成度射頻解決方案,集成了AD/DA、濾波、放大、增益控制、頻率合成器等模塊,工作頻段為70 MHz—6 GHz,工作帶寬為200 kHz—56 MHz,可應用于各種通信系統(tǒng)的通信和數(shù)據(jù)收發(fā)等。AD9361通過FMC接口與ZYNQ平臺相連,具有無縫FPGA連接能力,通過該集成收發(fā)器上預留的SPI接口,即可完成射頻收發(fā)模塊參數(shù)配置和狀態(tài)信息讀取。
圖1 基于ZYNQ和AD9361的軟件無線電平臺框架
ZYNQ使用AXI總線協(xié)議實現(xiàn)ARM與FPGA之間的數(shù)據(jù)交互,PL部分開發(fā)的模塊作為一個IP Core掛載在AXI總線上,PS部分需要通過調(diào)用相應的驅(qū)動實現(xiàn)數(shù)據(jù)交互。
AXI接口有三種協(xié)議類別,分別是AXI4_Lite、AXI4、AXI4_Stream。其中,AXI4_Lite為輕量級協(xié)議,適合小批量數(shù)據(jù)或簡單控制場景,主要用于訪問一些低速外設和外設的控制;AXI4和AXI4_Lite差不多,只是增加了批量傳輸功能;AXI4_Stream是一種連續(xù)流接口,不需要地址線,使用時必須有一個轉(zhuǎn)換裝置,例如AXI_DMA模塊來實現(xiàn)內(nèi)存映射到流式接口的轉(zhuǎn)換,其本質(zhì)是針對數(shù)據(jù)流構(gòu)建的數(shù)據(jù)通路,從信源到信宿構(gòu)建起連續(xù)的數(shù)據(jù)流,這個接口適合做高速實時信號處理。
ZYNQ共有9個AXI硬件接口,包括4個AXI_GP通用接口、4個AXI_HP高速接口和1個AXI_ACP加速接口。GP接口是32位的低性能接口,理論帶寬為600 MB/s,HP和ACP接口為64位高性能接口,理論帶寬為1 200 MB/s。PL部分開發(fā)的模塊需要嚴格按照AXI總線協(xié)議,作為一個IP Core掛載在AXI總線上,由PS部分調(diào)用實現(xiàn)數(shù)據(jù)交互。針對不同的應用,用戶需合理選擇AXI_GP、AXI_HP與AXI_ACP接口。
由于無線通信軟件無線電平臺中基帶數(shù)據(jù)流吞吐量較大,所以采用用于大數(shù)據(jù)連續(xù)流傳輸?shù)腁XI_Stream協(xié)議,物理接口采用AXI_HP。如圖2所示,在PL端需利用AXI_DMA模塊作為轉(zhuǎn)換裝置實現(xiàn)內(nèi)存映射到流式接口的轉(zhuǎn)換,將PS內(nèi)存單元中的數(shù)據(jù)流轉(zhuǎn)為Steam流輸出。用戶在PL部分開發(fā)的算法都需要通過AXI_Stream接口掛載到AXI_DAM模塊上。PS端通過調(diào)用相應的驅(qū)動程序,與PL部分的AXI_DMA轉(zhuǎn)換模塊實現(xiàn)數(shù)據(jù)交互。另外,需采用32位的低性能AXI_GP接口作為控制接口,實現(xiàn)邏輯資源部分AXI_DMA模塊初始化和相關配置。
圖2 AXI硬件接口實現(xiàn)框圖
PL端開發(fā)時使用XPS(Xilinx Platform Studio,Xilinx公司開發(fā)的嵌入式系統(tǒng)開發(fā)套件)工具配置AXI_Stream接口,XPS工具為AXI_DMA分配地址,PS開發(fā)時可以根據(jù)分配的地址通過CPU像訪問外設一樣訪問AXI_DMA模塊。PS端開發(fā)的驅(qū)動將在/dev里對應一個邏輯設備節(jié)點,這個節(jié)點以文件的形式存在。模塊在調(diào)用insmod命令時被加載,調(diào)用rmmod命令時被卸載。上層應用訪問底層AXI接口時,是以open、read、write的形式,無需考慮過多的硬件底層細節(jié)。
AD9361是一款面向3G和4G基站應用的高性能、高集成度的射頻捷變收發(fā)器,可通過SPI讀寫寄存器來控制狀態(tài)機按需工作。AD9361在管腳中預留了SPI接口,來使其具備完全編程特性。PS部分通過SPI接口可以方便地配置AD9361射頻收發(fā)模塊的工作頻段、發(fā)送接收增益、射頻帶寬、濾波器等參數(shù)。
如圖3所示,ZYNQ使用SPI接口對AD9361射頻模塊進行參數(shù)配置,PL側(cè)需要使用Verilog代碼開發(fā)SPI接口,其邏輯時序需滿足AD9361射頻收發(fā)器要求的SPI接口配置時序,該接口掛載到輕量級AXI_Lite總線上,通過AXI_GP物理接口連接到PS側(cè)。PS側(cè)開發(fā)并加載SPI驅(qū)動,上層應用調(diào)用SPI驅(qū)動實現(xiàn)AD9361射頻收發(fā)器的參數(shù)配置。
圖3 AD9361寄存器配置接口實現(xiàn)框圖
在ZYNQ上移植Linux操作系統(tǒng)相對一般的基于SoC的嵌入式Linux系統(tǒng)移植方法略復雜,如圖4所示,基于ZYNQ的嵌入式Linux開發(fā)流程分為系統(tǒng)硬件設計、系統(tǒng)軟件開發(fā)及用戶開發(fā)三部分。系統(tǒng)硬件設計使用Vivado等軟件完成PS部分的硬件配置,并針對特定應用進行PL邏輯開發(fā),添加集成IP Core,最終生成完整的硬件配置bit文件,導出到SDK軟件中。系統(tǒng)軟件開發(fā)部分利用硬件配置bit文件創(chuàng)建SFBL,編譯U-boot、Linux內(nèi)核、設備樹和文件系統(tǒng),最終創(chuàng)建啟動鏡像。用戶開發(fā)部分在SDK軟件環(huán)境中開發(fā)特定的軟件應用,建立并編譯應用程序代碼。最終在目標平臺ZYNQ上啟動和運行Linux系統(tǒng)及用戶程序。
圖4 基于ZYNQ的嵌入式Linux開發(fā)流程
系統(tǒng)開發(fā)分為硬件開發(fā)和軟件開發(fā)兩部分,硬件部分選擇并配置PS部分集成的控制器和外設,根據(jù)不同的應用需求,進行自定義PL可編程邏輯開發(fā),并將它們轉(zhuǎn)換或設計成IP核,利用Vivado IP Integrator工具創(chuàng)建整個嵌入式系統(tǒng)的模塊化設計,包括開發(fā)需要的數(shù)據(jù)移動工具(AXI_DMA、AXI Memory Master、AXI_FIFO等)以及連接PL與PS的AXI接口(GP、HP和ACP),之后將項目導入到SDK中。軟件部分在SDK中可根據(jù)硬件配置文件生成FSBL,并開發(fā)相應的驅(qū)動及應用程序。
系統(tǒng)上電后自動執(zhí)行片內(nèi)BootROM中的代碼,BootROM會初始化CPU和一些外設,并根據(jù)外部啟動MIO引腳配置,從外部存儲器引導FSBL到內(nèi)存。FSBL根據(jù)硬件配置bit文件初始化PS部分,配置PL邏輯部分,并加載U-boot作為Linux內(nèi)核的Bootloader程序,初始化CPU及外設,拷貝Linux內(nèi)核映像到RAM中,再通過設備樹文件將硬件相關信息傳遞給Linux內(nèi)核,最后由Linux系統(tǒng)加載文件完成啟動,根據(jù)特定需求運行相關驅(qū)動及應用程序。
上述軟件無線電平臺可用于通信系統(tǒng)研發(fā)、無線信號側(cè)向、數(shù)據(jù)采集處理等,PL部分為用戶提供了豐富的通信系統(tǒng)算法庫,諸如擾碼、卷積、交織、調(diào)制、IFFT、上下變頻等LTE協(xié)議的開發(fā)。這些函數(shù)由ZYNQ的邏輯部分開發(fā),以FPGA模塊的形式提供給客戶。利用這些函數(shù)可以使客戶脫離底層繁瑣的硬件及通信物理層設計,有效地縮短新產(chǎn)品開發(fā)時間。
應用ZYNQ和AD9361組成的軟件無線電平臺可高效實現(xiàn)低功耗小體積的無線信號側(cè)向系統(tǒng),搭建方案如圖5所示。利用ZYNQ ARM側(cè)處理器資源開發(fā)邏輯控制程序,并配置AD9361工作模式,利用ZYNQ FPGA側(cè)邏輯資源開發(fā)數(shù)據(jù)處理高速算法,例如信號功率計算、無線信號側(cè)向算法等,利用AD9361完成高性能無線射頻信號收發(fā)。
圖5 基于ZYNQ和AD9361軟件無線電的無線信號側(cè)向系統(tǒng)搭建
為驗證基于ZYNQ的軟件無線電平臺及其接口正確性,設計的驗證方案如圖6所示。使用信號發(fā)生器生成433 MHz正弦信號,通過ZYNQ SPI接口配置AD9361,由AD9361下變頻后,通過數(shù)據(jù)接口發(fā)送給ZYNQ,PS部分通過DMA接口驅(qū)動獲取數(shù)據(jù),再通過網(wǎng)口發(fā)送到MATLAB解析,I路和Q路基帶信號的時域圖和利薩如圖形(Lissajous-Figure)如圖7所示。
圖6 基于ZYNQ的軟件無線電框架平臺驗證方案
圖7 基于ZYNQ的軟件無線電框架平臺驗證方案
本文設計并實現(xiàn)了ZYNQ+AD9361的軟件無線電平臺,實現(xiàn)了平臺底層硬件接口,搭建了完整的高速數(shù)據(jù)交互通路,移植了Linux嵌入式系統(tǒng),開發(fā)了高速通信算法,最終通過仿真驗證了基于ZYNQ的軟件無線電平臺正確性,可根據(jù)用戶需求,進行下一步應用開發(fā)。