天天看點

DSP的數字濾波器的實作

數字濾波器由數字乘法器、加法器和延時單元組成的一種算法或裝置。數字濾波器的功能是對輸入離散信号的數字代碼進行運算處理,以達到改變信号頻譜的目的。

巴特沃斯濾波器是電子濾波器的一種。巴特沃斯濾波器的特點是通頻帶的頻率響應曲線最平滑。

切比雪夫濾波器是在通帶或阻帶上頻率響應幅度等波紋波動的濾波器。

設計過程

v1. 在Matlab語言中确定濾波器的各種參數

v2. 将Matlab語言轉換成通用語言形式

v3. CCS中編寫實際模拟運作的程式,采用DSP語言(C54xx和C6x)

v4. 在硬體系統中調試程式

MATLAB程式設計

MATLAB由于具有數值計算功能、符号計算功能、資料可視化功能、模組化仿真可視化功能使得在命題構思、模型建立、仿真研究、假想驗證、資料可視化各個環節有着非凡的功能。使用MATLAB中的Cheby1型函數。下面是在MATLAB中設計的低通IIR型切比雪夫濾波器程式。

N=256; 資料點數

v fs=600; 采樣頻率

v dt=1/fs;

v for k=1:N;

v f1=100; f2=250; 信号頻率

v y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+0.5*sin(2*pi*(f2

+20)*k*dt);

v end

v lp=200; 截止頻率

v wn1=2*lp/fs; 函數的參數

v [z1,p1,k1] = CHEBY1(2,0.5,wn1);濾波器的極零點表示

v [b1,a1] = CHEBY1(2,0.5,wn1);濾波器的傳遞函數表示

v b1=b1/(8*1.0711); 将參數按比例縮小

v a1=a1/(8*1.0711); 為了DSP做準備,MATLAB中不需要

v yy1=filter(b1,a1,y); 濾波

v y=fft(y,N); 将信号做FFT變換

v pyy=y.*conj(y); 做功率譜分析

v f=(0:(N/2-1));

v figure(1);

v plot(f,pyy(1:N/2))

v y=fft(yy1,N); 将濾波後資料做功率譜分析

v pyy=y.*conj(y);

v f=(0:(N/2-1));

v figure(2);

v plot(f,pyy(1:N/2))

将一些Matlab中的函數替換成簡單的形式,将原來的filter函數去掉,自己編寫一段函數,使其功能與filter函數的功能是等同的,為了友善程式從

MATLAB的平台轉換到DSP彙編的平台上。

Y=FILTER[B,A,X]是以B,A系數對X輸入進行濾波,以得到輸出Y,它是由如下的數學表達式執行濾波功能,表達式如下:

v a(1)*y(n)=b(1)*x(n)+b(2)*x(n-1)+…+b(nb+1)*x(n-nb)-a(2)*y(n-1)-…-a(na+1)*y(n-na)

可以編寫一個for循環來實作上面的表達式,在上面程式中去掉yy1=filter(b1,a1,y),加入如下程式:

v yy1(1)=0;

v yy1(2)=0;

v b(1)=0.0625; b(2)=0.1250; b(3)=0.0625;

v a(1)=0.1167; a(2)=0.1033; a(3)=0.0448;

v n=254;

v for i=1:n

v yy1(i+2)=0.5*y(i+2)+y(i+1)+0.5*y(i)-

v 0.83*yy1(i+1)-0.36*yy1(i);

v end

dsp

繼續閱讀