潘 磊, 葛中芹, 莊建軍, 張志儉
(南京大學 電子科學與工程學院,江蘇 南京 210093)
?
基于FPGA的HDMI視頻流圖像處理的系統(tǒng)設計
潘 磊, 葛中芹, 莊建軍, 張志儉
(南京大學 電子科學與工程學院,江蘇 南京 210093)
為了實現(xiàn)對高清視頻圖像的實時處理,提出了一種以HDMI高清圖像為目標基于FPGA實現(xiàn)高清視頻流的圖像處理系統(tǒng)的設計。系統(tǒng)設計過程包括配置processing_system處理器、視頻輸入HDMI接口輸出VGA接口的IP核設計、圖像處理IP核的設計和應用程序設計4部分。以processing_system處理器為處理核心,通過片內(nèi)添加外設接口和設計HDMI接口輸入和VGA接口輸出的IP核在ZYBO開發(fā)板上搭建嵌入式硬件平臺,在硬件平臺中設計圖像處理的硬件IP核。實驗結果顯示,在系統(tǒng)工作頻率為650 MHz時,能以58幀/s的處理速度處理圖像,并通過VGA接口將處理后的圖像輸出到顯示器。
FPGA; HDMI; 實時圖像處理; 色彩轉換
隨著移動4 G的發(fā)展和互聯(lián)網(wǎng)的普及,人們對實時視頻傳輸服務的質量要求越來越高。而高清、實時性視頻的數(shù)據(jù)量越來越大,視頻的實時處理難度也正在逐漸增大。
在FPGA嵌入式平臺開發(fā)設計圖像處理系統(tǒng),相比于傳統(tǒng)的DSP,具有更好的靈活性和更高的數(shù)據(jù)處理能力。特別是近年來,伴隨著FPGA的迅速發(fā)展,F(xiàn)PGA的高速并行處理能力在高速數(shù)字信號處理方面表現(xiàn)越來越搶眼,使得FPGA越來越多地替代ASIC和DSP用于數(shù)字信號處理的運算。兩大FPGA制造商Xilinx和Altera相繼推出了自己的嵌入式平臺,使得基于FPGA嵌入式系統(tǒng)在FPGA應用領域開辟出一條靈活、高效的途徑。在FPGA上實現(xiàn)嵌入式系統(tǒng)既克服了傳統(tǒng)DSP設計缺乏靈活性的缺點,也改變了傳統(tǒng)FPGA設計中難于實現(xiàn)復雜算法的缺點[1]。這樣FPGA在實時高清圖像處理中將可以從容應對,本文提出一種不依賴存儲器的實時高清視頻圖像處理的嵌入式解決方案。
整個硬件系統(tǒng)包括HDMI輸入接口及設備、VGA輸出及顯示器、UART串口通信和GPIO連接的外部按鍵及撥位開關。系統(tǒng)總體結構圖如圖1所示。
圖1 系統(tǒng)總體結構圖
通過HDMI接口將高清視頻[2](1280×720 p/60 Hz)數(shù)據(jù)傳入FPGA[3]中,在FPGA中設計IP核(名為HDMI_RX)將視頻解碼得到視頻數(shù)據(jù),視頻數(shù)據(jù)傳入圖像處理模塊的IP核(名為AXI_COLOR_SPACE)進行圖像的色彩變換的處理,處理后的數(shù)據(jù)將以VGA的格式輸出到顯示器,通過按鍵和撥位開關控制各個處理模式的轉換。
本系統(tǒng)采用的是Xilinx公司的ZYNQ系列中的XC7Z010,其采用Xilinx最新的基于28 nm工藝流程的Zynq-7000 All Programmable SoC平臺,將ARM處理器和FPGA架構緊密集成。該芯片擁有雙核ARM Cortex-A9 MPCore的高性能,低功耗特性,在設計中能更好的滿足各種工業(yè)需要。在XPS和SDK等EDA軟件平臺下按照FPGA的設計流程進行軟硬件協(xié)同開發(fā)[4],XPS主要進行硬件IP核開發(fā)及硬件系統(tǒng)裁剪,SDK進行軟件調試及開發(fā)。
2.1 HDMI視頻輸入解碼模塊
高清晰度多媒體接口(High Definition Multimedia Interface,HDMI)是一種數(shù)字化視頻/音頻接口技術[5],是適合影像傳輸?shù)膶S眯蛿?shù)字化接口,其可同時傳送音頻和影像信號,最高數(shù)據(jù)傳輸速度為2.25 GB/s。而一個1080p的視頻和一個8聲道的音頻信號需求少于0.5 GB/s,因此HDMI還有很大余量。
HDMI使用的是由Silicon Image公司發(fā)明的最小化傳輸差分信號(Time Minimized Differential Signal,TMDS)傳輸技術[6]。TMDS是一種微分信號機制,采用的是差分傳動方式。TMDS差分傳動技術是一種利用2個引腳間電壓差來傳送信號的技術。傳輸數(shù)據(jù)的數(shù)值(“0”或者“1”)由兩腳間電壓正負極性和大小決定。每一個標準的HDMI連接,都包含了3個用于傳輸數(shù)據(jù)的TMDS數(shù)據(jù)傳輸通道(如圖3中的HDMI_D_N和HDMI_D_P),還有1個獨立的TMDS時鐘通道(如圖3中的HDMI_CLK_N和HDMI_CLK_P),以保證傳輸時所需的統(tǒng)一時序。在一個時鐘周期內(nèi),每個TMDS通道都能傳送10bit的數(shù)據(jù)流。而這10bit數(shù)據(jù),可以由若干種不同的編碼格式構成(如圖2所示)。
圖2 視頻數(shù)據(jù)的編碼格式
將高清視頻通過HDMI接口輸入到FPGA中HDMI接收的IP核[7]名為:HDMI_RX,該IP核將按照HDMI傳輸格式進行解碼,產(chǎn)生VGA格式的數(shù)據(jù)流VGA_DATA及像素時鐘PXL_CLK,如圖2所示,其中IP核的系統(tǒng)時鐘SYSCLK為200 MHz,HDMI_SCL為DDC通道的時鐘線。
圖3 HDMI輸入解碼模塊
2.2 圖像處理邏輯模塊
本模塊的輸入信號是HDMI_RX模塊輸出的視頻解碼[8]數(shù)據(jù)流DATA_I,在該模塊中可以進行色彩空間的轉換[9],轉換原理如圖4所示。
圖4 圖像處理模塊
硬件邏輯部分:
在圖4中的MULT為內(nèi)置乘法器[10],其計算公式為:p=a×b,其中p的位數(shù)為a的位數(shù)加上b的位數(shù),舉例第一個乘法器的配置代碼如下:
mult_11: mult
port map
( clk=>PIX_CLK_I,a=>slv_reg0(21 to 31),b=>'0' & DATA_I(23 downto 16),p=>red1 );
其中:slv_reg0為該IP核中的32b可讀寫寄存器[11],其寫操作是軟件程序函數(shù)Xil_Out32(u32 OutAddress, u32 Value)通過AXI總線[12]的bus2IP_data進行的,其中OutAddress為寫操作的寄存器的偏移地址,Value為寫入寄存器[13]的值;其讀操作是軟件程序函數(shù)Xil_In32(u32 Addr)通過AXI總線的IP2Bus_Data進行的,其中Addr為讀操作的寄存器的地址。在圖4中,時鐘的分配是這樣的:總線和寄存器讀寫使用的是總線時鐘S_AXI_CLK,乘法器使用的是像素時鐘PXL_CLK。同樣相似的配置其他8個乘法器,這樣最終得到red1、red2、red3、green1、green2、green3、blue1、blue2和blue3這9個分量(見表1),每個分量均為20b。
將這9個分量按顏色分為3組,再相加便得到三原色的累加結果red_o、green_o和blue_o,其計算公式如下:
red_o<=red1+red2+red3;
green_o<=green1+green2+green3;
blue_o<=blue1+blue2+blue3;
得到三原色的分量后,再組合計算輸出的DATA_O,其計算公式為:
DATA_O<=red_o(15 downto 8) & green_o(15 downto 8) & blue_o(15 downto 8)
表1 乘法器配置
注:(1)括號中的名稱為乘法器名稱,如mult_11,其對應軟件程序中的ColorSpaceMat11。
(2)被乘數(shù)a的位數(shù)為:第21位到第31位,總計11位。
各取3個分量中的高8位,即red_o的第15位到第8位,同理取得green_o和blue_o的高8位,這樣就得到了總共24位的DATA_O了。
軟件部分:
在軟件程序部分只需將圖像處理[14]數(shù)據(jù)寫入到9個寄存器中就可以完成圖像的色彩變換了,其軟件部分的流程如圖5所示,該部分重點以彩色轉灰度圖像為例介紹,根據(jù)彩色轉灰度的心理學公式[15]:
Gray=R*0.299+G*0.587+B*0.114
(1)
在應用中,為了提高處理速度盡量避免浮點運算,將其縮放1 000倍轉換為整數(shù)運算公式:
Gray=(R*299+G*587+B*114+500)/1 000
(2)
但在整數(shù)運算中,除法運算仍然制約著處理速度,再將其轉換為整數(shù)移位計算公式,為了提高運算精度,使用
圖5 軟件流程圖
去尾法,將轉換中的誤差去除,得到最優(yōu)的8位精度的計算公式為:
Gray=(R*76+G*150+B*30)?8
(3)
這就是在計算DATA_O時取高8位的原因了。
RGB轉灰度代碼如下:
case COLOR_SPACE_GREY:
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat11,0x0000004a); //74 <1,1>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat12, 0x00000096); //150 <1,2>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat13, 0x0000001d); //29 <1,3>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat21, 0x0000004a); // <2,1>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat22, 0x00000096); // <2,2>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat23, 0x0000001d); // <2,3>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat31, 0x0000004a); // <3,1>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat32, 0x00000096); // <3,2>
Xil_Out32(ColorSpaceBaseAddress + ColorSpaceMat33, 0x0000001d); // <3,3>
break;
其中:lColorSpaceBaseAddress 為該模塊的地址;blColorSpaceMat11為第一個寄存器的偏移地址;0x0000004a為寫入寄存器的數(shù)據(jù)。其他顯示模式對應寫入寄存器的數(shù)值如表2所示,其中的ColorSpaceMat11為第一個寄存器對應的偏移地址,寫入寄存器的數(shù)據(jù)使用的是16進制。如在顯示灰度圖像模式時,將公式(3)對應的系數(shù)轉換為16進制,即為0x4a,、0x96和0x1d。
2.3 VGA視頻流輸出模塊
由于ZYBO開發(fā)板使用的VGA接口[16]采用的是16b彩色顯示模式[17],那么在經(jīng)過圖像處理模塊之后產(chǎn)生的24b視頻流DATA_O,需要通過Xlinix自帶IP核util_bus_split分為3路,分別對應RGB三原色,每路分別對應的位數(shù)為5∶6∶5(見圖6)。
以下為經(jīng)過該系統(tǒng)處理后的視頻截圖:
實驗中使用的視頻格式為1280*720的AVI格式,圖7中(a)為通過該系統(tǒng)后顯示的原始圖像,(b)為該系統(tǒng)處理后的灰度圖像,(c)為該系統(tǒng)處理后的
紅色圖像,(d)為該系統(tǒng)處理后的綠色圖像,(e)為該系統(tǒng)處理后的藍色圖像,(f)為該系統(tǒng)處理后的顏色反轉圖像。
表2 各種顯示模式下寫入寄存器的數(shù)據(jù)對應表
圖6 視頻轉換輸出
該系統(tǒng)具有體積小、實時處理速度快、穩(wěn)定等特點,因此,在圖像的實時處理方面具有很好的應用前景。采用嵌入式處理器完成圖像處理易于刪改,功能強大,可以在此硬件設計基礎上通過修改程序實現(xiàn)更多的視頻圖像處理功能。
(a)
(c)
(d)
(e)
(f)
[1] 李 兵,陳 新. 基于FPGA器件的數(shù)字電路實驗系統(tǒng)[J].實驗室研究與探索,1996,15(4):50-52.
[2] 劉 歡,李興明,王學科. 基于FPGA的高清視頻接口轉換器的設計與實現(xiàn)[J].現(xiàn)代傳輸,2010(2):50-54.
[3] 黃衛(wèi)華,賈歷程. 基于FPGA的EDA實驗系統(tǒng)改革與實踐[J].
實驗室研究與探索,2012,31(4):203-205.
[4] 張智軍,夏海寶,秦 陽,等. 雷達信號處理教學實驗的研制[J].實驗室研究與探索,2012,31(4):148-150.
[5] 黃慶敏,羅 鍵. HDMI接口標準及應用設計[J].電視技術,2007(2):32-34.
[6] 陳文娟,林 濤. HDMI標準在高清視頻解碼SoC設計中的應用[J].電視技術,2008,32(z1):74-75.
[7] 王 渙. IP核標準和開發(fā)流程[J]. 微處理機,2013,34(6):16-17.
[8] 劉東華. 嵌入式視頻解碼的實現(xiàn)[J].電子技術應用,2006,32(4):54-56.
[9] 余昌勝, 韓曉景,李知達. 基于FPGA的色彩空間轉換的簡易實現(xiàn)[J].電子科技,2013,26(11):111-113.
[10] Xilinx. LogiCORE IP Multiplier v11.2 [EB/OL].2014.http://www.xilinx.com/products/intellectual-property/multiplier.html
[11] 萬 耀,李小清,周云飛,等.基于FPGA的多通道數(shù)據(jù)采集系統(tǒng)設計[J].微計算機信息,2007,23(5):199-201.
[12] 何 賓.基于AXI4的可編程SOC系統(tǒng)設計[M].北京:清華大學出版社,2011.
[13] 李 程,李恒星.基于FPGA的數(shù)據(jù)傳輸系統(tǒng)[J].電子科技,2014,24(1):81-83.
[14] 李佩斌,黃 瑩,趙譽婷. 基于DSP+FPGA的嵌入式圖像處理系統(tǒng)設計[J].現(xiàn)代電子技術,2014,37(20):95-98.
[15] 劉慶祥,蔣天發(fā). 彩色與灰度圖像間的轉換算法的研究[J].武漢理工大學學報,2003,27(3):344-346.
[16] 張亞平,賀占莊. 基于FPGA的VGA顯示模塊設計[J].計算機技術與發(fā)展,2007,17(6):242-245.
[17] 唐庭龍, 張 莉,夏 平. VGA顯示的FPGA設計與實現(xiàn)[J].2013,35(6):97-100.
Design of Image Processing System for HDMI’s Video Stream Based on FPGA
PANLei,GEZhong-qin,ZHUANGJian-jun,ZHANGZi-jian
(School of Electronic Science and Engineering, Nanjing University, Nanjing 210093, China)
In order to realize the real-time processing of HD video, this paper presents a design of image processing system for high-definition video stream based on FPGA. The system targets HDMI HD images. System design consists of 4 parts: configuration of processing system processor, IP core design of HDMI interface for video input and VGA interface for output, IP core design of image processing, and application design. By taking the processing system processor as processing core, the embedded hardware platform in the ZYBO development board is constructed by adding on-chip peripherals interface and designing an IP core of HDMI interface for input and VGA interface for output. Based on the platform, the hardware IP core is designed to realize the real-time processing of HD video finally. The experimental results show that, the system can process the image with a processing speed of 58 frames per second, and output the image to display through VGA interface when the working frequency is 650 MHz.
FPGA; HDMI; real-time image processing; color conversion
2015-01-08
江蘇省高等學校教改項目(2013JSJG169);嵌入式視音頻內(nèi)容監(jiān)測平臺(BY2012186);江蘇省自然科學基金工業(yè)項目;江蘇省產(chǎn)學研聯(lián)合創(chuàng)新資金-前瞻性聯(lián)合研究項目
潘 磊(1988-),男,山東濰坊人,碩士生,主要研究方向:FPGA嵌入式圖像視頻處理。
Tel.:18205186561;E-mail:361panlei@163.com
葛中芹(1979-),女,江蘇徐州人,工程師,主要研究方向:信號和信息處理、電子電路實驗教學和研究。
Tel.:025-89680201; E-mail:gxlin_2000@163.com
TN 911.73
A
1006-7167(2015)10-0076-05