[알고리즘]

FIR Filter와 IIR Filter의 차이점

Neo Park 2014. 9. 24. 12:11

 



필터란 말 그대로 거르는 역할을 합니다.

원하는 특정 주파수를 거르거나 통과시키는 역할을 합니다.

저 필터에 대한 이해를 하시면 주파수 영역에 대한 이해를 해야 합니다.

왜냐하면, 일반적으로 우리가 알고 있는 신호들은 시간영역에 속하지만 필터를 사용하기 위해서는

이러한 신호들을 주파수 영역으로 이동, 변환시켜 사용하게 되니까요. 문제는 이렇게 영역이 바뀐다는 것입니다.

 

우리가 알고 있는 수학이 모두 그러하듯 자연계에 존재하는 시간 영역의 신호를 주파수 영역으로 변환할 때

100% 완벽하게 변환하고 복원시키는 것이 어렵다는 것입니다.

따라서, 필터를 어떤 모양으로 만들어 사용하는 것이 신호를 변환하고 다시 복원시킬 때 가장 완벽하게

복원시킬 수 있는 지가 중요합니다.

 

예를 들어, IIR, FIR 같은 것들도 어떤 모양으로 만들 것인지에 따른 종류들이고,

또 필터링을 해야 하는 입력 신호들이 어떤 종류이며, 어떤 특징을 갖느냐에 따라 구분되어 있는 것입니다.

 

법이 다를 뿐 기본적인 목적은 같은 것이지요. 필터링의 문제는 회로적이라기 보다는 수학적인 문제에 가깝습니다.

Fourier Transform이나 Z Transform 같은 것을 공부하시면 도움이 많이 될 겁니다.

 

FIR 필터(finite impulse response filter) :

FIR필터는 디지털 필터의 한 종류로 입력신호의 일정한(유한한, finite) 값들만을 가지고 필터링을 수행한다.

따라서, 필터의 특성함수인 임펄스 응답을 구해보면 유한한 길이를 가지게 된다.

필터의 식의 형태에서 보면 회귀(feedback)성분을 갖지 않는다.

그러므로 동일한 특성을 구현할 때 차수가 IIR필터에 비하여 높아져서 구현비용(부품가격, 실행시간 등)이 많이 들지만

위상변이(즉, 입력과 출력간의 파형의 형태유지)가 중요한 경우에는 반드시 FIR필터를 사용해야 한다.

설계법으로는 윈도우에 의한 방법, 주파수 표본화 방법, 컴퓨터에 의한 최적 설계법 등이 있다.

 

IIR 필터(infinite impulse response filter) :

IIR필터는 디지털 필터의 한 종류로 입력신호의 값과 출력신호의 값이 재귀적으로(recursive, feedback) 적용되어

 필터링이 수행된다. 따라서 구현식의 형태로 반복식이 되며 특성함수인 임펄스 응답은 무한한 길이를 갖는다.

동일한 특성을 갖는 FIR필터에 비해 차수가 적어져서 경제성이 있으나 위상특성의 측면에서는 비선형성을 가지므로

(즉, 각 주파수 성분마다 위상의 차이가 비선형적으로 달라서) 입력 파형과 출력 파형이 유사한 파형을 갖지 않는다. 

설계법으로는 bilinear transform에 의한 방법, 임펄스 응답 불변법등이 있다.

이러한 방법은 공통적으로 차단 주파수 근방에서 진폭이나 주파수 축의 왜곡이 발생할 가능성이 있으므로

원하는 필터링 대역보다 표본화 주파수를 크게 잡는 것이 좋다.

 

 

***임펄스응답의 수령이 유한한 필터를 FIR필터라고 한다.

비재귀형의 FIR필터는 귀환 loop가 필요 없으므로 안정성이 보장된다.

특히 선형위상특성의 스펙을 만족하므로 파형전송 등의 응용에 널리 이용되고 있다.

그러나 FIR필터로 IIR필터와 동일한 정도의 진폭특성을 얻으려고 하면 차수가 매우 커지기 때문에 메모리 가산기,

그리고 승산기 등 하드웨어에 부담이 되는 문제점이 있다.

 

FIR필터를 설계할 경우 스펙이 주어지는 방법으로 주파수 영역과 시간영역의 2가지가 있다.

스펙이 주파수영역으로 주어지는 경우 창합수법과 주파수 샘플링법등이 많이 이용된다.

창합수법은 이상필터의 무한 임펄스응답을 유한 임펄스응답으로 근사하여 FIR필터의 계수를 경정하는 방법이고,

주파수 샘플링법은 설계스펙으로 주어진 진폭특성을 주파수축 상에서 샘플링하여 근사하는 방법이다

그외 remez알고리듬을 이용하거나 선형계획법을 이용한 최적 필터 설계법 등이 있다.

한편 시간영역 스펙으로 주어지는 경우 임펄스응답은 FIR디지털필터의 계수에 대응하므로 그 설계는 간단하다.

전달함수를 근사하는 방법으로는 선형계획법이 많이 알려져 있는데 최적해가 존재할 경우에는 유한계산으로 최적해를 구할 수 있다.

 

 

***FIR이나 IIR필터를 선택할 경우에는 두 필터의 장점을 고려하여 맞는 필터를 선택한다.

두 필터 사이의 상대적인 차이를 보면 다음과 같다.

 

- FIR 필터는 IIR 필터에 비해 구조가 간단하다.

- FIR 필터는 항상 안정성이 보장되지만, IIR 필터는 그렇지 않다.

- FIR 필터의 위상은 선형이고, IIR 필터의 위상은 비선형이므로 FIR 필터의 위상이 왜곡에 강건하다.

- FIR 필터를 사용하여 원하는 필터를 각이 지게 설계하려면 필터의 계수들이 IIR 필터를 사용했을 경우보다 더 많이 필요하게 된다.

- IIR 필터는 아날로그 필터의 구조와 비슷하므로 아날로그 필터로 변환이 쉬운 반면에 FIR 필터는 상대적으로 어렵다.

결론적으로 필터 설계의 요구 사항이 각진 필터라면 IIR 필터를 사용하고 위상에 있어서 왜곡을 원하지 않거나 계수들이

너무 많이 않다면 FIR 필터로 설계하면 된다.

 

 

 

FIR과 IIR필터의 비교 



일반적으로 filtering 의 목적은 input signal의 quality를 향상하거나 ( 예를 들면 노이즈의 제거 또는 감소),

signal 로부터의 정보를 알아내거나 , 합쳐진 signal을 다시 개개의 signal로 나누기도 한다.

Digital filter는 digital signal에 filtering algorithm을 적용하기 위한 hardware 또는software routine을 말한다.

 

Digital filter는 DSP에서 아주 중요한 부분을 차지하는데 이는 analogue filter와 비교해서 훨씬 더 많은 적용분야가 있다.

예를 들면 data compression , speech processing ,image processing, data transmission , digital audio 등 여러 분야에서 쓰이고 있다.

Digital filter는 analogue filter와 비교해 다음과 같은 장점이 있다.

 

1. Digital filter는 analogue filter에서는 없는 linear phase response성질을 가지고 있다.

2. Digital filter는 환경에 의한 영향 ,예를 들면 온도 변화와 같은 환경에 대하여 성능의 변화가 없다.

3. Digital filter의 frequency response는 프로그램 가능한 processor를 사용하여 자동적으로 조정이 가능하다.

4. 하나 이상의 signal을 오직 digital filter 하나로 filtering 할 수 있다.

5. Filtered and unfiltered data를 다 저장이 가능하다.

6. Digital filter는 아주 낮은 frequency에서도 사용이 가능하고 , 따라서 단지 sampling frequency만 바꿔서 넓은 범위의

frequency영역에도 성능을 발휘할 수 있다.

하지만 ADC과정에서 생기는 round-off error , 그리고 design 하고 개발하는데 시간이 많이 소요된다는 단점도 있다.

 

 

- Digital filter는 넓게 다음 두 가지로 구분된다.

Infinite impulse response(IIR) and Finite impulse response(FIR) filters 로 나뉜다.

두 가지 type 의 filter의 기본적인 식은 filter의 impulse response sequence h(k) 로 표현된다.

 

y(n)=시그마 k=0부터 무한대까지 h(k)x(n-k) : IIR filters

y(n)=시그마 k=0부터 N-1까지 h(k)x(n-k) : FIR filters

 

식에서 보면 FIR의 h(k) 는 유한한 값들을 가지지만  IIR의 h(k) 는 무한대의 값들을 가진다.

실제로 계산하기 위해서는 무한대의 계산은 불가능하므로 IIR filter의 경우 IIR filter는 현재의 y(n)을 계산하기 위해 현재 , 과거 input samples 뿐만 아니라 과거의 output도 사용이 된다는 것이다 . 즉 feedback의 형태를 띤다.

 

 

참조 : http://www.mcublog.co.kr/649

'[알고리즘]' 카테고리의 다른 글

FIR filter Desgin  (0) 2014.09.24
Filter 그리고 FIR, IIR  (0) 2014.09.24
[verilog] 연산자, 데이터, 넷, 주석  (0) 2013.10.11
[asm] shift 이용한 2로 나누기  (0) 2013.10.11
[verilog] binary division(이진 나눗셈)  (0) 2013.04.10