本系統(tǒng)的特點(diǎn)是利用該雙核處理器數(shù)值運(yùn)算能力強(qiáng)大的DSP核實(shí)現(xiàn)小波變換、量化等,其結(jié)果則由邏輯運(yùn)算強(qiáng)大的ARM核進(jìn)一步處理實(shí)現(xiàn)嵌入零樹編碼,從而有效提高了DSP核的運(yùn)算效率。除此以外,該系統(tǒng)集成度高,大幅度降低了圖像壓縮系統(tǒng)的硬件材料成本。在80MHZ的采樣頻率下,圖像壓縮比可達(dá)到36.7。其較好的壓縮效果和可重構(gòu)的靈活性滿足了工程應(yīng)用的要求。
引言
JPEG2000圖像壓縮標(biāo)準(zhǔn)算法[1]主要由小波變換、自適應(yīng)量化、零樹編碼組成。其中小波變換包含大量的卷積運(yùn)算,需要計(jì)算能力強(qiáng)大的處理器和大量的外部存儲(chǔ)器支持,適合在DSP上實(shí)現(xiàn)。而零樹編碼邏輯運(yùn)算占較大比例,比較適合用ARM之類的CPU實(shí)現(xiàn)。如果在DSP上實(shí)現(xiàn)轉(zhuǎn)跳指令比較多的零樹編碼算法,則DSP的11級(jí)流水線將頻繁中斷,效率下降。
近年來圖像處理系統(tǒng)的核心芯片多采用單核DM642作為處理器[2]。DM642以流水線方式并行工作,采用了C64的核,小波變換速度較快。但DM642不適合做單片系統(tǒng),因?yàn)槠淞炕途幋a階段的邏輯運(yùn)算效率比較低,另外在芯片設(shè)計(jì)上也有一些Bug。
本文選用TI公司C6000系列中速度達(dá)4800MIPS的定點(diǎn)雙核數(shù)字信號(hào)處理器TMS320DM6446作為壓縮處理器,解決了以上矛盾。DM6446集成了高速C64XDSP處理器和ARM926處理器,兩種處理器可以協(xié)同工作,DSP處理小波變換部分,ARM處理編碼部分。除此以外,DM6446比早期的DM642外圍接口更豐富,簡(jiǎn)化了接口電路的設(shè)計(jì)。本文主要介紹壓縮系統(tǒng)硬件電路結(jié)構(gòu)設(shè)計(jì)、雙核系統(tǒng)的軟件設(shè)計(jì)中注意的問題。本系統(tǒng)實(shí)時(shí)性較高,可應(yīng)用于遙感圖像、氣象預(yù)測(cè)、銀行安全、醫(yī)療儀器、媒體娛樂等其它領(lǐng)域。整套系統(tǒng)體積功耗更小,靈活度高,可嵌入各種便攜、可移動(dòng)式產(chǎn)品。
1 系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)主要由圖像采集模塊、圖像處理模塊、圖像顯示模塊、時(shí)鐘模塊構(gòu)成,如圖1所示:
圖1 系統(tǒng)硬件框圖
模擬相機(jī)采集到圖像信息后,送入視頻解碼芯片SAA7115H進(jìn)行A/D轉(zhuǎn)換,從8位雙通道以YCbCr4:2:2格式進(jìn)入壓縮處理單元。當(dāng)控制信號(hào)CAPEN有效時(shí),DM6446視頻端口VP0對(duì)圖像信號(hào)進(jìn)行捕獲,被捕獲的圖像暫時(shí)存放在視頻端口VP0的FIFO緩存中,通過編程設(shè)置FIFO的滿標(biāo)志位來觸發(fā)EDMA將圖像數(shù)據(jù)從FIFO送入片內(nèi)SRAM。此時(shí),DM6446導(dǎo)入程序?qū)?shù)據(jù)進(jìn)行處理,DSP處理器對(duì)數(shù)據(jù)進(jìn)行小波變換和量化,ARM處理器負(fù)責(zé)處理零樹編碼,兩者以EDMA方式在SCR(數(shù)據(jù)交換中心)中交換數(shù)據(jù),完成圖像壓縮。鑒于DSP片內(nèi)存儲(chǔ)空間有限,系統(tǒng)將壓縮后的圖像數(shù)據(jù)由EDMA經(jīng)外存儲(chǔ)器無膠合接口EMIF送入外存儲(chǔ)器SDRAM中臨時(shí)存儲(chǔ)。當(dāng)SDRAM滿時(shí),產(chǎn)生EDMA中斷信號(hào),圖像數(shù)據(jù)流入端口VP2的FIFO緩存并產(chǎn)生中斷通知視頻端口VP2將數(shù)據(jù)終輸出在LCD上。
核心處理器為TI公司的TMS320DM6446[3]。這是一款處理速度和DM642[4]同一檔次的高速DSP處理器。每一周期能進(jìn)行4個(gè)16-bit的MACS,或8個(gè)8-bit的MACS,運(yùn)行小波變換效率非常高。該芯片采用了先進(jìn)的達(dá)芬奇技術(shù)在TI性能較好的C64XDSP內(nèi)核基礎(chǔ)上,高度集成了ARM926處理器、視頻加速器、網(wǎng)絡(luò)外設(shè)及外部存儲(chǔ)器接口等。它特殊的雙核結(jié)構(gòu)提高了處理器的存儲(chǔ)能力和運(yùn)算能力,因此DM6446比DM642更適合處理運(yùn)算量大的算法。
考慮到小波壓縮需要較大的緩存,因而外掛了64Mb(即8MB)的16位字寬的SDRAM,型號(hào)為IS42S16400 [5] ,工作頻率133MHZ。 DSP和ARM的程序存儲(chǔ)在8位存儲(chǔ)器AM29LV033C[6],系統(tǒng)上電后DSP自動(dòng)通過外設(shè)總線EMIF將引導(dǎo)程序搬進(jìn)片內(nèi)運(yùn)行,再由引導(dǎo)程序?qū)⑷砍绦虼a載入DM6446。
解碼器選擇了Philips公司的SAA7115H[7],其信噪比高達(dá)15dB。圖像在其內(nèi)部經(jīng)過鉗位、抗混疊濾波、A/D轉(zhuǎn)換、YUV分離電路到達(dá)DSP視頻端口。
2 電路設(shè)計(jì)考慮
DM6446外圍電壓是1.8V,不是傳統(tǒng)3.3V的CMOS電平,推動(dòng)外圍3.3V的器件需要緩沖器,噪聲容限比較小,這是電路設(shè)計(jì)中一個(gè)很不方便的地方,需要進(jìn)行低地彈噪聲設(shè)計(jì)。在設(shè)計(jì)中取盡可能小的電源和地回路之間的距離(30um),引線盡可能短,以降低回路高頻感抗,從而壓制了地彈噪聲。PCB覆銅時(shí),對(duì)地過孔連接方式采用了直接連接方式,以犧牲焊接性能來降低地回路感抗。
PCB采用10層PCB板,其中3個(gè)地線層,2個(gè)電源層,提高了抑制噪聲的性能,減少了地線噪聲。并在DM6446周圍就近布置了近19個(gè)2nf低感抗的高頻小電容,以濾除各種地彈噪聲。SDRAM的信號(hào)平行布線時(shí)保持了3倍以上的間距,并匹配了適合的傳輸線阻抗以抵消信號(hào)反射帶來的影響。
CCD相機(jī)的模擬地和DM6446數(shù)字地路和模擬電路使用的是同一電源,數(shù)字器件和信號(hào)線與模擬器件和信號(hào)線分開布放,數(shù)字電路和模擬電路在接近模擬器件的地方一點(diǎn)共地,并采用串接磁珠電感的方法來減少數(shù)字電路對(duì)模擬電路的干擾。
3 算法的軟件實(shí)現(xiàn)
盡管DM6446的軟件架構(gòu)涵蓋了低級(jí)的OS驅(qū)動(dòng)程序乃至應(yīng)用API,可以讓開發(fā)人員編寫圖像壓縮程序時(shí)不需要知道復(fù)雜的軟硬件細(xì)節(jié),并利用標(biāo)準(zhǔn)的OS開發(fā)環(huán)境編寫業(yè)界認(rèn)可的API,實(shí)現(xiàn)存儲(chǔ)、網(wǎng)絡(luò)及視頻接口功能。但實(shí)際中,實(shí)現(xiàn)起來并沒有那么輕松,仍然需要設(shè)計(jì)合理的軟件結(jié)構(gòu)和編寫大量的底層代碼。
3.1 任務(wù)分配
JPEG2000壓縮標(biāo)準(zhǔn)的算法比較復(fù)雜,還要考慮到后端應(yīng)用。因此,合理分配計(jì)算資源和采用合適的軟件結(jié)構(gòu)以減少軟件開發(fā)的工作量,是非常必要的。系統(tǒng)的軟件結(jié)構(gòu)框圖如圖2所示。
DSP上主要以流水線方式運(yùn)行Mallat快速小波變換以及負(fù)責(zé)ARM與DSP通信的DSP/BIOS LINK。將各級(jí)小波分解的中間結(jié)果存儲(chǔ)于片內(nèi)RAM和外部SDRAM中,在EDMA的控制下在SCR中進(jìn)行數(shù)據(jù)交換。DM6446的EMIF(外部存儲(chǔ)器接口)速度可達(dá)到133MHz,數(shù)據(jù)寬度可達(dá)到64bits。系統(tǒng)中經(jīng)過小波變換后的數(shù)據(jù)寬度為16bits,數(shù)據(jù)傳輸率為100MHz,可以滿足要求。
ARM處理器負(fù)責(zé)零樹編碼、管理內(nèi)存、通信控制和其它linux上的上層應(yīng)用軟件。編碼處理的先后數(shù)據(jù)之間具有相關(guān)性,需要建立數(shù)據(jù)鏈表,要求系統(tǒng)具有可記憶性。
DSP子系統(tǒng)和ARM子系統(tǒng)通過交換系統(tǒng)(SCR)傳輸數(shù)據(jù),這些開發(fā)都可以在TI通用的軟件集成環(huán)境CCS3.2(Code Composer Studio)中進(jìn)行,該軟件開發(fā)環(huán)境支持雙核開發(fā),比較方便。這樣整個(gè)系統(tǒng)的各種資源得到合理的使用,軟件結(jié)構(gòu)清晰,有效提高了系統(tǒng)的運(yùn)算效率。
圖2 軟件結(jié)構(gòu)框圖
3.2 小波變換實(shí)現(xiàn)
Mallat快速小波變換的核心運(yùn)算為兩重循環(huán)的向量點(diǎn)乘運(yùn)算,利用每個(gè)周期可以進(jìn)行8次8位乘加運(yùn)算的點(diǎn)乘指令DOTPSU4 完成。濾波運(yùn)算中的四次乘法和三次加法用一條指令來實(shí)現(xiàn),減少了加、乘指令個(gè)數(shù),計(jì)算速度比較高。算法為手工編寫C64的線性匯編程序,送入CCS3.2的優(yōu)化器進(jìn)行優(yōu)化得到。其線性匯編核心程序只有38行,但卻占用了DSP幾乎80%的計(jì)算資源。為了提高內(nèi)存的使用效率,防止Bank沖突,同時(shí)又要保持盡可能高的Cache命中效率,要合理使用一次從內(nèi)存取64Bit數(shù)據(jù)的LDDW指令,減少對(duì)內(nèi)存總線的占用。編寫好的小波變換程序幾乎將C64XDSP的計(jì)算資源發(fā)揮到了極限。
3.3 編碼實(shí)現(xiàn)
小波分解后的數(shù)據(jù)送入SRAM后在ARM內(nèi)進(jìn)行零樹編碼。該部分程序主要用C寫,操作系統(tǒng)選用Linx。每個(gè)節(jié)點(diǎn)用兩個(gè)量記錄或不記錄,一個(gè)為小波系數(shù)的值,另一個(gè)為標(biāo)志數(shù)0或1。0表示其后的所有子節(jié)點(diǎn)對(duì)應(yīng)的小波系數(shù)值均為0, 1表示子節(jié)點(diǎn)中有非零值。對(duì)為0節(jié)點(diǎn)的所有子節(jié)點(diǎn)對(duì)應(yīng)的小波系數(shù)不需要編碼。ARM完成編碼效率比較高,而且還可以運(yùn)行其它上層程序。
4 實(shí)驗(yàn)結(jié)果
為了測(cè)試壓縮后的圖像質(zhì)量和處理速度,將一個(gè)240 320象素、灰度級(jí)為256的圖像進(jìn)行壓縮,關(guān)鍵函數(shù)的運(yùn)行速度和占用系統(tǒng)運(yùn)算資源的情況如表1所示。
表1 關(guān)鍵函數(shù)測(cè)試結(jié)果
|
耗時(shí)(ms) |
時(shí)鐘周期 |
資源占用 |
FWT_int32() |
38 |
4277 |
79.2% |
ZT_cd() |
30 |
3380 |
74.6% |
Quant() |
6 |
668 |
15.3% |
本文介紹了基于DM6446的雙核圖像壓縮系統(tǒng)的硬件設(shè)計(jì)和算法實(shí)現(xiàn)。
具有較高的數(shù)據(jù)吞吐能力和處理速度,硬件結(jié)構(gòu)更加合理,可以實(shí)現(xiàn)單片系統(tǒng),較之以往的圖像壓縮系統(tǒng)成本降低了50%。信噪比38.4,壓縮比為36.7。可在不改變硬件設(shè)計(jì)的情況下,通過軟件升級(jí)來適應(yīng)新的使用環(huán)境。
5 創(chuàng)新觀點(diǎn)
本文作者創(chuàng)新點(diǎn)是針對(duì)ARM和DSP兩種處理器處理數(shù)據(jù)的不同特點(diǎn)設(shè)計(jì)并實(shí)現(xiàn)了雙核的圖像壓縮系統(tǒng)。該設(shè)計(jì)利用先進(jìn)的達(dá)芬奇技術(shù),簡(jiǎn)化了系統(tǒng)的外設(shè)電路,軟件結(jié)構(gòu)清晰靈活,具有可重構(gòu)性。由于小波變換對(duì)二維圖像數(shù)據(jù)處理時(shí),運(yùn)算量很大,實(shí)時(shí)性通常都不很理想。該設(shè)計(jì)提高了系統(tǒng)的數(shù)據(jù)吞吐能力和運(yùn)行復(fù)雜算法的能力,使這個(gè)問題得到了緩解。