基于DSP的脫機(jī)視頻編/解碼系統(tǒng)
ADV611芯片是美國ANALOG DEVICES公司生產(chǎn)的一種利用小波算法對視頻圖像進(jìn)行實(shí)時(shí)壓縮/解壓縮處理的編/解碼芯片。該芯片不僅集成了視頻編/解碼算法,還提供了數(shù)據(jù)壓縮效果的實(shí)時(shí)調(diào)節(jié)手段,數(shù)據(jù)輸出速率可以靈活控制。本文介紹一種基于ADV611芯片、同時(shí)結(jié)合TI的DSP芯片TMS320C542實(shí)現(xiàn)的一種脫機(jī)視頻編/解碼系統(tǒng)。
在本脫機(jī)視頻圖像編/解碼系統(tǒng)中,DSP作為控制核心,一方面要管理ADV611、存儲(chǔ)器、外圍控制單片機(jī)和通信接口,另一方面要對ADV611的圖像壓縮效果進(jìn)行調(diào)節(jié),對數(shù)據(jù)速率實(shí)時(shí)控制。DSP如何能高效地完成這些控制任務(wù),是本視頻編/解碼系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。由于TMS320C542具有高速的運(yùn)算能力和豐富的接口資源,是一種集數(shù)據(jù)處理和通信功能于一體的高速微處理器,所以本系統(tǒng)的DSP選擇了TMS320C542。
1 系統(tǒng)總體結(jié)構(gòu)
圖1給出了系統(tǒng)總體結(jié)構(gòu)框圖。在圖1中,原始PAL制式(720×288@50幀/秒)的視頻信號(hào)經(jīng)過圖像采集端的視頻A/D轉(zhuǎn)化為CCIR656格式(8位27MHz)的數(shù)據(jù)流,再通過ADV611.A進(jìn)行小波壓縮編碼。DSP.A從ADV611.A中讀出圖像數(shù)據(jù)并且在數(shù)據(jù)存儲(chǔ)器中緩存,根據(jù)通信設(shè)備的速率,DSP.A通過通信串行接口將壓縮編碼的圖像數(shù)據(jù)通過用戶的通信設(shè)備發(fā)送到圖像回放端。圖像回放端的DSP.B從串行接口接收到數(shù)據(jù)后,先在存儲(chǔ)器中緩存,然后依據(jù)ADV611.B的數(shù)據(jù)申請,將壓縮視頻數(shù)據(jù)發(fā)送給ADV611.B解壓。ADV611.B恢復(fù)出的圖像數(shù)據(jù)仍以CCIR656的標(biāo)準(zhǔn)格式發(fā)送給視頻D/A轉(zhuǎn)換為視頻模擬信號(hào),最終由監(jiān)視器回放出來。
本脫機(jī)視頻編/解碼系統(tǒng)設(shè)計(jì)了在圖像回放遠(yuǎn)端的用戶對圖像采集前端的遠(yuǎn)程控制功能。在圖像回放端,用戶通過控制器將控制命令發(fā)送給單片機(jī)B,然后這些命令經(jīng)過DSP.B和通信設(shè)備發(fā)送到圖像采集前端的DSP.A。DSP.A將控制命令分為兩類。第一類是圖像亮度、對比度、色飽和度的調(diào)節(jié)命令和攝像機(jī)焦距、云臺(tái)運(yùn)動(dòng)的調(diào)節(jié)命令,DSP.A通知單片機(jī)A,最后由單片機(jī)A控制視頻A/D芯片和攝像機(jī)完成命令。另一類命令是調(diào)節(jié)圖像幀速率和小波圖像處理效果的命令,DSP.A直接設(shè)置ADV611.A的相關(guān)寄存器實(shí)現(xiàn)命令。
2 DSP與視頻小波編/解碼芯片ADV611
在本系統(tǒng)的圖像采集端和圖像回放端中,ADV611都是作為TMS320C542的I/O端口設(shè)備連接在DSP芯片的地址數(shù)據(jù)總線上。通過這個(gè)接口,DSP既可以讀寫ADV611的內(nèi)部控制寄存器,又可以向ADV611讀寫圖像壓縮數(shù)據(jù)。ADV611內(nèi)部的控制寄存器包含三類。第一類用于設(shè)置ADV611的工作狀態(tài),這些狀態(tài)包括圖像編碼狀態(tài)、圖像解碼狀態(tài)以及圖像處理制式等等。第二類寄存器能提供每幀圖像的統(tǒng)計(jì)信息,它們都是只讀寄存器,提供的統(tǒng)計(jì)信息包括亮度的最大值、最小值、總和以及每幀圖像的壓縮數(shù)據(jù)量等等。最后一類寄存器是數(shù)據(jù)編碼壓縮的控制寄存器,ADV611內(nèi)部的FIFO用于控制圖像壓縮數(shù)據(jù)的讀寫操作,并能給出FIFO全空、部分滿和全滿信號(hào)。
包括圖像壓縮數(shù)據(jù)訪問申請、每幀統(tǒng)計(jì)數(shù)據(jù)準(zhǔn)備好和數(shù)據(jù)流出錯(cuò)在內(nèi)的所有ADV611的處理申請信號(hào),共用一個(gè)中斷請求發(fā)給DSP。圖2給出了以圖像采集端為例的DSP.A響應(yīng)中斷后的處理流程。DSP.A首先讀取ADV611.A內(nèi)部的中斷標(biāo)志寄存器,進(jìn)一步分析中斷產(chǎn)生原因,再加以處理。因?yàn)樘幚韴D像壓縮數(shù)據(jù)的時(shí)間較長,為了防止在圖像數(shù)據(jù)處理期間ADV611.A新的處理申請被錯(cuò)過,所以在讀取編碼數(shù)據(jù)并寫入存儲(chǔ)器之后,DSP.A又讀取了一次ADV611中斷標(biāo)志寄存器。
DSP.A在主程序中計(jì)算采集端ADV611.A圖像壓縮編碼效果的控制參數(shù)。ADV611通過控制寄存器提供給用戶三種控制圖像效果和數(shù)據(jù)流量手段。第一種是設(shè)置量化系數(shù),即通過改變小波分解后各個(gè)不同頻帶數(shù)據(jù)的量化權(quán)重,達(dá)到數(shù)據(jù)壓縮目的。第二種壓縮手段是減幀,ADV611可以從50幀/秒減到2幀/秒。最后一種壓縮手段是品質(zhì)框控制,ADV611能夠在720×288的一幀圖像中再設(shè)置一個(gè)顯示區(qū),并將該區(qū)之外的圖像衰減,從而利用這種減小有效畫幅尺寸的方法壓縮數(shù)據(jù)。這個(gè)顯示區(qū)域大小的設(shè)定是通過調(diào)節(jié)ADV611內(nèi)部品質(zhì)框數(shù)據(jù)實(shí)現(xiàn)的。主程序中DSP.A將依據(jù)用戶的調(diào)節(jié)命令,計(jì)算修改ADV611.A中的控制寄存器參數(shù)。
[!--empirenews.page--]3 DSP與單片機(jī)
系統(tǒng)對視頻A/D、D/A、攝像機(jī)和用戶控制器的控制管理都是慢速的。DSP作為高速的微處理器,不適合浪費(fèi)大量的指令周期去處理這些慢速控制。而且TMS320C542也不具有靈活的控制I/O端口。所以本系統(tǒng)選擇了單片機(jī)來輔助TMS320C542完成低速控制。
TMS320C542提供了一個(gè)主控接口HPI[1],通過該接口簡便地實(shí)現(xiàn)了DSP與單片機(jī)的數(shù)據(jù)通信。例如,在圖像回放端,當(dāng)單片機(jī)B有了用戶控制命令時(shí),它通過HPI將命令數(shù)據(jù)填入DSP.B的指定數(shù)據(jù)區(qū),再發(fā)出HPI中斷申請來請求DSP.B處理。這個(gè)過程不會(huì)影響DSP.B正在執(zhí)行的程序任務(wù)。而當(dāng)圖像采集端的DSP.A有控制命令要傳給單片機(jī)A時(shí),它先將命令代碼數(shù)據(jù)寫入DSP內(nèi)部的指定數(shù)據(jù)區(qū),然后通過HPI接口的某一輸出信號(hào)引發(fā)單片機(jī)A的中斷,申請單片機(jī)A去處理。在單片機(jī)A的中斷中,單片機(jī)A通過HPI讀取DSP指定數(shù)據(jù)區(qū)中的命令數(shù)據(jù),而后執(zhí)行相應(yīng)的命令操作。
4 DSP與存儲(chǔ)器和通信接口
本系統(tǒng)的串行通信接口是利用TMS320C542的緩沖串口BSP[1]加上輔助的接口驅(qū)動(dòng)電路實(shí)現(xiàn)的。DSP在設(shè)定發(fā)送緩沖區(qū)和接收緩沖區(qū)后,BSP可以自動(dòng)發(fā)送和接收緩沖區(qū)中的數(shù)據(jù),這樣就提高了DSP的處理效率。由于本系統(tǒng)要適應(yīng)用戶所選擇的通信設(shè)備的傳輸速率,基于BSP的系統(tǒng)串行通信接口工作在被動(dòng)方式。
為了保證圖像數(shù)據(jù)在傳輸中不會(huì)發(fā)生數(shù)據(jù)讀空和數(shù)據(jù)阻塞,系統(tǒng)采用了乒乓緩沖和環(huán)形緩沖技術(shù)。以圖像采集端的數(shù)據(jù)發(fā)送為例,圖像壓縮編碼數(shù)據(jù)的發(fā)送緩沖采用了圖3的結(jié)構(gòu)。如圖3所示,兩個(gè)發(fā)送緩沖區(qū)1和2在選擇機(jī)制C和D控制下構(gòu)成了乒乓緩沖結(jié)構(gòu)。當(dāng)機(jī)制D選擇了一個(gè)發(fā)送緩沖區(qū),并通過BSP串行接口自動(dòng)發(fā)送數(shù)據(jù)時(shí),選擇機(jī)制C就準(zhǔn)備另一個(gè)發(fā)送緩沖區(qū)中的數(shù)據(jù)。在設(shè)計(jì)中,發(fā)送緩沖區(qū)的寫入速度大于用戶最高通信速度,也就是說大于緩沖區(qū)的讀出速度,所以這個(gè)乒乓緩沖首先避免了通信接口中可能的數(shù)據(jù)發(fā)送讀空問題。
幀圖像緩沖區(qū)1、2和3實(shí)際構(gòu)成的是環(huán)形存儲(chǔ)結(jié)構(gòu),即在正常情況下選擇機(jī)制A將來自ADV611的壓縮圖像數(shù)據(jù)以一幀為單位,按照1-2-3-1循環(huán)的順序不斷填入緩沖區(qū)中。同樣,機(jī)制B按照1-2-3-1讀取緩沖區(qū)中的數(shù)據(jù)。原則上,幀圖像緩沖區(qū)中數(shù)據(jù)的讀取指針要落后寫入指針一個(gè)緩沖區(qū),比如當(dāng)一幀圖像數(shù)據(jù)經(jīng)過機(jī)制B發(fā)送出去時(shí),如果機(jī)制A正在寫入緩沖區(qū)3,則新一幀發(fā)送數(shù)據(jù)的讀取將從緩沖區(qū)2開始。該策略進(jìn)一步保證了發(fā)送不會(huì)讀空。但是如果通信速率下降、讀取指針處于緩沖區(qū)2而數(shù)據(jù)寫入已經(jīng)更新了緩沖區(qū)3和1兩幀圖像時(shí),機(jī)制A將把新的一幀數(shù)據(jù)重新填入緩沖區(qū)1,而不是緩沖區(qū)2,從而避免數(shù)據(jù)阻塞沖突。第二次寫入同一緩沖區(qū)和第二次讀出同一緩沖區(qū)的事件分別標(biāo)志著圖像壓縮數(shù)據(jù)流量大于通信速率和圖像壓縮數(shù)據(jù)流量小于通信速率,DSP將依據(jù)這個(gè)事實(shí)動(dòng)態(tài)調(diào)節(jié)圖像壓縮比,平衡圖像壓縮數(shù)據(jù)流量和通信速率。
當(dāng)然采用緩沖技術(shù)保證圖像數(shù)據(jù)傳輸?shù)目煽啃允且誀奚鼒D像的實(shí)時(shí)性為代價(jià)的。
5 系統(tǒng)中DSP的總體軟件結(jié)構(gòu)
本脫機(jī)視頻編/解碼系統(tǒng)DSP控制程序的設(shè)計(jì)關(guān)鍵是如何高效地協(xié)調(diào)完成各類控制任務(wù),避免由于任務(wù)進(jìn)程安排不當(dāng)而引起的圖像數(shù)據(jù)傳輸意外中斷。以圖像采集端為例,如圖4所示,DSP程序?qū)SP數(shù)據(jù)發(fā)送和數(shù)據(jù)接收控制以及ADV611的服務(wù)請求作為中斷處理,以提高這些任務(wù)的響應(yīng)速度。特別地,為了避免通信串口的數(shù)據(jù)丟失,程序允許BSP發(fā)送中斷和接收中斷在ADV611的服務(wù)請求中斷中發(fā)生并立即響應(yīng)。在程序的主循環(huán)部分中,DSP通過一系列的狀態(tài)判斷完成發(fā)送緩沖區(qū)數(shù)據(jù)寫入、接收緩沖區(qū)數(shù)據(jù)讀取、圖像壓縮編碼參數(shù)計(jì)算和對單片機(jī)的命令發(fā)送的任務(wù)。
本文闡述的DSP設(shè)計(jì)方法,作為脫機(jī)視頻編/解碼系統(tǒng)的核心,在實(shí)際的應(yīng)用中實(shí)現(xiàn)了實(shí)時(shí)系統(tǒng)的有效控制,保證了圖像數(shù)據(jù)的可靠傳輸,并完成了用戶的遠(yuǎn)端調(diào)控功能。通過實(shí)測,本設(shè)計(jì)使DSP還具有很多空閑時(shí)間,而且清晰的軟件結(jié)構(gòu)很容易添加進(jìn)新的功能算法,例如動(dòng)目標(biāo)檢測報(bào)警和動(dòng)目標(biāo)跟蹤算法,從而進(jìn)一步豐富該系統(tǒng)的功能。