文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)09-0024-04
可編程片上系統(tǒng)SoPC將軟核處理器Nios II、存儲(chǔ)器、I/O等IP核集成到單片F(xiàn)PGA上,它同時(shí)具有軟件和硬件所固有的特點(diǎn)。利用SoPC Builder將自定義的IP核加入到Nios II系統(tǒng)中,充分發(fā)揮IP核的可移植性、復(fù)用性,提高產(chǎn)品設(shè)計(jì)效率[1]。IP核通過Avalon總線與Nios II進(jìn)行數(shù)據(jù)交互,Avalon片內(nèi)總線成為CPU與IP核交流的橋梁,直接影響系統(tǒng)的整體效率。Avalon總線是Altera公司專門為SoPC而推出的一套片內(nèi)總線系統(tǒng),與Nios系列的處理器軟核一起,二者構(gòu)成了Altera公司SoPC方案中的核心部分。Avalon總線標(biāo)準(zhǔn)規(guī)定了Avalon-MM(Memory Mapped)和Avalon-ST(Strming)兩種接口[2]。使用SoPC技術(shù)進(jìn)行視頻數(shù)據(jù)處理時(shí),兩種接口的不同使用可以提高系統(tǒng)的運(yùn)行速度。Avalon-ST接口是一種單向點(diǎn)對(duì)點(diǎn)的高速接口,主要針對(duì)的是高速數(shù)據(jù)流的傳輸,減少數(shù)據(jù)流處理中的瓶頸,特別適合處理圖像和視頻數(shù)據(jù),利用Avalon-ST接口進(jìn)行視頻處理,可極大地提高系統(tǒng)的處理速度[3]。
本設(shè)計(jì)研究了如何將從外部存儲(chǔ)器中讀取的視頻數(shù)據(jù)轉(zhuǎn)換為滿足Avalon-ST視頻處理協(xié)議的視頻流,針對(duì)Altera公司提供的視頻及圖像處理套件中Frame Reader IP核只支持緊縮格式的使用局限,設(shè)計(jì)并實(shí)現(xiàn)了緊縮和平面兩種幀格式的幀讀取IP核。
1 Avalon-ST視頻處理協(xié)議
帶有Avalon-ST接口的IP核可以用來處理要求高帶寬、低延遲、單向性的數(shù)據(jù)。典型應(yīng)用包括多路復(fù)用數(shù)據(jù)流、數(shù)據(jù)包及DSP數(shù)據(jù)處理等。Avalon-ST接口信號(hào)既可以用來描述傳統(tǒng)的沒有確認(rèn)信號(hào)的簡(jiǎn)單數(shù)據(jù)流,也可以描述復(fù)雜的帶有傳輸協(xié)議或多通道交叉存取的數(shù)據(jù)包傳輸。
Avalon-ST接口包含兩種傳輸方式:普通傳輸方式和包傳輸方式[4]。普通傳輸方式如圖1所示。
圖中寫明了用到的接口信號(hào),帶箭頭的橫線表示端口的作用方向,省略了端口接收端的信號(hào)名稱。當(dāng)ready信號(hào)有效時(shí),發(fā)送端通過data端口發(fā)送數(shù)據(jù),valid信號(hào)指明了發(fā)送的數(shù)據(jù)是否有效。channel為通道號(hào),error信號(hào)為錯(cuò)誤標(biāo)識(shí)號(hào),零值代表傳輸無誤。
包傳輸方式是在普通傳輸方式的基礎(chǔ)上增加了startofpacket、endofpacket、empty三個(gè)信號(hào),實(shí)現(xiàn)了對(duì)封包型數(shù)據(jù)傳輸?shù)闹С?。Startofpacket信號(hào)用來標(biāo)識(shí)包的開始,endofpacket表示包的結(jié)尾,empty代表了包結(jié)尾的補(bǔ)零個(gè)數(shù)。
Altera公司提供的視頻及圖像處理套件可以方便、靈活地對(duì)視頻和圖像進(jìn)行處理。它提供通用的Avalon-ST接口及Avalon-ST視頻處理協(xié)議,使用Avalon Memory-Mapped(Avalon-MM)接口連接外部存儲(chǔ)器模塊并進(jìn)行實(shí)時(shí)控制,可以很方便地通過MegaWizard面板進(jìn)行參數(shù)設(shè)置及硬件生成。視頻及圖像處理套件中的IP核使用Avalon-ST視頻處理協(xié)議,該協(xié)議以封包的方式通過Avalon-ST接口傳輸控制數(shù)據(jù)和視頻數(shù)據(jù)。在很大程度上減小了視頻處理系統(tǒng)對(duì)外部控制邏輯的需求。
Avalon-ST視頻處理協(xié)議將包分成若干個(gè)記號(hào),每個(gè)記號(hào)代表一段單獨(dú)數(shù)據(jù)。傳輸前需要確定一個(gè)周期中并行傳輸?shù)挠浱?hào)個(gè)數(shù)及記號(hào)位寬,每個(gè)記號(hào)最小為4位。傳輸?shù)囊曨l數(shù)據(jù)包只能是未壓縮的視頻數(shù)據(jù),控制數(shù)據(jù)包用來對(duì)輸入的視頻數(shù)據(jù)進(jìn)行配置。每個(gè)包并行傳輸?shù)牡谝唤M記號(hào)中,最低4位為包類型標(biāo)識(shí)符。0代表視頻數(shù)據(jù)包,1~8為用戶自定義包類型,9~14保留將來使用,15表示控制數(shù)據(jù)包。
一個(gè)視頻數(shù)據(jù)包包含完整的逐行掃描幀或隔行掃描場(chǎng)的像素值,按圖像平面中從左上到右下的順序掃描發(fā)送,發(fā)送前需要確定顏色模式Color Pattern和每個(gè)像素占用的比特?cái)?shù)。每個(gè)像素對(duì)應(yīng)傳輸中的一個(gè)記號(hào),其位寬也決定了記號(hào)的位寬。顏色模式是對(duì)顏色平面采樣的組織形式,每種顏色模式都可按并行方式傳輸或串行方式傳輸。一般常用的顏色模式有RGB、YCbCr、YCbCr(4:2:2)和YCbCr(4:2:0)。
完整的RGB和YCbCr型視頻數(shù)據(jù)包結(jié)構(gòu)如圖2所示。
控制數(shù)據(jù)包用來傳輸控制信號(hào),除了4位的包類型標(biāo)識(shí)符15外,還包含寬(Width)16位、高(Height)16位、隔行標(biāo)志位(Interlacing)4位。寬為一幀圖像每行所包含的像素?cái)?shù),高為一幀或一場(chǎng)中包含的行數(shù)。隔行標(biāo)志位Interlacing的前兩位指明了下一個(gè)視頻數(shù)據(jù)包是否為隔行掃描方式,00表示逐行掃描方式,10表示偶數(shù)場(chǎng),11為奇數(shù)場(chǎng)。當(dāng)前兩位為10或11時(shí),標(biāo)志位中的后兩位用于隔行數(shù)據(jù)的同步。
每次發(fā)送視頻數(shù)據(jù)包之前必須先發(fā)送控制數(shù)據(jù)包,每個(gè)控制數(shù)據(jù)包一般由10個(gè)有效記號(hào)組成,每個(gè)記號(hào)只使用最低4位,其余位不使用。第一個(gè)有效記號(hào)為包類型標(biāo)識(shí)符,剩下的9個(gè)有效記號(hào)為寬、高和隔行標(biāo)志位。圖3為并行傳輸3個(gè)記號(hào)的控制數(shù)據(jù)包。
圖中第一列記號(hào)是包類型標(biāo)識(shí)符,F(xiàn)為十六進(jìn)制數(shù),等于十進(jìn)制數(shù)中的15。記號(hào)1~4的低4位共同組成16位的幀寬,記號(hào)5~8的低4位組成16的幀高,記號(hào)9的低4位為隔行標(biāo)志位(Interlacing 4位)。
2 幀讀取IP核的硬件設(shè)計(jì)
2.1 總體設(shè)計(jì)方案
利用SoPC技術(shù)進(jìn)行視頻數(shù)據(jù)處理時(shí),待處理的原始視頻數(shù)據(jù)可以是由外部設(shè)備輸出的視頻信號(hào),也可以是存放在外部存儲(chǔ)器中的視頻數(shù)據(jù)。當(dāng)視頻數(shù)據(jù)存放在存儲(chǔ)器中時(shí),SoPC系統(tǒng)需要使用Avalon-MM接口從外部存儲(chǔ)器中讀取視頻數(shù)據(jù),然后通過Avalon-ST接口將原來的視頻數(shù)據(jù)轉(zhuǎn)為滿足Avalon-ST視頻處理協(xié)議的視頻流,以方便之后使用Altera視頻及圖像處理套件對(duì)視頻進(jìn)行處理。因此系統(tǒng)中需要一個(gè)幀讀取IP核來完成這種轉(zhuǎn)換。
一幀完整的圖像其像素?cái)?shù)據(jù)在存儲(chǔ)器中有多種組織形式,按顏色空間可以分為RGB型和YUV(YCbCr)型。如果是YUV模型,又可以按組織方式分為平面型和緊縮型,按采樣比可分為4:4:4、4:2:2和4:2:0等。一般RGB模型均為緊縮型,按像素值的位數(shù)不同可分為RGB24、RGB32等。總的說來,常用的數(shù)據(jù)格式有RGB24、RGB32、YV12、I420等幾種。
現(xiàn)有的Altera公司提供的視頻及圖像處理套件中Frame Reader模塊可以將存儲(chǔ)器中視頻數(shù)據(jù)轉(zhuǎn)為滿足Avalon-ST視頻處理協(xié)議的視頻流,但該IP核只支持緊縮格式,原始數(shù)據(jù)在存儲(chǔ)器中必須按像素掃描順序連續(xù)存放。而實(shí)際中有多種幀格式,例如I420是平面格式,這種情況就無法使用Frame Reader了。
在實(shí)際應(yīng)用中,由于Altera的Frame Reader使用限制,作者自行研發(fā)了幀讀取IP核(Frame Reader),除了實(shí)現(xiàn)緊縮格式的視頻數(shù)據(jù)轉(zhuǎn)為滿足Avalon-ST視頻處理協(xié)議的視頻流,還能實(shí)現(xiàn)I420到RGB24的平面格式的轉(zhuǎn)換。
該IP核應(yīng)包含Avalon總線讀取模塊,幀格式轉(zhuǎn)換模塊、視頻流輸出模塊,以及控制器和控制寄存器組。如圖4所示。Avalon總線讀取模塊用于訪問Avalon總線,從而讀取外部存儲(chǔ)器中的視頻數(shù)據(jù)。幀格式轉(zhuǎn)換模塊完成YUV向RGB的轉(zhuǎn)換,視頻流輸出模塊用來產(chǎn)生滿足Avalon-ST視頻處理協(xié)議的視頻流。
圖中實(shí)線為數(shù)據(jù)流向,虛線為控制信號(hào)流向。雙向箭頭同時(shí)表示了主控制器的控制信號(hào),以及被控模塊的反饋信號(hào)。
2.2 Avalon總線讀取模塊
Avalon總線讀取模塊使用基于地址讀寫的Avalon-MM接口,這種接口包含主端口和從端口。主端口能主動(dòng)發(fā)起傳輸信號(hào),從端口對(duì)傳輸信號(hào)進(jìn)行響應(yīng),兩種接口在數(shù)據(jù)傳輸過程中通過Avalon交換結(jié)構(gòu)相連接。Avalon總線讀取模塊需要讀取視頻數(shù)據(jù),并能夠主動(dòng)對(duì)Avalon總線發(fā)起讀取信號(hào),因此應(yīng)使用Avalon-MM主端口。
當(dāng)總線讀取模塊工作時(shí),主控制器傳入地址和讀入字節(jié)數(shù)目等參數(shù)后啟動(dòng)該模塊,該模塊對(duì)總線發(fā)起數(shù)據(jù)讀取操作。由于外部存儲(chǔ)器中的視頻數(shù)據(jù)為I420格式,即采樣比為4:2:0,因此每讀取一行視頻數(shù)據(jù),要讀取兩次Y分量、一次U、V分量,這樣就完成了采樣比4:2:0到4:4:4的轉(zhuǎn)化。該模塊內(nèi)部包含一個(gè)FIFO作為輸入緩存,當(dāng)模塊從總線上讀取數(shù)據(jù)后,直接將數(shù)據(jù)按讀入的順序輸入FIFO,以便后續(xù)模塊處理。
2.3 顏色空間轉(zhuǎn)換模塊
RGB和YUV兩種顏色模型之間的轉(zhuǎn)換可按下式計(jì)算[5]:
RGB24格式是緊縮型格式,在存儲(chǔ)器中是按掃描順序連續(xù)存放的,每個(gè)像素分量占8位,共24位。I420格式是顏色模型為YUV,采樣比為4:2:0的平面格式。Y、U、V三個(gè)分量在存儲(chǔ)器中分別占用單獨(dú)的一片存儲(chǔ)區(qū)域,Y分量的數(shù)目與原始幀的像素個(gè)數(shù)一致,U、V分量只是原始像素個(gè)數(shù)的1/4。把Y分量平面按2×2進(jìn)行劃分,相鄰構(gòu)成正方形的4個(gè)Y分量劃為一組,每組共用一個(gè)U、V分量。例如:Y_0,0、Y_0,1、Y_1,0、Y_1,1四個(gè)分量共用U_0,0和V_0,0。
RGB24和I420轉(zhuǎn)換公式需要浮點(diǎn)運(yùn)算,而Verilog-
HDL語言無法直接處理浮點(diǎn)數(shù)[6],因此設(shè)計(jì)中將原公式放大2n倍后再進(jìn)行處理,然后再縮小相應(yīng)的倍數(shù)。顏色空間轉(zhuǎn)換模塊時(shí)序如圖5所示。當(dāng)iDVAL信號(hào)為1時(shí),表示輸入數(shù)據(jù)Y、Cb、Cr有效,模塊處理完后,oDVAL信號(hào)置1,此時(shí)輸出數(shù)據(jù)Red、Green、Blue有效。
2.4 視頻流輸出模塊
經(jīng)過顏色空間轉(zhuǎn)換模塊處理后的數(shù)據(jù),按順序?qū)懭胱鳛檩敵鼍彺娴腇IFO。從圖6中可以看出,當(dāng)dout_ready信號(hào)有效時(shí),視頻流輸出模塊首先發(fā)送控制數(shù)據(jù)包。輸出的數(shù)據(jù)流為并行傳輸模式,每個(gè)周期同時(shí)傳輸3個(gè)記號(hào)(symbol),每個(gè)記號(hào)占8位。將dout_data信號(hào)改寫為并行8位模式,可以看出視頻流為176×144的逐行掃描數(shù)據(jù)。
startofpacket和endofpacket分別標(biāo)記了數(shù)據(jù)包的開始和結(jié)尾??刂茢?shù)據(jù)包發(fā)送結(jié)束后,第二個(gè)周期開始發(fā)送視頻數(shù)據(jù);一幀視頻數(shù)據(jù)完全發(fā)送完后,開始等待發(fā)送下一幀數(shù)據(jù)。
3 幀讀取IP核的測(cè)試
測(cè)試平臺(tái)是以Altera公司Cyclone II EP2C35F 672C8 FPGA芯片為核心的SoPC開發(fā)平臺(tái),該平臺(tái)同時(shí)配備了16 MB的Flash、2 MB的SSRAM以及16 MB的SDRAM等。搭建出使用Nios II軟核處理器的SoPC系統(tǒng),然后將幀讀取模塊作為組件接入該SoPC Builder系統(tǒng)。
本設(shè)計(jì)使用Quartus II 9.1進(jìn)行綜合與仿真,綜合后的結(jié)果如表1所示。
通過測(cè)試發(fā)現(xiàn),本文設(shè)計(jì)的IP核占用的邏輯單元略少于Altera公司的Frame Reader IP核,可綜合的最高工作頻率fmax也較高,且在功能上更完善。由于IP核具有顏色空間轉(zhuǎn)換功能,減少了Nios II軟件開發(fā)的負(fù)擔(dān),因此使用該IP核開發(fā)SoPC視頻處理系統(tǒng)更加方便、靈活,系統(tǒng)性能可得到進(jìn)一步提升。
本文針對(duì)傳統(tǒng)的視頻處理系統(tǒng),研究了一種基于Avalon-ST接口的幀讀取模塊的設(shè)計(jì)。該IP核突破了現(xiàn)有的Frame Reader模塊局限,解決了傳統(tǒng)視頻處理系統(tǒng)的傳輸接口瓶頸問題。該IP核在視頻處理系統(tǒng)的使用中,具有較大的靈活性、優(yōu)越性。SoPC的IP核復(fù)用技術(shù)使得設(shè)計(jì)成果具有很強(qiáng)的實(shí)用性、通用性和擴(kuò)展性。
參考文獻(xiàn)
[1] 李蘭英.Nios II嵌入式軟核-SoPC設(shè)計(jì)原理及應(yīng)用[M]. 北京:航天航空出版社,2006.
[2] Altera.Avalon Interface Specifications[DB/OL].[2009-11].http://www.altera.com.
[3] Altera.Quartus Version 9.1 Handbook[DB/OL].[2009-11].http://www.altera.com.
[4] Altera Video and Image Processing Suite User Guide[DB/OL].[2009-11].http://www.altera.com.
[5] IAIN E.G.Richardson H264 and MPEG-4 Video Compression[M].John Wiley & Sons Ltd Press,2003.
[6] UWE M B.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2007.