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