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