Při hledání informací na internetu jsem narazil na stránky jednoho velmi zajímavého programu firmy Iowegian International Corporation pro PC a operační systém Windows. Jde o ScopeFIR, software pro návrh digitálních FIR filtrů různými známými metodami. I když na první pohled neohromí grafikou a vypadá velmi jednoduše, dokáže velmi zajímavé věci. Nejen, že je velmi šikovný a přesto velmi jednoduchý na ovládání, ale i v bezplatné freewarové demoverzi je skoro plně funkční. Hlavní omezení je počet bodů impulsní odezvy, tedy řád filtru. Do zadané hodnoty 32 program plně funkční, tzn. že vám dle požadovaných zlomových kmitočtů navrhne koeficienty a přehledně je zobrazí, zobrazí frekvenční přenosovou amplitudovou i fázovou charakteristiku v lineárním i logaritmickém měřítku, impulsovou charakteristiku, či zobrazení v komplexním prostoru.
Vygenerované koeficienty lze exportovat do textového souboru v ASCII, hexa či binárním vyjádření pro snadné vložení jak do textu, tak do vývojových a simulačních programů, mezi které například patří MATLAB, či do programu DSP procesor. Pro řád vyšší než 32 (více jak 32 koeficientů FIR filtru) se sice software filtr také vypočítá a navrhne, dokonce i zobrazí všechny charakteristiky, ale nevypíše samotné hodnoty koeficientů. Takže vy se sice dozvíte, jak by takový filtr vypadal a lze například porovnat průběh filtru 32 řádu s například 50, ale v druhém případě jej prostě již „nezkonstruujete“. Pokud však chcete program využívat hlavně pro výukové a výzkumné účely, tak to ani tak moc nemusí nevadit. Druhým a také posledním významným omezením v této volné demoverzi je zrušení možnosti tisku a uložení zobrazených charakteristik.V praxi však lze bez problémů grafy roztáhnout přes celou obrazovku, vyfotit (klávesa PrtSc) a uložit je prostřednictvím nějakého fotoeditoru (viz obrázky v tomto článku).
Spočítané koeficienty FIR filtru lze exportovat do souboru na disku v
desítkové, hexa nebo binární soustavě pro snadné vložení například do programů
pro DSP.
Stejně tak lze koeficienty i importovat a zobrazit k nim příslušné
charakteristiky filtru.
Návrh FIR filtrů
Z pohledu samotného návrhu FIR filtrů se při volbě vytvoření nového projektu naskytne možnost si vybrat z nečekaně velkého množství algoritmů. Mimo asi neznámějšího principu návrh filtru přes nulové body impulsové odezvy funkce sinc(x) s případným aplikováním některého okna (Hanning, Hamming, Blackman, Kaiser, Gaussian, Dolph-Chebyshev), které lze ještě vcelku snadno pro malý počet koeficientů spočítat i „v ruce“ s papírem, tužkou a kalkulačkou, jsou zde k dispozici i méně známé metody:
- Simple Parks-McClellan (jednoduchý algoritmus Parks-McClellan)
- Advanced Parks-McClellan (rozšířený algoritmus Parks-McClellan)
- Windowed Sinc (oknem omezená funkce Sinc)
- Raised Cosine (filtr s modifikovaným / umocněným kosinusovým spektrem)
- Lth-Band (Nyquistův algortimus)
- Boxcar (obdélníkové okno – konstantní impulsová odezva)
- Maximally Flat (maximálně plochá charakteristika)
- CIC (kaskáda integrátorů a hřebenových filtrů)
Téměř u všech lze zvolit návrh filtru typu dolní propust (DP), horní propust (HP), pásmová propust (PP) a pásmová zádrž (PZ) a volit zlomové kmitočty, požadovaný nebo dovolený útlum v propustném i nepropustném pásmu, vzorkovací kmitočet a již zmíněný řád filtru. U různých algoritmů jsou pak k dispozici ještě „speciální okénka“ pro parametry vyžadované daným výpočtem. Sympatické je i to, že program vás nepustí zadat nějakou blbost (jako zlomový kmitočet filtru vyšší než fs/2 apod.), ale naopak bezproblémů zobrazí i filtr, který nesplňuje požadovanou frekvenční charakteristiku, protože byl například zvolen příliš nízký řád.
Po zadání parametrů filtru do políček a stisku tlačítka "Design"
program okamžitě "vychrlí" koeficienty a i velké verze grafů,
pokud
je to zvoleno v nastavení programu. Grafy lze i tisknout a jejich průběh uložit,
ale to pouze u plné Professional verze.
Další možnosti okolo filtrů
U zobrazených průběhů lze buď rozsah hodnot na osách definovat ručně nebo ponechat na automatice softwaru. Dále lze zvolit logaritmické nebo lineární souřadnice a zisk / útlum buď v absolutních hodnotách nebo v dB.
Samotný vygenerovaný a zobrazený průběh lze trasovat a tak si klidně zobrazit příslušné souřadnice jakéhokoliv bodu na charakteristice. Funkce Zoom, například pro „výzkum“ určitých zajímavých částí průběhu, je samozřejmostí. Jednotlivé body vygenerované impulsové odezvy lze prokládat libovolným počtem nul a tím měnit vzorkovací frekvenci nebo přidat libovolný počet nul na začátek či konec odezvy a filtr takto modifikovat.
Dále lze uměle omezit („seříznout“) útlum, změnit zisk filtru, na výslednou charakteristiku aplikovat okno a další. Pro programátory DSP a lepších MCU pak je velmi zajímavá funkce kvantizace vygenerovaných koeficientů na zadaný počet bitů i s následním zobrazením charakteristik takto upravených hodnot. Samozřejmě je možné i načíst externí „seznam koeficientů“ a zobrazit charakteristiky takového filtru.
Nabídka možných operací s filtry je docela rozsáhlá. Lze v jednom spuštěném
programu vygenerovat i více různých filtrů či signálů
(každý má svůj projekt = svoje okno a název), které lze i vzájemně spojovat
(filtrovat) pomocí funkce "Convolve".
Nejen návrh filtrů...
Mimo návrh FIR filtrů lze v programu vygenerovat i harmonický signál v podobě čisté sinusovky určité frekvence nebo složitější signál tvořený součtem několika sinusovek. Takto vytvořený signál je možné pomocí funkce konvoluce prohnat předtím nebo poté vytvořeným FIR filtrem a získat jak časový, tak i frekvenční průběh výsledného signálu. Podobně lze vygenerovat i třeba odezvu filtru na obdélník nebo skokovou změnu. Stejně jako koeficienty filtru (impulsní odezvu) lze i časový průběh vygenerovaného nebo vyfiltrovaného signálu (přesně řečeno vzorky signálu) exportovat do souboru. Dále lze funkci konvoluce využít i pro zjištění „filtračních charakteristik“ kaskády dvou či více vytvořených filtrů. Prostě jednoduše postupně konvolujeme mezi sebou jednotlivé filtry.
Příklad filtrace v programu ScopeFIR - zleva: FIR filtr typu pásmová
zádrž na 6 kHz, signál složený ze dvou sinusovek 6 a 8 kHz, výsledný vyfiltrovaný
signál
(pozn. toto obrázky jsou z OS Widows Vista)
Závěr
Program hodnotím jako velmi vydařený, i když po prvním spuštění hned nenadchne. Ale po chvilce, kdy zjistíte, jak se ovládá a co umí, lze si s ním docela pěkně vyhrát. Myslím si, že i zvídavý člověk či student některého elektrooboru, který zrovna nepotřebuje vytvářet filtry, si s programem ScopeFIR může pěkně vyhrát a přitom se dozvědět mnoho zajímavých věcí. Naopak těm všem, kdo právě řeší potřebu vhodně a hlavně rychle navrhnout vhodný filtr a nemají poruce nebo nechtějí použít například složitý MATLAB, může tento software „vytrhnout trn z paty“.
Více informací o programu i odkaz na stažení zde popisované volné verze najdete na přehledných stránkách výrobce http://www.iowegian.com. Program je krásně malinký (pouze 0.9 MB), takže jeho stažení je otázkou okamžiku i prostřednictvím pomalých internetových připojení. Navíc po rozbalení zip souboru například na Flash disku jej lze přenést a spustit na kterémkoliv PC bez potřeby instalace. Prostě v jednoduchosti je krása. ScopeFIR mě osobně bez problému běžel zmíněným způsobem z Flashky i z harddisku v OS Windows XP i ve 32bit. Windows Vista Home Basic. Z pohledu hardwaru prakticky stačí jakékoli PC, které je schopné bez omezení provozovat OS Windows XP nebo Vista..
Antonín Vojáček
vojacek@ hwg.cz
DOWNLOAD & Odkazy
- Domovská anglická stránka softwaru - www.iowegian.com/scopefir.htm
- Domovské stránky výrobce - http://www.iowegian.com
- Článek "TEST - QCAD = freewarový 2D CAD program pro Linux" na serveru automatizace.hw.cz
- Článek "Nový ProgeCAD 2008 Smart! - špičková freewarová náhrada AutoCADu i pro Windows Vista" na serveru automatizace.hw.cz