數(shù)字視頻壓縮的大容量記錄系統(tǒng)設(shè)計
引言
隨著計算機技術(shù)、多媒體和數(shù)據(jù)通信技術(shù)的迅速發(fā)展,數(shù)字視頻的應(yīng)用越來越廣,如視頻監(jiān)控、視頻會議和移動電視等。數(shù)字視頻數(shù)據(jù)量巨大,不利于傳輸和存儲,使其應(yīng)用受到很大限制。為解決視頻數(shù)據(jù)的存儲和傳輸問題,唯一的途徑就是對視頻數(shù)據(jù)進行壓縮。常見的視頻壓縮方法有MPEG系列和H.26x系列??紤]到壓縮技術(shù)的成熟度、成本和主要用途,采用MPEG-1作為壓縮標準,設(shè)計出基于ARM處理器的嵌入式數(shù)字視頻記錄系統(tǒng)。該系統(tǒng)適用于視頻監(jiān)控、視頻會議等多種應(yīng)用場合,同時還可安裝在飛行器上,用于實時記錄飛行器的飛行及訓(xùn)練過程中的各種信息。
目前,市場上有大量的基于PCI總線的MPEG-1視頻壓縮卡和PC機構(gòu)架的網(wǎng)絡(luò)視頻服務(wù)器。與之相比,我們設(shè)計的視頻記錄系統(tǒng)具有成本低、體積小和功耗低等優(yōu)勢。
1 系統(tǒng)工作原理
視頻壓縮記錄系統(tǒng)的設(shè)計著眼于控制器的嵌入化和整體的便攜性。本系統(tǒng)主要由3部分組成,即壓縮部分、控制部分和存儲部分。視頻記錄系統(tǒng)的結(jié)構(gòu)組成如圖1所示。其中壓縮部分由MPEG1音視頻壓縮電路組成,主要功能是實現(xiàn)對輸入的音視頻信號解碼、數(shù)字化和壓縮編碼,產(chǎn)生MPEG1程序流和傳輸流;控制部分由ARM最小系統(tǒng)組成,用于實現(xiàn)對整個系統(tǒng)的控制、數(shù)據(jù)流管理和IDE接口控制;存儲部分由大容量硬盤或CF存儲卡組成,實現(xiàn)對壓縮數(shù)據(jù)的實時長時間記錄。
系統(tǒng)啟動時,ARM處理器對整個壓縮系統(tǒng)進行初始化,首先通過HOST接口對SZ1510內(nèi)部寄存器進行配置,并使用SZ1510的串行接口模擬I2C總線對視頻解碼器SAA7113H進行初始化。當設(shè)置好MPEG-1的壓縮格式及數(shù)據(jù)速率后,系統(tǒng)開始正常工作,音視頻信號經(jīng)AK4550音頻處理芯片和SAA7113視頻處理芯片進行A/D轉(zhuǎn)換,輸出8位的PCM格式數(shù)字音頻信號和4∶2∶0的YCbCr數(shù)字視頻信號,傳入SZ1510音視頻壓縮采集芯片進行處理,將數(shù)字音視頻數(shù)據(jù)轉(zhuǎn)化為符合MPEG-1格式的混合影視文件,最后MPEG1數(shù)據(jù)流在ARM處理器的控制下通過IDE接口寫入硬盤或CF卡。在工作時,ARM還將不斷監(jiān)視相關(guān)信號,并在圖像中加入相應(yīng)的標志,直到接收到關(guān)機信號,系統(tǒng)自動結(jié)束壓縮工作。
2 硬件電路設(shè)計
由于MPEG-1壓縮算法需要很大的運算量,用軟件實時完成比較困難,所以在本系統(tǒng)中主要依靠專用芯片實現(xiàn)對視頻信號的高效壓縮。目前,常用的MPEG-1壓縮芯片有VW2010、W99200F、WIS 7007SB等。本設(shè)計采用的是Zapex公司的SZ1510 MPEG-1 A/V編碼芯片,自身完成音視頻的同步編碼,16位HOST接口易于與多種微處理器連接。另外,該芯片還可以直接控制視頻解碼芯片SAA7113H、音頻解碼芯片AK4550VT和SDRAM(KM416S1020CT-G10)。CPU采用Philips公司的ARM7TDMIS內(nèi)核微控制器LPC2214,通過其I/O端口控制IDE接口硬盤或CF卡的數(shù)據(jù)讀取和存儲。
圖1 數(shù)字視頻記錄系統(tǒng)結(jié)構(gòu)框圖
2.1 MPEG-1壓縮電路設(shè)計
SZ1510是一個 MPEG-1和運動JPEG圖像編碼器。其內(nèi)置的視頻壓縮核經(jīng)過優(yōu)化,適合高效、實時的MPEG1數(shù)字圖像壓縮,具有功能多、功耗低、溫度范圍寬等特點;同時整合了TI公司的TMS320C54X高性能DSP內(nèi)核,可依據(jù)MPEG-1標準對音視頻同步編碼。
(1) 時鐘同步電路設(shè)置
SZ1510是一個復(fù)雜的視頻壓縮小系統(tǒng),要完成音視頻的同步,MPEG-1視頻的壓縮以及系統(tǒng)內(nèi)部數(shù)據(jù)流的復(fù)合、調(diào)度;時鐘關(guān)系較為復(fù)雜,是系統(tǒng)設(shè)計的一個難點。時鐘配置可分為主時鐘、音視頻時鐘、視頻壓縮核時鐘、DSP核時鐘以及擴展的I2S接口時鐘幾部分。其功能和關(guān)系為:
◆ 主時鐘。SZ1510的主時鐘為穩(wěn)定的27 MHz(CLK)。該時鐘在芯片內(nèi)部被PLL1倍頻為81 MHz,驅(qū)動SZ1510的視頻壓縮核及SDRAM。PLL2連到DSP內(nèi)核,通過軟件配置使其工作在94.5 MHz,用于音頻壓縮和系統(tǒng)數(shù)據(jù)流復(fù)合。
◆ 音視頻時鐘。視頻時鐘來自視頻解碼器,典型值為27 MHz。音頻時鐘由視頻時鐘分頻產(chǎn)生。
◆ I2S接口時鐘。本系統(tǒng)中在音視頻同步設(shè)計中使用I2S接口的從模式,由SZ1510產(chǎn)生串行時鐘和幀同步信號。
(2) 主機(HOST)端口設(shè)置
SZ1510作為從設(shè)備,受主機控制,其HOST接口是SZ1510的控制和數(shù)據(jù)交換接口。SZ1510可以選擇復(fù)用或不復(fù)用的Intel和Motorola總線類型;不復(fù)用總線,又可以分為8位和16位。具體的主機端口由HCONFIG[1∶0]引腳和SysConfig[3]寄存器配置。在本系統(tǒng)設(shè)計中,通過跳線把HCONFIG0拉低,HCONFIG1拉高,使其工作在Intel 8051類型的非復(fù)用的16位數(shù)據(jù)總線模式下。
2.2 LPC2214微處理器電路設(shè)計
LPC2214是一款基于32位ARM7TDMI-S,支持實時仿真和跟蹤的CPU;帶有16 KB片內(nèi)SRAM、256 KB嵌入的高速Flash存儲器、128位寬度的存儲器接口和獨特的加速結(jié)構(gòu),使32位代碼能夠在最大時鐘速率60 MHz下運行。芯片內(nèi)部集成了多種串行接口。LPC2214與SZ1510的接口和控制關(guān)系如圖2所示。在設(shè)計中,需要注意的是保持SZ1510讀寫時序與內(nèi)部時鐘的同步。通過CS3選通SZ1510實現(xiàn)控制字和數(shù)據(jù)的交換。
圖2 LPC2214與SZ1510的接口關(guān)系
2.3 IDE接口設(shè)計
由于LPC2214芯片不具備IDE接口,因此在本系統(tǒng)中使用通用I/O 口,模擬產(chǎn)生ATA 設(shè)備的讀寫時序,實現(xiàn)對IDE硬盤的可靠讀寫操作。圖3為LPC2214與IDE硬盤連接圖。其中,P2.16~P2.31作為數(shù)據(jù)線,P1.16~P1.20作為地址和選通信號,P0.17和P0.20為設(shè)備的復(fù)位和狀態(tài)請求信號,用P0.21和P0.19實現(xiàn)讀寫控制。
圖3 LPC2214與IDE硬盤連接圖
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件由主程序和若干個子程序組成,工作流程如圖4所示。主要的子模塊有:SZ1510 的設(shè)置與控制、IDE接口驅(qū)動和文件系統(tǒng)的管理。
圖4 系統(tǒng)工作流程
3.1 SZ1510的設(shè)置與控制
SZ1510共有128個寄存器,每個寄存器都有一個索引號。當SZ1510工作在非復(fù)用總線模式下時,外界對寄存器的訪問都是通過IOAR和IODR來完成的。訪問時首先將這個寄存器的索引號寫入IOAR,然后將要寫的數(shù)據(jù)寫入IODR。
SZ1510設(shè)置與控制過程如下:
?、?向中斷使能寄存器寫入0x40,以使能Ready中斷;
?、?等待SZ1510的Ready中斷;
③ 等到Ready中斷后,向SZ1510的0x1E寄存器寫入0x0A,設(shè)置它內(nèi)部的DSP時鐘為94.5 MHz;
?、?向0x013寄存器寫入0x55,對SZ1510進行軟復(fù)位;
?、?向中斷使能寄存器0x0C寫入0x40,以使能Ready中斷;
⑥ 等候RDY中斷;
⑦ 待Ready中斷后對SAA7113進行初始化;
⑧ 對SZ1510進行軟復(fù)位,即向0x0B寄存器寫入0x55,同時向0x0C寄存器寫入0x40;
?、?等待Ready中斷,等到后向SZ1510的內(nèi)部DSP裝載二進制代碼;
⑩ 進行SZ1510內(nèi)部視頻壓縮核的二進制代碼裝載,具體裝載步驟如下:
◆ 向0x08寄存器寫0x04,發(fā)送開始命令;
◆ 等待Ready中斷,清除Ready中斷;
◆ 向Data in寄存器0x01寫256個字節(jié);
◆ 等待End of Data中斷,然后清除中斷;
◆ 查程序空間的代碼是否裝載完畢,如沒有,則繼續(xù)裝載。
3.2 IDE接口驅(qū)動
本系統(tǒng)采用LPC2214的通用可編程I/O口模擬ATA設(shè)備的讀寫時序,實現(xiàn)對硬盤的讀寫。這里給出模擬寫ATA 設(shè)備寄存器的步驟(讀ATA設(shè)備寄存器的步驟類似):
?、?關(guān)系統(tǒng)中斷,預(yù)防在寫寄存器操作中產(chǎn)生中斷;
?、?設(shè)置GPIO 模擬ATA 接口數(shù)據(jù)的引腳為輸出狀態(tài),準備輸出數(shù)據(jù)到設(shè)備數(shù)據(jù)線;
?、?設(shè)置ATA 設(shè)備寄存器的相應(yīng)地址;
?、?設(shè)置GPIO 模擬ATA 接口數(shù)據(jù)的引腳電平為要寫到設(shè)備的值;
?、?使寫ATA 設(shè)備寄存器信號為低電平;
?、?使寫ATA 設(shè)備寄存器信號為高電平;
?、?取消ATA 設(shè)備寄存器地址的選擇;
?、?設(shè)置GPIO 模擬ATA 接口的數(shù)據(jù)總線引腳為輸入狀態(tài),釋放總線;
?、?開系統(tǒng)中斷。
3.3 文件系統(tǒng)管理
本設(shè)計中采用的是面向嵌入式系統(tǒng)的小型文件系統(tǒng)ZLG/FS [1],主要用于將數(shù)據(jù)存儲為標準的文件格式和對整個文件系統(tǒng)的管理。同時,為了便于音視頻的檢索和查詢,以及防止非法斷電造成大量未保存數(shù)據(jù)的丟失,在系統(tǒng)中設(shè)置了每間隔一定的時間(30 min)將壓縮數(shù)據(jù)存儲在以系統(tǒng)時間命名的新文件里。
4 結(jié)論
經(jīng)測試,系統(tǒng)可實時長時間記錄外部的音視頻信號,記錄的壓縮數(shù)據(jù)流符合MPEG-1圖像壓縮國際標準。在設(shè)計中,采用的壓縮視頻流速率為1.5 Mbps,1小時的視頻數(shù)據(jù)量為(1.5 Mbps/8)×3 600=675 MB,對于一個40 GB的硬盤,系統(tǒng)連續(xù)記錄時間接近60小時。系統(tǒng)體積小、功耗低,便于移動環(huán)境下對音視頻數(shù)據(jù)的實時長時間壓縮記錄。
參考文獻
[1] 周立功.ARM嵌入式系統(tǒng)軟件開發(fā)實例(一).北京:北京航空航天大學(xué)出版社,2005.
[2] 馬小虎,張明敏,嚴華明.多媒體數(shù)據(jù)壓縮標準及實現(xiàn).北京:清華大學(xué)出版社,1996.
[3] 劉偉峰.基于PCI總線的MPEG1壓縮卡軟硬件設(shè)計及實現(xiàn).電子技術(shù)應(yīng)用,2003(8): 2628.
[4] EMBLAZE electronics Corp.Z1510MPEG A/V Encoder Datasheet.