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