快速小波變換的定點(diǎn)DSP實(shí)現
從第一個(gè)尺度j=1開(kāi)始,求出濾波器系數與剩余系數的加權和,分別得到cj,k與dj,k,并且它們的長(cháng)度均為N/2。依次求出j=2,3,…各尺度值,cj,k與dj,k的長(cháng)度也將變?yōu)镹/4,N/8,…。應注意到,濾波器系數序列與輸入信號序列相乘時(shí),各個(gè)系數依次相乘然后累加即為cj,k或dj,k值。計算完一個(gè)后,要將濾波器系數序列向后移兩個(gè)位置,再與輸入信號相乘。最后,只剩下兩個(gè)值時(shí),再從第一個(gè)位置繼續,從而構成一個(gè)圓周形式,得到最后一個(gè)cj,k與dj,k。以j=1為例來(lái)說(shuō)明這一點(diǎn)。

同樣,可得d1,N/2-1。?
在TMS320C2xx系列定點(diǎn)DSP中,并未提供直接實(shí)現上述算法的尋址方式,可以利用循環(huán)指令實(shí)現。其中,要用到的兩條重要指令是MAC(乘累加指令)和RPT(重復指令)。MAC指令是DSP指令中最有特色的指令之一,當RPT流水線(xiàn)啟動(dòng)后,通過(guò)MAC指令可以在單指令周期內實(shí)現乘加操作。算法的關(guān)鍵是一個(gè)卷積計算,其過(guò)程用如下幾條語(yǔ)句即可實(shí)現。假設程序存儲器地址0xFF00h開(kāi)始,存放了小波濾波器系數h(k),k=0,1,2,…,L-1的值,從0xFF80h開(kāi)始,存放了小波濾波器系數g(k),k=0,1,2,…,L-1的值。數據寄存器地?址0x1000h(用cc表示)開(kāi)始,存放輸入信號。計算c1,k程序如下
RPTL-1
MAC0FF00h,cc+2*k
下面簡(jiǎn)要介紹一下單個(gè)尺度上的計算過(guò)程。仍假設輸入信號為N點(diǎn)采樣值,小波濾波器長(cháng)度為L(cháng)。
由于有上述圓周形式的循環(huán)算法,直接計算所有值會(huì )有很多不便,因此將整個(gè)過(guò)程分為兩部分。第一部分,保存c0,k(k=N-2,N-1,0,1,2,…,L-3)到一連續存儲空間,然后計算k<N/2-L時(shí)的d1,k的值,并保存到臨時(shí)存儲空間datad(需要N個(gè)單元)中。第二部分計算k=N/2-L,…,N/2-1時(shí)的d1,k的值,保存到datad中(從第N/2-L單元開(kāi)始)。與前面相同方法計算c1,0,c1,1,…,的值,保存時(shí)覆蓋掉原來(lái)的c0,0,c0,1,…,即可。如果為了系數重構方便,可以把datad中前N/2個(gè)單元內容移到原來(lái)的c0,k(k=N/2,…,N-1)位置。如此方法便可得到分解系數。?
4 結論
小波分析具有良好的時(shí)頻局部性,是當今很受歡迎的分析方法之一,利用定點(diǎn)DSP進(jìn)行小波變換,滿(mǎn)足了實(shí)時(shí)性,具有良好的精度和低成本,是工控領(lǐng)域的理想選擇。??本文引用地址:http://dyxdggzs.com/article/150501.htm
評論