吳運金(1973-)男,1997年畢業于武漢科技學院工業自動化專業,現從事自動控制和信號處理工作。
摘要:設計了一種可進行實時視頻采集、壓縮和傳輸的視頻采集處理系統。該系統充分結合FPGA和ARM的硬件優勢,實現了設備接口和視頻信號處理的全數字化,易與信號處理新技術相結合,系統結構緊湊,體積小巧、響應快速;基于FPGA的前端處理更增加了圖像處理算法升級的靈活性,適用于工業遠程監控等多種場合。
關鍵詞:圖像傳感器;FPGA;視頻壓縮;ARM;以太網
Abstract: To collect data in high speed and be simple in the structure, a Video Acquisition and Processing system with real-time compressing and transmission is presented. The selection and interface of components, and the function realization of FPGA and ARM are discussed. The design of some key modules,such as the driver of the cmos sensor, and the convection and compressing process of data, and the design of transport via Ethernet are introduced.
Key words: Image Sensor; FPGA; Video Compressing; ARM; Ethernet
近年來,視頻技術的飛速發展,使得視頻產品越來越普及。視頻信號采集是整個視頻應用的前端部分,扮演著極其重要的作用。傳統的圖像采集卡面向計算機應用,體積大,可靠性有待進一步提高,于是便產生了一些新的視頻采集方法,這些方案有的基于FPGA和DSP,有的基于ARM和編碼芯片,在實時性、靈活性、 可維護性方面各有千秋。本文針對FPGA在數字信號處理速度上的優勢以及ARM在控制方面的長處,設計了一種全數字化的實時視頻采集系統,具有很實用的參考價值。
1 系統構成
本系統的結構框圖如圖1所示,圖像傳感器模塊負責圖像采集,FPGA產生I2 C時序控制CMOS圖像傳感器芯片,并將采集到的圖像數據進行相應處理后送到壓縮芯片ZR36060進行壓縮;ARM負責壓縮芯片的驅動、以太網芯片的控制和UDP/IP協議的實現,以及視頻采集系統的指令控制和數據傳輸, 以太網模塊主要實現以太網數據傳輸。SDRAM做數據暫存與ARM存儲空間的擴展,采集到的視頻圖像以幀為單位通過網卡芯片傳送到網絡。
圖 1
2 硬件設計
2.1 圖像傳感器
圖像傳感器采用MICRON公司的MT9M131。它是一種彩色CMOS圖像傳感器,可支持SXVGA、VGA、QVGA等顯示格式,I2 C總線接口,最大支持分辨率1280*1024,在VGA格式下可達到30幀/每秒的采集速度,并具有自動曝光控制、自動增益控制、自動白平衡、自動帶通濾波、自動黑級校準等功能。本系統采用VGA格式,CMOS傳感器的控制時序由FPGA產生。
2.2 FPGA器件
FPGA器件的主要功能包括圖像傳感器的控制、采集后的圖像數據處理和格式轉換,為了采集到質量更好的圖像,將來還會在此部分加入一些相應的處理算法。因此,為保證系統的實時性,系統選用了Altera公司Cyclone II系列的EP2C35F672C6。該芯片具有35000個邏輯單元、672個引腳、475個用戶自定義I/O接口、35個嵌入式乘法器和4個鎖相環,完全可以滿足系統要求。
2.3 ARM處理器和網卡芯片
ARM處理器選用三星公司的S3C2410,該處理器擁有獨立的16KB指令Cache和16KB數據Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路串口,4路DMA,4路帶PWM的時鐘,最高可運行在203MHz。系統采用的網卡芯片是CS8900A,它是用于嵌入式設備的低成本以太局域網控制器。它的高度集成設計使其不再需要其它以太網控制器所必需的昂貴外部器件。
CS8900A包括片上RAM,10Base-T傳輸和接收濾波器,以及帶24毫安驅動的直接ISA-總線接口。除了高度集成,CS8900A還提供其它性能和配置選擇。它獨特的PacketPage結構可自動適應網絡通信量模式的改變和現有系統資源,從而提高系統效率。圖2為網卡芯片與S3C2410的接口示意圖。
圖 2
2.4 視頻壓縮芯片
JPEG編解碼芯片ZR36060是專為視頻采集與編輯應用而設計的,可以方便地實現對視頻信號的實時壓縮和解壓縮。在進行壓縮時,ZR36060接受YUV4:2:2數字視頻信號,將其編碼為JPEG碼流輸出。ZR36060對像素塊和CCIR視頻信號可實現高達25~30幀/秒的壓縮;靈活的數據接口,支持三種YUV視頻接口模式,即8位主模式、16位從模式和8位從模式;3種不同的比特率控制模式用于靜止和運動視頻的壓縮;可以和多種常用視頻解碼器實現無縫連接[1]。據統計,JPEG格式的壓縮比例約為70~80:1,而本系統中采用的分辨率并不高(640*480),直接使用ZR36060進行幀內編碼壓縮可以滿足要求,同時也減少了FPGA部分的開發工作量。
3 關鍵模塊的工作原理
3.1 圖像傳感器驅動
MT9M131是標準的I2 C總線器件,接口簡單,傳感器工作時只有6個控制信號。其中MCLK由FPGA產生,是傳感器工作時鐘輸入;FVAL是幀有效信號,它的上升沿表示一幀數據的開始。在FVAL信號的有效期間內包含了480個行有效信號LVAL,而每個LVAL信號的高電平期間包含了數據總線上640個像素數據的輸出。所以,在FVAL一個周期內,圖像傳感器正好輸出了完整的一幀圖像。分辨率為640×480。僅當FVAL和LVAL信號同時為高電平時,傳感器輸出數據D[9:0]有效,FPGA在每個像素時鐘PIXCLK上升沿時將有效數據讀入。經實測,傳感器正常工作時,SCLK,LVAL頻率約為7.56kHz和14.2kHz。
本系統采用Verilog HDL語言來編寫CMOS圖像傳感器的時序驅動。在實際設計中,把控制模塊分成兩部分:I2C_Config模塊根據設定的曝光時間來發生I2 C總線SCLK和SDAT時序,而Capture模塊則負責與傳感器的數據接口,讀入10位的圖像數據,并送到下一級模塊進行相應處理。以下是Capture模塊部分代碼:
always@(posedge iCLK or negedge iRST)
begin
if(!iRST)
……… //各信號清零復位
else
begin
Pre_FVAL <= iFVAL;
if( ({Pre_FVAL,iFVAL}==2'b01) && mSTART )
//當前幀有效且前一幀處理完
mCMOS_FVAL <= 1;
else if({Pre_FVAL,iFVAL}==2'b10) //正
在處理前一幀
mCMOS_FVAL <= 0;
mCMOS_LVAL <= iLVAL;
mCMOS_DATA <= iDATA;
//讀取數據送入FPGA
if(mCMOS_FVAL)
//幀有效
begin
if(mCMOS_LVAL)
//行有效
begin
if(X_Cont<639)
X_Cont <=X_Cont+1;
else
begin
X_Cont <=0;
Y_Cont < = Y _
Cont+1; //計算像素坐標,方便后續模塊顯示
圖 3
3.2 格式轉換模塊
從數字圖像傳感器傳來的原始圖像質量,在整個系統的性能影響中占主要地位,對后續的視頻壓縮和傳輸速度有著非常重要的影響。后期將會在采集前端加入相應的圖像處理算法。而大多數處理算法都是基于RGB顏色空間的,為了進行視頻壓縮以減小數據量,就需要進行RGB到YUV的顏色轉換。
YCbCr是YUV屬于顏色空間的一種儲存格式,適用于MPEG、JPEG等格式的編碼。相比RGB色彩空間,YCbCr色彩空間有一個顯著的優點。Y的存儲可以采用和原來畫面一樣的分辨率,但是Cb,Cr的存儲可以使用更低的分辨率。這樣可以占用更少的數據量,并且在圖像質量上沒有明顯的下降。所以,將色彩信息以低于量度信息的分辨率來保存是一個簡單有效的圖像壓縮方法。
在ITU-R BT.601標準中,建議在計算Y時,權重選擇為kr=0.299,kg=0.587,kb=0.114。于是常用的轉換公式如下:
Y=0.299R+0.587G+0.114B
Cb=0.564(B-Y)
Cr=0.713(R-Y)
采用硬件描述語言進行編程之前,需要消除浮點數運算。合理利用硬件資源是編寫代碼時要充分考慮的。對于常系數乘法單元,其占用的LEs(Logic Elements)與系數大小有關。為了避免出現負數和溢出問題,最終采用的轉換公式如下:
Y = [CA*27] *(R - G)+ G + [CB*27] *(B - G)+ YOFFSET
Cb = [CC*27] *(B – Y)+ COFFSET
Cr = [CD*27] *(R – Y)+ COFFSET ([ ]符號表示取整運算)
各參數的取值見表1[2]。
表1 各參數值
CA |
0.299 |
CC |
0.492 |
CB |
0.114 |
CD |
0.877 |
YOFFSET |
16 |
COFFSET |
128 |
3.3 圖像壓縮控制
ZR36060的控制接口示意圖如圖3所示,VCLK和VCLK2是需要外部提供的時鐘信號,由FPGA產生的PIXCLK為25MHZ,滿足系統要求。 VCLK是VCLK2的分頻,并要求與VCLK2同步。
本系統選擇ZR36060工作狀態為:8位代碼從模式,視頻同步從模式,8位視頻總線寬度。ZR36060的接口可分為視頻接口、主機接口和代碼接口三部分。視頻信號由視頻接口Y[7:0]輸入,主機接口通過DATA[7:0]對芯片內部寄存器設置,控制工作狀態,壓縮后的碼流通過代碼接口CODE[7:0]輸出到存儲器中緩存。8位代碼從模式下,主控制器的數據總線DATA[7:0]通過讀寫HostData對ZR36060的內部寄存器進行設置和讀取,代碼總線CODE[7:0]從CODEFIFO讀寫JPEG數據。行同步信號HSYNC接到圖像傳感器的LVAL引腳,場同步信號VSYN接到傳感器的FVAL引腳。奇偶場指示信號由FPGA給出,每采集到FVAL的上升沿,IND信號翻轉一次,以指示奇偶場。
3.4 以太網數據傳輸
本系統采用UDP/IP協議來實現圖像數據的網絡傳輸。壓縮后的圖像數據經ARM進行UDP數據打包后,存儲在SDRAM中。一個完整的數據幀格式包括以太網頭、IP頭、UDP頭和一行圖像數據,其系統工作流程圖見圖4所示。ZR36060 每壓縮完成一幀,就由S3C2410讀取并寫到SDRAM中,然后判斷是否讀完一幀圖像數據,讀完后則發送UDP包,將圖像數據通過以太網發送到網絡。
圖 4
4 小結
本文提出了一種基于FPGA和ARM的視頻采集處理系統,其特點在于設備接口和視頻信號處理的全數字化,系統結構緊湊,體積小巧、響應快速;基于FPGA的前端處理更增加了圖像處理算法升級的靈活性,適用于工業遠程監控等多種場合。后期還可在采集端加入相應的圖像處理算法,以提高圖像質量。
參考文獻:
[1] 陳曉敏, 王學進, 王志華, 張利. JPEG 編解碼芯片ZR36060在遠程視頻監視系統中的應用[J]. 電子技術應用, 2006. 10.
[2] 魏博, 肖文, 王叢琳, 戎路. 基于FPGA 的CMOS 圖像傳感器的驅動開發[J]. 光學與光電技術, 2008, 10: 56-58.
[3] Gabor Szedo. Color-Space Converter: RGB to YCrCb. Xilinx Corp, 2006.
[4] 吳繼華, 王誠. Altera FPGA/CPLD設計[M]. 人民郵電出版社, 2005.
摘自《自動化博覽》2010年第十二期