沈文君,孟利民,方立華
(浙江工業(yè)大學信息工程學院,浙江杭州310023)
近幾年來,隨著數(shù)字多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,智能網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)也得到了迅速發(fā)展和廣泛應(yīng)用[1]。目前對于視頻監(jiān)控產(chǎn)品的需求越來越大,性能更高 功耗更低 成本更低的視頻監(jiān)控產(chǎn)品越來越受到歡迎,而視頻解碼芯片的選擇是提高性能的關(guān)鍵,目前市場上的視頻解碼芯片種類繁多,如國外的有TW2835 SAA7113等,國內(nèi)有龍晶的DS1000,但是它們都有各自的優(yōu)點和缺點。例如TW2835和DS1000功能比較強,但是芯片比較貴,芯片面積比較大不利于設(shè)計面積要求小的電路板;SAA7113價格便宜,但是圖像的質(zhì)量相對較差。TW9910是TECHWELL公司性能較好的一塊視頻解碼芯片,價格也較便宜,本文以TW9910的應(yīng)用為例對其硬件電路設(shè)計和軟件設(shè)計進行分析。
圖1 系統(tǒng)總體框架
硬件的總體設(shè)計如圖1所示,系統(tǒng)選用的 CPU為 GM8180,屬于ARM9芯片,內(nèi)部包含了H.264編解碼器,緩存采用兩片 32M×16的DDR,擴展存儲采用一片8M×16的FLASH,視頻解碼芯片為TW9910,3G網(wǎng)絡(luò)用于設(shè)備發(fā)送和接收數(shù)據(jù),SD卡用于存儲視頻數(shù)據(jù)。
系統(tǒng)的總體流程為:TW9910將接收到的一路模擬視頻信號經(jīng)過ADC轉(zhuǎn)換成8位數(shù)字信號后發(fā)送給CPU進行H.264壓縮,再由CPU進行發(fā)送和存儲。CPU通過IIC初始化TW9910。
TW9910芯片是一款低功耗的NTSC/PAL/SECAM視頻解碼器芯片,視頻解碼器將輸入的基帶模擬CVBS或S端子視頻信號解碼成數(shù)字的8位或16位4:2:2 YUV格式輸出。它包括模擬前端輸入源選擇,可變增益放大器,2個10位的ADC和模擬箝位電路,Y/C分離電路,多標準色解碼器和同步電路。
TW9910的外圍電路較為簡單,如圖2所示。YMUX[0..3]是模擬CVBS或Y信號輸入,CIN0是模擬色度信號輸入,這5個引腳在不使用時需要串0.1μ F的電容接到模擬地,從中可以看出TW9910可以支持四路模擬信號輸入:四路CVBS,或者三路CVBS和一路S端子輸入。本系統(tǒng)選擇了一路CVBS輸入,由YMUX0引腳輸入。XTI為芯片的時鐘頻率輸入引腳,由27MHz的有源晶振提供,此頻率為芯片模擬視頻信號的采樣頻率。RSTB引腳為芯片復位信號輸入引腳,低電平有效,TMODE引腳為芯片的測試引腳,與RSTB引腳一起操作可用于芯片的檢測,芯片正常工作時要拉低,本系統(tǒng)通過串4.7K的電阻接到地。PDN引腳是電源關(guān)閉控制引腳,高電平有效,本系統(tǒng)沒有用到此功能,因此串4.7K的電阻接到地。SCLK和SDAT分別是IIC的串行時鐘線和串行數(shù)據(jù)線,CPU可以通過它們來控制TW9910,分別通過串4.7K的電阻上拉到3.3V,使其更加穩(wěn)定。VD[0..15]為數(shù)字視頻輸出引腳,TW9910有VD[8..15](8位)和VD[0..15](16位)兩種不同的輸出格式,可以通過改變輸出格式控制寄存器相應(yīng)的值來選擇8位輸出還是16位輸出,本系統(tǒng)由于CPU的視頻捕獲端口為8位輸入,因此芯片選擇VD[8..15]8位輸出,因此需要將輸出格式控制寄存器的LEN位設(shè)為“1”,其中VD0引腳還用作于設(shè)置芯片的7位地址的第7位,通過上拉(選擇“1”)或下拉(選擇“0”)選擇,本系統(tǒng)將此引腳通過串4.7K 的電阻上拉到 3.3V,將芯片的7位地址的第7位設(shè)置為“1”。CLKX2為數(shù)據(jù)輸出時鐘信號,通過修改相應(yīng)寄存器的值來確定頻率,本系統(tǒng)為27MHz。VD[8..15]這8個信號串兩個0Ω的排阻,CLKX2信號串一個33Ω的小電阻,這是為了阻抗匹配,減少信號反射[2]。
圖2 TW9910電路原理圖
Linux具有內(nèi)核小、效率高、源代碼開放,內(nèi)核直接支持網(wǎng)絡(luò)支持的優(yōu)點[3]。但是FLASH的容量畢竟有限,不能直接把Linux作為操作系統(tǒng),需要針對具體的應(yīng)用通過配置內(nèi)核,裁減Shell,嵌入式C庫對系統(tǒng)進行制定。Linux的動態(tài)模塊加載,使Linux的裁減極為方便,高度模塊化的部件使添加更加容易,本系統(tǒng)采用的是對Linux進行定制的armlinux操作系統(tǒng),版本為2.6.14。
2.2.1 視頻處理要求及流程
本監(jiān)控系統(tǒng)既要實現(xiàn)遠程無線監(jiān)控,又要實現(xiàn)歷史視頻數(shù)據(jù)的查看,因此采用雙碼流進行傳輸,將一路CIF格式的視頻信號用作本地存儲,另一路QCIF格式視頻信號用于3G網(wǎng)絡(luò)發(fā)送。
本系統(tǒng)的視頻采集和壓縮流程[4]如圖3所示。TW9910將接收到的模擬視頻信號進行AD轉(zhuǎn)換后變?yōu)?位數(shù)字信號,視頻數(shù)據(jù)格式為ITU-R656;CPU的視頻捕獲模塊將捕獲到來自TW9910的視頻數(shù)據(jù)信號,并轉(zhuǎn)化為4:2:0YUV的格式,以便進行壓縮處理;CPU的H.264壓縮模塊將從視頻捕獲模塊接收到的視頻數(shù)據(jù)壓縮為H.264格式的壓縮文件。
圖3 視頻采集和壓縮流程圖
2.2.2 主程序流程
在程序啟動的時候首先要初始化硬件,在加載TW9910驅(qū)動模塊時通過IIC總線對視頻采集芯片TW9910進行初始化[5];通過主程序?qū)PU的視頻捕獲模塊和H.264壓縮模塊進行初始化。創(chuàng)建兩個線程,分別用于一路CIF和一路QCIF視頻圖像的捕獲和H.264壓縮。其中CIF視頻數(shù)據(jù)用于本地存儲,壓縮完寫入SD卡存儲,QCIF數(shù)據(jù)用于3G無線網(wǎng)絡(luò)傳輸,壓縮后放到共享內(nèi)存中,用于3G無線網(wǎng)絡(luò)進程來讀取視頻數(shù)據(jù)并發(fā)送到客戶端。
主程序流程如圖4所示:
圖4 主程序流程圖
TW9910的初始化過程如圖5所示,按需求配置TW9910的寄存器:
圖5 通過IIC對TW9910初始化
本文提出的方案已經(jīng)過實際測試,能夠支持NTSC/PAL/SECAM制式的視頻信號輸入,支持D1,CIF,QCIF分辨率輸出,效果圖如圖6、7所示,低成本實現(xiàn)了高畫質(zhì),可廣泛應(yīng)用于商場 倉庫 交通 家庭等多種視頻監(jiān)控場合。
圖6 CIF視頻圖像
圖7 QCIF視頻圖像
[1]西剎子.安防天下—智能網(wǎng)絡(luò)視頻監(jiān)控技術(shù)詳解與實踐[M].北京:清華大學出版社,2010:1-12.
[2]Douglas Brooks.信號完整性問題和印制電路板設(shè)計[M].北京:機械工業(yè)出版社,2005:92-107.
[3]吳才章.基于ARM的圖像采集與顯示系統(tǒng)設(shè)計[J].自動化技術(shù)與應(yīng)用,2006,29(3):118-122.
[4]劉云,盧少同,周亮.網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].安防科技,2009,3(17):50-53.
[5]俞永昌.設(shè)備驅(qū)動開發(fā)技術(shù)及應(yīng)用[M].北京:人民郵電出版社,2008:97-120.