趙杰
(商洛學院 電子信息與電氣工程學院,陜西商洛 726000)
哈達瑪變換是一種常用的數(shù)學變換,由于其具有實數(shù)變換,變換只涉及加、減法等特點,已在諸多領(lǐng)域得到廣泛的應(yīng)用,如重建成像、通信系統(tǒng)、數(shù)字水印、圖像壓縮等[1-6]。實際中,往往需要硬件實現(xiàn)數(shù)字信號處理算法。EDA(電子設(shè)計自動化)技術(shù)的迅速發(fā)展,使得通過硬件描述語言在FPGA上實現(xiàn)常見信號處理變換成為可能。但是程序的代碼編寫、調(diào)試、仿真復(fù)雜,開發(fā)周期較長、工作量大,要求開發(fā)者有很高的設(shè)計能力[7-8]。若使用調(diào)試好的IP核可顯著減小工作量,但很多IP核需要單獨購買[9]。本文利用DSPBuilder,在Simulink工作環(huán)境下使用圖形模型構(gòu)建快速哈達瑪變換的運算模型,并進行仿真,將多個工具聯(lián)合起來,避開復(fù)雜的代碼設(shè)計,降低了開發(fā)難度。
傳統(tǒng)哈達瑪變換及其逆變換的基本形式為[10]:
一維哈達瑪變換核:
式中,x,u=0,1,…,N-1。一維哈達瑪正變換為:
反變換也具有類似的形式:
若直接使用式(2)或式(3),運算復(fù)雜度會很高。尤其隨著變換點數(shù)的增加,計算量增長非常迅速,實際應(yīng)用實現(xiàn)起來比較困難。為此,學者提出了相應(yīng)的快速算法[10]。本文以8階為例:
令[f1(x)]=[G2][f3(x)],[f2(x)]=[G1][f1(x)],[f3(x)]=[G0][f2(x)],則有:
由式(6)、式(7)和式(8)可得到哈達瑪變換的一種快速算法,可以運用蝶形運算的方式來實現(xiàn),但若用代碼編寫,硬件實現(xiàn)起來仍然比較麻煩[8]。
利用DSP Builder和Simulink出色的模型化設(shè)計能力,可以將變換的硬件實現(xiàn)難度降低。設(shè)計的基本步驟如圖1所示。
圖1 模型化設(shè)計主要流程
首先利用DSP Builder設(shè)計快速哈達瑪變換的圖形化模型,主要結(jié)構(gòu)如圖2所示。
令輸入序列input0~input7的值分別為10、10、20、20、30、30、30、30,運行測試,輸出結(jié)果為:Output0:22.5;Output1:0;Output2:-2.5;Output3:0;Output4:-7.5;Output5:0;Output6:-2.5;Output7:0。
模型經(jīng) Simulink仿真后,運行“Signal Complier”之后可以轉(zhuǎn)換為硬件描述語言,并產(chǎn)生測試向量文件。利用Modelsim對測試向量文件進行RTL級仿真,仿真輸出數(shù)據(jù)如圖3所示。
通過對比可知,Simuink、Modelsim和Matlab三處仿真結(jié)果一致,說明該模型能夠完成快速哈達瑪變換的運算。
本文利用DSP Builder、Simulink和Modelsim等平臺,對常見的哈達瑪變換的快速算法進行了模型設(shè)計與仿真。模型與仿真以8點哈達瑪變換的運算為例實現(xiàn),實際中可以很容易地推廣至多點或二維變換的情形。整體設(shè)計是基于圖形模型的方式,減少了代碼編寫的工作量。而且目前很多型號的FPGA支持浮點運算,可以方便的物理實現(xiàn)。
圖2 快速哈達瑪變換的DSP Builder模型
圖3 Modelsim仿真結(jié)果