Upgraden van verouderde ontwerpen gebaseerd op analoge filters

Analoge filters bestaan al sinds het begin van elektronica, variërend van eenvoudige inductor-capacitor netwerken tot meer geavanceerde actieve filters met op-amps; beproefde legacy filterontwerpen voor een breed scala aan sensormeettoepassingen. Digitale filters die geïntegreerd zijn in de applicatiecode van de microcontroller zijn echter de norm geworden vanwege de prestatie-eisen van moderne IoT (Internet of Things) sensormeettoepassingen. En daarnaast vanwege de lagere productkosten. Maar hoe krijgen we het beste van twee werelden?

Ontwerpers hoeven niet het wiel op opnieuw uit te vinden. Ze kunnen een bestaande analoge filtertransferfunctie nemen en deze transformeren naar digitaal (via een transformatie). Deze kan vervolgens als digitaal filter geïmplementeerd worden in een microcontroller of DSP (digitale signaalprocessor). Transformaties van analoog naar digitaal bestaan al tientallen jaren. De beschikbaarheid van DSP-ontwerphulpmiddelen voor het aanpassen van het “getransformeerde digitale filter” is echter enigszins beperkt, wat het ontwerp- en validatieproces belemmert.

Een 2e orde analoog laagdoorlaatfilter is hieronder afgebeeld. In zijn simpelste vorm zijn er slechts 5 componenten nodig om het filter te bouwen. Dit klinkt eenvoudig, toch?

The pros

Het meest voor de hand liggende voordeel is dat analoge filters een uitstekende resolutie hebben, aangezien er geen rekening hoeft te worden gehouden met het “aantal bits”. Analoge filters hebben goede EMC (elektromagnetische compatibiliteit) eigenschappen, omdat er geen klok genererende ruis is. Er zijn geen effecten van aliasing, wat zeker geldt voor de eenvoudigere op-amps. Deze hebben geen fancy chopping of auto-calibration schakelingen in zich. En analoge ontwerpen kunnen goedkoop zijn, belangrijk wanneer kosten voor een toepassing belangrijk zijn.

Klinkt goed, maar wat is het slechte nieuws?

Analoge filters hebben een aantal belangrijke nadelen die de filterprestaties beïnvloeden. Zoals veroudering van componenten, temperatuurdrift en componenttolerantie. Bovendien vergt een goede prestatie goede analoge ontwerpvaardigheden en een goede PCB (printed circuit board) layout, welke moeilijk te vinden zijn.

Deze nadelen maken digitale filters erg geschikt voor moderne toepassingen die een hoge herhaalbaarheid van karakteristieken vereisen. Een voorbeeld: stel dat u 1000 meetmodules wilt vervaardigen nadat u uw filterontwerp hebt geoptimaliseerd. Met een digitale oplossing kunt u er zeker van zijn dat de prestaties van uw filter in alle modules identiek zijn. Dit is zeker niet het geval bij analoge oplossingen, omdat de tolerantie van de componenten, de veroudering van de componenten en de temperatuurdrift tot gevolg hebben dat het filter van elke module zijn eigen karakteristieken zal hebben. Bovendien blijft de frequentierespons van een analoog filter vast, oftewel een Butterworth-filter zal altijd een Butterworth-filter blijven. Om de frequentierespons te wijzigen, moeten de componenten op de printplaat fysiek worden gewijzigd, wat niet ideaal is!

Digitale filters zijn adaptief en flexibel. We kunnen een filter ontwerpen en implementeren met elke frequentierespons die we willen, het inzetten en dan de filtercoëfficiënten bijwerken zonder iets op de printplaat te veranderen! Het is ook gemakkelijk om digitale filters te ontwerpen met lineaire fase en bij zeer lage bemonsteringsfrequenties – twee dingen die lastig zijn bij analoog.

Laplace naar discrete/digitale transformaties

De drie hier besproken methoden houden in wezen in dat een (analoge) Laplace-overdrachtsfunctie, \(H(s)\) wordt omgezet in een discrete overdrachtsfunctie, \(H(z)\) ), zodat een analoog filter dat reeds in een ontwerp wordt gebruikt, kan worden geïmplementeerd op een microcontroller of DSP.
Een aantal nuttige Laplace-naar-Z-transformaties staan in onderstaande tabel weergegeven:

\(
\begin{array}{ccc}\hline
H(s) &\longleftrightarrow & H(z) \\ \hline
1 &\longleftrightarrow & 1 \\
\frac{\displaystyle1}{\displaystyle s}
&\longleftrightarrow& \frac{\displaystyle 1}{\displaystyle 1-z^{\scriptstyle -1}}\\
\frac{\displaystyle 1}{\displaystyle s^{\scriptstyle 2}} &\longleftrightarrow& \frac{\displaystyle
Tz^{\scriptstyle-1}}{\displaystyle (1-z^{\scriptstyle -1})^2}\\
\frac{\displaystyle 1}{\displaystyle s+a}
&\longleftrightarrow&
\frac{\displaystyle 1}{\displaystyle 1-e^{-aT}z^{-1}}\\
\frac{\displaystyle 1}{\displaystyle (s+a)^2}
&\longleftrightarrow& \frac{\displaystyle z^{-1}(1-e^{-aT})}{\displaystyle a(1-z^{-1})(1-e^{-aT}z^{-1})}\\\hline
\end{array}
\)
A table of useful Laplace and z-transforms

Bilineaire z-transformatie (BZT)

De bilineaire z-transformatie (BZT) zet eenvoudig een analoge overdrachtsfunctie, \(H(s)\) , om in een discrete overdrachtsfunctie, \(H(z)\) door alle \(s\)-termen te vervangen door het volgende:

\(\displaystyle
s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}} \label{bzt}\)

Waarbij \(T\) de bemonsteringsperiode van het discrete systeem is. Wanneer echter \(s=j\Omega\) en \(z=e^{jwT}\) in de BZT-vergelijking worden gesubstitueerd en vereenvoudigd, blijkt dat er in feite een niet-lineair verband bestaat tussen de analoge, \(\Omega\) en discrete, \(w\) frequenties. Dit verband wordt hieronder getoond en is het gevolg van de niet-lineariteit van de arctangensfunctie.

\(\displaystyle
\omega=2\tan^{-1}\left(\frac{\Omega T}{2}\right)
\label{bzt_warp_def1}
\)

Bij analyse van de vergelijking blijkt dat de gelijkmatig verdeelde analoge frequenties in het bereik – \(-\infty<\Omega<\infty\) op niet-lineaire wijze worden gecomprimeerd in het frequentiebereik \(-\pi<w<\pi\) n het discrete domein. Deze relatie wordt frequentievervorming genoemd, en kan worden gecompenseerd door de analoge frequenties vooraf te vervormen door:

\(\displaystyle
\Omega_c=\frac{2}{T}\tan\left(\frac{\Omega_d T}{2}\right)
\label{bzt_warp_def2}
\)

waarbij \(\displaystyle\Omega_c\) de gecompenseerde of voorgefilterde analoge frequentie is, en \(\displaystyle\Omega_d\) de gewenste analoge frequentie.

Het ASN FilterScript commando \(\texttt{bilinear}\) kan worden gebruikt om een Laplace overdrachtsfunctie om te zetten in zijn discrete equivalent met behulp van de BZT transformatie. Hieronder wordt een voorbeeld gegeven.

Impulsinvariante methode

De tweede transformatie wordt immpulsinvariante methode (Impulse Invariant Transform, IIT) genoemd, omdat de polen van de Laplace overdrachtsfunctie worden omgezet in hun discrete equivalenten. Zodat de discrete impulsrespons, \(h(n)\) identiek is aan een regelmatig bemonsterde representatie van de analoge impulsrespons. (Dat wil zeggen: \(h(n)=h(nT)\), waarbij \(T\) de bemonsteringsfrequentie is, en \(t=nT\)). De IIT is een veel omslachtigere omzettingstechniek dan de BZT, omdat de Laplace-overdrachtsfunctie eerst moet worden uitgebreid met partiële breuken voordat de transformatie toe te passen.

De transformatietechniek wordt hieronder gedefinieerd:

\(\displaystyle
\frac{K}{s+a} \quad\longrightarrow\quad
\frac{K}{1-e^{-aT}z^{-1}} \label{iit_def}
\)

Deze methode heeft meerdere beperkingen, aangezien geen transformatie van nullen of afzonderlijke constante termen (na expansie) mogelijk is. En zij moet een hoge bemonsteringsfrequentie hebben om de effecten van spectrale aliasing te ondervangen. De effecten van aliasing hinderen deze methode aanzienlijk. Daarom mag de methode alleen worden gebruikt wanneer de vereiste is dat de impulsrespons van de analoge overdrachtsfunctie overeenkomt, aangezien het resulterende discrete model een ander magnitude- en fasespectrum (frequentierespons) kan hebben dan dat van het oorspronkelijke analoge systeem. Daardaar is de impulseinvariante methode ongeschikt voor het modelleren van hoogdoorlaatfilters, en is zij derhalve beperkt tot het modelleren van laagdoorlaat- of banddoorlaatfilters.

Vanwege de bovengenoemde beperkingen van de IIT-methode wordt deze momenteel niet ondersteund in ASN Filterscript.

De matched-z transformatie

Een andere techniek van het analoog naar discreet modelleren is de matched-z transformatie. Zoals de naam al aangeeft, zet de transformatie de polen en nullen van de analoge overdrachtsfunctie direct om in polen en nullen in het z-vlak. De transformatie wordt hieronder beschreven, waarbij \(T\) de bemonsteringsfrequentie is.

\(\displaystyle
\frac{\prod\limits_{k=1}^q(s+b_k)}{\prod\limits_{k=1}^p(s+a_k)}
\quad\longrightarrow\quad
\frac{\prod\limits_{k=1}^q(1-e^{-b_kT}z^{-1})}{\prod\limits_{k=1}^p(1-e^{-a_kT}z^{-1})}
\label{matchedz_def}
\)

Uit analyse van de transformatievergelijking blijkt dat de getransformeerde polen in het z-vlak identiek zullen zijn aan de polen verkregen met de impulsinvariante methode. Merk echter op dat de posities van de nullen verschillend zullen zijn, omdat de impulsinvariante methode ze niet kan transformeren.

Het ASN Filterscript commando \(\texttt{mztrans}\) is beschikbaar voor deze methode.

Een gedetailleerd voorbeeld

Om het gemak van het transformeren van analoge filters in hun discrete/digitale equivalenten met behulp van de analoog naar discrete transformaties aan te tonen, volgt nu een voorbeeld van modellering met de BZT voor een analoog 2e orde laagdoorlaatfilter.

Een veralgemeend 2e orde analoog laagdoorlaatfilter wordt gegeven door:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+2\zeta w_c s + w_c^2}
\)

waarbij \(w_c=2\pi f_c\) de afsnijfrequentie is en \(\zeta\) de demping van het filter bepaalt, waarbij \(\zeta=1/\sqrt{2}\) kritisch gedempt wordt genoemd of gelijk aan to -3dB bij \(w_c\). Veel analoge ingenieurs kiezen ervoor om voor hun ontwerpen een kwaliteitsfactor, \(Q =  \displaystyle\frac{1}{2\zeta}\) of piekfactor te specificeren. Als we\(Q\) in \(H(s)\) invoegen, verkrijgen we:

\(\displaystyle
H(s)=\frac{w_c^2}{s^2+ \displaystyle{\frac{w_c}{Q}s} + w_c^2}
\)

Bij analyse van \(H(s)\) blijkt dat \(Q=1/\sqrt{2} = 0.707\) ook een kritisch gedempte respons oplevert. Verschillende waarden van \(Q\) worden hieronder weergegeven. Zoals te zien is dat als \(Q>1/\sqrt{2}\) piekvorming optreedt.

Prototype magnitudespectrum van het 2e orde laagdoorlaatfilter voor verschillende waarden van Q:
Merk op dat wanneer \(Q>1/\sqrt{2}\) piekvorming optreedt.

Voordat de BZT in ASN FilterScript wordt toegepast, moet de analoge overdrachtsfunctie in een analoog filterobject worden gespecificeerd. De volgende code maakt een analoog filterobject voor het hier beschouwde 2e orde laagdoorlaat-prototype:

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object

Het \(\texttt{symbolic}\) keyword genereert een symbolische weergave van de overdrachtsfunctie in het commandovenster. Voor een bemonsteringsfrequentie van \(f_s=500Hz\) en \(f_c=30Hz\) en \(Q=0.707\) verkrijgen we:

ASN FilterScript analoog commando

Toepassing van de BZT via het bilineair \(\texttt{bilinear}\) commando zonder prewarping,

 Hd=bilinear(Ha,0,"symbolic"); 

De volledige frequentierespons van het getransformeerde digitale filter staat hieronder, waarbij te zien is dat bij \(30Hz\) de magnitude \(-3dB\) is en de fase \( -90^{\circ}\), zoals verwacht. Merk ook op hoe de magnitude roll-off van het filter wordt beïnvloed door het dubbele nulpaar bij Nyquist (zie de z-vlak grafiek hieronder), wat leidt tot verschillen met zijn analoge neef. Pole-zero chart 2nd order LPF

2nd order LPF
De pool-nul posities kunnen worden getweaked binnen ASN Filterscript of via de ASN Filter Designer’s interactieve pool-nul z-vlak plot editor door alleen de muis te gebruiken!

Implementatie

De volledige code voor het omzetten van een veralgemeend 2e orde analoog laagdoorlaatfilter prototype in zijn digitale equivalent met behulp van de BZT via ASN FilterScript staat hieronder weergegeven:


ClearH1;  // clear primary filter from cascade
interface Q = {0.1,10,0.02,0.707};
interface fc = {10,200,10,40};

Main()

wc=2*pi*fc;
Nb={0,0,wc^2};
Na={1,wc/Q,wc^2};

Ha=analogtf(Nb,Na,1,"symbolic"); // make analog filter object
Hd=bilinear(Ha,0,"symbolic"); // transform Ha via BZT into digital object, Hd

Num=getnum(Hd);
Den=getden(Hd);
Gain=getgain(Hd);

Download demo

Licenties

Vanaf 1 maart gaan middelbare scholen weer open na de lockdown vanwege Covid-19. Het basisonderwijs en de kinderopvang zijn vanaf 8 februari open gegaan. Echter: nog niet alle scholen blijken te voldoen aan de richtlijnen voor ventilatie. Dit terwijl goed ventilatie mogelijk de verspreiding van het coronavirus verminderd. En zeker draagt goede ventilatie bij tot het welzijn en is gezonde lucht beter voor leerprestaties

Scholen gaan weer open

Het basisonderwijs en de kinderopvang is vanaf 8 februari weer open gegaan. Vanaf maandag 1 maart gaan de middelbare scholen en mbo-instellingen voor alle leerlingen weer open: op 23 februari heeft het kabinet besloten dat alle leerlingen en studenten minimaal 1 dag per week fysiek naar school gaan. Dit om meer perspectief aan jongeren te bieden: fysiek onderwijs draagt bij aan het welzijn en is beter voor leerprestaties.

Ventilatie schoolgebouwen: 777 schoolgebouwen voldoen nog niet

Het Landelijk Coördinatieteam Ventilatie heeft onderzoek uitgevoerd naar alle scholen (primair en voortgezet onderwijs) in hoeverre scholen voldoen aan de ventilatienormen. Hiervoor heeft zij in september een vragenlijst verstuurd.

Uit dit onderzoek blijkt dat nog niet alle schoolgebouwen aan de wettelijke normen voor ventilatie voldoen:

Onderzoek kwaliteit binnenlucht. De volledige vraag luidt: “Heeft er in het schoolgebouw per ventilatiesysteem een onderzoek plaatsgevonden naar de kwaliteit van de binnenlucht op basis van de capaciteit voor luchtverversing, een permanente CO₂-meting, of de indicatieve meetmethode? Voldoet het schoolgebouw aan de normen die voortkomen uit het Bouwbesluit en aanvullende richtlijnen?”

  • In september 2020 is door 7340 ingevuld. Uitgaande van 9331 is dit 79% van het totaal aantal scholen.
  • 777 scholen geven aan dat zij niet voldoen aan de richtlijnen. Dit is 11% van de totale respons van 7137 schoolgebouwen. Oftewel 22% van de scholen aangeven dat het onderzoek heeft plaats gevonden. Hier zijn technische aanpassingen nodig.
  • 2952 scholen geven aan dat zij voldoen aan de richtlijnen. Dit is 78% van de scholen waarbij het onderzoek heeft plaats gevonden.  Hierbij wordt wel bij 325 metingen opgemerkt dat men nu voldoet, maar zich zorgen maakt over de wintermaanden.
  • 2678 scholen geven aan op korte termijn onderzoek zullen uitvoeren, bijvoorbeeld wanneer er CO2 meters beschikbaar zijn
  • 730 scholen geven aan dat ze het onderzoek niet kunnen uitvoeren. “Als redenen om het onderzoek niet uit te voeren geeft men voor 128 gebouwen het onderzoek ‘later, op een nog niet bekend tijdstip uit te voeren’ en wordt voor 155 gebouwen opgemerkt dat geen CO₂-meters beschikbaar zijn.”

Bij het niet hebben kunnen uitvoeren speelt ook mee dat het onderzoek op korte termijn heeft plaats gevonden: sommige scholen hadden geen technici beschikbaar of gaven het onderzoek geen voorrang.

Scholen blijven open als ventilatie niet goed is

Schoolgebouwen moeten voldoen aan de wettelijke normen voor een gezond binnenklimaat conform het Bouwbesluit en de aanvullende richtlijnen.  Hiervoor stelt het kabinet € 360 miljoen beschikbaar om scholen te helpen de ventilatie op orde te krijgen.

Coronavirus en ventilatie

Op de site van de Rijksoverheid:

“Ventilatie en verspreiding van het coronavirus

  • Overdracht van het virus vindt vooral plaats bij verspreiding van grote druppels, via bijvoorbeeld hoesten en niezen, aldus het RIVM.
  • Het is op dit moment onduidelijk of kleine druppels, de zogenaamde aerosolen, een relevante rol spelen bij de overdracht van het virus. 
  • Ventileren en luchten helpen om luchtweginfecties te beperken.
  • Het RIVM adviseert in ieder geval de bestaande regelgeving en richtlijnen op het gebied van ventilatie en luchten te volgen. Dat geldt ook voor scholen. Bovendien leren leerlingen het beste in een prettige omgeving met gezonde lucht.
  • Het is onbekend in welke mate ventilatie helpt om de verspreiding van het virus daadwerkelijk tegen te gaan.”

Belang van ventilatie op welbevinden en leerprestaties

Sowieso is het coronavirus niet de enige reden voor ventileren:

  • Ventilatie kan helpen gezondheidsklachten als hoofdpijn te verminderen
  • Leerlingen leren het beste in een prettige omgeving met schone lucht. 

Het advies van de GGD is dan ook om scholen niet te sluiten bij onvoldoende ventilatie. Ook het kabinet noemt het belang van fysiek onderwijs voor het welzijn en leerpresaties in haar besluit om middelbare scholen en mbo-instellingen weer te openen, ondanks stijgende covid-19 aantallen.

Scholen die niet aan de normen voldoen, krijgen hierover nu al advies van de GGD, de arbodienst en Kenniscentrum Ruimte OK. Ook kunnen scholen gebruik maken van de handleiding die het Coördinatieteam heeft opgesteld. Zoals nemen van maatregelen als het plaatsen van roosters en het aanvullend luchten in pauzes.

Oplossingen als de Airmex kunnen helpen om de luchtkwaliteit in een schoolgebouw te bewaken door niet alleen CO2, maar ook temperatuur, luchtvochtigheid en volatiele deeltjes te meten. Dit voor een gezonde en prettige leeromgeving te creëren.

Vanaf gisteren zit Nederland in een harde lockdown. Het AD: “Lang was een harde lockdown iets voor andere landen, wij deden het ‘intelligent’ of ‘gedeeltelijk’. Maar nu pakt het kabinet toch de grote hamer en gaat Nederland een maand lang bijna helemaal op slot. Waar ging het mis?”

Daarbij noemt het AD 4 redenen:

  1. Gedrag: de pure angst is weg
  2. Scholen: ‘kinderen wellicht onderschat’
  3. Seizoenseffect: ‘Speelt zeker mee’
  4. Beleid: ‘Te traag, te laat’

Social Distance

Het artikel noemt dat in het begin van het jaar veel mensen thuis bleven vanwege angst zelf corona te krijgen. Nu blijkt dat niet iedereen met covid-19 meteen op de IC komt, is deze angst verdwenen. Daarbij is de rek er bij mensen uit, om gedragsregels na te leven.

Dat uit zich in het feit dat mensen veel minder thuis blijven: meer winkelen, meer reizen en steeds vaker op het werk. Daarbij wordt tevens de social distance niet altijd in acht gehouden: naast het zoveel mogelijk thuis blijven het handhaven van de social distance een van de voornaamste manieren om covid verspreiding tegen te gaan.

Een andere reden is dat de verspreiding van Covid bij kinderen, vooral die tussen 12 en 18 jaar, onderschat is. 8,5% van de herleidbare besmettingsbronnen van de afgelopen week was te herleiden naar school of kinderopvang. Daarnaast is het moeilijk grip te krijgen op de verspreiding onder de jeugd: de meeste jongeren hebben geen of slechts milde klachten. Daardoor kunnen ze corona binnen het gezin en verder verspreiden, die op hun beurt kwetsbare groepen als ouderen kunnen besmetten.

Seizoenseffect

Het artikel: “Weer en klimaat spelen een rol, zegt Osterhaus, al durft hij er geen gewicht aan te hangen. ,,De combinatie van temperatuur, uv-licht en vochtigheid telt mee, ik weet het zeker. Bovendien zitten we meer binnen bij kou en hoesten we elkaar eerder aan. Maar hoe groot het seizoenseffect is weten we nog niet. Feit is dat ook in warme landen dit virus nog altijd problemen geeft.”

Beleid te traag?

“Osterhaus zegt het al maanden, ic-boegbeeld Diederik Gommers pleitte er afgelopen weekeinde ook voor: de regering moet sneller reageren op de curve van het virus. Dat betekent: harder ingrijpen als aantallen oplopen, maar ook eerder versoepelen als corona een tandje terugschakelt.”

Wij durven geen uitspraken te doen of het beleid te traag was. Wel: wanneer Nederlanders de maatregelen als zoveel mogelijk thuis blijven en het handhaven van de social distance hadden nageleefd, zou er waarschijnlijk geen lockdown nodig zijn geweest.

Advanced Solutions Nederland kan helpen met het handhaven van de social distance op het werk, openbare gebouwen en scholen. Juist in situaties waar de social distance wel eens vergeten wordt, kan een covid buzzer helpen. Daarnaast is de Covid Airmex ontwikkeld: een device die controleert of de temperatuur, luchtvochtigheid, vluchtige stoffen en co2 optimaal zijn om de verspreiding van het covidvirus zoveel mogelijk tegen te gaan.

Advanced Solutions Nederland is blij te kunnen aankondigen dat het ASN Filter Designer Arm MDK5 software pack nu via Keil beschikbaar is om te downloaden! Het filterpakket biedt MDK-gebruikers een eenvoudige manier om het IP van ASN te gebruiken.

Keil MDK is de meest uitgebreide oplossing voor software-ontwikkeling voor Arm-gebaseerde microcontrollers. Voor MDK worden extra softwarecomponenten en ondersteuning voor microcontroller devices geleverd door softwarepakketten. Download hier

UI experience 2020 pack

Na het downloaden van de ASN Filter Designer willen de meeste mensen gewoon met de tool spelen, om een gevoel te krijgen of het voor hen werkt. Maar hoe ga je aan de slag met de ASN Filter Designer? Op basis van goede gebruikersfeedback wordt ASNFD v4.4 nu geleverd met het UI experience 2020-pakket. Dit pakket bevat gedetailleerde coachingstips, een verbeterde gebruikerservaring en stap-voor-stap instructies om je op weg te helpen met je ontwerp.

Een snel overzicht van de ASN Filter Designer v4.4 vindt je hieronder, een geweldige tool voorDSP IIR/FIR digitaal filterdesign!

De ASN Filter Designer heeft een snelle, intuïtieve gebruikersinterface. Ontwerp interactief, valideer en implementeer jouw uw digitale filter binnen enkele minuten in plaats van uren. Het kan echter moeilijk zijn om een eerste begin te maken met DSP-filterontwerp, vooral wanneer je geen diepgaande kennis hebt van digitale signaalverwerking. De meeste mensen willen gewoon experimenteren met een tool om een gevoel te krijgen of het voor hen werkt (ja, natuurlijk zijn er tutorials en video’s). Maar waar begin je dan?

Start onmiddellijk met experimenteren met het filterontwerp

Daarom hebben we het UI Experience 2020-pakket ontwikkeld. Op basis van de feedback van de gebruikers hebben we gedetailleerde tooltips en animaties van de belangrijkste functionaliteiten gemaakt. Binnen enkele minuten krijgt u een kickstart in functionaliteiten zoals chart zoom, panning en design markers.

This image has an empty alt attribute; its file name is methods_TP-3.png

Coachingstips, verbeterde gebruikerservaring, stap-voor-stap instructies

Gebaseerd op de feedback van de gebruiker bevat het UI Experience 2020-pakket:

  • Uitgebreide coachingtips
  • Gedetailleerde uitleg over ontwerpmethoden en soorten filters
  • Verbeterde gebruikerservaring:
    • cursors
    • animaties
    • visuele effecten
  • Links naar gedetailleerde werkende oplossingen, tutorials en stap-voor-stap instructies
This image has an empty alt attribute; its file name is Coaching-Tip3.png
This image has an empty alt attribute; its file name is Information-FD3.png

De feedback van de gebruikersgemeenschap is zeer positief! Door het verstrekken van gedetailleerde tooltips en animaties van de belangrijkste functionaliteit, is de eerste stap van het ontwerpen van een filter met jouw gewenste specificaties aanzienlijk vereenvoudigd.

Begin dus meteen met de ASN Filterontwerper en bespaar tot 75% op jouw ontwikkelingskosten!

ASN Filter Designer box
ASN Filter Designer box, the powerful DSP Filter Designer platform

DSP voor ingenieurs: de ASN Filter Designer is de ideale tool om de sensordata snel te analyseren en te filteren. Maak een algoritme binnen enkele uren in plaats van dagen. Wanneer u met sensorgegevens werkt, herkent u deze uitdagingen waarschijnlijk:

  • Mijn sensordatasignalen zijn te zwak om zelfs maar een analyse te maken. Daarom heb ik versterking van de signalen nodig
  • Waar ik een vlakke lijn zou verwachten, zien de gegevens eruit als een puinhoop door interferentie en andere vervuiling. Ik moet de gegevens eerst opschonen voordat ik ze analyseer.
Sensor data: wanted components, desired signals (DC components), and unwanted components (50HZ sine powerline interference, white noise). Filter sensor data DSP

Waarschijnlijk heb je tot nu toe dagen of zelfs weken gewerkt aan signaalanalyse en filtering. Het ontwikkelingstraject is over het algemeen langzaam en zeer pijnlijk. Denk maar eens aan het aantal uren dat je had kunnen besparen als je een ontwerptool had gehad die alle algoritmische details voor jou beheerde. ASN Filter Designer is een standaardoplossing voor de industrie die wordt gebruikt door duizenden professionele ontwikkelaars die wereldwijd aan iot-projecten werken.

Onze nauwe samenwerking met Arm en ST zorgt ervoor dat alle ontworpen filters 100% compatibel zijn met alle Arm Cortex-M processoren, zoals de populaire STM32-familie van ST.

Uitdagingen voor ingenieurs

  • 90% van IoT smart sensors zijn gebaseerd op Arm Cortex-M processor technologie
  • Sensor signal processing is moeilijk
  • Sensoren hebben moeite met interferentie en allerlei ongewenste componenten
  • Hoe ontwerp ik een filter dat voldoet aan mijn requirements?
  • Hoe kan ik mijn ontworpen filter controleren op testdata?
  • Voor betere product performance is schone sensor data nodig
  • Tijdrovend proces om een filter op een embedded processor te implementeren
  • Tijd is geld!

Ontwerpers verzanden vaak met traditionele tooling. Deze vereist meestal een iteratieve, trial and error aanpak of deskundige kennis. Met deze aanpak gaat kostbare tijd verloren. ASN Filter Designer helpt u met een interactieve ontwerpmethode. Hierbij voert de tool automatisch de technische specificaties in op basis van eisen die de gebruiker grafisch heeft ingevoerd.

Snelle ontwikkeling van het DSP-algoritme

  • Volledig gevalideerd filterontwerp: geschikt voor toepassing in DSP, Arm microcontroller, FPGA, ASIC of PC-toepassing
  • Automatische gedetailleerde ontwerpdocumentatie: de Filter Designer helpt je met documenatie, waardoor je de peer review kunt versnellen en projectrisico’s verlaagt
  • Eenvoudige overdracht: projectdossier, documentatie en testresultaten bieden een gemakkelijk manier voor overdracht aan collega’s of andere teams
  • Gemakkelijk in te passen in nieuwe scenario’s: het ontwerp kan eenvoudig worden aangepast aan andere eisen en scenario’s, zoals 60Hz interferentieonderdrukking op de voedingslijn, in plaats van de Europese 50Hz.

ASN Filter Designer: de snelle en intuitieve filter designer

De ASN Filter Designer is het ideale hulpmiddel om sensorgegevens snel te analyseren en filteren. Indien nodig kun je jouw gegevens eenvoudig naar tools als Matlab en Python exporteren voor verdere analyse. Daarom is het ideaal voor ingenieurs die een krachtige tool voor signaalanalyse nodig hebben en een datafilter voor hun IOT-toepassing moeten maken. Zeker als je af en toe een datafilter moet maken. Vergeleken met andere tools creeer je een algoritme binnen enkele uren in plaats van dagen.

Exporteer jouw algoritmes naar Matlab, Python of een Arm microcontroller

Je kunt veel tijd besparen doordat je met ASN Filter Designer algoritmes eenvoudig kunt implementeren in Matlab, Python of direct op een Arm-microcontroller omdat de Filter Designer automatisch code generateert.

Onmiddelijke verlichting

Denk eens aan het aantal uren dat je had kunnen besparen als je een ontwerptool had gehad die alle algoritmische details voor je beheerde.

ASN Filter Designer is een standaardoplossing in de sector die wordt gebruikt door duizenden professionele ontwikkelaars die wereldwijd aan ivd-projecten werken. Onze nauwe samenwerking met Arm en ST zorgt ervoor dat alle filters 100% compatibel zijn met alle Arm Cortex-M processoren.

Hoeveel pijnverzachting kun je voor 145 Euro kopen?

Omdat veel technici onze ASN Filterontwerper voor korte tijd nodig hebben, is een licentie van 145 euro voor slechts 3 maanden mogelijk!

Vraag jezelf maar af: is 145 Euro een eerlijke prijs om te betalen voor onmiddellijke pijnverlichting en resultaat? Wij denken van wel. Bovendien hebben we een licentie voor 1 jaar en zelfs een eeuwigdurende licentie. Download de demo om het zelf te zien of neem contact met ons op voor meer informatie

 

 

Download demo

Prijzen en licenties

Hoewel het ontwerp van FIR-filters met lineaire fase een eenvoudige opgave is, geldt dit zeker niet voor IIR-filters die meestal een zeer niet-lineaire faserespons hebben, vooral rond de afsnijfrequenties van het filter. Dit artikel bespreekt waarvoor lineairde eigenschappen die nodig zijn om een digitaal filter een lineaire fase te laten hebben en hoe de passband fase van een IIR filter kan worden aangepast om een lineaire fase te bereiken met behulp van all-pass equalisatie filters.

Waarvoor zijn lineaire fase filters bedoeld?

Digitale filters met lineaire fase hebben het voordeel dat ze alle frequentiecomponenten met dezelfde hoeveelheid vertragen, d.w.z. dat ze de faseverhoudingen van het ingangssignaal behouden. Dit behoud van fase betekent dat het gefilterde signaal de vorm van het oorspronkelijke ingangssignaal behoudt. Deze eigenschap is essentieel voor audiotoepassingen, omdat de signaalvorm van het grootste belang is voor het behoud van de high fidelity in het gefilterde geluid. Nog een ander toepassingsgebied waar dit is vereist, is de ECG biomedische golfvormanalyse, omdat eventuele artefacten die door het filter worden geïntroduceerd, verkeerd kunnen worden geïnterpreteerd als hartafwijkingen.

De volgende grafiek toont de filterprestaties van een Chebyshev type I lowpass IIR op ECG-gegevens – invoergolfvorm (weergegeven in blauw) verschoven door 10 samples (\(\small \Delta=10\)) om de groepsvertraging van het filter ongeveer te compenseren. Merk op dat het gefilterde signaal (in rood weergegeven) de oscillaties rond de ECG-piek heeft verzwakt, verbreed en toegevoegd, wat ongewenst is.

Figure 1: IIR lowpass filtering result with phase distortion

Om een digitaal filter een lineaire fase te laten hebben, moet de impulsrespons van een digitaal filter een conjugaat-even of conjugaat-odd-symmetrie hebben rond het midden van het filter. Dit is gemakkelijk te zien voor een FIR-filter,

\(\displaystyle H(z)=\sum\limits_{k=0}^{L-1} b_k z^{-k}\tag{1} \)

Met het volgende constraint op zijn coëfficiënten

\(\displaystyle b_k=\pm\, b^{\ast}_{L-1-k}\tag{2} \)

welke leidt tot

\(\displaystyle z^{L-1}H(z) = \pm\, H^\ast (1/z^\ast)\tag{3} \)

Naar Eqn. 3 kijkend, zien we dat wortels (nullen) van \(\small H(z)\) ook de nullen moeten zijn van  \(\small H^\ast (1/z^\ast)\). Dit betekent dat de wortels van \(\small H(z)\) moet voorkomen in geconjugeerde wederzijdse paren. Bijvoorbeeld wanneer \(\small z_k\) een nul is van \(\small H(z)\), dan moet \(\small H^\ast (1/z^\ast)\) ook een nul zijn.

Waarom hebben IIR filters geen lineaire fase?

Van een digitaal filter wordt gezegd dat het een gebonden ingang, gebonden uitgang stabiel (oftewel: BIBO (Bounded Input, Boundend Output) stabiel), als elke gebonden ingang aanleiding geeft tot een gebonden uitgang. Alle IIR-filters hebben ofwel polen ofwel beide polen en nullen, en moeten BIBO stabiel zijn, d.w.z.

\(\displaystyle \sum_{k=0}^{\infty}\left|h(k)\right|<\infty \tag{4}\)

Hierbij is \(\small h(k)\) de impulsrespons van het filter. Bij het analyseren van Eqn. 4 moet duidelijk zijn dat aan het BIBO-stabiliteitscriterium alleen wordt voldaan als de polen van het systeem binnen de eenheidscirkel liggen, aangezien de eenheidscirkel in het ROC (gebied van convergentie) van het systeem moet worden opgenomen. Het is dus voldoende om te zeggen dat een begrensd ingangssignaal altijd een begrensd uitgangssignaal zal produceren als alle polen binnen de eenheidscirkel liggen.

De nullen daarentegen worden niet beperkt door deze eis en kunnen daardoor overal op het z-vlak liggen, omdat ze niet direct van invloed zijn op de stabiliteit van het systeem. Daarom kan een systeemstabiliteitsanalyse worden uitgevoerd door eerst de wortels van de transferfunctie te berekenen (d.w.z. de wortels van de teller- en noemerpolynomialen) en vervolgens de corresponderende polen en nullen op het z-vlak te plotten.

Door de ontwikkelde logica toe te passen op de polen van een IIR-filter komen we nu tot een zeer belangrijke conclusie waarom IIR-filters geen lineaire fase kunnen hebben..

Een BIBO stabiel filter moet zijn polen binnen de eenheidscirkel hebben, en als zodanig zou een IIR geconjugeerde tegengestelde polen buiten de eenheidscirkel nodig hebben om een lineaire fase te krijgen, waardoor het BIBO onstabiel wordt.

Op basis van deze uitspraak lijkt het niet mogelijk om een IIR te ontwerpen met een lineaire fase. Echter, zoals hieronder besproken, kunnen fase-equalisatiefilters worden gebruikt om de passband-fase respons te lineariseren.

Fase linearisatie met all-pass filters

All-pass fase linearisatiefilters (equalisers) zijn een beproefde methode om de faserespons van een filter te wijzigen zonder de magnitude ervan te beïnvloeden. Een tweede orde (Biquad) all-pass filter wordt gedefinieerd als:

\( A(z)=\Large\frac{r^2-2rcos \left( \frac{2\pi f_c}{fs}\right) z^{-1}+z^{-2}}{1-2rcos \left( \frac{2\pi f_c}{fs}\right)z^{-1}+r^2 z^{-2}}\tag{5} \)

Hierbij is \(\small f_c\) is de centre frequency, \(\small r\) de radius van de polen en \(\small f_s\) de sampling frequency. Merk op hoe de teller- en noemercoëfficiënten als spiegelend aan elkaar zijn gerangschikt. De eigenschap van het spiegelbeeld is wat de all-pass filter zijn gewenste eigenschap geeft, namelijk de ontwerper in staat stellen om de faserespons te veranderen terwijl de magnituderespons constant of vlak blijft over het volledige frequentiespectrum.

Cascadering van een APF (all-pass filter) equalisatie cascade (bestaande uit meerdere APF’s) met een IIR-filter, het basisidee is dat we alleen de fasereactie het passbandgebied moeten lineariseren. De andere gebieden, zoals de overgangsband en de stopband, kunnen worden genegeerd, aangezien eventuele niet-lineairiteiten in deze gebieden van weinig belang zijn voor het totale filterresultaat.

De uitdaging

De APF-cascade klinkt als een ideaal compromis voor deze uitdaging, maar in werkelijkheid is een aanzienlijke hoeveelheid tijd en een zeer zorgvuldige afstemming van de APF-posities nodig om een aanvaardbaar resultaat te bereiken. Elke APF heeft twee variabelen: \(\small f_c\) en \(\small r\) die geoptimaliseerd moeten worden, wat de oplossing bemoeilijkt. Dit wordt verder gecompliceerd door het feit dat hoe meer APF-fasen aan de cascade worden toegevoegd, hoe hoger de totale groepsvertraging (latentie) van het filter wordt. Dit laatste kan problematisch worden voor snelle real-time closed loop controlesystemen die afhankelijk zijn van de lage latency eigenschap van een IIR.

Ondanks deze uitdagingen is de APF-equalizer een goed compromis voor het lineariseren van de kenmerken van een IIR-doorgangsfase.

De APF equaliser

ASN Filter Designer biedt ontwerpers een zeer eenvoudig te gebruiken grafische alle-fase equalizer interface voor het lineariseren van de passband fase van IIR filters. Zoals hieronder te zien is, is de interface zeer intuïtief en stelt het ontwerpers in staat om APF-filters snel te plaatsen en te fine-tunen met de muis. De tool berekent automatisch \(\small f_c\) en \(\small r\), gebaseerd op de markerpositie.

APF equaliser ASN Filter Designer

Door met de rechtermuisknop te klikken op de frequentieresponskaart of op een bestaande all-pass design marker wordt een optiemenu weergegeven, zoals links afgebeeld.

U kunt maximaal 10 biquads toevoegen (alleen professionele versie).

Een IIR met lineaire passband fase

Door een equalizer te ontwerpen die bestaat uit drie APF-paren, en deze te cascaderen met het Chebyshev-filter van figuur 1, verkrijgen we een filtergolfvorm die een veel scherpere piek heeft met minder demping en oscillatie dan het oorspronkelijke IIR – zie hieronder. Deze verbetering gaat echter ten koste van drie extra Biquad-filters (de APF-cascade) en een verhoogde groepsvertraging, die nu is opgelopen tot 24 samples ten opzichte van de oorspronkelijke 10 samples.

IIR lowpass filtering result with three APF phase equalisation filters
(minimal phase distortion)
IIR laagdoorlaatfilterresultaat met drie APF-fase-nivelleringsfilters
(minimale fasevervorming)

De frequentierespons van zowel het oorspronkelijke IIR als het geequaliseerde IIR worden hieronder weergegeven, waarbij de groepsvertraging (weergegeven in paars) de gemiddelde vertraging van het filter is en een eenvoudiger manier is om de lineariteit te beoordelen.

IIR without equalisation cascade
IIR zonder equalisatie cascade

IIR with equalisation cascade
IIR met equalisation cascade

Merk op dat de groepsvertraging van de geëgaliseerde IIR passband (rechts afgebeeld) bijna vlak is, wat bevestigt dat de fase inderdaad lineair is.

Automatische code generatie naar Arm processor cores via CMSIS-DSP

De automatische codegeneratie-engine van de ASN Filter Designer maakt het mogelijk om een ontworpen filter te exporteren naar Cortex-M Arm-gebaseerde processoren via het CMSIS-DSP software raamwerk. De ingebouwde analyse- en helpfuncties van de tool helpen de ontwerper bij het succesvol configureren van het ontwerp voor implementatie.

Voordat de code wordt gegenereerd, moeten de IIR- en equalisatiefilters (d.w.z. H1- en Heq-filters) eerst opnieuw worden geoptimaliseerd (samengevoegd) tot een H1-filter (hoofdfilter) structuur voor implementatie. Het optiemenu is te vinden onder de P-Z tab in de hoofd UI.

Alle ontwerpen van IIR-filters met floating point moeten gebaseerd zijn op Single Precision arithmetic en ofwel een Direct Form I of Direct Form II getransponeerde filterstructuur. De Direct Form II getransponeerde structuur wordt geadviseerd voor floating point implementatie vanwege de hogere numerieke nauwkeurigheid.

De instellingen voor de kwantiteit en de filterstructuur zijn te vinden onder het tabblad Q (zoals links afgebeeld). Door Arithmetic op Single Precision en Structure op Direct Form II Transposed te zetten en vervolgens op Apply te klikken, wordt de IIR voor het CMSIS-DSP software raamwerk geconficureerd.

Selecteer het Arm CMSIS-DSP raamwerk in het selectievakje in het filteroverzichtsvenster:

De automatisch gegenereerde C-code op basis van het CMSIS-DSP framework voor directe implementatie op een Arm-gebaseerde Cortex-M processor is hieronder weergegeven:

The ASN Filter Designer's automatic code generator generates all initialisation code, scaling and data structures needed to implement the linearised filter IIR filter via Arm's CMSIS-DSP library.

De automatische codegenerator van de ASN Filter Designer genereert alle initialisatiecode, schaling en datastructuren die nodig zijn om het gelineariseerde filter IIR-filter te implementeren via de CMSIS-DSP-bibliotheek van Arm.

Wat hebben we geleerd?

De wortels van een lineaire fase digitaal filter moeten in geconjugeerde wederzijdse paren voorkomen. Hoewel dit geen probleem is voor een FIR-filter, wordt het voor een IIR-filter onhaalbaar, omdat de polen zowel binnen als buiten de eenheidscirkel zouden moeten liggen, waardoor het filter BIBO onstabiel wordt.

De passband fase-respons van een IIR-filter kan worden gelineariseerd met behulp van een APF-equalisatiecascade. De ASN Filter Designer biedt ontwerpers alles wat ze nodig hebben via een zeer eenvoudig te gebruiken, grafische all-pass fase equalizer interface, om met behulp van de muis een geschikte APF-cascade te ontwerpen!

Het gelineariseerde IIR-filter kan worden geëxporteerd via de automatische codegenerator met behulp van de geoptimaliseerde CMSIS-DSP-bibliotheekfuncties van Arm voor gebruik op elke Cortex-M-microcontroller.

 

 

Download demo

Prijzen en licenties

Fractional Farrow Delay Filter

Bij signaalverwerking is het soms nodig om de sample frequency van een signaal met een fractie van een sample aan te passen of te verfijnen. Een FIR Farrow vertragingsfilter wordt meestal gebruikt om deze taak te bereiken. Deze kan worden gecombineerd met een traditionele gehele vertragingslijn om een universele fractionele lengte vertragingslijn te bereiken.

Een Fractionele vertraging op basis van een FIR Farrow-structuur kan worden gedefinieerd als:

\(H(z)=(1-\alpha)+\alpha z^{-1}; \; 0 \leq \alpha \leq 1 \)

Welke een fractionele lineaire vertraging oplevert van \(\alpha\) btussen 0 en 1 monster. Een meer universele bouwsteen kan echter worden bereikt door de Farrow-vertragingsstructuur te combineren met een integer vertraging, \(\Delta\)

\(H(z)=(1-\alpha) z^{-\Delta}+\alpha z^{-(\Delta+1)}\)

De onderstaande grafiek toont de magnitude (blauw) en fase (paars) spectra voor \(\Delta=9, \, \alpha=0.52\). Zoals te zien, resulteert het fractionele vertragingselement in een niet-vlak spectrum bij hogere frequenties.


Frequency reponse of Farrow delay filter.

Implementatie

Een Farrow vertragingsfilter kan als volgt in ASN FilterScript worden geïmplementeerd :
[code language=”java”]
ClearH1; // clear primary filter from cascade

interface alpha = {0,1,0.02,.5}; // fractional delay
interface D = {1,30,1,10}; // integer delay

Main()
Num = {zeros(D),1-alpha,alpha}; // numerator coefficients
Den = {1}; // denominator coefficient
Gain = 1/sum(Num); // normalise gain at DC
[/code]

Download demo nu

Licentie informatie

Kamfilters (Combfilters) worden gebruikt als powerline (50/60Hz) harmonische annuleringsfilters in audiotoepassingen, en vormen de basis van zogenaamde CIC (cascaded integrator-comb) filters. Deze worden gebruikt voor anti-aliasing in decimatie (sample rate reductie), en anti-imaging in interpolatie (sample rate toename) toepassingen.

De frequentierespons van een kamfilter bestaat uit een reeks van op regelmatige afstand van elkaar geplaatste dalen, die het uiterlijk van een kam geven. Zoals te zien in onderstaande grafiek, verschijnt de afstand van elk dal op oneven of zelfs harmonisch van de gewenste grondfrequentie.

Comb filters have found use as powerline (50/60Hz) harmonic cancellation filters in audio applications, and form the basis of so called CIC (cascaded integrator–comb) filters used for anti-aliasing in decimation (sample rate reduction), and anti-imaging in interpolation (sample rate increase) application

Frequentierespons van een typische FIR-kamfilter (oneven harmonieën):
\(f_s=500Hz\),  \(f_c=25Hz\), \(L=10\) and \(\alpha=1\)

Een FIR-kamfilter kan worden beschreven met de volgende transferfunctie:

\(H(z)=1+\alpha z^{-L}\)
\(\Rightarrow Y(z)=X(z)\left[1+\alpha z^{-L}\right]\)

Het is duidelijk dat de kamfilter gewoon een gewogen vertraagde replica van zichzelf is, gespecificeerd door \(L\). Door het nemen van inverse z-transformaties krijgen we de verschilvergelijking die nodig is voor de implementatie,

\(y(n)=x(n)+\alpha x(n-L)\)

Waarbij \(\alpha\) wordt gebruikt om de Q (bandbreedte) van de notch in te stellen. Deze kan zowel positief als negatief zijn, afhankelijk van het soort frequentierespons dat nodig is. Negatieve waarden van \(\alpha\) hebben hun eerste dieptepunt bij DC en hun tweede dieptepunt bij de fundamentele frequentie. Het is duidelijk dat dit type kamfilter gebruikt kan worden om eventuele DC-componenten uit een gemeten golfvorm te verwijderen als dat nodig is. Alle volgende dalen verschijnen bij gelijkmatige harmonische tot en met de Nyquist-frequentie.

Aan de andere kant hebben positieve waardes van \(\alpha\) alleen op de fundamentele en oneven harmonische frequenties, en kan als zodanig niet worden gebruikt om eventuele DC-componenten te verwijderen.

Toepassing op storingsonderdrukking van de stroomlijn

De affectiviteit van het kamfilter is afhankelijk van de sampling frequency, \(f_s\), aangezien \(L\) alleen beperkt is tot gehele waarden. Ook is een relatie tussen \(f_s\), als \(L\), afhankelijk van het teken van \(\alpha\). In het kader van de in deze discussie besproken toepassing van de netbeëindiging zullen dus alleen positieve waarden van de harmonics in aanmerking worden genomen, aangezien we alleen oneven harmonics hoeven te annuleren.

Een simpele relatie om \(L\) te bepalen kan als volgt worden samengevat voor positieve waardes van\(\alpha\):

\(L=ceil\left( \large{\frac{f_s}{2f_c}}\right)\)

Waarbij \(f_c\) het gewenste middelpunt is van de fundamentele notch frequentie. Op basis van deze uitdrukking kunnen we de sample frequentie herberekenen op dusdanige wijze dat \(f_c\) een echt veelvoud is van \(f_s\)

\(f_{snew}=2f_c L\)

Voorbeeld van een kamfilter

Voor het hier besproken voorbeeld, d.w.z. \(f_s=500Hz\) en \(f_c=25Hz\), verkrijgen we \(L=10\). Echter, als \(f_c=60Hz\), zouden we \(L=5\) nodig hebben en een nieuwe sampling rate van \(600Hz\). Hoewel het interessant is om op te merken dat \(f_s=480Hz\) voor \(L=4\) ook voldoende zou zijn.

Implementatie

Een FIR kamfilter kan als volgt in ASN FilterScript worden geimplementeerd:

ClearH1;  // clear primary filter from cascade
interface L = {4,20,1,5}; // delay
interface alpha = {-1,1,0.01,1};

Main()
Num = {1,zeros(L-1),alpha}; // numerator coefficients
Den = {1};
Gain = 1/sum(abs(Num));


ASN Filter Designer box

Download demo now

Licencing information

All-pass filters

All-pass filters bieden een eenvoudige manier om de faserespons van een IIR te wijzigen of te verbeteren zonder de omvang ervan te beïnvloeden. Als zodanig worden ze meestal aangeduid als fase-equalizers en hebben ze een bijzondere toepassing gevonden in digitale audiotoepassingen.

In zijn eenvoudigste vorm kan een filter worden opgebouwd uit een eerste orde transfer functie:

\( A(z)=\Large{\frac{r+z^{-1}}{1+r z^{-1}}}  \, \,  \normalsize{; r<1} \)

Merk bij \(\small A(z)\) op, dat de pool en de nul op de echte z-vlakas liggen en dat de pool bij de radius \(\small r\) een nul bij radius \(\small 1/r\) heeft. Zodanig dat de polen en nullen wederkerig zijn met elkaar. Deze eigenschap is de sleutel tot het all-pass filterconcept. Zoals we nu zullen zien door het concept verder uit te breiden naar een tweede orde all-pass filter:

\( A(z)=\Large\frac{r^2-2rcos \left( \frac{2\pi f_c}{fs}\right) z^{-1}+z^{-2}}{1-2rcos \left( \frac{2\pi f_c}{fs}\right)z^{-1}+r^2 z^{-2}} \)

Waarbij \(\small f_c\) de middenfrequentie is, \(\small r\) de radius of van de polen is en all pass filter, all-pass filter, allpass filter, all pass pole-zero \(\small f_s\) de sampling frequency. Merk op dat de teller en noemer coefficienten zijn weergegeven als spiegelbeeldig aan elkaar.  De eigenschap van het spiegelbeeld is wat de all-pass filter zijn gewenste eigenschap geeft, namelijk de ontwerper in staat stellen om de faserespons te wijzigen terwijl de magnituderespons constant of vlak blijft over het volledige frequentiespectrum.

all pass filter, all-pass filter, allpass, phase equaliser, altering/improving the phase response of an IIR without affecting its magnitude responseFrequentierespons van het all-pass filter:
Let op de constante omvang van het spectrum (weergegeven in blauw).

Implementatie

Een All-pass filter kan geimplementeerd worden in ASN FilterScript als volgt:
[code language=”java”]
ClearH1; // clear primary filter from cascade

interface radius = {0,2,0.01,0.5}; // radius value
interface fc = {0,fs/2,1,fs/10}; // frequency value

Main()
Num = {radius^2,-2*radius*cos(Twopi*fc/fs),1};
Den = reverse(Num); // mirror image of Num
Gain = 1;

[/code]
Voor een gedetailleerde beschrijving van de IIR-faseregelaar en de APF (all-pass filter) ontwerptool van de ASN-filterontwerper, zie het volgende artikel.

Download demo now

Licencing information