王露露,王 利,胡增康
(中北大學(xué)機(jī)電工程學(xué)院,山西 太原 030051)
視頻圖像采集系統(tǒng)是多媒體信息處理、視頻監(jiān)控等系統(tǒng)的前端子系統(tǒng),視頻圖像采集系統(tǒng)的實(shí)現(xiàn)是進(jìn)行數(shù)字圖像處理、多媒體和網(wǎng)絡(luò)傳輸?shù)那疤?。目前國?nèi)外的研究主要集中于圖像采集系統(tǒng)采集速度的提高、新算法的研究以及算法的優(yōu)化等方面[1],對(duì)于大容量視頻圖像數(shù)據(jù)存儲(chǔ)的研究較少。
在視頻圖像存儲(chǔ)技術(shù)領(lǐng)域,普通的外擴(kuò)XDRA M存儲(chǔ)容量小,存儲(chǔ)數(shù)據(jù)的速率較慢,占用I/O端口太多,影響視頻系統(tǒng)整體的傳輸速率。因此,文中提出了基于閃存卡的視頻圖像數(shù)據(jù)存儲(chǔ)方法。
傳統(tǒng)的視頻圖像采集系統(tǒng)如圖1所示。
圖1 傳統(tǒng)視頻圖像系統(tǒng)原理圖Fig.1 Schematic diagram of traditional video i mage system
其工作原理:視頻圖像采集端為CCD相機(jī),控制芯片將采集到的視頻圖像數(shù)據(jù)存儲(chǔ)到與控制芯片相連接的外擴(kuò)XDRA M,視頻圖像數(shù)據(jù)經(jīng)過計(jì)算機(jī)處理后顯示出來。
隨著CMOS工業(yè)的發(fā)展,近幾年來數(shù)字圖像傳感器得到迅速的發(fā)展。數(shù)字圖像傳感器在片內(nèi)對(duì)信號(hào)進(jìn)行數(shù)字化,即在片內(nèi)集成ADC。
OV7670是Omni Vision公司生產(chǎn)的1/6英寸,30萬像素低功耗CMOS彩色圖像傳感器,提供單片VGA攝像頭和影像處理器的所有功能。該產(chǎn)品VGA圖像最高達(dá)到30幀/s,用戶可以完全控制圖像質(zhì)量、數(shù)據(jù)格式和傳輸方式。所有圖像處理功能過程可以通過SCCB總線進(jìn)行內(nèi)部寄存器編程控制,SCCB總線與I2C 總線兼容[2-3]。
隨著單片機(jī)在各領(lǐng)域全面深入地發(fā)展與應(yīng)用,出現(xiàn)了高速、大尋址范圍、運(yùn)算能力強(qiáng)的高速單片機(jī)。
C8051F340是CYGNAL公司生產(chǎn)的完全集成的混合信號(hào)片上系統(tǒng)型MCU,其資源豐富,外圍電路非常簡(jiǎn)單,兼容性好。其主要特點(diǎn)為:1)高速、流水線結(jié)構(gòu)的8051兼容的微控制器內(nèi)核,速度最高可達(dá)48 MIPS;2)硬件實(shí)現(xiàn)增強(qiáng)型SPI串行接口;3)4個(gè)通用的16位定時(shí)器;4)多達(dá)40個(gè)端口I/O;5)具有5個(gè)捕捉/比較模塊和看門狗定時(shí)器功能的可編程計(jì)數(shù)器/定時(shí)器陣列(PCA)[4]。
SD卡(Secure Digital Memory Card)是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,它廣泛地使用在便攜式裝置上,例如數(shù)碼相機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體播放器等。
德城區(qū)1997年一、二、三產(chǎn)業(yè)的產(chǎn)值比例分別占地區(qū)經(jīng)濟(jì)發(fā)展總數(shù)的12.8%,58.02%,29.08%,到2017年3個(gè)產(chǎn)業(yè)的比例分別為2.13%,38.05%,59.80%.德城區(qū)第一、二產(chǎn)業(yè)比值有所下降,第三產(chǎn)業(yè)迅速發(fā)展,第二產(chǎn)業(yè)比值雖有所下降,但由于經(jīng)濟(jì)總量的增加,第二產(chǎn)業(yè)的經(jīng)濟(jì)產(chǎn)值也有大幅度上升.由于二、三產(chǎn)業(yè)的大幅度上升,大量工廠、服務(wù)產(chǎn)業(yè)占地面積擴(kuò)大,直接表現(xiàn)為城市建成區(qū)面積的擴(kuò)大.
SD卡由日本松下、東芝及美國San Disk公司于1999年8月共同開發(fā)研制。大小猶如一張郵票的SD記憶卡,重量只有2 g,但卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性[5]。
SD卡的出現(xiàn)提供了一個(gè)便宜的、結(jié)實(shí)的、卡片式的存儲(chǔ)媒介,容量從16 MB到最高32 GB不等,可為眾多應(yīng)用提供充足的外部存儲(chǔ)空間[6-7]。
視頻圖像采集系統(tǒng)由圖像數(shù)據(jù)采集模塊與圖像數(shù)據(jù)存儲(chǔ)模塊兩大部分組成。其包括:1)OV7670 CMOS圖像傳感器;2)FIFO緩存AL422B數(shù)據(jù)存儲(chǔ)器;3)C8051F單片機(jī);4)SD卡;5)TFT液晶。系統(tǒng)原理框圖如圖2所示。
圖2 系統(tǒng)原理框圖Fig.2 Schematic diagram of the system
圖1 與圖2經(jīng)過比較分析可知:采用傳統(tǒng)的視頻圖像采集系統(tǒng)有三大不足:1)CCD光敏陣列難與驅(qū)動(dòng)電路及信號(hào)處理電路單片集成,并且CCD陣列驅(qū)動(dòng)脈沖復(fù)雜,需要使用相對(duì)高的電壓;2)視頻圖像數(shù)據(jù)的存儲(chǔ)由于使用傳統(tǒng)的外擴(kuò)XRA M,存儲(chǔ)數(shù)據(jù)的速度較慢,其占用的I/O端口太多,浪費(fèi)I/O端口資源,影響整個(gè)系統(tǒng)的傳輸速率;3)傳統(tǒng)的視頻數(shù)據(jù)顯示通過計(jì)算機(jī)顯示,很難脫機(jī)進(jìn)行視頻圖像數(shù)據(jù)處理,顯示結(jié)構(gòu)龐大,攜帶非常不方便。
基于上述分析,傳統(tǒng)視頻圖像采集系統(tǒng)不能滿足多媒體信息處理、視頻監(jiān)控等場(chǎng)合的應(yīng)用。因此,文中采用C8051F單片機(jī)為核心處理器控制OV7670數(shù)字圖像傳感器對(duì)視頻圖像數(shù)據(jù)進(jìn)行采集,使用SD卡對(duì)視頻數(shù)據(jù)進(jìn)行存儲(chǔ),視頻數(shù)據(jù)的存儲(chǔ)速率有了極大的提高。
在視頻圖像采集系統(tǒng)中,圖像數(shù)據(jù)量龐大,圖像數(shù)據(jù)采樣速率很快,這就必須利用高速的存儲(chǔ)器件對(duì)采集的圖像數(shù)據(jù)進(jìn)行存儲(chǔ)。因此,文中選取SD卡對(duì)視頻圖像數(shù)據(jù)進(jìn)行存儲(chǔ)。SD卡的存儲(chǔ)有SPI和SD兩種工作模式,相對(duì)于SD模式,SPI模式可以簡(jiǎn)化主體,降低成本設(shè)計(jì),C8051F340單片機(jī)具有增強(qiáng)型SPI串行接口,對(duì)SD卡操作容易。
圖3是SD卡與C8051F340單片機(jī)的接口電路圖,單片機(jī)作為主機(jī),SD卡作為從機(jī),使用單片機(jī)SPI的三線模式進(jìn)行數(shù)據(jù)存儲(chǔ)。
圖3 SD卡與單片機(jī)的接口電路圖Fig.3 Circuit diagram of SD car d and MCU
SD卡的讀寫操作是以塊為單位進(jìn)行的,一個(gè)數(shù)據(jù)塊的長(zhǎng)度通常是一個(gè)扇區(qū),為512 B。SD卡在SPI模式下寫操作有兩種,一種是單塊寫(命令為CMD24)操作,另外一種是多塊寫(命令為CMD25)操作。單塊寫每次只寫一個(gè)扇區(qū),多塊寫操作是從指定的扇區(qū)開始寫。多塊寫操作的速率比多次單塊寫同樣扇區(qū)數(shù)的操作速率要快,因此為了提高圖像數(shù)據(jù)的存儲(chǔ)速率,采用SD卡的多塊寫操作,每次寫6個(gè)扇區(qū)。
多塊寫命令是SD卡存儲(chǔ)數(shù)據(jù)的主要操作,主要對(duì)這部分程序進(jìn)行優(yōu)化與改進(jìn)。原程序使用C語言編寫,現(xiàn)改成C語言中嵌入?yún)R編的辦法來優(yōu)化程序。寫多塊命令采用匯編語言進(jìn)行編寫,在很大程度上提高了代碼的執(zhí)行速度,從而提高了SD卡存儲(chǔ)數(shù)據(jù)的速率。
SD卡實(shí)際的寫入速率是數(shù)據(jù)存儲(chǔ)模塊的關(guān)鍵,采用16位自動(dòng)重裝載定時(shí)器T2對(duì)SD卡存儲(chǔ)速率進(jìn)行測(cè)試。C8051F340的時(shí)鐘頻率為48 MHz,T2的時(shí)鐘源為系統(tǒng)時(shí)鐘的1/12,為4 MHz,T2計(jì)數(shù)初值設(shè)為15 A0 H,定時(shí)時(shí)間為15 ms,開定時(shí)器T2中斷,用變量Counter_ms記錄定時(shí)器中斷的次數(shù)。將512 B數(shù)據(jù)重復(fù)寫入SD卡的扇區(qū)中,數(shù)據(jù)寫入SD卡的時(shí)間用變量ti me(單位:ms)表示,可采用公式(1)來計(jì)算。
式中,T MR2 H為T2高字節(jié)值,T MR2L為T2低字節(jié)值。Ti me用unsigned long型表示,占用4個(gè)字節(jié)。將C8051F340單片機(jī)與PC機(jī)通過串口相連,計(jì)算出的ti me值通過串口調(diào)試助手顯示。
本文把調(diào)試好的系統(tǒng)進(jìn)行了實(shí)驗(yàn),分別進(jìn)行了靜態(tài)、動(dòng)態(tài)實(shí)驗(yàn),采集到了正確的實(shí)驗(yàn)數(shù)據(jù)。
在圖像采集模塊中,要采集到一幀正確的圖像數(shù)據(jù),最為關(guān)鍵的是要判斷OV7670的系統(tǒng)時(shí)鐘XCLK與像素時(shí)鐘PCLK的同步信號(hào),OV7670的幀起始信號(hào)VSYNC和行同步信號(hào)HREF,采用GW雙通道示波器觀察并記錄以上兩種正常工作的時(shí)序信號(hào)。圖4為XCLK與PCLK的時(shí)序關(guān)系,圖5為VSYNC與HREF的時(shí)序關(guān)系。
圖4 XCLK與PCLK時(shí)序時(shí)序關(guān)系Fig.4 Ti ming relation of XCLK and PCLK
圖5 VSYNC與HERF時(shí)序關(guān)系Fig.5 Ti ming relation of VSYNC and HERF
系統(tǒng)中OV7670的外部時(shí)鐘選擇16 MHz的有源晶振,根據(jù)圖4可以知道,XCLK時(shí)鐘與PCLK同步為16 MHz,信號(hào)時(shí)序正確。在圖5中,當(dāng)HREF為低電平期間,VSYNC高電平持續(xù)300μs后,變?yōu)榈碗娖綍r(shí)一幀圖像開始,由于VSYNC脈寬持續(xù)時(shí)間很短,圖像采集時(shí)采取檢測(cè)VSYNC信號(hào)由低電平到高電平的變化開始一幀圖像數(shù)據(jù)的采集。以上兩幅圖的時(shí)序關(guān)系說明OV7670正常工作,可以采集到正確的圖像數(shù)據(jù)。
圖6和圖7是使用C語言和匯編語言對(duì)SD卡的多塊寫CMD25命令進(jìn)行軟件編程,分別寫入30 000個(gè)扇區(qū)所用的時(shí)間,實(shí)驗(yàn)結(jié)果通過串口助手顯示。
圖6 使用C語言CMD25命令SD卡寫入時(shí)間Fig.6 SD card writing ti me by using C
圖7 使用匯編CMD25命令SD卡寫入時(shí)間Fig.7 SD car d writing ti me by using ASM
如圖6所示,C語言編程SD卡寫入時(shí)間為:011E24 H,011D49 H,011D72 H,選取一個(gè)中間值011D55 H=73 045 ms,則可算出向SD卡存儲(chǔ)數(shù)據(jù)的速率為:30 000×512×8/(73 045×10-3×1 024×1 024)=1.6 MB/s。
如圖7所示,匯編語言編程SD卡寫入時(shí)間為:74B8 H,744FH,7512 H,選取時(shí)間744FH=29 775 ms,可算出C8051F340單片機(jī)向SD卡存儲(chǔ)數(shù)據(jù)的速率為:30 000×512×8/(29 775×10-3×1 024×1 024)=3.94 MB/s。
基于上述分析可知,SD卡采用多塊寫CMD25命令,且使用匯編語言對(duì)多塊寫操作進(jìn)行編程,SD卡的存儲(chǔ)速率最高可達(dá)3.94 MB/s,SD卡實(shí)際的存儲(chǔ)速率達(dá)到了數(shù)據(jù)存儲(chǔ)模塊的設(shè)計(jì)要求。
本文提出了基于閃存卡的視頻圖像數(shù)據(jù)存儲(chǔ)方法。視頻數(shù)據(jù)存儲(chǔ)模塊中用SD卡替代了普通的外擴(kuò)XDRA M,利用匯編語言對(duì)SD卡多塊寫操作命令進(jìn)行了程序優(yōu)化。實(shí)驗(yàn)表明:SD卡的視頻圖像數(shù)據(jù)存儲(chǔ)速率有了很大的提高,數(shù)據(jù)存儲(chǔ)速率最高可達(dá)3.94 MB/s,系統(tǒng)可以滿足低速微型飛行器偵察任務(wù)對(duì)圖像數(shù)據(jù)存儲(chǔ)速率的要求。SD卡的存儲(chǔ)中沒有涉及到文件系統(tǒng),在PC機(jī)上只能看見圖像數(shù)據(jù)的編碼,下一步工作是將圖像數(shù)據(jù)以b mp文件的格式存入SD卡,在PC上直觀的查看存儲(chǔ)的圖像數(shù)據(jù)。
[1]郭祥東.基于FPGA的視頻圖像采集系統(tǒng)的設(shè)計(jì)[J].九江學(xué)院學(xué)報(bào),2009,155(6):15-19.GUO Xiangdong.Design of video capture system based on FPGA[J].Journal of Jiu Jiang University,2009,155(6):15-19.
[2]OV7670/OV7171 CMOS VG(640×480 CA MERACHIPT M Sensor with Omni Pixel Technology.Omni Vision Advanced Inf or mation Preli minary Datasheet Version 1.4[Z].USA:Omni Vision Technologies,2006.
[3]喬永征,梁志毅.基于OV7670和FPGA的圖像采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2009,17(9):1 857-1 859.QIAO Yongzheng,LIANG Zhiyi.Image acquisition system based on OV7670 and FPGA[J].Co mputer Measurement & Control,2009,17(9):1 857-1 859.
[4]Silicon Laboratories.C8051F34 xdata sheet[DB/OL][2012-01-22].http://www.sila-bs.com.Revision 0.
[5]竇振中.基于單片機(jī)的嵌入式系統(tǒng)工程設(shè)計(jì)[M].北京:中國電力出版社,2008.
[6]何立明.單片機(jī)應(yīng)用技術(shù)選編[M].北京:北京航空航天大學(xué)出版社,1997.
[7]謝瑞和.串行技術(shù)大全[M].北京:清華大學(xué)出版社,2003.