Filtracja typu FIR: Zasada działania

W niniejszym artykule zaprezentowano koncepcję zastąpienia amplifiltrów analogowych za pomocą stosunkowo prostych filtrów cyfrowych typu FIR (o skończonej odpowiedzi impulsowej). Motywacją do wprowadzenia rozwiązań z dziedziny DSP (cyfrowego przetwarzania sygnałów) były przede wszystkim: chęć ujednolicenia platformy sprzętowej dla wszystkich omawianych filtrów, stabilność i powtarzalność uzyskiwanych parametrów filtrów oraz względna łatwość ich programowej implementacji.

Omawiane dalej projekty filtrów cyfrowych zostały zaimplementowane z użyciem ekonomicznej platformy STM32 Nucleo-32 (moduł NUCLEO-STM32L432KC), a ich charakterystyki obliczone symulacyjnie zostały także przebadane pomiarowo.

Jak wspomniano powyżej, idea zastąpienia amplifiltrów analogowych za pomocą względnie nieskomplikowanych filtrów cyfrowych typu FIR (ang. Finite Impulse Response, czyli filtrów o skończonej odpowiedzi impulsowej, zwanych także filtrami transwersalnymi) zrodziła się przede wszystkim w oparciu o wnioski z wcześniejszych części tego cyklu publikacji.

Szczególnie wyraźnie zagadnienia te dotyczyły filtrów wąskopasmowych o znacznej dobroci (typu „peak” oraz „notch”).

O ile skuteczna implementacja rozwiązań z dziedziny DSP (ang. Digital Signal Processing, czyli cyfrowego przetwarzania sygnałów) także stawia przed konstruktorem liczne wymagania i obostrzenia, o tyle jednak kusząca jest względna łatwość ich programowej implementacji na jednolitej, powtarzalnej platformie sprzętowej w przypadku wszystkich omawianych filtrów.

Przeczytaj także: Właściwości antracytu Typ N dla filtracji

Dodatkową zachętą okazała się możliwość skorzystania w tym celu z popularnego, łatwo dostępnego (i to w przystępnej cenie), niewielkiego modułu NUCLEO-STM32L432KC produkcji firmy ST Microelectronics w postaci PCB o rozmiarze Arduino Nano.

Wstępna analiza właściwości przedmiotowego modułu z mikrokontrolerem STM32L432KC wykazała potencjalną przydatność do realizacji podstawowych technik DSP w zastosowaniach z dziedziny m.cz., czyli głównie audio.

Zasadniczo celem tej publikacji nie jest szczegółowe omawianie licznych zagadnień z rozległej dziedziny cyfrowego przetwarzania sygnałów, jakkolwiek autor niniejszego opracowania poczuł się w obowiązku przedstawić w tym miejscu przynajmniej minimalne teoretyczne podstawy DSP, wykorzystywane dalej na potrzeby rozpatrywanych rozwiązań praktycznych i wprowadzane na bieżąco razem z nimi.

Na rysunku 34 [1] zaprezentowano dwie klasyczne koncepcje cyfrowych torów analizy i przetwarzania sygnałów: analog-cyfra-analog (a) oraz cyfra-analog-cyfra (b). Na ilustracjach użyto następujących oznaczeń: ∆t - okres próbkowania, fpr - częstotliwość próbkowania.

Jak widać, oprócz umieszczonego centralnie układu przetwarzania wartości dyskretnych (czyli zazwyczaj układu mikroprocesorowego, μP) oraz przetworników A/C (ADC) i C/A (DAC), niezbędnych do obróbki sygnałów w pełni analogowych (tzn. ciągłych w dziedzinie czasu i wartości fizycznych), na wejściu układu znajdują się także analogowy filtr antyaliasingowy, a na wyjściu toru - analogowy filtr rekonstrukcji.

Przeczytaj także: Definicja i pomiar filtracji kłębuszkowej

Pierwszy z tych bloków jest niezbędny z uwagi na ryzyko wystąpienia zjawiska aliasingu, czyli pasożytniczego przenikania do spróbkowanego sygnału powielonego widma sygnału użytecznego, powtarzanego wokół całkowitych wielokrotności częstotliwości próbkowania ±n∙Fs (n=1, 2, …).

Zjawisko aliasingu występuje wtedy, gdy nie jest spełnione tzw. kryterium Nyquista, tzn.

Na rysunku 35 [2] zilustrowano zjawisko powielania widmowego.

Filtry ograniczające pasmo przetwarzanego sygnału analogowego zapobiegają także skutkom występowania zjawiska niejednoznaczności częstotliwości.

Z kolei rysunek 37 [2] objaśnia celowość stosowania wstępnych, dolnoprzepustowych filtrów przetwarzanego sygnału analogowego z uwagi na ryzyko przedostawania się do przebiegu spróbkowanego zakłóceń spoza pasma B sygnału użytecznego - także w rezultacie występowania powielania widmowego.

Przeczytaj także: Webber AP8400 - wymiana filtrów

Jak łatwo domyśleć się, z powodu występowania opisanych zjawisk również sygnał analogowy na wyjściu systemu przetwarzania wg rysunku 34 - odtworzony np. za pomocą prostokątnych próbek sygnału - powinien zostać poddany analogicznej filtracji dolnoprzepustowej.

Jako „układ dyskretny (μP)”, realizujący przetwarzanie sygnału cyfrowego x[n] na y[n] (rysunek 34a) w pierwszym, stosunkowo najprostszym implementacyjnie podejściu zaproponowano filtr cyfrowy typu FIR (transwersalny lub inaczej nierekursywny), czyli o skończonej odpowiedzi impulsowej.

W przeciwieństwie do filtrów rekursywnych IIR (ang. Infinite Impulse Response), czyli o nieskończonej odpowiedzi impulsowej, filtry FIR cechuje gwarantowana stabilność, wynikająca z braku gałęzi sprzężenia zwrotnego.

Oznacza to także uproszczenie realizacji praktycznej oraz procesów projektowania i analizy właściwości.

Niestety ceną, jak trzeba zapłacić za te ewidentne zalety, jest potencjalnie znacznie większy nakład obliczeniowy, potrzebny do realizacji filtrów FIR, a wynikający z istotnie większej liczby bloków opóźniających oraz elementów mnożących niż w przypadku równoważnego funkcjonalnie filtru IIR.

Pomimo to zadanie zastąpienia prototypów analogowych w technice DSP rozpoczniemy od realizacji opartej właśnie na (prostsze) filtrach FIR.

Bloczki oznaczone „z-1” są układami opóźniającymi o jedną próbkę, natomiast bloczki oznaczone jako b0...b3 to człony mnożące (skalujące) wartości kolejnych czterech próbek.

Moduły „z-1” realizują swego rodzaju rejestr przesuwny typu FIFO (ang. First Input First Output), w którym nowsze próbki zastępują te wcześniej pobrane wg symbolicznej zależności x’[n-1]=x[n], a najstarsza próbka nieodwracalnie opuszcza rejestr.

Ciąg współczynników b0...b3 jednoznacznie definiuje właściwości filtru FIR, a jego długość jest zawsze o jeden większa od rzędu filtru.

Platformę sprzętową, niezbędną do przeprowadzenia opisanych dalej badań, zrealizowano z podziałem na dwie główne części.

Zastosowany mikrokontroler [4] był taktowany wewnętrznym zegarem, pracującym z maksymalną dopuszczalną dla tego MCU częstotliwością taktowania Fclk=80 MHz, przy czym źródłowy zegar wewnętrzny MSI był synchronizowany z zewnętrznym rezonatorem kwarcowym, pracującym z zegarem LSE o częstotliwości 32,768 kHz.

Zasoby obliczeniowe zastosowanego MCU oraz ustalona częstotliwość Fclk pozwoliły na implementację całkowitoliczbowych filtrów FIR o maksymalnym rzędzie równym 26 lub 27 (zależnie od podtypu filtru) przy częstotliwości próbkowania Fs=48 kHz (implementacje filtrów z zastosowaniem liczb zmiennoprzecinkowych typu float były znacznie wolniejsze).

Uzyskana częstotliwość Fs pozwoliła na pracę przyrządu z sygnałami analogowymi „monochromatycznymi” (czysta sinusoida) o częstotliwości maksymalnej Fmax=20 kHz, co zgadza się z kryterium Nyquista [1, 2] (Fmax < Fs/2=24 kHz).

Poza pinami zasilania (+3,3 V) i masy (GND) zastosowano oczywiście także: wejście przetwornika ADC1/8 (pin A3 modułu NUCLEO) oraz wyjście przetwornika DAC1 (pin A4 modułu NUCLEO).

Analogowe układy filtrujące, realizujące zadania bloków: filtru antyaliasingowego oraz filtru rekonstrukcji C/A, pokazanych na rysunku 34a, zrealizowano wg tej samej prostej koncepcji czterostopniowego filtru RC.

Poszczególne człony RC (pierwszego rzędu) zostały odseparowane wtórnikami opartymi na czterech wzmacniaczach operacyjnych, zawartych w strukturze układu MCP6004.

Taka nieskomplikowana koncepcja filtrów pozwoliła na uzyskanie znacznej impedancji wejściowej w całym przetwarzanym pasmie częstotliwości, niskiej impedancji wyjściowej, niemal idealnie płaskiej charakterystyki przenoszenia w pełnym użytecznym paśmie oraz prawie stałe opóźnienie grupowe w tymże zakresie częstotliwości.

Cechy te są bardzo korzystne z punktu widzenia pomiarowego przeznaczenia zaprojektowanych filtrów analogowych, a ich niezwykle prosta topologia dodatkowo istotnie ułatwia eksperymenty związane z korektą parametrów użytkowych filtrów, jednocześnie znacznie obniżając ich wrażliwość na rozrzut wartości zastosowanych elementów RC.

Nie byłoby to możliwe w przypadku zastosowania filtrów kratowych, np. w topologii Sallen-Key czy z wielokrotnym sprzężeniem zwrotnym.

Należy w tym miejscu wyjaśnić, że chociaż podana koncepcja filtrów analogowych nie zapewnia ich wysokiej skuteczności w roli filtrów antyaliasingowych, to w przedmiotowym zastosowaniu (czysto pomiarowym) nie jest to powód do zmartwienia, bowiem z uwagi na wysterowanie układu z założenia silnym, czystym sygnałem sinusoidalnym w dozwolonym pasmie przenoszenia, ryzyko zjawiska aliasingu praktycznie nie występuje.

Filtr wejściowy należy zatem traktować jako profilaktyczny filtr przeciwzakłóceniowy, natomiast filtr wyjściowy - jako układ wygładzający dla sygnału wyjściowego, odtworzony prostokątnymi próbkami przetworzonego sygnału testowego.

Ogromną zaletą zastosowanych wzmacniaczy operacyjnych jest zdolność do pracy ich wejść i wyjść w trybie RRIO (rail-to-rail input/output) - i to także przy niskim napięciu zasilania Vdd=+3,3 V, którym jest natywnie zasilany mikrokontroler STM32L432KC modułu STM32-Nucleo.

Dlatego celowo do zasilania układów U1 i U2 użyto właśnie tego napięcia. Zabieg ten miał na celu nie tyle uproszczenie konstrukcji bloku filtrów analogowych, co raczej zagwarantowanie, że wejście ADC mikrokontrolera nie zostanie przesterowane (co wiązałoby się z wysokim ryzykiem uszkodzenia MCU).

Ostatecznie przeciwzakłóceniowy filtr wejściowy został uzupełniony o wstecznie spolaryzowane diody zabezpieczające D2 i D3 (2×1N4148) na wejściu oraz D4 i D5 (2×BAT85) na wyjściu (diody Schottky’ego na wejściu nie sprawdzały się z uwagi na dość znaczne i nieidentyczne prądy wsteczne, które istotnie zaburzały wartość napięcia BIAS, polaryzującego wejście wzmacniacza U1A).

Elementy bierne L1...L3 oraz C1...C8 skutecznie separują napięcia zasilania Vdd i polaryzacji BIAS układów U1 i U2 od zasilania MCU, a dioda LED D1 z opornikiem R1 sygnalizuje obecność zasilania bloku filtrów.

Jak wspomniano wcześniej, do projektowania obwodów filtrów analogowych współpracujących z MCU wykorzystano popularne, stabilne i sprawdzone środowisko LTspice [5, 8].

Z kolei oprogramowanie mikrokontrolera napisano w środowisku STM32CubeIDE [6] - m.in. z użyciem bibliotek HAL (ang.

Natomiast właściwe filtry cyfrowe DSP zaprojektowano z użyciem darmowego środowiska Octave (pakiet ‘signal’) [8], przeznaczonego do szeroko pojętego programowania matematycznego i inżynierskiego.

Inicjacja w MCU bloków peryferiów GPIO, ADC oraz DAC i wyznaczenie składowej stałej na wejściu ADC (tzw.

Na potrzeby tej publikacji opracowano i przebadano cyfrowe odpowiedniki FIR wszystkich pięciu projektów amplifiltrów analogowych, prezentowanych w 2. i 3. odcinku naszego kursu (Filtry aktywne m.cz.

Do projektowania filtrów użyto wbudowanej funkcji programu Octave o nazwie fir1().

Jej zastosowanie jest bardzo proste - oprócz wymaganego rzędu projektowanego filtru należy jeszcze określić jego rodzaj (za pomocą jednego z parametrów - ciągów tekstowych: low, high, stop, pass, bandpass, DC-0 oraz DC-1).

Oprócz tego należy jeszcze określić jeden lub dwa momenty znamienne (wyrażone częstotliwością znormalizowaną względem wartości Fs/2), w których oczekiwany jest środek obszaru przejścia (spadku lub wzrostu) częstotliwościowej charakterystyki przejściowej projektowanego filtru cyfrowego.

Poprawnie sparametryzowana funkcja fir1() daje na wyjściu ciąg b(n) rzeczywistych współczynników filtru FIR, przy czym liczba tych współczynników jest zawsze o 1 większa od rzędu filtru Nord.

Opcjonalne okno kształtowania charakterystyki można podać jako wektor w - także o długości Nord+1. Jeśli nie określono inaczej, używane jest okno Hamminga o stosownej długości.

Przy zastosowaniu opcji noscale współczynniki filtru nie są normalizowane, jednak domyślnie filtr jest generowany w formie znormalizowanej - tak, aby odpowiedź amplitudowa dla środka pierwszego pasma przepustowego wynosiła 1.

tags: #filtracja #typu #fir #zasada #działania

Popularne posty: