基于嵌入式的視頻采集系統(tǒng)的設(shè)計與實現(xiàn)
圖像是自然生物或人造物理的觀測系統(tǒng)對世界的記錄,是以物理為載體,以介質(zhì)來記錄信息的一種形式。圖像信息是人類認(rèn)識世界的重要知識來源。據(jù)學(xué)者統(tǒng)計,人類所得的信息有80%以上是來自眼睛攝取的圖像。而事實上,這種靜態(tài)的圖像已無法滿足人們對視頻信息的要求。隨著人們對視頻數(shù)據(jù)的要求越來越高,高清晰、實時性視頻數(shù)據(jù)量越來越大,視頻的實時處理難度也在逐漸增大。
按系統(tǒng)的處理器不同嵌入式視頻采集系統(tǒng)大致可分為三類:(1)基于專用視頻圖像芯片的視頻采集系統(tǒng);(2)基于PC的視頻采集系統(tǒng);(3)基于DSP的視頻采集系統(tǒng)。
基于專用視頻圖像芯片的視頻采集系統(tǒng)其核心處理單元為專用圖像芯片,該圖像芯片決定系統(tǒng)的功能,其應(yīng)用主要針對某一類產(chǎn)品(如數(shù)碼攝像機),所以具有一定的局限性。而基于PC機的視頻采集系統(tǒng)最為普遍的就是基于視頻采集卡獲取數(shù)字化視頻信息,通過運行相應(yīng)的PC程序?qū)崿F(xiàn)視頻的采集、顯示與存儲,但是目前基于PC的算法程序通常處理時間較長,很難實現(xiàn)實時的圖像處理應(yīng)用。
相比基于專用視頻圖像芯片和基于PC的視頻采集系統(tǒng)而言,嵌入式視頻采集系統(tǒng)可完成視頻的實時采集、傳輸以及各種視頻壓縮算法和圖像處理算法的實現(xiàn),根據(jù)不同的應(yīng)用,可以編制不同的圖像處理程序,所以具有更大的靈活性,并且設(shè)計與實現(xiàn)簡單,硬件設(shè)計一般采用基于DSP的視頻采集系統(tǒng),即"CCD+視頻信號處理芯片+CPLD/FPGA/EPLD +DSP"的模式實現(xiàn)。其中,視頻信號處理芯片進行信號的A/D轉(zhuǎn)換,CPLD或EPLD或FPGA用于視頻采樣控制,DSP對采集的數(shù)據(jù)進行處理。嵌入式視頻圖像采集系統(tǒng)主要包括硬件設(shè)計、軟件設(shè)計和操作系統(tǒng)3個部分。
CPLD(ComplexProgrammableLogicDevice)復(fù)雜可編程邏輯器件,是從PAL和GAL器件發(fā)展出來的器件,相對而言規(guī)模大,結(jié)構(gòu)復(fù)雜,屬于大規(guī)模集成電路范圍。是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜("在系統(tǒng)"編程)將代碼傳送到目標(biāo)芯片中,實現(xiàn)設(shè)計的數(shù)字系統(tǒng)。
1 嵌入式視頻采集系統(tǒng)的硬件設(shè)計
1.1 視頻采集系統(tǒng)的基本構(gòu)成
數(shù)字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來,隨著計算機和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運而生并得到迅速的發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。在過去的二十多年時間里,數(shù)字信號處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。德州儀器、Freescale等半導(dǎo)體廠商在這一領(lǐng)域擁有很強的實力。
基于DSP的視頻采集系統(tǒng)要求對視頻信號具備采集、實時顯示,對圖像的處理和分析功能。因此,一個視頻采集系統(tǒng)通常可由如下五部分構(gòu)成:視頻圖像的采集、視頻圖像的顯示輸出、各種同步邏輯控制、視頻圖像的分析和處理、視頻數(shù)據(jù)的存儲。因此,對于視頻采集系統(tǒng)的基本構(gòu)成可用圖1所示框圖描述。
1.2基于DSP的視頻采集系統(tǒng)
圖2給出了基于TMS320DM642與TVP5150[2]構(gòu)成的視頻采集系統(tǒng),TMS320DM642可以直接和視頻編解碼器接口,該系統(tǒng)可同時完成四路視頻圖像的實時采集、傳輸以及各種視頻壓縮算法和圖像處理算法的實現(xiàn),根據(jù)不同的應(yīng)用,可以編制不同的圖像處理程序。TMS320DM642有自己的圖像處理庫函數(shù),可以實現(xiàn)各類圖像處理算法。因此,該系統(tǒng)具有更大的靈活性與通用性。
1.2.1 TMS320DM642簡介
tms320dm642是TI公司C6000系列DSP總最新的定點DSP,其核心是C6416型高性能數(shù)字信號處理器,具有極強的處理性能,高度的靈活性和可編程性,同時外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信等設(shè)備及接口,特別適用于機器視覺、醫(yī)學(xué)成像、網(wǎng)絡(luò)視頻監(jiān)控、數(shù)字廣播以及基于數(shù)字視頻/圖像處理的消費類電子產(chǎn)品等高速DSP應(yīng)用領(lǐng)域。筆者針對市場客戶的需求,設(shè)計并實現(xiàn)了一款以TVP5150為視頻輸入解碼器,以PCM1801為音頻輸入采集電路,以TMS320DM642型DSP為核心處理器的多路視頻采集兼壓縮處理PCI板卡,并將其應(yīng)用于構(gòu)建高穩(wěn)定性、高魯棒性和多媒體數(shù)字監(jiān)控系統(tǒng),取得了較好的社會效益和經(jīng)濟效益。
TMS320DM642采用第二代高性能、先進的超長指令字veloci T1.2結(jié)構(gòu)的DSP核及增強的并行機制,當(dāng)工作在720M赫茲的時鐘頻率下,其處理性能最高可達5760MI/s,使得該款DSP成為數(shù)字媒體解決方案的首選產(chǎn)品,它不僅擁有高速控制器的操作靈活性,而且具有陣列處理器的數(shù)字處理能力,TMS320DM642的外圍集成了非常完整的音頻、視頻和網(wǎng)絡(luò)通信接口。
1.2.2 視頻A/D采樣電路-TVP5150
在圖2系統(tǒng)中,TVP5150是由TI公司推出的一款高性能視頻解碼器,可將NTSC、PAL視頻信號轉(zhuǎn)換成數(shù)字色差信號(YUV4:2:2),支持兩個復(fù)合視頻或一個S端子輸入。輸出格式為ITU-R BT.656,并支持Macrovision?復(fù)制保護以及高級的VBI功能。不僅如此,TVP5150還具備了封裝?。?2腳的TQFP)、功耗小的特點(<150mW)。因此,它非常適用于便攜、批量大、高質(zhì)量和高性能的視頻產(chǎn)品。TVP5150可接受2路復(fù)合視頻信號(CVBS)輸入和1路超級視頻信號(S-Video即Super-Video,Y/C)輸入。該芯片包含一個擴展端口(X-端口)用于數(shù)字視頻(雙向半雙工),它可直接連接倒MPEG或視頻電話進行編解碼。TVP5150的圖像端口(I-端口)支持8位或16位的輸出數(shù)據(jù)并帶輔助參考數(shù)據(jù)可直接與VGA控制器接口。TVP5150提供I2C總線接口,其最高傳輸速率為400kbits/s,通過它可以完成芯片的初始化以及設(shè)置修改等操作。TVP5150作為I2C總線的從設(shè)備,最多可配置為2個不同的從設(shè)備地址,一條I2C總線只能同時訪問2個TVP5150配置口,所以DM642可以連接4個TVP5150,進行4路視頻輸入。
1.2.3 視頻D/A電路-SAA7121
圖2系統(tǒng)中視頻D/A由視頻編碼器SAA7121[4]完成。SAA7121支持PAL與NTSC格式的視頻編碼,其輸入支持BT.656格式的數(shù)字視頻。SAA7121有1路復(fù)合視頻(CVBS)輸出和1路超級視頻(S-Video,Y/C)輸出,其系統(tǒng)像素時鐘頻率為13.5MHz,它可以直接接收MPEG解碼數(shù)據(jù)和采用4:2:2格式每行720有效像素的CCIR兼容YUV數(shù)據(jù),其內(nèi)部包含同步/時鐘產(chǎn)生器和數(shù)模轉(zhuǎn)換器兩部分電路。SAA7121同樣需要通過I2C總線進行初始化和設(shè)置修改等操作。
從圖2中可看出,VP0既要做視頻輸入口,也要支持視頻輸出口,即VP0可以工作在Capture與Display兩種作模式。但這兩種工作模式不能同時使用作模式不能同時使用。當(dāng)VP0作為8-位的BT.656視頻采集口時,僅需視頻數(shù)據(jù)流串行時鐘和采集使能控制信號,串行數(shù)據(jù)流串行時鐘由TVP5150的SCLK,采集使能控制信號則由TVP5150的INTREQ/GPCL/VBLK引腳配置為通用輸出引腳來控制,此時SAA7121H不起作用。當(dāng)VP0作為8-位的BT.656顯示口時,SAA7121需要HSYNC(行同步信號)、VSYNC(場同步信號)、LLC(27MHz的行鎖存號)控制。
1.2.4 系統(tǒng)原理
圖2系統(tǒng)其主要功能是完成視頻圖像的采集、處理、存儲和傳輸。系統(tǒng)的視頻輸入可以是NTSC、PAL和SECAM制式的任何一種,或者采用S端子輸入。TVP5150完成視頻信號的A/D轉(zhuǎn)換,為后續(xù)處理提供數(shù)字視頻數(shù)據(jù),同時它還分離出行、場同步信號并輸出系統(tǒng)時鐘供視頻D/A芯片和FIFO使用。TVP5150的輸出格式包括4:2:2、4:1:1、4:2:0和4:1:0等四種YUV格式輸出,數(shù)據(jù)輸出格式是通過I2C總線編程來選擇的,TVP5150的內(nèi)部寄存器初始化也通過I2C串行接口來完成。對于不同的輸入制式、不同的采集要求和不同的處理要求,其幀緩存要求是不相同的,如對于PAL-D制ITU-R BT.601視頻輸入,采樣后按4:2:2格式輸出,一幀數(shù)據(jù)為720×576×2=0.83Mbyte,若緩存三幀圖像,則需要3Mbyte空間的采集幀緩存,若按4:1:1格式輸出,則只需2Mbyte的幀緩存。系統(tǒng)可選擇8M×32-bit的SDRAM在系統(tǒng)中即作為采集幀緩存和處理后的數(shù)據(jù)幀緩存,也可作下載程序的存儲器使用。系統(tǒng)提供串行接口,可與外部設(shè)備進行通信和傳輸圖像數(shù)據(jù)。其中Xilinx Xc2s300 FPGA[5]實現(xiàn)以下四點功能:
(1) 完成系統(tǒng)中視頻采集和輸出部分的同步信號和消隱信號的控制,其中主要包括TVP5150和SAA7121的行同步信號、場同步信號、消隱信號;
(2) 將部分邏輯單元設(shè)計為FIFO作數(shù)據(jù)緩存,完成外接FIFO的同步讀寫控制,承擔(dān)TVP5150與DSP的數(shù)據(jù)傳送工作;
(3) 作PCI總線控制器,完成TMS320DM642與計算機的數(shù)據(jù)通信工作以及從計算機加載各種圖像處理算法;
(4) 對TVP5150輸出的數(shù)字圖像進行預(yù)處理,其中主要包括圖像數(shù)據(jù)的色度空間轉(zhuǎn)換如YUV到RGB的轉(zhuǎn)換,數(shù)據(jù)格式轉(zhuǎn)換如將4:2:2轉(zhuǎn)換為4:2:0;
(5) 作數(shù)據(jù)總線接口,實現(xiàn)數(shù)據(jù)的驅(qū)動傳輸?shù)裙δ堋?/P>
TMS320DM642在系統(tǒng)中是各類算法實現(xiàn)的核心器件,根據(jù)不同的應(yīng)用場合,可以編制不同的算法處理程序,使得該系統(tǒng)具有了很強的靈活性與通用性。值得強調(diào)的一點是為了便于操作系統(tǒng)中的其它外設(shè),在該系統(tǒng)中,TMS320DM642的外部存儲器接口控制寄存器必須配置為優(yōu)先使用外部存儲器模式。
2 嵌入式視頻圖像采集系統(tǒng)的軟件設(shè)計
一個完整的嵌入式系統(tǒng)由圖3所示的4部分來組成。
圖3中的底層是硬件系統(tǒng),核心是嵌入式處理器(嵌入芯片),通常這樣構(gòu)成的系統(tǒng)又被稱為是SOC(System on Chip)系統(tǒng)。在硬件系統(tǒng)的上面是BSP(板級支持包),包括各種必要的對底層硬件系統(tǒng)的屏蔽,引導(dǎo)上層操作系統(tǒng)在硬件系統(tǒng)上的正確運行。操作系統(tǒng)正確運行之后還需要開發(fā)各種設(shè)備驅(qū)動程序,目的是給用戶的應(yīng)用程序開發(fā)提供對底層設(shè)備的屏蔽,提供一個統(tǒng)一的用戶開發(fā)接口(API)。
BSP是板級支持包,是介于主板硬件和操作系統(tǒng)之間的一層,應(yīng)該說是屬于操作系統(tǒng)的一部分,主要目的是為了支持操作系統(tǒng),使之能夠更好的運行于硬件主板。BSP是相對于操作系統(tǒng)而言的,不同的操作系統(tǒng)對應(yīng)于不同定義形式的BSP,例如VxWorks的BSP和Linux的BSP相對于某一CPU來說盡管實現(xiàn)的功能一樣,可是寫法和接口定義是完全不同的,所以寫B(tài)SP一定要按照該系統(tǒng)BSP的定義形式來寫(BSP的編程過程大多數(shù)是在某一個成型的BSP模板上進行修改)。這樣才能與上層OS保持正確的接口,良好的支持上層OS.
嵌入式操作系統(tǒng)相關(guān)技術(shù)已經(jīng)成熟,由于Linux[6]具有源碼開放、開發(fā)工具豐富、技術(shù)支持廣泛等特點,視頻圖像采集系統(tǒng)選用嵌入式Linux操作系統(tǒng)(Embedded Linux Operation System)。Linux中的中斷管理包括中斷號的申請和釋放、中斷屏蔽和中斷服務(wù)、中斷向量分配等,時鐘和設(shè)備驅(qū)動程序。
驅(qū)動程序是利用操作系統(tǒng)提供的接口,完成對底層硬件的操作。驅(qū)動程序的開發(fā),是在操作系統(tǒng)提供的接口基礎(chǔ)上編寫對底層硬件的操作和控制程序,然后加入到操作系統(tǒng)的內(nèi)核。用戶對某一個設(shè)備的訪問,首先是將用戶的各種操作傳遞給操作系統(tǒng),然后由操作系統(tǒng)調(diào)用設(shè)備的驅(qū)動程序,完成對硬件的各種數(shù)據(jù)傳輸,所以驅(qū)動程序必須要告訴操作系統(tǒng)該硬件的各種操作程序的入口地址。特別對于Linux下的驅(qū)動程序開發(fā),經(jīng)過調(diào)試通過的驅(qū)動程序可以編譯為一個模塊動態(tài)地裝載入操作系統(tǒng)內(nèi)核或者從操作系統(tǒng)內(nèi)核中刪除,因此驅(qū)動程序在Linux中是可以作為內(nèi)核的一部分來編寫。
對于用戶程序開發(fā),與通用PC上面開發(fā)應(yīng)用程序類似。但是在嵌入式應(yīng)用中,應(yīng)用程序一般是作為文件系統(tǒng)的一部分加入到操作系統(tǒng)的內(nèi)核,然后重新編譯內(nèi)核,最后生成一個可以執(zhí)行的二進制壓縮映像文件加載到系統(tǒng)的存儲空間。加載的加入了用戶應(yīng)用程序的操作系統(tǒng)一般還必須固化,燒到系統(tǒng)的Flash中。在系統(tǒng)運行時,根據(jù)操作系統(tǒng)的INIT函數(shù)轉(zhuǎn)到用戶程序執(zhí)行。
3 結(jié) 論
基于DSP的視頻采集系統(tǒng),由于可以靈活的修改其圖像處理算法,它的應(yīng)用主要面向用戶的特定需求和對實時性有較高要求的場合。隨著技術(shù)的發(fā)展和日益增強的需要,圖像的實時傳輸和網(wǎng)絡(luò)服務(wù)將是不可避免的,同時嵌入式系統(tǒng)是基于計算機技術(shù)且更加強調(diào)體積、功耗、成本、便攜化應(yīng)用等綜合因素的精簡計算機系統(tǒng),將二者結(jié)合在一起而構(gòu)成的完整傳輸系統(tǒng)將具有不可比擬的優(yōu)越性。因此完全有理由相信在嵌入式系統(tǒng)的基礎(chǔ)上構(gòu)建視頻圖像采集、處理及傳輸系統(tǒng)具有廣闊的市場前景。
參考文獻:
[1].CPLDdatasheethttp:///datasheet/CPLD_1136600.html.
[2].TMS320DM642datasheethttp:///datasheet/TMS320DM642_14462.html.
[3].TVP5150datasheethttp:///datasheet/TVP5150_665572.html.
[4].PCM1801datasheethttp:///datasheet/PCM1801_543568.html.
[5].PCIdatasheethttp:///datasheet/PCI_1201469.html.
[6].TQFPdatasheethttp:///datasheet/TQFP_1528902.html.
[7].VGAdatasheethttp:///datasheet/VGA_2568786.html.
[8].SAA7121datasheethttp:///datasheet/SAA7121_595945.html.
[9].SAA7121Hdatasheethttp:///datasheet/SAA7121H_1083426.html.
QICK