郭 超,曹 峰,高偉林,于小燕
(中航雷達(dá)與電子設(shè)備研究院 軍品研究所,江蘇 蘇州215151)
飛機(jī)座艙圖形綜合顯示系統(tǒng)是一個(gè)對(duì)實(shí)時(shí)性要求很高的圖形生成系統(tǒng)[1]。在飛機(jī)座艙顯示控制系統(tǒng)中,光柵圖形發(fā)生器接收主控計(jì)算機(jī)發(fā)送的指令和數(shù)據(jù),實(shí)現(xiàn)各種圖形的生成,形成所需畫面,送往下視顯示器顯示[2]。大屏幕化是未來(lái)飛機(jī)座艙顯示的發(fā)展方向[3],針對(duì)這一趨勢(shì),機(jī)載顯示器的圖形發(fā)生器由以DSP+FPGA 架構(gòu)為核心的生產(chǎn)技術(shù)逐漸向以GPU 為核心的圖形生產(chǎn)技術(shù)方向轉(zhuǎn)變。采用DSP+FPGA的圖形硬件加速架構(gòu),或者使用專用GPU 圖形生成芯片,都可以產(chǎn)生高分辨率的機(jī)載顯示器圖形,但隨之帶來(lái)的是產(chǎn)品成本的急劇增加以及功耗的不斷上升,這顯然無(wú)法滿足某些特定條件下低功耗、低成本顯示器的要求。低功耗、低成本的嵌入式圖形硬件加速不僅在移動(dòng)應(yīng)用領(lǐng)域(GPS、手持游戲、汽車導(dǎo)航等)獲得廣泛的應(yīng)用,也在軍事應(yīng)用(飛機(jī)、潛艇、航空航天等高可靠應(yīng)用)領(lǐng)域得到普遍關(guān)注[4]。
本文針對(duì)低功耗和小體積的某些機(jī)載顯示器市場(chǎng)需求,提出了采用SOPC 的設(shè)計(jì)方案實(shí)現(xiàn)圖形的生成和顯示。本圖形生成技術(shù)以SOPC中集成的NiosⅡ軟核為核心,根據(jù)顯示任務(wù)需要實(shí)時(shí)地計(jì)算并產(chǎn)生圖形像素點(diǎn)數(shù)據(jù)信息,配合SOPC中FPGA 芯片的邏輯控制,最終完成圖形的實(shí)時(shí)生成和顯示。本設(shè)計(jì)由于采用了軟核CPU 處理器,節(jié)省了增加硬件CPU 芯片的開(kāi)銷,使得設(shè)計(jì)得以簡(jiǎn)化,成本明顯降低。
SOPC(System On Programmable Chip)即可編程片上系統(tǒng),或者說(shuō)是基于大規(guī)模FPGA 的單片系統(tǒng),是美國(guó)Altera 公司于2000 年提出的[5]。它將處理器、存儲(chǔ)器、I/O 等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一個(gè)可編程器件上,由單個(gè)芯片完成整個(gè)系統(tǒng)的主要邏輯功能,具有靈活的設(shè)計(jì)方式,可裁減、可擴(kuò)充、可升級(jí),并具備軟硬件在系統(tǒng)可編程功能[6],為SOC的實(shí)現(xiàn)提供了一種簡(jiǎn)單易行而又成本低廉的手段,極大地促進(jìn)了SOC的發(fā)展。
NiosⅡ處理器是Altera公司的第二代可配置的通用32位RISC軟核微處理器,是Altera公司特有的基于通用FPGA 架構(gòu)的軟CPU 內(nèi)核,提供:
(1)完全的32 位指令集、數(shù)據(jù)總線和地址空間;
(2)32位通用目的寄存器;
(3)32個(gè)外部中斷源;
(4)單指令32×32位乘和除指令可得到32位結(jié)果;
(5)計(jì)算64位和128位乘積專業(yè)指令;
(6)提供片外存儲(chǔ)器和外設(shè)接口;
(7)超過(guò)150DMIPS的性能。
由于NiosⅡ?yàn)檐浐颂幚砥鳎小癴ast”、“standard”和“economic”3種類型可供選擇,具有很大的靈活性,可以在多種NiosⅡ系統(tǒng)組合設(shè)置中選擇,滿足成本和功能的要求。
3.1.1 硬件結(jié)構(gòu)
本文的硬件部分由NiosⅡ處理器、片上RAM、幀存、視頻控制器、通用異步收發(fā)器(Universal Asynchronous Receiver and Transmitter,UART)和并行I/O(Parallel I/O,PIO)外設(shè)、Flash和EPCS控制器等組成,如圖1所示。
圖1 基于SOPC的圖形生成硬件結(jié)構(gòu)圖Fig.1 Hardware structure for the graphic-generator based on SOPC
正常工作時(shí)NiosⅡ處理器通過(guò)AVALON總線控制UART 接收任務(wù)處理機(jī)的數(shù)據(jù)和指令,按照要求調(diào)用圖形生成的算法,在規(guī)定時(shí)間內(nèi)完成指定分辨率圖形的生成和光柵掃描轉(zhuǎn)換,并將結(jié)果存儲(chǔ)于幀存中。視頻控制器從幀存中讀出生成圖形的數(shù)據(jù),處理后輸出至外部顯示器顯示。
雙幀存分別由NiosⅡ軟核處理器和視頻控制器控制,按規(guī)定時(shí)序切換,實(shí)現(xiàn)NiosⅡ圖形產(chǎn)生與視頻控制器刷新顯示操作的并行執(zhí)行。
3.1.2 SOPC系統(tǒng)搭建
系統(tǒng)開(kāi)發(fā)主要分為硬件開(kāi)發(fā)和軟件開(kāi)發(fā)兩部分,分別在Quartus和NiosⅡIDE開(kāi)發(fā)環(huán)境上進(jìn)行[7]。本文的SOPC系統(tǒng)基于Altera公司Quartus 9.0軟件提供的SOPC Builder工具生成。利用SOPC Builder可以在很短的時(shí)間內(nèi)生成由處理器、存儲(chǔ)器和外設(shè)等組件組成的SOPC 系統(tǒng)。SOPC Builder自動(dòng)生成系統(tǒng)級(jí)設(shè)計(jì)代碼及底層硬件驅(qū)動(dòng)代碼,方便進(jìn)行軟件開(kāi)發(fā)[8]。
圖2 SOPC Builder硬件平臺(tái)圖Fig.2 Hardware platform for the SOPC Builder
本技術(shù)實(shí)現(xiàn)時(shí)搭建的SOPC Builder硬件平臺(tái)如圖2所示。
在本文搭建的SOPC系統(tǒng)中,NiosⅡ處理器、EPCS控制器、Flash控制器及三態(tài)橋、PIO 模塊等由Altera組件庫(kù)提供,視頻控制器自主設(shè)計(jì)并添加到SOPC系統(tǒng)中。
視頻控制器根據(jù)乒乓原理來(lái)操作兩個(gè)幀存。在NiosⅡ處理器寫幀存1時(shí),F(xiàn)PGA 從幀存2讀出數(shù)據(jù);NiosⅡ處理器寫幀存2時(shí),F(xiàn)PGA從幀存1讀出數(shù)據(jù)。同時(shí)視頻控制器還根據(jù)像素時(shí)鐘、行、場(chǎng)同步產(chǎn)生控制時(shí)序來(lái)完成讀出數(shù)據(jù)的輸出顯示。
3.2.1 硬件抽象層系統(tǒng)庫(kù)的生成
當(dāng)使用SOPC Builder創(chuàng)建一個(gè)硬件系統(tǒng)后,NiosⅡIDE為基于NiosⅡ的系統(tǒng)自動(dòng)生成板級(jí)支持包(Board Support Package,BSP),包括硬件抽象層(Hardware Abstract Layer,HAL)系統(tǒng)庫(kù)和設(shè)備驅(qū)動(dòng)[9],來(lái)匹配系統(tǒng)的硬件配置。HAL的API和ANSI C 標(biāo)準(zhǔn)庫(kù)集成在一起,為底層硬件通訊提供簡(jiǎn)單器件驅(qū)動(dòng)接口。HAL 系統(tǒng)庫(kù)提供以下服務(wù)[10]:
(1)集成ANSI C標(biāo)準(zhǔn)庫(kù);
(2)提供了常用的設(shè)備驅(qū)動(dòng);
(3)提供了硬件抽象層接口;
(4)完成系統(tǒng)初始化任務(wù);
(5)完成設(shè)備初始化。
HAL系統(tǒng)庫(kù)生成后,后續(xù)在NiosⅡIDE 中的軟件開(kāi)發(fā)就可以借助HAL庫(kù)接口函數(shù)完成。
3.2.2 圖形生成軟件設(shè)計(jì)
基于NiosⅡ處理器的圖形生成軟件通過(guò)UART 獲取數(shù)據(jù)更新,使用PIO 作為幀存狀態(tài)的標(biāo)志與FPGA 握手,實(shí)現(xiàn)對(duì)幀存的乒乓操作。圖形生成軟件功能模塊框圖如圖3所示。
圖3 圖形生成軟件功能模塊框圖Fig.3 Function modules of graphics generation software
圖4 圖形生成軟件流程圖Fig.4 Flow chart of graphics generation software
圖形生成軟件由初始化模塊、UART 通訊處理模塊和圖形生成模塊組成。初始化模塊完成定時(shí)器、中斷、全局變量等各部分的初始化狀態(tài)設(shè)定工作。UART 通訊處理模塊完成外部數(shù)據(jù)的接收和數(shù)據(jù)幀解析。圖形生成模塊完成圖形的生成。
圖形生成軟件的流程圖如圖4所示。
圖形生成軟件首先進(jìn)行系統(tǒng)初始化工作。完成后開(kāi)始循環(huán)讀取幀存狀態(tài)標(biāo)志,判斷幀存是否可寫入。等到幀存可寫后,圖形生成模塊根據(jù)顯示指令和數(shù)據(jù)的要求,采用不同的計(jì)算機(jī)圖形學(xué)算法,按照直線、圓弧、字符等基本元素生成整個(gè)圖形的光柵化數(shù)據(jù),并寫入幀存中。此后,圖形生成軟件將幀存狀態(tài)置為寫完成標(biāo)志,然后跳回到讀取幀存狀態(tài)標(biāo)志循環(huán)執(zhí)行。
UART 數(shù)據(jù)的接收以中斷方式進(jìn)行。在接收到數(shù)據(jù)幀后,進(jìn)行完整性檢查和內(nèi)容解析,并更新顯示指令和數(shù)據(jù)。
在進(jìn)行實(shí)驗(yàn)驗(yàn)證時(shí),選擇的硬件平臺(tái)為自研的SOPC圖形生成模塊,F(xiàn)PGA 型號(hào)為Altera公司的EP2S30F672。測(cè)試時(shí)NiosⅡ處理器選擇“fast”類型,設(shè)置指令CACHE和數(shù)據(jù)CACHE均為16KB,內(nèi)核輸入時(shí)鐘頻率為65MHz。NiosⅡIDE編譯的優(yōu)化等級(jí)設(shè)置為2級(jí)。
圖5 測(cè)試圖形示意圖Fig.5 General view for graphics generation experiment
測(cè)試圖形如圖5 所示,分辨率為640×480,其中包含了矩形、三角形、圓環(huán)、中文字符、英文字符、數(shù)字及符號(hào)等顯示內(nèi)容。
實(shí)驗(yàn)結(jié)果如表1所示。
表1 SOPC圖形生成實(shí)驗(yàn)結(jié)果Tab.1 Result of graphic-generating experiment
NiosⅡ處理器進(jìn)行圖形生成時(shí),所消耗的時(shí)間主要由字符及圖形產(chǎn)生時(shí)間、寫幀存時(shí)間、反走樣效果處理時(shí)間3部分組成。其中反走樣處理時(shí)間約占了總時(shí)間的40%,是最耗時(shí)的一個(gè)部分。
NiosⅡ處理器工作在65 MHz,不進(jìn)行反走樣處理時(shí),圖形生成幀頻可以達(dá)到45fps,完全可以滿足機(jī)載顯示器實(shí)時(shí)性的要求(幀頻不低于25fps)。當(dāng)需要進(jìn)一步優(yōu)化顯示效果,對(duì)圖形中圓弧、直線等元素采用反走樣算法進(jìn)行優(yōu)化時(shí),圖形生成的幀頻可以達(dá)到26fps,也能夠滿足機(jī)載顯示器實(shí)時(shí)性的要求。
NiosⅡ軟核的最大工作頻率可達(dá)150 MHz以上[11]。為了提高圖形生成的性能,在SOPC 系統(tǒng)中各外設(shè)允許的前提下,可以通過(guò)提高NiosⅡ軟核的工作頻率來(lái)提高圖形生成的性能。
經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,NiosⅡ工作頻率與所生成圖形幀頻之間的關(guān)系曲線圖6所示。
如圖6所示,NiosⅡ處理器工作頻率越高,所生產(chǎn)圖形的幀頻也越高。但受制于幀存芯片及其他外設(shè)訪問(wèn)時(shí)序等因素的約束,其工作頻率不能隨意調(diào)高,需要根據(jù)具體的硬件平臺(tái)合理選擇。
圖6 NiosⅡ主頻與生成圖形幀頻關(guān)系曲線Fig.6 Relations between NiosⅡfrequency and graphics generation peroid
針對(duì)機(jī)載顯示器某些低功耗、低成本應(yīng)用場(chǎng)合,本技術(shù)打破了傳統(tǒng)采用DSP+FPGA 架構(gòu)或?qū)S肎PU 圖形芯片等高功耗、高成本的圖形生成方式,提出采用基于SOPC 的綜合軟硬件設(shè)計(jì)技術(shù)完成機(jī)載顯示器的圖形實(shí)時(shí)生成。該技術(shù)以SOPC中的NiosⅡ軟核處理器為圖形生成核心,與FPGA 按照乒乓方式操作幀存,并行完成圖形數(shù)據(jù)的生成和刷新顯示工作。通過(guò)實(shí)驗(yàn)驗(yàn)證,采用反走樣技術(shù)對(duì)生成的圖形進(jìn)行顯示效果優(yōu)化處理時(shí),本技術(shù)可以生成640×480分辨率的圖形,幀頻達(dá)到了26fps,能夠滿足機(jī)載顯示器實(shí)時(shí)顯示的需求。
[1] 朱耀東,張煥春,經(jīng)亞枝.飛機(jī)座艙綜合圖形顯示系統(tǒng)設(shè)計(jì)的一種新方法[J].南京航空航天大學(xué)學(xué)報(bào),2012,34(5):488-492.Zhu Y D,Zhang H C,Jing Y Z.A new design method of combined graphics display system in aircraft cockpit[J].Journal of Nanjing University of Aeronautics &Astronautics,2012,34(5):488-492.(in Chinese)
[2] 陳少磊,金子同,郭凡.基于單DSP的雙通道圖形發(fā)生器設(shè)計(jì)[J].航空電子技術(shù),2004,35(3):19-23.Chen S L,Jin Z T,Guo F.Twin channel graphics generator design based on single DSP[J].Avionics Technology,2004,35(3):19-23.(in Chinese)
[3] 邢新強(qiáng),李國(guó)超,肖鋒.機(jī)載座艙顯示發(fā)展趨勢(shì)分析[J].飛機(jī)設(shè)計(jì),2010,30(2):34-36.Xing X Q,Li G C,Xiao F.The developing trend analysis of aircraft cockpit display[J].Aircraft Design,2010,30(2):34-36.(in Chinese)
[4] 胡小龍,李列文,周俊明.基于SOPC及圖形加速引擎的座艙顯示系統(tǒng)[J].計(jì)算機(jī)工程,2009,35(21):231-234.Hu X L,Li L W,Zhou J M.Cockpit display system based on SOPC and graphics accelerating engine[J].Computer Engineering,2009,35(21):231-234.(in Chinese)
[5] 綦聲波,田學(xué)文.雙Nios軟核在嵌入式系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(2):28-31.Qi S B,Tian X W.Application of dual NiosⅡsoft core in embedded system [J].Microcontrollers & Embedded Systems,2008,(2):28-31.(in Chinese)
[6] 姜漫,吳志勇,曹騰.基于SOPC技術(shù)的VGA 字符和圖像顯示系統(tǒng)[J].液晶與顯示,2013,28(1):120-126.Jiang M,Wu Z Y,Cao T.Characters and images VGA display system based on SOPC technology[J].Chinese Journal of Liquid Crystals and Displays,2013,28(1):120-126.(in Chinese)
[7] 王海霞,武一.基于SOPC的LCD 顯示模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].液晶與顯示,2012,27(4):508-514.Wang H X,Wu Y.Design and implementation of LCD module based on SOPC[J].Chinese Journal of Liquid Crystals and Displays,2012,27(4):508-514.(in Chinese)
[8] 生蕾,張峰.基于NiosⅡ的倒車?yán)走_(dá)系統(tǒng)的實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,2008,27(5):45-47.Sheng L,Zhang F.Experimental design of parking radar system based on NiosⅡ[J].Research and Exploration in Laboratory,2008,27(5):45-47.(in Chinese)
[9] 張興堂,高勇,王偉強(qiáng).基于NiosⅡ的智能多接口片上系統(tǒng)設(shè)計(jì)[J].液晶與顯示,2012,38(7):61-64.Zhang X T,Gao Y,Wang W Q.Design of a multi-interface SoC based on NiosⅡ[J].Chinese Journal of Liquid Crystals and Displays,2012,38(7):61-64.(in Chinese)
[10] 李蘭英.NiosⅡ嵌入式軟核SOPC設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006:240-241.Li L Y.NiosⅡEmbedded Soft-core SOPC Design Principles and Applications[M].Beijing:Beihang University Press,2006:240-241.(in Chinese)
[11] Altera.NiosⅡProcessor Reference Handbook[R].San Jase,USA:Altera,2009:115.