《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于Avalon-ST接口幀讀取IP核的設(shè)計(jì)和應(yīng)用
基于Avalon-ST接口幀讀取IP核的設(shè)計(jì)和應(yīng)用
來源:電子技術(shù)應(yīng)用2010年第9期
鄧 超,付 揚(yáng)
北京工商大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,北京100048
摘要: 研究基于Avalon-ST接口幀讀取的IP核設(shè)計(jì)應(yīng)用,通過Avalon-ST接口將外部存儲(chǔ)中不同格式的幀數(shù)據(jù)轉(zhuǎn)化為視頻流輸出。根據(jù)Avalon總線協(xié)議及Avalon-ST視頻協(xié)議研究設(shè)計(jì)方案,使用Verilog HDL語(yǔ)言對(duì)模塊進(jìn)行硬件設(shè)計(jì),并將實(shí)現(xiàn)的模塊進(jìn)行測(cè)試。結(jié)果表明,該IP核與Altera公司提供的Frame Reader模塊相比,突破了現(xiàn)有的Frame Reader只支持緊縮格式的局限,使其功能更加完善,并且該IP核占用的資源少,工作頻率更高,性能得到了優(yōu)化,實(shí)用性更強(qiáng)。
關(guān)鍵詞: SoPC Avalon-ST 幀讀取 IP核 CycloneII
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)09-0024-04
The design and application of frame reader based on Avalon-ST interfaces
DENG Chao,F(xiàn)U Yang
Computer and Information Engineering Institute, Beijing Technology and Business University, Beijing 100048,China
Abstract: Research a IP core design and applications of frame reader based on Avalon-ST interface, IP core read data through the Avalon-ST interfaces from external storage in the frame data in different formats into a video stream output. According to Avalon bus protocol and the Avalon-ST video protocol design, using Verilog HDL language module hardware design, and implementation of the module for testing. The results show that the IP core and frame reader modules provided by the Altera compared to break the existing frame reader limited to tighten format to make it function more perfect, and the IP core occupies less resources, higher operating frequency, performance been optimized, more practical.
Key words : Avalon-ST;frame reader;IP core;SoPC

    可編程片上系統(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),零值代表傳輸無(wú)誤。
    包傳輸方式是在普通傳輸方式的基礎(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等??偟恼f來,常用的數(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是平面格式,這種情況就無(wú)法使用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語(yǔ)言無(wú)法直接處理浮點(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。