基于FPGA和ARM的視頻采集處理系統
摘要:設計了一種可進(jìn)行實(shí)時(shí)視頻采集、壓縮和傳輸的視頻采集處理系統。該系統充分結合FPGA和ARM的硬件優(yōu)勢,實(shí)現了設備接口和視頻信號處理的全數字化,易與信號處理新技術(shù)相結合,系統結構緊湊,體積小巧、響應快速;基于FPGA的前端處理更增加了圖像處理算法升級的靈活性,適用于工業(yè)遠程監控等多種場(chǎng)合。
本文引用地址:http://dyxdggzs.com/article/201610/308535.htm關(guān)鍵詞:圖像傳感器;FPGA;視頻壓縮;ARM;以太網(wǎng)
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
近年來(lái),視頻技術(shù)的飛速發(fā)展,使得視頻產(chǎn)品越來(lái)越普及。視頻信號采集是整個(gè)視頻應用的前端部分,扮演著(zhù)極其重要的作用。傳統的圖像采集卡面向計算機應用,體積大,可靠性有待進(jìn)一步提高,于是便產(chǎn)生了一些新的視頻采集方法,這些方案有的基于FPGA和DSP,有的基于A(yíng)RM和編碼芯片,在實(shí)時(shí)性、靈活性、 可維護性方面各有千秋。本文針對FPGA在數字信號處理速度上的優(yōu)勢以及ARM在控制方面的長(cháng)處,設計了一種全數字化的實(shí)時(shí)視頻采集系統,具有很實(shí)用的參考價(jià)值。
1 系統構成
本系統的結構框圖如圖1所示,圖像傳感器模塊負責圖像采集,FPGA產(chǎn)生I2 C時(shí)序控制CMOS圖像傳感器芯片,并將采集到的圖像數據進(jìn)行相應處理后送到壓縮芯片ZR36060進(jìn)行壓縮;ARM負責壓縮芯片的驅動(dòng)、以太網(wǎng)芯片的控制和UDP/IP協(xié)議的實(shí)現,以及視頻采集系統的指令控制和數據傳輸, 以太網(wǎng)模塊主要實(shí)現以太網(wǎng)數據傳輸。SDRAM做數據暫存與ARM存儲空間的擴展,采集到的視頻圖像以幀為單位通過(guò)網(wǎng)卡芯片傳送到網(wǎng)絡(luò )。

圖 1
2 硬件設計
2.1 圖像傳感器
圖像傳感器采用MICRON公司的MT9M131。它是一種彩色CMOS圖像傳感器,可支持SXVGA、VGA、QVGA等顯示格式,I2 C總線(xiàn)接口,最大支持分辨率1280*1024,在VGA格式下可達到30幀/每秒的采集速度,并具有自動(dòng)曝光控制、自動(dòng)增益控制、自動(dòng)白平衡、自動(dòng)帶通濾波、自動(dòng)黑級校準等功能。本系統采用VGA格式,CMOS傳感器的控制時(shí)序由FPGA產(chǎn)生。
2.2 FPGA器件
FPGA器件的主要功能包括圖像傳感器的控制、采集后的圖像數據處理和格式轉換,為了采集到質(zhì)量更好的圖像,將來(lái)還會(huì )在此部分加入一些相應的處理算法。因此,為保證系統的實(shí)時(shí)性,系統選用了Altera公司Cyclone II系列的EP2C35F672C6。該芯片具有35000個(gè)邏輯單元、672個(gè)引腳、475個(gè)用戶(hù)自定義I/O接口、35個(gè)嵌入式乘法器和4個(gè)鎖相環(huán),完全可以滿(mǎn)足系統要求。
2.3 ARM處理器和網(wǎng)卡芯片
ARM處理器選用三星公司的S3C2410,該處理器擁有獨立的16KB指令Cache和16KB數據Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路串口,4路DMA,4路帶PWM的時(shí)鐘,最高可運行在203MHz。系統采用的網(wǎng)卡芯片是CS8900A,它是用于嵌入式設備的低成本以太局域網(wǎng)控制器。它的高度集成設計使其不再需要其它以太網(wǎng)控制器所必需的昂貴外部器件。
CS8900A包括片上RAM,10Base-T傳輸和接收濾波器,以及帶24毫安驅動(dòng)的直接ISA-總線(xiàn)接口。除了高度集成,CS8900A還提供其它性能和配置選擇。它獨特的PacketPage結構可自動(dòng)適應網(wǎng)絡(luò )通信量模式的改變和現有系統資源,從而提高系統效率。圖2為網(wǎng)卡芯片與S3C2410的接口示意圖。

圖 2
2.4 視頻壓縮芯片
JPEG編解碼芯片ZR36060是專(zhuān)為視頻采集與編輯應用而設計的,可以方便地實(shí)現對視頻信號的實(shí)時(shí)壓縮和解壓縮。在進(jìn)行壓縮時(shí),ZR36060接受 YUV4:2:2數字視頻信號,將其編碼為JPEG碼流輸出。ZR36060對像素塊和CCIR視頻信號可實(shí)現高達25~30幀/秒的壓縮;靈活的數據接口,支持三種YUV視頻接口模式,即8位主模式、16位從模式和8位從模式;3種不同的比特率控制模式用于靜止和運動(dòng)視頻的壓縮;可以和多種常用視頻解碼器實(shí)現無(wú)縫連接[1]。據統計,JPEG格式的壓縮比例約為70~80:1,而本系統中采用的分辨率并不高(640*480),直接使用ZR36060進(jìn)行幀內編碼壓縮可以滿(mǎn)足要求,同時(shí)也減少了FPGA部分的開(kāi)發(fā)工作量。
3 關(guān)鍵模塊的工作原理
3.1 圖像傳感器驅動(dòng)
MT9M131是標準的I2 C總線(xiàn)器件,接口簡(jiǎn)單,傳感器工作時(shí)只有6個(gè)控制信號。其中MCLK由FPGA產(chǎn)生,是傳感器工作時(shí)鐘輸入;FVAL是幀有效信號,它的上升沿表示一幀數據的開(kāi)始。在FVAL信號的有效期間內包含了480個(gè)行有效信號LVAL,而每個(gè)LVAL信號的高電平期間包含了數據總線(xiàn)上640個(gè)像素數據的輸出。所以,在FVAL一個(gè)周期內,圖像傳感器正好輸出了完整的一幀圖像。分辨率為640×480。僅當FVAL和LVAL信號同時(shí)為高電平時(shí),傳感器輸出數據 D[9:0]有效,FPGA在每個(gè)像素時(shí)鐘PIXCLK上升沿時(shí)將有效數據讀入。經(jīng)實(shí)測,傳感器正常工作時(shí),SCLK,LVAL頻率約為7.56kHz和 14.2kHz。
本系統采用Verilog HDL語(yǔ)言來(lái)編寫(xiě)CMOS圖像傳感器的時(shí)序驅動(dòng)。在實(shí)際設計中,把控制模塊分成兩部分:I2C_Config模塊根據設定的曝光時(shí)間來(lái)發(fā)生I2 C總線(xiàn)SCLK和SDAT時(shí)序,而Capture模塊則負責與傳感器的數據接口,讀入10位的圖像數據,并送到下一級模塊進(jìn)行相應處理。以下是 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_Cont639)
X_Cont =X_Cont+1;
else
begin
X_Cont =0;
Y_Cont = Y _
Cont+1; //計算像素坐標,方便后續模塊顯示

圖 3
3.2 格式轉換模塊
從數字圖像傳感器傳來(lái)的原始圖像質(zhì)量,在整個(gè)系統的性能影響中占主要地位,對后續的視頻壓縮和傳輸速度有著(zhù)非常重要的影響。后期將會(huì )在采集前端加入相應的圖像處理算法。而大多數處理算法都是基于RGB顏色空間的,為了進(jìn)行視頻壓縮以減小數據量,就需要進(jìn)行RGB到YUV的顏色轉換。
YCbCr是YUV屬于顏色空間的一種儲存格式,適用于MPEG、JPEG等格式的編碼。相比RGB色彩空間,YCbCr色彩空間有一個(gè)顯著(zhù)的優(yōu)點(diǎn)。Y的存儲可以采用和原來(lái)畫(huà)面一樣的分辨率,但是Cb,Cr的存儲可以使用更低的分辨率。這樣可以占用更少的數據量,并且在圖像質(zhì)量上沒(méi)有明顯的下降。所以,將色彩信息以低于量度信息的分辨率來(lái)保存是一個(gè)簡(jiǎn)單有效的圖像壓縮方法。
在ITU-R BT.601標準中,建議在計算Y時(shí),權重選擇為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)
采用硬件描述語(yǔ)言進(jìn)行編程之前,需要消除浮點(diǎn)數運算。合理利用硬件資源是編寫(xiě)代碼時(shí)要充分考慮的。對于常系數乘法單元,其占用的LEs(Logic Elements)與系數大小有關(guān)。為了避免出現負數和溢出問(wèn)題,最終采用的轉換公式如下:
Y = [CA*27] *(R - G)+ G + [CB*27] *(B - G)+ YOFFSET
Cb = [CC*27] *(B – Y)+ COFFSET
Cr = [CD*27] *(R – Y)+ COFFSET ([ ]符號表示取整運算)
各參數的取值見(jiàn)表1[2]。
表1 各參數值
CA0.299 CC0.492
CB 0.114CD0.877
YOFFSET 16 COFFSET 128
3.3 圖像壓縮控制
ZR36060的控制接口示意圖如圖3所示,VCLK和VCLK2是需要外部提供的時(shí)鐘信號,由FPGA產(chǎn)生的PIXCLK為25MHZ,滿(mǎn)足系統要求。 VCLK是VCLK2的分頻,并要求與VCLK2同步。
本系統選擇ZR36060工作狀態(tài)為:8位代碼從模式,視頻同步從模式,8位視頻總線(xiàn)寬度。ZR36060的接口可分為視頻接口、主機接口和代碼接口三部分。視頻信號由視頻接口Y[7:0]輸入,主機接口通過(guò)DATA[7:0]對芯片內部寄存器設置,控制工作狀態(tài),壓縮后的碼流通過(guò)代碼接口 CODE[7:0]輸出到存儲器中緩存。8位代碼從模式下,主控制器的數據總線(xiàn)DATA[7:0]通過(guò)讀寫(xiě)HostData對ZR36060的內部寄存器進(jìn)行設置和讀取,代碼總線(xiàn)CODE[7:0]從CODEFIFO讀寫(xiě)JPEG數據。行同步信號HSYNC接到圖像傳感器的LVAL引腳,場(chǎng)同步信號 VSYN接到傳感器的FVAL引腳。奇偶場(chǎng)指示信號由FPGA給出,每采集到FVAL的上升沿,IND信號翻轉一次,以指示奇偶場(chǎng)。
3.4 以太網(wǎng)數據傳輸
本系統采用UDP/IP協(xié)議來(lái)實(shí)現圖像數據的網(wǎng)絡(luò )傳輸。壓縮后的圖像數據經(jīng)ARM進(jìn)行UDP數據打包后,存儲在SDRAM中。一個(gè)完整的數據幀格式包括以太網(wǎng)頭、IP頭、UDP頭和一行圖像數據,其系統工作流程圖見(jiàn)圖4所示。ZR36060 每壓縮完成一幀,就由S3C2410讀取并寫(xiě)到SDRAM中,然后判斷是否讀完一幀圖像數據,讀完后則發(fā)送UDP包,將圖像數據通過(guò)以太網(wǎng)發(fā)送到網(wǎng)絡(luò )。

圖 4
4 小結
本文提出了一種基于FPGA和ARM的視頻采集處理系統,其特點(diǎn)在于設備接口和視頻信號處理的全數字化,系統結構緊湊,體積小巧、響應快速;基于FPGA的前端處理更增加了圖像處理算法升級的靈活性,適用于工業(yè)遠程監控等多種場(chǎng)合。后期還可在采集端加入相應的圖像處理算法,以提高圖像質(zhì)量。
參考文獻:
[1] 陳曉敏, 王學(xué)進(jìn), 王志華, 張利. JPEG 編解碼芯片ZR36060在遠程視頻監視系統中的應用[J]. 電子技術(shù)應用, 2006. 10.
[2] 魏博, 肖文, 王叢琳, 戎路. 基于FPGA 的CMOS 圖像傳感器的驅動(dòng)開(kāi)發(fā)[J]. 光學(xué)與光電技術(shù), 2008, 10: 56-58.
[3] Gabor Szedo. Color-Space Converter: RGB to YCrCb. Xilinx Corp, 2006.
[4] 吳繼華, 王誠. Altera FPGA/CPLD設計[M]. 人民郵電出版社, 2005.
評論