一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · web...

17
以 DSP 以以以以以以以以以以以以 The DSP-based digital filters design 以以以 以以以 以以以以 : (以以以以以) 以以以 : 低低低低 、、、 低低低低低低低低低低低低低低低低低低低低 低低低低低低低低低低低低低低低低低低低低 低 低低低低低低低低低低低 ,。 低低低低低低低低低 低低低低低低低低低低低低低低低低低 低低低低低低低低低低低低低低 低低低 低低低低低 低低低低低低低低低低低低低 低低低低低低 低低低 低低低低低低低 ,。一、、,、、, 低 低低低低低低低低低低低低低低低低低低低低低低 低低低低低低 低低低低低低 低低低低低 低 、、、、 低 低低 低低低低低低低低低低低 ,,。一體。 (programmable)低低低低低低(reprogrammable)低 低 低 、。(DSP)低低低 低低低低低低(IIR)低低低低低低低(FIR)低低低低 Keyword : Low Pass Filters , High Pass Filters , Infinite Impulse Response filters , Finite Impulse Response filters Filter is widely used in radio transmitters and receivers. Almost all the circuit of communication equipment has its existence. Without filters all communication products shall lose their function. Hence, Filters play an important role in communication field. Traditional analog filter is consisted of resistor and capacitor. However, owing to the value deviation, aging and temperature drift of electronic device. Analog filters sometimes do not operate well. For digital filters, It has the advantage or no voltage drop, temperature drift, noise interference, and no influence by devices character. Otherwise It has high accuracy and reliability. We can change reprogrammed as a Low Pass filter or high pass filter without changing any hardware structure. The property of being programmable and reprogrammable of digital filter made it adaptable in

Upload: nguyenphuc

Post on 21-Apr-2018

250 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

以 DSP 為基礎之數位濾波器之設計The DSP-based digital filters design

喬念平 楊連富計劃摘要 : (中英文部份)

關鍵詞 : 低通濾波器、高通濾波器、無限脈衝響應、有限脈衝響應濾波器廣泛使用於各種無線電發射機與接收機,幾乎所有的通訊設備的內

部電路均有它的存在。若無濾波器則所有通訊設備將無法達成其作用,由此即可知濾波器在通訊上的重要性。傳統類比濾波器一般均由電容、電阻、電感組成,但電子元件會因零件之誤差、溫度之變化、變質,使濾波效果不良。而數位濾波器不需搭配任何元件所以具備有無壓降、無溫度飄移、無雜訊干擾、高準確度、高可靠度,不受零件特性衰減影響及不需要更換任何零件,即可改變濾波器工作型態等優點。例如一個數位濾波器可以在被程式為低通濾波器或高通濾波器而無須改變其硬體結構。數位濾波器這種可程式化 (programmable)以及可再程式(reprogrammable)的特性使得數位濾波器非常適用於影像處理、通訊系統或是頻譜分析等應用上。本計劃即是利用數位訊號處理(DSP)來設計無限脈衝響應(IIR)及有限脈衝響應(FIR)濾波器。Keyword : Low Pass Filters , High Pass Filters , Infinite Impulse Response filters , Finite Impulse Response filters

Filter is widely used in radio transmitters and receivers. Almost all the circuit of communication equipment has its existence. Without filters all communication products shall lose their function. Hence, Filters play an important role in communication field. Traditional analog filter is consisted of resistor and capacitor.However, owing to the value deviation, aging and temperature drift of electronic device. Analog filters sometimes do not operate well. For digital filters, It has the advantage or no voltage drop, temperature drift, noise interference, and no influenceby devices character. Otherwise It has high accuracy and reliability. We can change reprogrammed as a Low Pass filter or high pass filter without changing any hardware structure. The property of being programmable and reprogrammable of digital filter made it adaptable in image process, telecommunication process, and spectrum analysis. This project is to use DSP to design IIR filters and FIR filters.

Page 2: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

緣由與目的目前學校學生在做濾波器的實驗時,大都用被動元件電阻、電容、電感

等,將之串並聯組成不同用途之濾波器。當濾波器之階數增加時,由於零件誤差,焊接點與零件接腳等效電容與電感之效應等因素,使得實驗結果與理論之間有很大的差距。為了迎接數位時代的到來,改進學生實驗的方法,捨棄傳統類比式繁瑣複雜的電路,本人希望能藉由組合語言或 C語言來教導學生完成各種濾波器的的數學演算法的設計,並利用數位訊號處理系統(DSP)來進行濾波器之實驗,以增加實驗的精確度、穩定度與可靠度。本計劃便是使用數位訊號處理系統(STC32 DSP) ,將類比信號輸入系統中轉換為數位信號,進而透過內部程式的運算來達成濾波作用。濾波後的結果可由示波器或 Code Composer發展工具軟體中觀察紀錄得知,此項技術可應用於頻譜分析、影像處理與通信系統中。

STC 32 的基本架構本研究所使用的 CPU是德州儀器的 TMS3203X系列中的 C32 DSP CP4,其工作時脈為 50MHZ,是一顆具有 32位元浮點的數位訊號處理器,在其周邊搭配了 2通道的ADC (Analog to Digital Converter)2個通道DAC (Digital to Analog Converter)24位元 I/O及 RS-232C等電路而組成 STC 32的基本架構如圖一所示。

圖一本研究所使用的 STC32內嵌式DSP控制應用卡,在發展環境上是使用 C3X

Code Composer 與德州儀器 XDS510 模擬偵錯器,此方法之優點在於 C3X Code Composer 乃採人機介面,其功能強大,使用者得以在同一視窗完成所有軟體發展,整個系統的連接圖如圖二所示。

Page 3: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

圖二整個 DSP程式發展流程圖如圖三所示,將 C的原始碼,編譯 Complier C的

原始碼成組合語言的原始碼,再組譯(Assembler)成目的碼(obj 檔) ,再將相關的程式庫做連結(Link) ,成為 DSP可執行的 COFF(Common Object File format) ,延伸檔名為.out,以上這些工具程式都可在 Code Composer 視窗環境下命令參數,若成功的產生.out 檔,便可透過 Code Composer將程式下載至 DSP上執行除錯。

圖三理論分析

一個具有DTLTI(Discrete Time,Linear,Time Invariant)性質的數位濾波器,其基本的輸出差分方程式可以描述為

(1.1)

所以設計數位濾波器的問題就在於,決定一組係數 ai及 bj來滿足濾波器的設計要求。對於 FIR 濾波器而言 bj 係數皆為 0,所以差分方程式可以簡化為

(其中K+1即表示為濾波器的階數) (1.2)

Page 4: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

FIR濾波器是一個具有限點數的脈衝響應 h(n)的濾波器,此脈衝響應可表示成 h(i)=ai時 0≤i≤k 且其轉換函數可以表示為

(1.3)

(1.4)

當我們設計一個 FIR濾波器時,基本問題就是要如何在轉換函式中給定所需要的常數所以一般 FIR濾波器的性質可綜合為

1. 由量化而得的係數誤差較 IIR濾波器小2. 具有理想的線性相依的特性3. 用非遞回實行 FIR的轉換函數時,所有的極點會落在原點處,且總是穩定的

4. 延遲時間隨著濾波器的增加而增加實現 FIR濾波器的最基本且最簡單的模式為矩形視窗模式,使用此種方法

計算時,只取-Q到+Q 範圍的級數值超出範圍的級數值,則視為 0Z-domain的轉移函數可以表示如下

(1.5)

使脈衝響應係數 hi=CQ-I 級 N=2Q則上式可改寫為 (1.6)

上式所代表的意義即為 , ,…. , , , …。

由於脈衝響應 hQ具有對稱性,所以 Cn=C-n 。濾波器的階數為 N+1或是2Q+1階且據對稱性例如當Q=5時表示會有 11個係數 h0,h1,……,h10 且對稱於 h5也就是說

, , ,

,遞回計算式表示為

(1.7)

N代表濾波器的長度,上式展開可得濾波器輸出,在時間 n時, y(n)=h(N-1)x(n-(N-1))+h(N-2)x(n-(N-2))+…… +h(1)x(n-1)+h(0)x(n)在時間為 n+1時, y(n+1)=h(N-1)x(n-(N-2))+h(N-2)x(n-(N-3))+….

Page 5: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

+h(1)x(n)+h(0)x(n+1)同理在時間為 n+2時 y(n+2)=h(N-1)x(n-(N-3))+h(N-2)x(n-(N-4))+…. +h(1)x(n+1)+h(0)x(n+2)這也就表示 FIR濾波器可用 N+1項的單位脈衝值來表示

對於 IIR 數位濾波器可利用基本差分方程式

將上式展開後可得 (1.8)

將上式轉換成 Z-domain 下之轉移函數 (1.9)

上式係數 bj中有任一項是不等於 0,這個式子就被稱之為無限長度脈衝響應或簡稱為 IIR數位濾波器的標準式,由(1.8)式可以看出 IIR數位濾波器的輸出不僅和現在的輸入 x(n-N)有關也和過去的輸出 y(n-M)有關。(1.9)式還可以整理成以下的疊代型式:

(1.10)

式中的N 值即代表 IIR數位濾波器的階數。低通 Butterworth濾波器的階數與 S-domain 下的一般式階數(n) 分母表示式

12345

表一由表格中得知,當階數 n=2時的低通濾波器的基本轉換函數為 :

(1.11)

Page 6: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

轉換為類比角頻率 的因式項時,上式變為(1.12)

其中 (1.13)

使用雙線性轉換法(BLT)時,其離散的轉換式H(z)可以表示為(1.14)

將(1.12)式繼續化簡

(1.15)

由(1.9)式可知 2階 IIR數位濾波器的一般式可以表示如下: (1.16)

對照(1.15)式後,可得 2階 Butterworth IIR低通濾波器的各項係數如下:

(1.17)

Page 7: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

設計結果與討論設計 1: 使用 Fourier 級數設計一個低通 FIR 濾波器,其取樣頻率為 10KHz,截止頻率 fc 為 1KHz,且脈衝響應的延遲時間限制在 11 個取樣週期以內。設計方法:

( : 截止頻率 : 取樣頻率 )

(1.18)

n = 1, 2, 3, 4, 5 (1.19)

其中求出濾波器的係數之後,可得濾波器的輸出入關係式如下y = C(5)(x(10) +x(0)) + C(4) (x(9) +x(1)) + C(3)(x(8) +x(2)) + C(2)(x(7) +x(3)) + C(1)(x(6) +x(4)) + C(0) x(5) (1.20)以 C語言在DSP上實現數位濾波器時,其主程式如下:

使用 Code Composer及XDS 510 偵錯器,就可以設定中斷點的方式把輸入與輸出的結果顯示在 PC上面,中斷點設在 full=0的那一行即可。Code Composer 下的實驗結果:左邊代表的是輸入信號的電壓(單位為Volt),下面代表輸入信號陣列的 index。

Page 8: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

圖四: 輸入信號 1kHz的波形FIR 低通濾波器的輸出波形:

圖五: 輸入信號 1kHz時 FIR低通濾波器的輸出波形

圖六: 輸入信號 1.5KHz的波形FIR低通濾波器的輸出波形:

Page 9: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

圖七: 輸入信號 1.5KHz時 FIR低通濾波器的輸出波形設計結果:當輸入為 1khz時輸出電壓約為輸入的一半,然而當輸入為 1.5khz時輸出電壓約為輸入的十分之一,頻率愈高輸出愈低,由於可証明此為一低通濾波器。計算256點 FIR數位濾波器的時間可由程式中的 count1變數的值知道,將 count1加入 Code Composer的Watch window中即可得知程式進入斷點時的 count1 值,如下圖八所示,count1的值為 56,因為 Timer中斷的頻率設為 10kHz,所以每次中斷的時間為 0.1ms,因此程式運算所花費的時間為 56*0.1=5.6ms,而取樣 256點的時間為 256*0.1=25.6ms,所以程式最長的計算時間不能超過 25.6ms,否則就無法達到即運算。

圖八: code composer之watch window設計 2: 使用程式計算 21 階 FIR 低通濾波器的係數 ~ ,fc 為 1000Hz,fS 為10KHz,並與設計 1 的濾波結果互相比較階數增加對輸出訊號的影響設計方法: 因為濾波器的階數增加,所以一些變數的陣列大小都會增加,例如儲存濾波器係數的陣列 c[n],儲存信號的陣列 x[n],將需要修改的 C程式碼列在下方。變數宣告部份:float x[21];float c[11];

Page 10: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

濾波器係數計算部份:for(i=1;i<=10;i++) { c[i]=(sin(i*pi*v1))/(i*pi); }濾波器運算部份:for(j=0;j<256;j++) { temp=0; for(i=1;i<=20;i++){x[i-1]=x[i];} x[20]=datainput[j]; for(i=1;i<=10;i++){temp=temp+c[i]*(x[10+i]+x[10-i]);} temp=temp+c[0]*x[10]; filterout1[j]=temp; }設計結果:以示波器觀察設計結果(V=0.5Volt/div Time=0.5ms/div):輸入信號為 1000Hz時的實驗結果: 輸入信號為 1500Hz時的實驗結果:

ADC DAC ADC DAC

輸入信號 輸出信號 圖 9 輸入信號 輸出信號在 Code Composer 下用watch window 檢查 count1的變數值,count1=100,所以256點 21階 FIR濾波器的運算時間等於 10ms,約為 11階 FIR濾波器的兩倍時間,但仍在緩衝時間 25.6ms之內,所以仍然能夠達到即時的運算。所以當信號取樣頻率與濾波器截止頻率都相同時,濾波器的階數越高,則濾波的效果越好。設計 3: 設計一個 21 階的帶通 FIR 濾波器,取樣頻率為 10KHz,高截止頻率為

2KHz,低截止頻率為 1KHz。所謂的帶通濾波器,即是濾波器的頻帶通過範圍介於低截止頻率與高截

止頻率之間,當輸入訊號的頻率落在濾波器的頻帶通過範圍之外時,輸出訊號的振幅就會受濾波器的影響而衰減。

Page 11: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

設計方法:由設計 1 知道低通濾波器的係數計算通式為

(1.21)

所以帶通濾波器的各項係數計算就等於

( : 高截止頻率 :低截止頻率) (1.22)

以(1.22)的公式來計算 FIR 帶通濾波器的係數,用 C語言在DSP上運算這些係數,程式碼如下://-----------FIR Filter Init here---------------//

fs=10000.0; // SampleRate is 10Khz

fc1=1000.0; // Low Cut-off frequency is 1Khz

fc2=2000.0; // High Cut-off frequency is 2Khz

v1=(2*fc1)/fs;

v2=(2*fc2)/fs;

c[0]=v2-v1;

for(i=0;i<21;i++)x[i]=0;

for(i=1;i<=10;i++)

{

c[i]=(sin(i*pi*v2)-sin(i*pi*v1))/(i*pi);

}

以 Code Composer 觀察設計結果:

圖 10 輸入信號為 750Hz的濾波結果

Page 12: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

圖 11 輸入信號為 1kHz的濾波結果

圖 12 輸入信號為 2kHz的濾波結果

圖 13 輸入信號為 2.25kHz的濾波結果結果討論:由實驗結果可以知道當輸入訊號頻率為 750Hz,Vp-p=1Volt時,輸出訊號Vp-p為 0.05Volt,輸入訊號頻率為低截止頻率 1KHz時,輸出訊號Vp-p為0.45Volt,輸入訊號頻率為高截止頻率 2KHz時,輸出訊號Vp-p=0.44Volt,輸出訊號頻率為 2.25KHz時,輸出訊號Vp-p為 0.05Volt,所以輸入訊號頻率如果低於濾波器的低截止頻率或高於濾波器的高截止頻率時,輸出信號的振幅就會受濾波器的影響而衰減,符合帶通濾波器的濾波特性。

Page 13: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

設計 4: 設計一四階 IIR 帶通濾波器,濾波器的低截止頻率為 1.2KHz,高截止頻率為 1.5KHz。設計步驟:4階 Butterworth 帶通濾波器在 S- domain的表示式如下

(1.23)其中

將 代入(15-16)式中,導出 ~ , ~ 的通式用 及 來表化簡之後可得

C 程式碼:float fc1=1200; // law cut-off frequencyfloat fc2=1500; // high cut-off frequencyfloat temp1=0;wc1=tan((pi*fc1)/fs);wc2=tan((pi*fc2)/fs);wr=wc1*wc2;bw=wc2-wc1;temp1=1+1.414*bw+2*wr+bw*bw+1.414*bw*wr+wr*wr; b[1]=(-4-2*1.414*bw+2*1.414*wr*bw+4*wr*wr)/temp1;

Page 14: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

b[2]=(6-2*(2*wr+bw*bw)+6*wr*wr)/temp1;b[3]=(-4+2*1.414*bw-2*1.414*bw*wr+4*wr*wr)/temp1;b[4]=(1-1.414*bw+2*wr+bw*bw-1.414*bw*wr+wr*wr)/temp1;a[0]=(bw*bw)/temp1;a[1]=0;a[2]=(-2*a[0]);a[3]=0;a[4]=a[0];

實驗結果:

圖 14: 輸入信號 1.05KHz的濾波結果

圖 15: 輸入信號 1.65KHz的濾波結果:結果討論:觀察用 1.05KHz及 1.65KHz輸入信號的濾波結果,可以發現濾波器輸出信

號的峰值分別為 0.2 Volt及 0.25 Volt,輸入信號頻率距離高低截止頻率分別為150Hz的頻寬,所以濾波的敏銳度還算不錯,運算 256點的時間約為 2.3 ms,與 FIR濾波器相比是減少很多運算的時間。IIR數位濾波器不需要很高的階數即可達到不錯的濾波效果,但是濾波器係數的計算較為複雜,而且量化誤差對濾波的效果有較大的影響,但相對的因為階數少,所以相位延遲的時間也比較短。

Page 15: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC

總結 本研究乃運用DSP來完成濾波器的運作,將類比訊號經由A/D轉為數位訊號,此訊號再經數位訊號處理器內部的程式運算來達成濾波的效果。輸出經由D/A可供示波器或 code composer 顯示。本研究不需使用任何電子零件即可完美達成濾波效果,因為程式的可塑性,我們可輕易設計出各類低通、高通、帶通、帶拒等濾波器。在應用方面,本設計可濾除電源整流對信號的低頻干擾或寄生振盪對信號所產生的高頻干擾。

參考文獻TMS320C3X/4X C Language Tools User’s Guide,1997,Texas InstrumentsTMS320C3xx C Source Debugger User’s Guide,1997,Texas InstrumentsTMS320C3x/4x Optimizing C Compiler User’s Guide,1997,Texas InstrumentsRulph Chassaing,1996,Digital Signal Processing with C and the TMS320C30 Wiley InterscienceSteve White,2000,Digital Signal Processing ,Delmar Thomson LearningAndreas Antoniou, Digital Filters analysis,design,and applications,1993林傳生李佩謙數位訊號處理器簡介與應用全華科技圖書

Page 16: 一、 - search read.pudn.comread.pudn.com/downloads82/ebook/317107/fir.doc · Web view輸入信號為1000Hz時的實驗結果: 輸入信號為1500Hz時的實驗結果: ADC DAC