魏志瑾,王 園
(1.中國電子科技集團公司第二十研究所,陜西 西安 710068;2.中電科星河北斗技術(西安)有限公司,陜西 西安 710068)
隨著現場可編程門陣列(FPGA)技術的發展,FPGA的成本越來越低,資源容量越來越大。同時隨著嵌入式系統的需求在不斷變化,系統外圍設備復雜性逐漸增加。由于FPGA自身穩定性強、可靠性高、成本低的特點,利用FPGA代替處理器系統進行越來越多的功能設計已漸成趨勢。可編程片上系統(SOPC)將CPU核與外設核以及系統軟件集成到單一芯片中,可以幫助用戶快速“量身定制”所需要的產品,為用戶提供省資源、高可靠的基于FPGA的嵌入式設計方案[1]。
Xilinx公司推出的MicroBlaze軟核是一個功能齊全、指令集少、高度可配置的32位RISC微處理器[2],用戶可以利用它將豐富的處理器外圍設備、內存、接口等,在嵌入式開發套件(EDK)中組合成定制化、高性能的嵌入式系統,無縫集成到Xilinx Vivado設計中。MicroBlaze軟核已應用到工業、醫療、汽車、軍工等諸多行業中,它豐富的可配置性和高性能已經發展成為替代ARM Cortex-M CPU的主流趨勢,尤其是當硬件資源緊張時,在1片FPGA中內嵌MicroBlaze軟核代替FPGA+數字信號處理器(DSP)/CPU的架構,優勢明顯。
本文在1片Xilinx的FPGA上基于MicroBlaze軟核設計一套射頻控制系統,完成解析上位機通過控制器局域網(CAN)總線、通用異步收發聯接器(UART)總線等下發的軟件控制協議,并依據解析出的指令控制射頻組件,完成射頻模塊的收發工作。
基于某課題的射頻控制系統主要是在FPGA上通過CAN總線、UART總線接收上位機下發的接力控制文件(ICD)控制命令,在本地經過相應的先進先出(FIFO)緩存;在FPGA內搭建MicroBlaze軟核,將FIFO緩存的數據通過高級可擴展接口(AXI)總線發送給MicroBlaze軟核;在軟核的軟件開發工具包(SDK)中,解析ICD指令并通過AXI總線下發射頻控制指令;在FPGA端完成射頻控制寄存器的賦值與輸出,實現對射頻組件的頻點、本振、衰減、加電、模式等的控制。其結構框圖如圖1所示。本文重點介紹基于MicroBlaze軟核的數據通信,包括軟核的架構、搭建、EDK開發、應用以及相應的AXI總線通信。

圖1 射頻控制系統結構框圖
MicroBlaze軟核采用精簡指令集(RISC)架構和哈佛結構,具有32位獨立的地址總線和數據總線;32位指令系統,支持3個操作數和2種尋址方式;具有高速的指令和數據緩存Cache.5級流水線結構;帶有8個主/從快速單工鏈路接口;提供最大256 kbit的片上本地內存接口和片上隨機存取內存塊(BRAM)連接,通過網絡本地存儲器(LMB)或AXI總線直接訪問片內BRAM;使用快速點對點連接(FSL)接入系統,完成點對點輸入/出或協處理器的用戶IP開發[3]。圖2為MicroBlaze軟核的功能框架圖,深色部分為可配置項,它可以通過網絡局部(PLB)總線或AXI總線與EDK軟件包將自帶的各種軟外設根據用戶需求進行連接,并支持用戶自定義IP通過PLB總線、AXI總線、FSL總線與MicroBlaze軟核連接,發揮FPGA設計的靈活性[1]。

圖2 MicroBlaze軟核功能框圖
MicroBlaze可以與8種外設進行交互,分別是串行外設接口(SPI)、二線制同步串行總線控制接口、UART口、中斷控制接口、定時器、通用輸入輸出(GPIO)口、雙倍速率(DDR)控制接口、以太網控制接口,實現對從屬設備的控制與數據交換。在本次課題設計中,將用AXI總線連接MicroBlaze軟核,并調用SPI接口、UART口、中斷控制接口、GPIO口等外設。
MicroBlaze軟核的搭建需要在XPS(Xilinx Platform Studio)組件中完成,結合本文需求,在XPS中創建參考時鐘100 MHz,本地存儲64 kbit的Micro Blaze處理系統同時添加GPIO、中斷控制器(AXI Interrupt Controller)、時鐘產生器(clock_generator)、系統復位模塊(Proc_sys_reset)、AXI外部受控連接(AXI External Slave connector)模塊等所需外設。其中AXI總線協議配置為AXI4 lite,中斷方式設置為上升沿觸發,GPIO核設置使能中斷。在總線接口(bus interface)中,確保時鐘、復位以及各個模塊端口連接至外部端口(External Ports)。設置完成后,生成軟核配置如圖3所示。

圖3 MicroBlaze軟核XPS平臺配置
Xilinx SDK提供了API開發所需的接口文件和庫文件,以及必要的幫助文檔。在本課題中,需要將ICD協議通過CAN總線和UART總線送至FPGA中;FPGA通過FIFO將收到的CAN總線和UART總線數據經過片內AXI總線送至軟核;在軟核的SDK中進行ICD信息解析,根據不同的地址空間區分CAN總線數據和UART總線數據;根據協議將UART數據解析為工作模式控制、頻率控制、應答指令3類;并最終下發本振配置、衰減設置、加電、帶寬設置、頻率碼等控制參數;將CAN數據解析后,設計出BIT處理、狀態查詢、程序更新、系統時下發、二本振開關設置等功能;控制參數通過AXI總線送給FPGA射頻控制寄存器,完成對射頻模塊的控制。SDK開發的軟件最終生成.elf文件,嵌入到FPGA工程中,集成編譯。軟件開發框圖如圖4所示。

圖4 射頻控制系統SDK開發框圖
AXI總線是由ARM公司提出的面向高性能、高帶寬、低延遲的片內總線。本文應用AXI總線進行軟核與FPGA寄存器/FIFO的數據傳輸,定義了以下5個獨立的傳輸通道:讀地址通道、讀數據通道、寫地址通道、寫數據通道、寫響應通道。地址通道攜帶控制消息,用于描述被傳輸的數據屬性;數據傳輸使用寫通道來實現master到slave的傳輸,master端首先向發送寫控制,然后寫入要發送的數據,slave在收到本次寫的數據后給出寫響應信號代表接收完成;讀通道用來實現數據從slave到master的數據傳輸,master向slave發送要讀取數據的地址,slave收到后再將數據通過讀數據通道發送給master。圖5為AXI讀架構圖,圖6為AXI寫架構圖。

圖5 AXI讀架構圖

圖6 AXI寫架構
本文設計AXI總線作為MicroBlaze軟核與FPGA端通信總線,并進行了寫數據、寫地址、寫響應、讀地址、讀數據仿真。當軟核通過AXI寫數據時,首先將寫地址通道的M_AXI_AWVALID拉高,M_AXI_AWADDR與之對齊輸出;再將寫數據通道的M_AXI_WVALID拉高,M_AXI_WDATA與之對齊輸出,并且注意1個WDATA對應1個WVALID,當收端收到后會將M_AXI_BVALID拉高;當軟核通過AXI讀數據時,將讀地址通道的M_AXI_ARVALID拉高,M_AXI_ARADDR與之對其輸出;收到的數據將會通過讀數據通道的M_AXI_RDATA和對應的M_AXI_RVALID給過來,此時M_AXI_RREADY信號也會在數據有效時拉高。如圖7所示,模擬發端發送數據111111、222222、333333、444444,收端收到后同時將4個數據回傳給發端,仿真時序結果與設計一致,驗證了AXI總線設計的正確性。

圖7 AXI收發時序仿真驗證
將生成好的MicroBlaze軟核以及ICD解析文件.elf嵌入至FPGA工程中。在FPGA工程中,利用收到的軟核數據分別完成對射頻組件的頻點、本振、衰減、加電、模式等的控制邏輯,集成編譯,生成.bit文件,下載至射頻模塊的數字接口板上的FPGA里,利用上位機下發ICD控制指令,通過上位機接收的回傳信息以及頻譜儀、功率計的測試結果,判定控制系統工作是否正確。上位機界面如圖8所示。經測試,接收的回傳信息與ICD核對無誤,頻譜儀測試發射及接收的頻譜、本振、接收模式與控制指令相符,功率計測試信號大小與衰減指令相符。后續射頻模塊隨整機測試,功能、性能滿足要求,進一步驗證了射頻控制系統設計的正確性。

圖8 上位機測試界面
MicroBlaze軟核因其可定制IP的方便性,以及軟核的成熟、穩定性,讓FPGA中內嵌軟核開發越來越成為通信系統設計的趨勢。尤其是在板卡硬件資源緊張、邏輯開發ICD協議解析復雜度高、開發周期長的背景下,選用1片內嵌MicroBlaze軟核的FPGA來實現ICD協議解析和通信系統的控制,緩解了硬件資源緊張,降低了開發復雜度,縮短了開發周期,極大凸顯了應用軟核的優勢。本文依據某課題,設計了基于MicroBlaze軟核的射頻控制系統,描述了軟核生成和配置設計、SDK開發設計以及AXI總線通信設計,并通過仿真和集成上板調試,驗證了設計的正確性。