一種嵌入式視頻記錄系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
20世紀(jì)90年代以來數(shù)字多媒體技術(shù)取得了飛速的發(fā)展和廣泛的應(yīng)用,超大規(guī)模集成電路及專用視頻壓縮處理芯片隨之迅速發(fā)展,同時(shí)隨著半導(dǎo)體存儲(chǔ)技術(shù)的發(fā)展,半導(dǎo)體存儲(chǔ)器的容量也越來越大,這為研制數(shù)字化的音視頻記錄系統(tǒng)提供了有力的技術(shù)基礎(chǔ)。同時(shí)數(shù)字化的記錄方法將視頻數(shù)據(jù)經(jīng)過壓縮記錄在大容量的半導(dǎo)體存儲(chǔ)器上,能有效消除噪聲、加快拷貝和復(fù)制速度,快速回放和查找,同時(shí)還可以通過計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行傳送,與傳統(tǒng)的磁帶式記錄系統(tǒng)相比有著巨大的優(yōu)勢?;诖?,作者設(shè)計(jì)實(shí)現(xiàn)了一種基于嵌入式控制模塊DIMM-PC/520IU和專用視頻處理芯片SZ1510硬件平臺的MPEG-1編碼標(biāo)準(zhǔn)的數(shù)字視頻記錄系統(tǒng),該系統(tǒng)集成度高、功耗低、體積小、成本低,適合大量的各類視頻監(jiān)控和記錄應(yīng)用。
1 系統(tǒng)框架及原理說明
本系統(tǒng)選用的主要模塊是主控單元DIMM-PC/520IU[1]和視頻壓縮芯片SZ1510,周圍外部設(shè)備有視頻解碼芯片SAA7113H,音頻分頻器MK2703,音頻解碼芯片AK4550, RAM芯片,ROM芯片,IDE硬盤和電源模塊。系統(tǒng)總體框圖如圖1所示。系統(tǒng)加電后[2],主控單元DIMM-PC調(diào)用程序,對視頻壓縮芯片SZ1510和視頻解碼芯片SAA7113H、音頻解碼芯片AK4550進(jìn)行初始化配置;模擬視頻信號傳送給視頻解碼芯片SAA7113H進(jìn)行解碼,生成CCIR視頻信號,AK4550采集輸入的模擬音頻信號,生成PCM數(shù)字音頻流,分別送入壓縮編碼芯片SZ1510,壓縮成MPEG-1格式的視頻流,主控單元DINMM-PC將其以文件形式存儲(chǔ)到IDE硬盤。為解決音視頻同步問題,音視頻同步采用視頻源的同步信號鎖定音頻編碼系統(tǒng)時(shí)鐘的方式。芯片SAA7713的LLC管腳輸出27MHz時(shí)鐘,經(jīng)分頻器驅(qū)動(dòng),一路未分頻信號校準(zhǔn)SZ1510的系統(tǒng)時(shí)鐘,另一路經(jīng)過分頻器MK2703作為音頻編碼輸出系統(tǒng)時(shí)鐘。該27MHz信號在SZ1510內(nèi)部倍頻至54MHz對輸入的音視頻數(shù)據(jù)進(jìn)行同步。
2 MPEG-1壓縮算法的基本原理
MPEG-1視頻壓縮技術(shù)是針對運(yùn)動(dòng)圖像的數(shù)據(jù)壓縮技術(shù)[3]。為了提高壓縮比,幀內(nèi)圖像數(shù)據(jù)壓縮和幀間數(shù)據(jù)壓縮技術(shù)必須同時(shí)使用。幀內(nèi)算法與JPEG壓縮算法大致相同,采用基于DCT的變換編碼技術(shù),用于減少空域冗余信息。幀間壓縮算法,采用預(yù)測法和插補(bǔ)法,預(yù)測法有因果預(yù)測器(純的預(yù)測編碼),和非因果預(yù)測即插補(bǔ)編碼。預(yù)測誤差可再通過DCT變換編碼處理,進(jìn)一步壓縮。幀間編碼技術(shù)可減少時(shí)間軸方向的冗余信息。從而在上述幾個(gè)方面達(dá)到了對圖像冗余信息的高效壓縮。MPEG-1視頻壓縮的基本原理如圖2所示。
圖2 MPEG-1壓縮的基本原理框圖
3 硬件設(shè)計(jì)
3.1 控制模塊設(shè)計(jì)
系統(tǒng)控制模塊我們選擇了Kontron公司DIMM-PC/520IU,采用AM5x86TM CPU,具有16KB 片內(nèi)一級緩存,芯片組是ElanTM SC520集成,運(yùn)行頻率133MHz,工作電壓為5V電壓,支持DOS、Linux、WinCE、Vxworks等多種操作系統(tǒng),存儲(chǔ)溫度為-40℃~80℃,工作溫度0℃~60℃。DIMM-PC的所有模板使用了一種通用的DIMM-144內(nèi)存插座作為連接件,采用144線的金手指連接方式,其CPU模板和擴(kuò)展模板的插座略有區(qū)別,以防插錯(cuò),幾個(gè)擴(kuò)展模板間沒有區(qū)別,可以隨便接插就象ISA插槽一樣。CPU模板144接線分為幾類ISA總線信號SD[0:15]、SA[0:19]數(shù)據(jù)地址信號;IOW、IOR、SMEMR等各種讀寫控制信號,OSC、SYSCLK、DRQ、DACK等特別功能信號,包含了標(biāo)準(zhǔn)ISA總線上的所有數(shù)據(jù)信號。
3.2 視頻音頻編解碼模塊設(shè)計(jì)
視頻解碼器采用Philips公司的SAA7113H,是一種從模擬到數(shù)字轉(zhuǎn)換的9位視頻輸入處理器(VIP)[4],它是能與MPEG-1編碼芯片SZ1510實(shí)現(xiàn)無縫接口的視頻解碼器之一。它由兩通道的模擬預(yù)處理電路組成,包括源選擇、自動(dòng)鉗位電路與ADC、自動(dòng)增益控制、時(shí)鐘產(chǎn)生電路、數(shù)字多標(biāo)準(zhǔn)解碼器、亮度、對比度、飽和度控制電路和一個(gè)色度空間矩陣。解碼器是基于行鎖定時(shí)鐘解碼原理,能解碼PAL和NTSC的色度信號為CCIR-601的顏色分量值。SAA7113H對輸入的視頻進(jìn)行采樣,解碼后生成8 bit/像素的CCIR-601數(shù)字視頻流,其電路由I2C總線控制[5]。音頻解碼器采用AK4550,它對模擬音頻進(jìn)行高信噪比16bit數(shù)字采樣,生成PCM數(shù)字音頻流。[!--empirenews.page--]
壓縮編碼采用Zapex公司的視頻壓縮芯片SZ1510,它是一個(gè)實(shí)時(shí)MPEG-1和運(yùn)動(dòng)JPEG圖像編碼器,內(nèi)置TI的TMS320C54XDSP,協(xié)調(diào)完成芯片功能,性能優(yōu)異。工作頻率外部為27MHZ,內(nèi)部(邏輯)為81MHZ,可配置到94.5MHZ。內(nèi)核工作電壓1.8V,I/O口可以驅(qū)動(dòng)3.3V。采用0.18UM CMOS4LM技術(shù)設(shè)計(jì),消耗功率僅為0.2W;144IQFP封裝。整個(gè)芯片內(nèi)部可以分為6個(gè)非常靈活的功能模塊,分別是視頻接口,視頻編碼器核心,DSP輔助系統(tǒng),存儲(chǔ)器接口,主設(shè)備及串行接口和DMA控制器,相互連接成為一個(gè)大的可變的模塊化整體。
4 軟件設(shè)計(jì)
由于DOS不支持視頻壓縮,因而本系統(tǒng)采用Windows操作系統(tǒng)及VC++進(jìn)行開發(fā)。首先在普通PC機(jī)上設(shè)計(jì)程序,再利用U盤將設(shè)計(jì)程序在DIMM-PC上進(jìn)行調(diào)試。在系統(tǒng)啟動(dòng)時(shí)[6],主控計(jì)算機(jī)首先對壓縮卡進(jìn)行初始化,當(dāng)設(shè)置好MPEG-1壓縮格式及數(shù)據(jù)速率后,壓縮卡開始工作,并在主控計(jì)算機(jī)的控制下將壓縮后的圖像數(shù)據(jù)寫入硬盤。在工作過程中,主控計(jì)算機(jī)還將不斷監(jiān)視相關(guān)信號,并在圖像中加入相應(yīng)的標(biāo)志,直到接收到關(guān)機(jī)信號,系統(tǒng)自動(dòng)結(jié)束壓縮卡的工作,并關(guān)閉主機(jī)。
4.1 系統(tǒng)自檢
系統(tǒng)啟動(dòng)后,將依據(jù)硬件的器件號與廠商號找到壓縮卡,得到總線器件號,由此得到系統(tǒng)BIOS分配給器件的地址。壓縮卡自檢信息包括卡硬件自檢和視頻信號源自檢,即壓縮卡有無故障以及在壓縮卡無故障的情況下輸入有無視頻源。如果自檢到該卡無視頻信號源則不對該卡的輸出數(shù)據(jù)進(jìn)行存儲(chǔ)。如果壓縮卡有故障或未插壓縮卡,系統(tǒng)BIOS就不會(huì)為壓縮卡分配總線器件號,依據(jù)事先正常工作條件下得到的總線器件號就可以判斷哪一塊卡出現(xiàn)故障或該卡沒有插入正確。自檢信息在地面通電檢查時(shí)通過串口送至地面檢測設(shè)備,以便故障定位和維修。
4.2 硬件初始化
4.2.1 SZ1510的初始化
SZ1510共有128個(gè)寄存器,每個(gè)寄存器有一個(gè)索引號。但外界對這些寄存器的訪問都是通過IOAR(I/O Adress Register)和IODR(I/O Data Register)來完成的。如果向SZ1510某個(gè)寄存器寫數(shù)據(jù)。則首先將這個(gè)寄存器的索引號寫入IOAR,然后將要寫的數(shù)據(jù)寫入IODR,則SZ1510將自動(dòng)把數(shù)據(jù)送到某個(gè)寄存器。
SZ1510的初始化如下:
(1) 上電后,主機(jī)向SZ1510中斷使能寄存器寫入0x40使能Ready中斷。
(2) 主機(jī)等候SZ1510的Ready中斷。
(3) 等到Ready中斷后,主機(jī)清除該中斷并向SZ1510的0x6E寄存器寫入0x0A,配置它內(nèi)部的DSP時(shí)鐘為94.5MHZ。
(4) 主機(jī)向0x013寄存器寫入0x55,對SZ1510進(jìn)行軟復(fù)位。
(5) 主機(jī)向中斷使能寄存器0x0C寫入0x40使能Ready中斷。
(6) 主機(jī)等候RDY中斷。
(7) 等到Ready中斷,則進(jìn)行SAA7113的初始化。
(8) SZ1510進(jìn)行軟復(fù)位,即向0x0B寄存器寫入0x55,0x0C寄存器寫0x40。
(9) 等待Ready中斷,等到則進(jìn)行SZ1510的內(nèi)部DSP二進(jìn)制代碼裝載。
(10) 進(jìn)行SZ1510內(nèi)部視頻壓縮核的二進(jìn)制代碼裝載。
4.2.2 SAA7113的初始化
SAA7113初始化的步驟如下:
(1) 裝載0x280-0x2BF 64個(gè)塊共16k的二進(jìn)制代碼。
(2) SAA7113寄存器配置,流程如下:
·I2C任務(wù)的初始化:分別向寄存器0x2E寫0x01,0x0C寫0x80,0x11寫0x05,0x08寫0x04,0x0C寫0x80,0x08寫0xC2
·I2C寫操作:向0x42寄存器寫SAA7113設(shè)備號0x4A,0x43寄存器寫要寫的數(shù)據(jù)索引號(又叫子地址),0x44寄存器寫本次I2C寫操作要寫入數(shù)據(jù)的長度(一次最多能寫11個(gè)數(shù)據(jù))。
·向0x08命令寄存器寫0xC0,等待DSP中斷。
·重復(fù)以上的操作直到SAA7113的寄存器配置完畢。
4.2.3 SZ1510二進(jìn)制代碼的裝載
SZ1510用內(nèi)部的程序空間來裝載二進(jìn)制代碼。這段空間是按塊(Blank)為單位,每塊的大小是256字節(jié)。
用于SAA7113的程序空間是0x280-0x2BF共64塊。所以共有16k字節(jié)二進(jìn)制代碼要裝載。用于DSP的程序空間塊是0x10F-0x113,0x13A-0x13B,0x280-0x2BF共71個(gè)塊,約18k字節(jié)代碼要裝載。其中0x280-0x2BF與SAA7113相重合,所以SAA7113的二進(jìn)制代碼裝載要先于SZ1510的DSP裝載,且在SAA7113的二進(jìn)制代碼裝載后要進(jìn)行SZ1510的復(fù)位。否則SAA7113的代碼裝載將不起作用。
用于視頻編碼核的二進(jìn)制代碼的裝載空間為0x000-0x004,0x00c-0x00c六個(gè)塊,共1.5k字節(jié)代碼。
4.2.4 SZ1510視頻數(shù)據(jù)的獲取
SZ1510內(nèi)部有一個(gè)256字節(jié)的FIFO。一旦這個(gè)FIFO達(dá)到門限時(shí),即產(chǎn)生一個(gè)FIFO Ready中斷,通知主機(jī)讀取FIFO中的數(shù)據(jù)(通過256次讀Data_out寄存器來完成)。所以讀取FIFO中視頻數(shù)據(jù)要放到中斷的下部去完成。
5 結(jié)論
該視頻記錄系統(tǒng)已經(jīng)完成了測試工作,已在某型飛機(jī)上投入使用,作為某型飛機(jī)的機(jī)載視頻記錄系統(tǒng),運(yùn)行穩(wěn)定可靠,取得較好的效果。項(xiàng)目經(jīng)濟(jì)效益(200萬元)??砷L時(shí)間實(shí)時(shí)記錄采集到的音視頻信號,采用1.5G硬盤,可連續(xù)錄制3小時(shí),隨著半導(dǎo)體存儲(chǔ)器容量的不斷增長,系統(tǒng)的記錄時(shí)間還將進(jìn)一步延長。正常工作情況下,程序啟動(dòng)首先檢查磁盤空間,刪除最早記錄的文件,文件存儲(chǔ)方法采用盤滿循環(huán)存儲(chǔ),當(dāng)剩余空間不滿足條件時(shí),將覆蓋最早的文件。
作者的創(chuàng)新:
設(shè)計(jì)并實(shí)現(xiàn)了基于嵌入式控制模塊DIMM-PC/520IU和專用視頻處理芯片SZ1510硬件平臺的MPEG-1視頻記錄系統(tǒng),實(shí)現(xiàn)了系統(tǒng)的高度集成。對壓縮卡、控制單元和電源部分等分別設(shè)計(jì)成模塊,統(tǒng)一插裝在底板上并鎖緊,可以方便地拔插和維修。本系統(tǒng)結(jié)構(gòu)緊湊,使用方便,性能出色,耗能低。