디지털필터의설계
목차 2 I 필터의기초 II 디지털필터의설계
3 PART I 필터의기초
4 필터의개념 필터링 (Filtering) 관측된신호에어떠한처리를하여그중에서필요한성분만추출 필터 (Filter) 필터링처리를하는장치 필터링의목적 잡음을제거하여신호질향상 신호에서정보추출 Channel 공유시신호분리
5 필터의개념 디지털필터란? 디지털입력신호에작용하여원하는 filtering algorithm 을 수행하는하드웨어또는소프트웨어를말함 대상신호가이산신호 디지털회로를이용한 하드웨어적방법 프로그래밍에의한 소프트웨어적방법 x(t) Analog input 아날로그회로 y(t) Analog output x(t) Analog input Input filter ADC DSP DAC Output filter x(n) y(n) y(t) Analog output
필터의개념 6 A/D 변환기의변환과정 ADC Sampling Quantizing Encoding
디지털필터의종류 이동평균필터 (Moving Average Filter) 평균화처리 현재의입력값이전입력값몇회전의입력값 1. 데이터들을지연 2. 몇개의데이터들을가산 x(t) Analog input A / D 변환기 데이터 1 데이터 2 데이터 n ( 버림 ) 3. 이개수로나누는처리 이처리를입력신호의 전데이터에대하여실행 ( 평균화 ) D / A 변환기 y(t) Analog output 평균화처리 원데이터 (raw data) 의평균으로잠재적인경향을보고자함 평활화 (smoothing) 및저대역필터링 7
이동평균필터 (Moving Average Filter) 이동평균의블록도에의한표현 x(t-1) x(t-2) x(t-3) x(t-4) 입력 x(t) D D D D 출력 1/5 y(t) x(t) + x(t-1) 출력 y( t) = 1 5 4 k = 0 x( t k) 이동평균의예 x(t) ο ο ο ο ο ο ο ο ο ο Ú 가산 Ú 승산 t y(t) ο ο ο ο ο 1/5 ο ο ο 1/5 ο ο t 8
9 이동평균필터 (Moving Average Filter) 평균화하는데이터개수를변경한경우의예 처리결과의진폭스펙트럼이어떻게변화하는가를표현함
10 FIR (Finite Impulse Response) 필터 FIR 필터의특징 유한임펄스필터 비순환필터 귀환부분이없어 IIR 보다안정적 IIR 보다선형위상응답의구현이용이 FIR 필터설계의목적 FIR 은임펄스응답 h(n) 을결정하는것
블록선도 FIR 필터의비재귀구조 ( 직접형 ) x[n] D x[ n 1] D x[ n 2] D D x[ n M ] a0 a1 a2 am 1 am + + + + y(n) 차분방정식 M y[ n] = a x[ n k] Y ( z) = H ( z) X ( z) k = 0 k 전달함수 M H ( z ) = k = 0 a k z k 11
12 IIR (Infinite Impulse Response) 필터 IIR 필터의특징 무한임펄스필터 순환필터 일종의 memory 또는 feedback 을가지는시스템 귀환로를가지고있으므로항상안정하다고할수는없다 IIR 필터설계의목적 IIR 은필터계수 a k, b k 를결정하는것
블록선도 IIR 필터의재귀구조 ( 직접형 ) x [n] x [ n 1] x[ n 2] D D D D x[ n M ] a0 a1 a2 a3 am 1 am + + + + + + + + + + y[n] -bn -bn 1 -b3 -b2 -b1 y[ n N] D D D D y[ n N +1] y[ n 3] y[ n 2] y[ n 1] 13
14 차분방정식 전달함수 = = = N k k M k k k n y b k n x a n y 1 0 ] [ ] [ ] [ ) ( ) ( ) ( ) ( ) ( 2 1 z Y z H z X z H z Y = = = + = N k k k M k k k z b z a z H 1 0 1 ) ( IIR 필터의재귀구조 ( 직접형 )
15 PART II 디지털필터설계
16 디지털필터설계순서 시작 1. 필터사양 사양변경 2. 전달함수의결정 재계산 3. 구조결정 구조변경 4. 유한어장오차의해석 5. 하드웨어또는소프트웨어구현및검증 재설계 시작
1. 필터의설계사양결정 통과대역에따른필터의종류 원하는필터의형태결정 저역통과필터 (lowpass filter : LPF) 고역통과필터 (highpass filter : HPF) 대역통과필터 (bandpass filter : BPF) 원하는필터의특성 등을결정 대역저지필터 (bandstop filter : BSF) 이상적인진폭특성을가지는필터 1 1 최종설계사양결정 진폭 통과역저지역 진폭 저지역통과역 0 ω 0 ω 0 ω 0 ω (a) 저역통과필터 (b) 고역통과필터 1 진폭 저지역 통과역 저지역 1 진폭 통과역 저지역 통과역 ω 2 0 ω 1 ω (c) 대역통과필터 ω 2 0 ω 1 ω (d) 대역저지필터 17
18 저역통과필터 (LPF) 의진폭특성사양 실제로구해지는필터의주파수특성 H ( e j 2π f ) 1+δ p 1 1 δ p δ s f f p 0 0. 5 f s 통과대역천이대역저지대역
FIR 혹은 IIR 필터의선택 FIR 과 IIR 필터비교 구현비용 FIR 필터 높다 - 차수가상대적으로높아서소자가많이필요 IIR 필터 낮다 -차수가상대적으로낮아서소자가적게필요 안정도높다주의를요함 위상특성선형위상특성을얻기쉽다. 선형위상특성을얻기어렵다. 제한된비트수영향낮다 - 적은반올림계수오차 - 적은반올림잡음 높다 - 큰반올림계수오차 - 큰반올림잡음 제반사항고려 원하는필터결정 19
20 2. 필터계수계산 ( 전달함수결정 ) 주어진필터규격을만족하도록필터계수 ( 전달함수 ) 결정 FIR 필터계수계산 (h(n)) 창함수방법 주파수샘플링방법 IIR 필터계수계산 (a k, b k ) 간접설계 직접설계
FIR 필터설계시창함수에의한설계법 무한한길이의임펄스응답을제한하기위함 창함수를사용한 FIR 필터계수계산순서 유한한길이의창함수를임펄스응답에곱함 원하는필터의주파수응답 (H D (ω)) 를결정 h( n) = w( n) h ( n) D H ( ω) = W ( ω)* H ( ω) D 임펄스응답 h D (n) 를구함 -> Inverse Fourier Transform 윈도우선택 FIR 필터계수계산 21
FIR 필터설계시창함수에의한설계법 창함수의종류 방형창 w[ n] = 1, M n M = 0, elsewhere 해밍창 w[ n] = = 0.54 + 0.46 cos 0 elsewhere. nπ, M M n M 해닝창 w[ n] = = 0.5 + 0.5cos 0 elsewhere. nπ, M + 1 M n M 블랙맨창 w[ n] = 0.42 + 0.50 cos = 0 elsewhere. nπ M + 0.08cos 2nπ, M M n M 22
23 FIR 필터설계시창함수에의한설계법 해밍창을사용한 FIR 필터설계의예 주파수영역 H (ω) D [n] 시간영역 이상적인 LPF인 H D (ω) 에윈도우함 h D 수 W (ω) 를컨벌루션하여원하는사양의 H (ω) 를구하는과정을나타냄. W (ω) ω (a) w[n] n 각창함수에대한필터의진폭특성 ω (b) n H (ω) h[ n] = hd[ n] ω[ n] ω (c) n
24 FIR 필터설계시창함수에의한설계법 창함수를적용한저역통과용필터계수 각필터계수를사용한저역통과필터의특성 저역통과필터용필터계수 N 방형창해밍창블랙맨창 0 6.000000e-01 6.000000e-01 6.000000e-01 ±1 3.027307e-01 2.959150e-01 2.906970e-01 ±2-9.354893e-02-8.533045e-02-7.944454e-02 ±3-6.236595e-02-5.054020e-02-4.208082e-02 ±4 7.568267e-02 5.162677e-02 3.858205e-02 ±5 2.338826e-17 1.262966e-17 7.952008e-18 ±6-5.045512e-02-2.007368e-02-1.012988e-02 ±7 2.672826e-02 7.206442e-03 2.709872e-03 ±8 2.338723e-02 3.925598e-03 9.404675e-04 ±9-3.363675e-02-3.448237e-03-3.092260e-04 ±10-2.338826e-17-1.871061e-18 3.245773e-34
25 3. 전달함수를적절한구조로변환 필터의적합한구조결정 구현의용이성 ( 하드웨어, 소프트웨어의복잡성 ) h(n) 또는 H(z) 의계수계산난이도 계수양자화에대한민감도 Direct 형 ( 직접형 ) Cascade 형 ( 종속형 ) Parallel 형 ( 병렬형 )
4. 필터성능에미치는유한어장 (finite wordlength) 영향의해석 실제구현에서필터계수를표시하기위해사용되는비트수는유한 ( 보통 8, 16bits) 필터의성능저하 설계자는유한한 bit 수의영향을해석하여필터계수, 필터변수 ( 입출력샘플등 ), 산술적인계산에대한적절한 bit 수를선택 유한어장으로인한주요특성열화사항 입출력양자화오차 아날로그신호를 A/D 변환시양자화오차발생 오버플로우발진 계수양자화오차 필터계수를유한한 bit 로표현할때발생 반올림오차 가산결과가허용하는어장을초과시발생 사용되는프로세서의어장때문 26
양자화오차의예 3 bit(8 레벨 ) 양자화기를이용한양자화 3 2 양자화전샘플 양자화후샘플 원래의신호 진 폭 0 2 3 4 0 011 T 2T 3T 4T 5T 000 100 110 011 010 t 표본화및양자화정도에따른비교 (a) 원래의파형 (b) 낮은표본화와양자화 (c) 높은표본화와양자화 27
28 5. 하드웨어또는소프트웨어로필터구현 하드웨어에의한실현 장점 안정성이나속도면에서는소프트웨어방법보다우수 전용하드웨어로디지털필터를구현시고속으로동작 단점 필터특성변경시새로설계구현등의불편함 스펙에따른설계가어렵다. 필터의종류에따라하드웨어를따로구성해야한다. 가격이비싸다.
하드웨어에의한실현 승산기를이용한하드웨어디지털필터실현 (FIR) y[ n] = N 1 k = 0 h k x[ n k] 디지털필터의하드웨어구성요소 A/D 레레레 x(n) x(n-1) 지지지 x(n-n+1) 스터 스터 스터 계수용메모리 승산기 x h(0) h(1) : h(n-1) 가산기 지연기 ( 시프트레지스터 ) ADD ACC ADD: 가감산기 ACC: 누적가산기 메모리등 D/A 디지털출력용레지스터아날로그출력 29
30 소프트웨어에의한실현 프로그래밍으로구현 장점 필터특성변경시프로그램적변경이용이 동일한소프트웨어구성을이용하여프로그램의변경만으로다양한필터를실현할수있다. 대량생산이가능하고가격이싸다. 단점 동작속도가늦다.
소프트웨어에의한실현 버터워스형저역통과필터의 5 차계수를사용한경우의 IIR 필터의프로그램예 ha hb 버터워스형필터의필터계수 Low-pass filter 0 1.0000 1 0.0000 2-0.4860 3 0.0000 4-0.0177 0 0.0940 1 0.3759 2 0.5639 3 0.3759 4 0.0940 #include <stdio.h> #include <stdlib.h> main(){ double sum, *d, dd; /* d: 입력할데이터의배열, dd: 입력에사용하는변수명 */ int hn=5, dn, i, j; /* hn: 차수, 입력할데이터의개수 */ double ha[5]={1.0000,0.0000,-0.4860,0.0000,-0.0177}; /* 필터계수 ha */ double hb[5]={0.0940,0.3759,0.5639,0.3759,0.0940}; /* 필터계수 hb */ } scanf( "%d", &dn ); /* 데이터개수를입력함 */ d = malloc(sizeof(double)*dn); for(i=0; i<dn; i++) d[i]=0.0; printf( "%d \n", dn ); for(i=0; i<dn; i++){ for(j=hn-2; j>=0; j--) d[j+1] = d[j]; /* delay */ scanf("%f", &dd); /* 데이터를입력함 */ /* 전단의 FIR형필터처리 */ sum = dd; for(j=1; j<=hn; j++) sum += d[j] * ha[j]; d[0] = sum; /* 후단의 FIR형필터처리 */ sum = 0.0; for(j=0; j<hn; j++) sum += d[j] * hb[j]; } free(d); printf( "%lf \n", sum ); 31
IIR 형필터의프로그램의예 버터워스형저역통과필터의필터계수를사용한경우 버터워스형필터의특성 버터워스형필터의필터계수 Low-pass filter High-pass filter 0 1.0000 1.0000 1 0.0000 0.0000 2-0.4860-0.4860 ha 3 0.0000 0.0000 4-0.0177-0.0177 hb 0 0.0940 0.0940 1 0.3759-0.3759 2 0.5639 0.5639 3 0.3759-0.3759 4 0.0940 0.0940 32
IIR 형필터의프로그램의예 체비체프형필터의필터계수의예 체비체프형필터의특성 체비체프형필터의필터계수 Low-pass filter High-pass filter 0 1.0000 1.0000 1-6.6654 0.6654 2-0.7177-0.7177 ha 3-0.1184 0.1184 4-0.0420-0.0420 hb 0 0.1588 0.1588 1 0.6352-0.6352 2 0.9528 0.9528 3 0.6352-0.6352 4 0.1588 0.1588 33
34 부 록
35 FIR 필터의종류 FIR 필터의블록선도 직접형 전치형
36 FIR 필터의종류 종속형 (cascade form) 격자형 (lattice form)
37 IIR 필터의종류 IIR 필터의블록선도 직접형 표준형
38 IIR 필터의종류 종속형 (cascade form) 병렬형 (Parallel form)
39 IIR 필터의종류 격자형 (lattice form)
40 고전적인아날로그필터의종류 통과대역과저지대역의형상에의한필터의분류
41 하드웨어로필터구현 하드웨어에의한구성 입력 x(nt) 레지스터 a M 레지스터 a M-1 레지스터 a 1 레지스터 a 0 레지스터 ( 지연용 ) 레지스터 ( 지연용 ) 레지스터 ( 지연용 ) 레지스터 ( 지연용 ) 출력 y(nt)
소프트웨어로필터구현 필터계수의수가 11 차인경우의저역통과필터의필터계수와특성비교 FIR 형저역통과필터의계수예 N 계수 0 6.000000e-01 ±1 3.027307e-01 ±2-9.354893e-02 ±3-6.236595e-02 ±4 7.568267e-02 ±5 2.338826e-17 ±6-5.045512e-02 ±7 2.672826e-02 ±8 2.338723e-02 ±9-3.363675e-02 ±10-2.338826e-17 42
소프트웨어로필터구현 저역통과필터의 11 차계수를사용한경우의 FIR 필터의프로그램예 #include <stdio.h> main() { int num, n=11, i, k; double sum, d[11]={0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double h[11]={ 2.338826e-17, /* -5 */ 7.568267e-02, /* -4 */ -6.236595e-02, /* -3 */ -9.354893e-02, /* -2 */ 3.027307e-01, /* -1 */ 6.000000e-01, /* 0 */ 3.027307e-01, /* 1 */ -9.354893e-02, /* 2 */ -6.236595e-02, /* 3 */ 7.568267e-02, /* 4 */ 2.338826e-17 /* 5 */ }; scanf( "%d", &num ); printf( "%d \n", num ); for(k=0-2/n; k<num+n/2; k++) { for(i=n-2; i>=0; i--) d[i+1] = d[i]; /* 데이터를하나씩우측으로이동 */ if(k<num) scanf("%lf", &d[0]); /* 최신데이터의입력 */ else d[0]=0.0; } } sum = 0.0; for(i=0; i<n; i++) sum +=d[i] * h[i]; if(k>=0) printf("%lf \n", sum); 43
44 소프트웨어로필터구현 각저역통과필터통과후의파형및진폭스펙트럼의비교
소프트웨어로필터구현 버터워스형 IIR 저역통과필터의 5 차계수를사용한경우의프로그램예 #include <stdio.h> #include <stdlib.h> #include <string.h> long WaveSize(FILE *); void fread( short*, int, int, FILE* ); main() { int hn=5, i, j; double sum; FILE *fpo, *outfp1; char fno[50], file_out1[50]; short *s_data; double *d_data; long datano; double ha[5]={1.0000, 0.0000, -0.4860, 0.0000, -0.0177}; /* 필터계수ha*/ double hb[5]={0.0940, 0.3759, 0.5639, 0.3759, 0.0940}; /* 필터계수hb*/ /* Allocate malloc size */ if(null==(d_data=(double *)malloc(datano*sizeof(double)))){ perror("no Memory d_data\n"); exit(1); } for(i=0;i<datano;i++){ d_data[i] = 0.0; } for(i=0;i<datano;i++){ d_data[i] = (double)s_data[i]; fprintf(outfp1," %lf \n", d_data[i]); } for(i=0; i<datano; i++) { for(j=hn-2; j>=0; j--) d_data[j+1] = d_data[j]; /*------------------------ * Reading of Speech ------------------------*/ strcpy(fno, "./Speech_data/h1-v061.8kz"); fpo=fopen(fno,"rb"); if(fpo==null){ printf("fpo not open!!"); exit(1); } datano = WaveSize(fpo); fseek(fpo,0,0); /* Allocate malloc size */ if(null==(s_data=(short *)malloc(datano*sizeof(short)))){ perror("no Memory data size \n"); exit(1); } fread(s_data, osizeof(shrt), datano, fpo); /*--------------------------------------------------- * Output File Open(SNR OUTPUT FILE) --------------------------------------------------*/ strcpy(file_out1, "filterout.data"); if((outfp1 = fopen(file_out1, "wt")) == NULL ){ printf("can't Open File_out1! \n"); exit(1); } } } free(s_data); free(d_data); /* 앞단의 FIR형필터처리 */ sum = d_data[i]; for(j=1; j<=hn; j++) sum += d_data[j] * ha[j]; d_data[0] = sum; /* 뒷단의 FIR형필터처리 */ sum = 0.0; for(j=0; j<hn; j++) sum += d_data[j] * hb[j]; fprintf(outfp1," %lf \n", sum); fclose(outfp1); /*------------------------ * WaveSize Function ------------------------*/ long WaveSize(FILE *fp){ long work; if( fseek(fp,0l, 2)!=0 ) return(0l); work=ftell(fp)/sizeof(short); return(work); } 45
46 창함수에의한디지털필터의설계예 창함수를적용한고역통과용필터계수 N 고역통과필터용필터계수 방형창해밍창해닝창블랙맨창 0 6.000000e-01 6.000000e-01 6.000000e-01 6.000000e-01 ±1-3.027307e-01-2.959150e-01-2.953224e-01-2.906970e-01 ±2-9.354893e-02-8.533045e-02-8.461580e-02-7.944454e-02 ±3 6.236595e-02 5.054020e-02 4.951187e-02 4.208082e-02 ±4 7.568267e-02 5.162677e-02 4.953495e-02 3.858205e-02 ±5-2.338826e-17-1.262966e-17-1.169413e-17-7.952008e-18 ±6-5.045512e-02-2.007368e-02-1.743181e-02-1.012988e-02 ±7-2.672826e-02-7.206442e-03-5.508893e-03-2.709872e-03 ±8 2.338723e-02 3.925598e-03 2.233282e-03 9.404675e-04 ±9 3.363675e-02 3.448237e-03 8.231497e-04 3.092260e-04 ±10-2.338826e-17-1.871061e-18-0.000000e+00 3.245773e-34
47 창함수에의한디지털필터의설계예 각필터계수를사용한고역통과필터의특성
48 창함수에의한디지털필터의설계예 창함수를적용한대역통과용필터계수 N 대역통과필터용필터계수 방형창해밍창해닝창블랙맨창 0 4.000000e-01 4.000000e-01 4.000000e-01 4.000000e-01 ±1 1.156329e-01 1.130295e-01 1.128031e-01 1.110364e-01 ±2-2.449142e-01-2.233981e-01-2.215270e-01-2.079886e-01 ±3-1.632761e-01-1.323159e-01-1.296238e-01-1.125253e-01 ±4 2.890821e-02 1.971967e-02 1.892067e-02-1.473703e-02 ±5 1.559217e-17 8.419774e-18 7.796086e-18 5.301338e-18 ±6-1.927214e-02-7.667466e-03-6.658358e-03-3.869270e-03 ±7 6.997550e-02 1.886671e-02 1.442247e-02 7.094537e-03 ±8 6.122856e-02 1.027735e-02 5.846808e-03 2.462175e-03 ±9-1.284809e-02-1.317110e-03-3.144152e-04-1.181138e-04 ±10-1.559217e-17-1.247374e-18-0.000000e+00 2.163848e-34
49 창함수에의한디지털필터의설계예 각필터계수를사용한대역통과필터의특성