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