梁東云
(商洛學院 電子信息與電氣工程學院,陜西 商洛 726000)
離散余弦變換(DCT)是一種常用的信號處理變換,具有很強的“能量集中”特性,而且當信號具有接近馬爾科夫過程的統計特性時,DCT的去相關性接近K-L變換的性能,因此它被廣泛應用于視頻信號處理和音頻信號處理等領域[1-3]。常見的H.264視頻編碼就利用了整數DCT[4-5]。實際應用中,相關算法的實現需要硬件的支撐。現代電子設計自動化(EDA)技術的迅速發(fā)展,使得常見算法可以通過硬件描述語言并利用現場可編程門陣列(FPGA)的邏輯資源實現,但代碼編寫、硬件調試比較復雜,開發(fā)周期長[6-8]。使用調試好的知識產權(IP)核可顯著減小工作量,但許多IP核需要單獨購買[9]。本文利用DSP Builder平臺,在Simulink工作環(huán)境下采用圖形模型構建整數DCT的蝶形運算模型,并對其進行仿真。由于該模型將多個EDA工具聯合起來,避開了復雜的代碼設計,因此降低了開發(fā)難度。
傳統二維DCT及其逆變換如下所示[3]:
在H.264頻頻編碼過程中,采用了4×4整數DCT,在不損害圖像精度的前提下,減少了數據運算量,避免了傳統浮點運算帶來的數據失配問題。4×4整數DCT的基本變換如下所示[5]:
(1)
可等效為

(2)


(3)
可將式(3)的二維變換改造成2個一維變換。先對數據塊矩陣每一行做一維整數DCT,然后再對結果的每一列進行一維整數DCT。每一次一維變換可以借助蝶形算法來快速完成,可減少運算量[10]。一維蝶形運算如圖1所示。

圖1 一維整數DCT蝶形運算Fig.1 One-dimensional integer DCT butterfly operation
圖1中,x(0)~x(3)代表蝶形運算的輸入數據,X(0)~X(3)代表蝶形運算的輸出結果。相對于式(3),蝶形運算減少了計算量。然而,利用代碼實現計算仍然比較復雜。借助DSP Builder平臺,可以構建整數DCT運算的圖形化模型,避免繁雜的代碼編寫。
本文中搭建的一維整數DCT蝶形運算的DSP Builder模型如圖2所示。圖2中,In0~In3代表輸入數據,Out0~Out3代表輸出數據。將該模型封裝為子系統,構建每一行(或列)的運算模型,然后將行、列運算模型級聯,形成完整的二維整數DCT運算結構。該運算結構還不能直接用于測試,外加相應的數據輸入及數據輸出顯示模塊,才能形成頂層測試模型。

圖2 一維整數DCT蝶形運算的圖形模型Fig.2 Graphical model of one-dimensional integer DCT butterfly operation
含有輸入輸出數據的頂層測試模型如圖3所示。
圖3中x00~x33代表原始圖像數據,Display模塊顯示輸出結果,Subsystem和Subsystem1為一維整數DCT蝶形運算封裝后的子系統。令4×4原始圖像矩陣

仿真測試后從Display模塊中顯示變換后圖像矩陣,如下所示:
經Simulink平臺仿真后,運行“Signal Complier”可以將模型轉換為硬件描述語言,并產生測試向量文件[10]。利用Modelsim平臺對測試向量文件進行仿真,仿真輸出數據如圖4所示。
圖5為直接在Matlab平臺中運行代碼的結果。通過對比可見,3種方法仿真結果一致,說明本文模型能夠完成二維整數DCT的快速蝶形運算,并可通過后續(xù)硬件實現。綜合后的硬件電路圖較大,本文中略過。
本文利用DSP Builder和Simulink平臺,對H.264視頻編碼過程中常用的整數DCT進行了模型構建與仿真。本文以4×4整數DCT的快速蝶形運算為例,實際中可很容易地推廣至8×8、16×16等分塊情況。同時,整體設計是基于模型的方式,因此減少了代碼編寫的工作量。在實際的綜合電子實訓教學過程中,將數字信號處理等課程內容綜合起來,逐步推廣模型化電路設計方式,使學生能夠快速地體會到信號處理相關理論的硬件模型實現。

圖3 頂層測試模型Fig.3 Top-level test model

圖4 Modelsim仿真結果Fig.4 Modelsim simulation results

圖5 Matlab仿真結果Fig.5 Matlab simulation results