梁東云
(商洛學(xué)院 電子信息與電氣工程學(xué)院,陜西 商洛 726000)
離散余弦變換(DCT)是一種常用的信號(hào)處理變換,具有很強(qiáng)的“能量集中”特性,而且當(dāng)信號(hào)具有接近馬爾科夫過(guò)程的統(tǒng)計(jì)特性時(shí),DCT的去相關(guān)性接近K-L變換的性能,因此它被廣泛應(yīng)用于視頻信號(hào)處理和音頻信號(hào)處理等領(lǐng)域[1-3]。常見(jiàn)的H.264視頻編碼就利用了整數(shù)DCT[4-5]。實(shí)際應(yīng)用中,相關(guān)算法的實(shí)現(xiàn)需要硬件的支撐?,F(xiàn)代電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的迅速發(fā)展,使得常見(jiàn)算法可以通過(guò)硬件描述語(yǔ)言并利用現(xiàn)場(chǎng)可編程門陣列(FPGA)的邏輯資源實(shí)現(xiàn),但代碼編寫、硬件調(diào)試比較復(fù)雜,開(kāi)發(fā)周期長(zhǎng)[6-8]。使用調(diào)試好的知識(shí)產(chǎn)權(quán)(IP)核可顯著減小工作量,但許多IP核需要單獨(dú)購(gòu)買[9]。本文利用DSP Builder平臺(tái),在Simulink工作環(huán)境下采用圖形模型構(gòu)建整數(shù)DCT的蝶形運(yùn)算模型,并對(duì)其進(jìn)行仿真。由于該模型將多個(gè)EDA工具聯(lián)合起來(lái),避開(kāi)了復(fù)雜的代碼設(shè)計(jì),因此降低了開(kāi)發(fā)難度。
傳統(tǒng)二維DCT及其逆變換如下所示[3]:
在H.264頻頻編碼過(guò)程中,采用了4×4整數(shù)DCT,在不損害圖像精度的前提下,減少了數(shù)據(jù)運(yùn)算量,避免了傳統(tǒng)浮點(diǎn)運(yùn)算帶來(lái)的數(shù)據(jù)失配問(wèn)題。4×4整數(shù)DCT的基本變換如下所示[5]:
(1)
可等效為
(2)
(3)
可將式(3)的二維變換改造成2個(gè)一維變換。先對(duì)數(shù)據(jù)塊矩陣每一行做一維整數(shù)DCT,然后再對(duì)結(jié)果的每一列進(jìn)行一維整數(shù)DCT。每一次一維變換可以借助蝶形算法來(lái)快速完成,可減少運(yùn)算量[10]。一維蝶形運(yùn)算如圖1所示。
圖1 一維整數(shù)DCT蝶形運(yùn)算Fig.1 One-dimensional integer DCT butterfly operation
圖1中,x(0)~x(3)代表蝶形運(yùn)算的輸入數(shù)據(jù),X(0)~X(3)代表蝶形運(yùn)算的輸出結(jié)果。相對(duì)于式(3),蝶形運(yùn)算減少了計(jì)算量。然而,利用代碼實(shí)現(xiàn)計(jì)算仍然比較復(fù)雜。借助DSP Builder平臺(tái),可以構(gòu)建整數(shù)DCT運(yùn)算的圖形化模型,避免繁雜的代碼編寫。
本文中搭建的一維整數(shù)DCT蝶形運(yùn)算的DSP Builder模型如圖2所示。圖2中,In0~I(xiàn)n3代表輸入數(shù)據(jù),Out0~Out3代表輸出數(shù)據(jù)。將該模型封裝為子系統(tǒng),構(gòu)建每一行(或列)的運(yùn)算模型,然后將行、列運(yùn)算模型級(jí)聯(lián),形成完整的二維整數(shù)DCT運(yùn)算結(jié)構(gòu)。該運(yùn)算結(jié)構(gòu)還不能直接用于測(cè)試,外加相應(yīng)的數(shù)據(jù)輸入及數(shù)據(jù)輸出顯示模塊,才能形成頂層測(cè)試模型。
圖2 一維整數(shù)DCT蝶形運(yùn)算的圖形模型Fig.2 Graphical model of one-dimensional integer DCT butterfly operation
含有輸入輸出數(shù)據(jù)的頂層測(cè)試模型如圖3所示。
圖3中x00~x33代表原始圖像數(shù)據(jù),Display模塊顯示輸出結(jié)果,Subsystem和Subsystem1為一維整數(shù)DCT蝶形運(yùn)算封裝后的子系統(tǒng)。令4×4原始圖像矩陣
仿真測(cè)試后從Display模塊中顯示變換后圖像矩陣,如下所示:
經(jīng)Simulink平臺(tái)仿真后,運(yùn)行“Signal Complier”可以將模型轉(zhuǎn)換為硬件描述語(yǔ)言,并產(chǎn)生測(cè)試向量文件[10]。利用Modelsim平臺(tái)對(duì)測(cè)試向量文件進(jìn)行仿真,仿真輸出數(shù)據(jù)如圖4所示。
圖5為直接在Matlab平臺(tái)中運(yùn)行代碼的結(jié)果。通過(guò)對(duì)比可見(jiàn),3種方法仿真結(jié)果一致,說(shuō)明本文模型能夠完成二維整數(shù)DCT的快速蝶形運(yùn)算,并可通過(guò)后續(xù)硬件實(shí)現(xiàn)。綜合后的硬件電路圖較大,本文中略過(guò)。
本文利用DSP Builder和Simulink平臺(tái),對(duì)H.264視頻編碼過(guò)程中常用的整數(shù)DCT進(jìn)行了模型構(gòu)建與仿真。本文以4×4整數(shù)DCT的快速蝶形運(yùn)算為例,實(shí)際中可很容易地推廣至8×8、16×16等分塊情況。同時(shí),整體設(shè)計(jì)是基于模型的方式,因此減少了代碼編寫的工作量。在實(shí)際的綜合電子實(shí)訓(xùn)教學(xué)過(guò)程中,將數(shù)字信號(hào)處理等課程內(nèi)容綜合起來(lái),逐步推廣模型化電路設(shè)計(jì)方式,使學(xué)生能夠快速地體會(huì)到信號(hào)處理相關(guān)理論的硬件模型實(shí)現(xiàn)。
圖3 頂層測(cè)試模型Fig.3 Top-level test model
圖4 Modelsim仿真結(jié)果Fig.4 Modelsim simulation results
圖5 Matlab仿真結(jié)果Fig.5 Matlab simulation results