基于IPv6的嵌入式視頻監(jiān)視系統(tǒng)的硬件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
目前嵌入式視頻監(jiān)視系統(tǒng)已成為國(guó)內(nèi)外視頻監(jiān)視系統(tǒng)應(yīng)用的主流,但是在IPv4平臺(tái)下存在地址不足、不能合理分配帶寬、安全性能及移動(dòng)性能差等諸多問題,而新一代IPv6協(xié)議不僅能很好地解決以上問題,還具有可以提高視頻傳輸速度和傳輸質(zhì)量等多方面的優(yōu)點(diǎn)。如何使嵌入式監(jiān)視系統(tǒng)與IPv6技術(shù)相結(jié)合已經(jīng)成為當(dāng)前監(jiān)視系統(tǒng)研究的一個(gè)重要方向[1-2]。
嵌入式視頻監(jiān)視系統(tǒng)的實(shí)現(xiàn)方式一般有兩種:ARM+通用DSP和ARM+專用視頻處理芯片[3-4]??紤]到基于DSP的解決方案成本太高、開發(fā)難度大等特點(diǎn),本文采用了成本低、開發(fā)周期短的第二種方案。
1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)的主要芯片之間通過I2C總線相連接,這樣設(shè)計(jì)不僅方便各主要芯片之間的通信,例如,ARM處理器可直接控制視頻解碼器SAA7113H,而且方便系統(tǒng)升級(jí),例如擴(kuò)展存儲(chǔ)器、更新芯片。SAA7113H采集AV端子(Composite Video)的視頻信號(hào)處理成ITU656格式的數(shù)據(jù)送到GO7007SB,MSM7716采集來自麥克風(fēng)的音頻信號(hào)處理成PCM格式數(shù)據(jù)送到GO7007SB,GO7007SB將采集到的音視頻數(shù)據(jù)進(jìn)行壓縮,壓縮后的數(shù)據(jù)流經(jīng)過HPI(Host Parallel Interface)接口傳輸?shù)紸RM微處理器S3C2410,S3C2410將壓縮數(shù)據(jù)發(fā)送給以太網(wǎng)接口運(yùn)用IPv6協(xié)議傳輸?shù)骄W(wǎng)絡(luò)[5]。系統(tǒng)的結(jié)構(gòu)圖如圖1所示。
2 視頻采集模塊設(shè)計(jì)
視頻采集由Philips公司的視頻捕獲芯片SAA7113H完成。該芯片是可編程視頻處理芯片,主要完成模擬視頻信號(hào)的數(shù)字采樣,將模擬彩色視頻信號(hào)轉(zhuǎn)換成符合ITU656標(biāo)準(zhǔn)輸出格式的數(shù)字視頻信號(hào),前端輸入的視頻信號(hào)可以是PAL制式、NTSC制式或者SECAM制式。它不僅能夠?qū)崿F(xiàn)輸入信號(hào)的幅度鉗位和靜態(tài)、動(dòng)態(tài)增益自動(dòng)調(diào)整,而且還包含一個(gè)可編程的亮度、對(duì)比度、飽和度及色度控制器,可實(shí)時(shí)地調(diào)整采集到的數(shù)字圖像參數(shù)。片外只需提供一個(gè)24.576 MHz的晶振,片內(nèi)時(shí)鐘發(fā)生器自動(dòng)產(chǎn)生內(nèi)部電路所需的工作頻率。SAA7113HH在GO7007SB的I2C總線時(shí)序的控制下,將處理后的ITU656 YUV 4:2:2格式的數(shù)字圖像數(shù)據(jù)通過數(shù)據(jù)線傳送到G07007SB[6]。在GO7007SB與SAA7113H之間的I2C總線空閑時(shí),ARM處理器可以通過I2C總線對(duì)SAA7113H內(nèi)部寄存器進(jìn)行設(shè)置。GO7007SB的數(shù)據(jù)線PDATA是1個(gè)10位的并行輸入接口,接口時(shí)鐘由像素時(shí)鐘(PCLK)提供。來自SAA7113H的視頻源是8位的,應(yīng)該連接到10位PDATA總線的高8位上,此時(shí),低2位可以連接到高電平或低電平。本設(shè)計(jì)中的模擬視頻輸入端提供了復(fù)合視頻信號(hào)接口[7]。
SAA7113H輸出的同步信號(hào)包括LLC、RTS0、RTS1。LLC是行鎖定系統(tǒng)時(shí)鐘輸出,與PCLK相連,取PCLK的最大值,即27MHz,用來同步數(shù)據(jù)采集,使得1個(gè)LLC周期輸出1bit的圖像數(shù)據(jù)。在圖像數(shù)據(jù)有效時(shí),其上升沿反相后作為幀存儲(chǔ)器的WE#信號(hào)。RTS0、RTS1的功能是通過編程設(shè)置SAA7113H功能寄存器確定的。RTS0被設(shè)置為水平輸出與HREF連接的參考信號(hào)(行有效信號(hào))。RTS0高電平時(shí)表示采集一行有效像素,低電平時(shí)表示場(chǎng)消隱信號(hào)。RTS1被設(shè)置為垂直輸出參考信號(hào)和奇偶場(chǎng)信號(hào),與VREF連接。RTS1高電平時(shí)表示采集奇場(chǎng)圖像所需要的有效數(shù)據(jù),在RTS1上升沿時(shí),開始采集奇場(chǎng)圖像數(shù)據(jù),同時(shí)它也被用來作為幀圖像開始的信號(hào);RTS1低電平時(shí)表示采集偶場(chǎng)中所需要的圖像數(shù)據(jù),在RTS1下降沿時(shí),開始采集偶場(chǎng)圖像數(shù)據(jù)[8]。
3 音頻采集模塊設(shè)計(jì)
音頻采集是由OKI公司生產(chǎn)的音頻解碼芯片MSM7716完成的。MSM7716在部件模式下運(yùn)行而GO7007SB在主機(jī)模式下運(yùn)作。音頻數(shù)據(jù)經(jīng)MAIN 引腳輸入,其內(nèi)部和外部電路如圖2所示。在內(nèi)部,MAIN與op-amp的同項(xiàng)輸入相連,而MAO與op-amp的輸出相連。BCLK與GO7007SB的BCLK連接,其頻率與數(shù)據(jù)率一致。SYNC作為同步信號(hào)與GO7007SB的LRCK連接。 這些同步信號(hào)啟動(dòng)了PLL并且使傳送部分的所有調(diào)速信號(hào)同步化。接收部分的信號(hào)也被這些同步信號(hào)同步化。此信號(hào)必須在BCLK階段被同步化[9]。[!--empirenews.page--]
4 音視頻壓縮模塊設(shè)計(jì)
GO7007SB是單片多式視頻壓縮芯片,它使用復(fù)合算法將原視頻數(shù)據(jù)緩沖并壓縮成視頻流,輸出視頻流形式為MPEG-1、MPEG-2、MPEG-4或 H.263。
時(shí)鐘系統(tǒng)視為帶有適用低電平的MPLL_BP 和 UPLL_BP 引腳的內(nèi)部PLL模式設(shè)計(jì)。主時(shí)鐘由芯片振蕩器和PLL產(chǎn)生。MCLK頻率是96MHz。在這種情況下,MXI和MXO之間需要一個(gè)外部R-C-Crystal tank,如圖3所示。
MT48LC2M32B2是64MB SDRAM (512K×32×4 backs), 被用作外部數(shù)據(jù)緩沖器。為了改進(jìn)SDRAM的時(shí)鐘定時(shí)功能,GO7007SB為SDRAM提供SDRAM信號(hào)以及時(shí)鐘信號(hào)[10]。該時(shí)鐘被設(shè)計(jì)為SDRAM_CLK.。SDRAM_CLK 引腳驅(qū)動(dòng)SDRAM 裝置并為SDRAM_CLK_LB 引腳提供反饋。在讀取周期中,反饋時(shí)鐘獲得SDRAM數(shù)據(jù)。無需任何復(fù)雜的PCB設(shè)計(jì)SDRAM數(shù)據(jù)可以符合96 MHz的設(shè)計(jì)時(shí)間。SDRAM 時(shí)鐘的設(shè)計(jì)如圖4所示。
2KB EEPROM用于存儲(chǔ)裝置的啟動(dòng)設(shè)置,由I2C控制器進(jìn)行控制。所以用戶可以將定制的描述符ID、接口和端點(diǎn)設(shè)置存儲(chǔ)在芯片上。另外,它還能存儲(chǔ)定制內(nèi)部寄存設(shè)置、啟動(dòng)碼以及自動(dòng)固件。
音頻接口在主機(jī)模式下運(yùn)作,一個(gè)簡(jiǎn)單的時(shí)鐘生成器通過MXAUD參照主時(shí)鐘24.576MHz生成樣本速率,而位時(shí)鐘與合成信號(hào)也通過MXAUD生成。
HPI接口用于連接微處理器,運(yùn)行啟動(dòng),控制數(shù)據(jù),而壓縮流也通過HPI接口。如果發(fā)生不可逆轉(zhuǎn)的錯(cuò)誤,XRISC或微處理器可以凍結(jié)前端模塊并啟動(dòng)調(diào)試模式。然后外部主機(jī)就可以運(yùn)用調(diào)試模式進(jìn)入GO7007SB內(nèi)部。
HPI接口被設(shè)計(jì)為異步模式,異步模式也是缺省的模式,可通過HPI_SYNC引腳以及以啟動(dòng)EEPROM設(shè)置的16位數(shù)據(jù)總線進(jìn)行設(shè)置。
5 網(wǎng)絡(luò)傳輸模塊設(shè)計(jì)
AX88796的CPU[1:0]兩個(gè)輸入引腳用來設(shè)置與不同CPU總線連接時(shí)AX88796的工作模式,本系統(tǒng)設(shè)其為X86模式,即CPU0接3.3V電壓,CPU1接地。由ARM的4個(gè)GPIO口引腳分別與AX88796的CS#、WR#、RD#和BHE#相連,完成對(duì)AX88796的控制功能。AX88796的地址總線SA[9:0]和數(shù)據(jù)總線SD[15:0]分別與CPU的地址/數(shù)據(jù)總線相連。
需要特別注意的一個(gè)引腳是PLL電源引腳(78腳),按照手冊(cè)上說這個(gè)引腳必須要與其他的電源隔離,本設(shè)計(jì)一開始使用一個(gè)磁珠隔離,結(jié)果在后面調(diào)試時(shí)ping通率很小,使用10μH的電感再加一個(gè)104電容接地的方式后,大數(shù)據(jù)包完全可以ping通。
編寫IPv6視頻組播發(fā)送和接收函數(shù)部分,以供視頻監(jiān)視終端和客戶端上位機(jī)應(yīng)用程序調(diào)用。在編寫函數(shù)時(shí),可參照視頻傳輸流的IPv4組播發(fā)送和接收,并且可以添加傳輸數(shù)據(jù)的加密解密模塊。IPv6組播發(fā)送的真正實(shí)現(xiàn)是IPv6_multicast_send()函數(shù),它主要是通過調(diào)用3個(gè)子函數(shù):JoinMulticast(加入組播組)、LeaveMulticast(離開組播組)和Send(發(fā)送數(shù)據(jù))來實(shí)現(xiàn)的。組播數(shù)據(jù)的接收是由IPv6_multicast_rev()函數(shù)實(shí)現(xiàn)的,接收到的數(shù)據(jù)存放在緩沖區(qū)中,等待進(jìn)一步處理。在IPv6_multicast_rev()函數(shù)中,創(chuàng)建一個(gè)接收網(wǎng)絡(luò)數(shù)據(jù)Socket并將其加入到指定的組播組中,開始接收組播數(shù)據(jù)。
通過接收組播數(shù)據(jù)函數(shù)Int revdata(char *buffer,int len)接收組播數(shù)據(jù),并將接收到的視頻數(shù)據(jù)存放在數(shù)據(jù)緩沖區(qū)中,提取視頻數(shù)據(jù)包頭,判定此包是否為一幀數(shù)據(jù)中的最后一幀,如果是最后一幀則對(duì)此幀進(jìn)行解壓處理并顯示出來。[!--empirenews.page--]
6 ARM與GO7007之間的通信設(shè)計(jì)
S3C2410和GO7007SB通過HPI通信。HPI物理上連接GO7007SB端口和ARM的總線控制器BUSC,S3C2410通過編程HPI在GO7007SB內(nèi)存映射中打開一個(gè)32KB窗口,然后再訪問GO7007SB內(nèi)存。這樣,S3C2410和GO7007SB都可以訪問SDRAM,從而有效地共享大量的圖像數(shù)據(jù)塊。S3C2410和GO7007SB共享一種數(shù)據(jù)結(jié)構(gòu),用于命令請(qǐng)求、確認(rèn)和數(shù)據(jù)的交互。
本系統(tǒng)通過調(diào)試和測(cè)試,已經(jīng)成功實(shí)現(xiàn)了IPv6環(huán)境下的視頻監(jiān)視系統(tǒng)的基本功能,實(shí)現(xiàn)了嵌入式視頻監(jiān)視系統(tǒng)與IPv6技術(shù)的結(jié)合。此設(shè)計(jì)方案具有開發(fā)周期短、成本低、圖像質(zhì)量好的特點(diǎn),具有廣闊的市場(chǎng)前景。