數字視頻壓縮的大容量記錄系統設計
本文引用地址:http://dyxdggzs.com/article/21248.htm
隨著(zhù)計算機技術(shù)、多媒體和數據通信技術(shù)的迅速發(fā)展,數字視頻的應用越來(lái)越廣,如視頻監控、視頻會(huì )議和移動(dòng)電視等。數字視頻數據量巨大,不利于傳輸和存儲,使其應用受到很大限制。為解決視頻數據的存儲和傳輸問(wèn)題,唯一的途徑就是對視頻數據進(jìn)行壓縮。常見(jiàn)的視頻壓縮方法有mpeg系列和h.26x系列??紤]到壓縮技術(shù)的成熟度、成本和主要用途,采用mpeg-1作為壓縮標準,設計出基于arm處理器的嵌入式數字視頻記錄系統。該系統適用于視頻監控、視頻會(huì )議等多種應用場(chǎng)合,同時(shí)還可安裝在飛行器上,用于實(shí)時(shí)記錄飛行器的飛行及訓練過(guò)程中的各種信息。
目前,市場(chǎng)上有大量的基于pci總線(xiàn)的mpeg-1視頻壓縮卡和pc機構架的網(wǎng)絡(luò )視頻服務(wù)器。與之相比,我們設計的視頻記錄系統具有成本低、體積小和功耗低等優(yōu)勢。
1 系統工作原理
視頻壓縮記錄系統的設計著(zhù)眼于控制器的嵌入化和整體的便攜性。本系統主要由3部分組成,即壓縮部分、控制部分和存儲部分。視頻記錄系統的結構組成如圖1所示。其中壓縮部分由mpeg1音視頻壓縮電路組成,主要功能是實(shí)現對輸入的音視頻信號解碼、數字化和壓縮編碼,產(chǎn)生mpeg1程序流和傳輸流;控制部分由arm最小系統組成,用于實(shí)現對整個(gè)系統的控制、數據流管理和ide接口控制;存儲部分由大容量硬盤(pán)或cf存儲卡組成,實(shí)現對壓縮數據的實(shí)時(shí)長(cháng)時(shí)間記錄。
系統啟動(dòng)時(shí),arm處理器對整個(gè)壓縮系統進(jìn)行初始化,首先通過(guò)host接口對sz1510內部寄存器進(jìn)行配置,并使用sz1510的串行接口模擬i2c總線(xiàn)對視頻解碼器saa7113h進(jìn)行初始化。當設置好mpeg-1的壓縮格式及數據速率后,系統開(kāi)始正常工作,音視頻信號經(jīng)ak4550音頻處理芯片和saa7113視頻處理芯片進(jìn)行a/d轉換,輸出8位的pcm格式數字音頻信號和4∶2∶0的ycbcr數字視頻信號,傳入sz1510音視頻壓縮采集芯片進(jìn)行處理,將數字音視頻數據轉化為符合mpeg-1格式的混合影視文件,最后mpeg1數據流在arm處理器的控制下通過(guò)ide接口寫(xiě)入硬盤(pán)或cf卡。在工作時(shí),arm還將不斷監視相關(guān)信號,并在圖像中加入相應的標志,直到接收到關(guān)機信號,系統自動(dòng)結束壓縮工作。
2 硬件電路設計
由于mpeg-1壓縮算法需要很大的運算量,用軟件實(shí)時(shí)完成比較困難,所以在本系統中主要依靠專(zhuān)用芯片實(shí)現對視頻信號的高效壓縮。目前,常用的mpeg-1壓縮芯片有vw2010、w99200f、wis 7007sb等。本設計采用的是zapex公司的sz1510 mpeg-1 a/v編碼芯片,自身完成音視頻的同步編碼,16位host接口易于與多種微處理器連接。另外,該芯片還可以直接控制視頻解碼芯片saa7113h、音頻解碼芯片ak4550vt和sdram(km416s1020ct-g10)。cpu采用philips公司的arm7tdmis內核微控制器lpc2214,通過(guò)其i/o端口控制ide接口硬盤(pán)或cf卡的數據讀取和存儲。

圖1 數字視頻記錄系統結構框圖
2.1 mpeg-1壓縮電路設計
sz1510是一個(gè) mpeg-1和運動(dòng)jpeg圖像編碼器。其內置的視頻壓縮核經(jīng)過(guò)優(yōu)化,適合高效、實(shí)時(shí)的mpeg1數字圖像壓縮,具有功能多、功耗低、溫度范圍寬等特點(diǎn);同時(shí)整合了ti公司的tms320c54x高性能dsp內核,可依據mpeg-1標準對音視頻同步編碼。
1) 時(shí)鐘同步電路設置
sz1510是一個(gè)復雜的視頻壓縮小系統,要完成音視頻的同步,mpeg-1視頻的壓縮以及系統內部數據流的復合、調度;時(shí)鐘關(guān)系較為復雜,是系統設計的一個(gè)難點(diǎn)。時(shí)鐘配置可分為主時(shí)鐘、音視頻時(shí)鐘、視頻壓縮核時(shí)鐘、dsp核時(shí)鐘以及擴展的i2s接口時(shí)鐘幾部分。其功能和關(guān)系為:
◆ 主時(shí)鐘。sz1510的主時(shí)鐘為穩定的27 mhz(clk)。該時(shí)鐘在芯片內部被pll1倍頻為81 mhz,驅動(dòng)sz1510的視頻壓縮核及sdram。pll2連到dsp內核,通過(guò)軟件配置使其工作在94.5
mhz,用于音頻壓縮和系統數據流復合。
◆ 音視頻時(shí)鐘。視頻時(shí)鐘來(lái)自視頻解碼器,典型值為27 mhz。音頻時(shí)鐘由視頻時(shí)鐘分頻產(chǎn)生。
◆ i2s接口時(shí)鐘。本系統中在音視頻同步設計中使用i2s接口的從模式,由sz1510產(chǎn)生串行時(shí)鐘和幀同步信號。
2) 主機(host)端口設置
sz1510作為從設備,受主機控制,其host接口是sz1510的控制和數據交換接口。sz1510可以選擇復用或不復用的intel和motorola總線(xiàn)類(lèi)型;不復用總線(xiàn),又可以分為8位和16位。具體的主機端口由hconfig[1∶0]引腳和sysconfig[3]寄存器配置。在本系統設計中,通過(guò)跳線(xiàn)把hconfig0拉低,hconfig1拉高,使其工作在intel 8051類(lèi)型的非復用的16位數據總線(xiàn)模式下。
2.2 lpc2214微處理器電路設計
lpc2214是一款基于32位arm7tdmi-s,支持實(shí)時(shí)仿真和跟蹤的cpu;帶有16 kb片內sram、256 kb嵌入的高速flash存儲器、128位寬度的存儲器接口和獨特的加速結構,使32位代碼能夠在最大時(shí)鐘速率60 mhz下運行。芯片內部集成了多種串行接口。lpc2214與sz1510的接口和控制關(guān)系如圖2所示。在設計中,需要注意的是保持sz1510讀寫(xiě)時(shí)序與內部時(shí)鐘的同步。通過(guò)cs3選通sz1510實(shí)現控制字和數據的交換。

圖2 lpc2214與sz1510的接口關(guān)系
2.3 ide接口設計
由于lpc2214芯片不具備ide接口,因此在本系統中使用通用i/o 口,模擬產(chǎn)生ata 設備的讀寫(xiě)時(shí)序,實(shí)現對ide硬盤(pán)的可靠讀寫(xiě)操作。圖3為lpc2214與ide硬盤(pán)連接圖。其中,p2.16~p2.31作為數據線(xiàn),p1.16~p1.20作為地址和選通信號,p0.17和p0.20為設備的復位和狀態(tài)請求信號,用p0.21和p0.19實(shí)現讀寫(xiě)控制。

圖3 lpc2214與ide硬盤(pán)連接圖 3 系統軟件設計
系統軟件由主程序和若干個(gè)子程序組成,工作流程如圖4所示。主要的子模塊有:sz1510 的設置與控制、ide接口驅動(dòng)和文件系統的管理。

圖4 系統工作流程 3.1 sz1510的設置與控制
sz1510共有128個(gè)寄存器,每個(gè)寄存器都有一個(gè)索引號。當sz1510工作在非復用總線(xiàn)模式下時(shí),外界對寄存器的訪(fǎng)問(wèn)都是通過(guò)ioar和iodr來(lái)完成的。訪(fǎng)問(wèn)時(shí)首先將這個(gè)寄存器的索引號寫(xiě)入ioar,然后將要寫(xiě)的數據寫(xiě)入iodr。
sz1510設置與控制過(guò)程如下:
① 向中斷使能寄存器寫(xiě)入0x40,以使能ready中斷;
② 等待sz1510的ready中斷;
③ 等到ready中斷后,向sz1510的0x1e寄存器寫(xiě)入0x0a,設置它內部的dsp時(shí)鐘為94.5 mhz;
④ 向0x013寄存器寫(xiě)入0x55,對sz1510進(jìn)行軟復位;
⑤ 向中斷使能寄存器0x0c寫(xiě)入0x40,以使能ready中斷;
⑥ 等候rdy中斷;
⑦ 待ready中斷后對saa7113進(jìn)行初始化;
⑧ 對sz1510進(jìn)行軟復位,即向0x0b寄存器寫(xiě)入0x55,同時(shí)向0x0c寄存器寫(xiě)入0x40;
⑨ 等待ready中斷,等到后向sz1510的內部dsp裝載二進(jìn)制代碼;
⑩ 進(jìn)行sz1510內部視頻壓縮核的二進(jìn)制代碼裝載,具體裝載步驟如下:
◆ 向0x08寄存器寫(xiě)0x04,發(fā)送開(kāi)始命令;
◆ 等待ready中斷,清除ready中斷;
◆ 向data in寄存器0x01寫(xiě)256個(gè)字節;
◆ 等待end of data中斷,然后清除中斷;
◆ 查程序空間的代碼是否裝載完畢,如沒(méi)有,則繼續裝載。
3.2 ide接口驅動(dòng)
本系統采用lpc2214的通用可編程i/o口模擬ata設備的讀寫(xiě)時(shí)序,實(shí)現對硬盤(pán)的讀寫(xiě)。這里給出模擬寫(xiě)ata 設備寄存器的步驟(讀ata設備寄存器的步驟類(lèi)似):
① 關(guān)系統中斷,預防在寫(xiě)寄存器操作中產(chǎn)生中斷;
② 設置gpio 模擬ata 接口數據的引腳為輸出狀態(tài),準備輸出數據到設備數據線(xiàn);
③ 設置ata 設備寄存器的相應地址;
④ 設置gpio 模擬ata 接口數據的引腳電平為要寫(xiě)到設備的值;
⑤ 使寫(xiě)ata 設備寄存器信號為低電平;
⑥ 使寫(xiě)ata 設備寄存器信號為高電平;
⑦ 取消ata 設備寄存器地址的選擇;
⑧ 設置gpio 模擬ata 接口的數據總線(xiàn)引腳為輸入狀態(tài),釋放總線(xiàn);
⑨ 開(kāi)系統中斷。
3.3 文件系統管理
本設計中采用的是面向嵌入式系統的小型文件系統zlg/fs [1],主要用于將數據存儲為標準的文件格式和對整個(gè)文件系統的管理。同時(shí),為了便于音視頻的檢索和查詢(xún),以及防止非法斷電造成大量未保存數據的丟失,在系統中設置了每間隔一定的時(shí)間(30 min)將壓縮數據存儲在以系統時(shí)間命名的新文件里。
4 結論
經(jīng)測試,系統可實(shí)時(shí)長(cháng)時(shí)間記錄外部的音視頻信號,記錄的壓縮數據流符合mpeg-1圖像壓縮國際標準。在設計中,采用的壓縮視頻流速率為1.5 mbps,1小時(shí)的視頻數據量為(1.5 mbps/8)×3 600=675 mb,對于一個(gè)40 gb的硬盤(pán),系統連續記錄時(shí)間接近60小時(shí)。系統體積小、功耗低,便于移動(dòng)環(huán)境下對音視頻數據的實(shí)時(shí)長(cháng)時(shí)間壓縮記錄。
評論