Digitale filtering op embedded microcontrollers beheersen: PowerQuad's Dual Biquad IIR Engine in de LPC55S69
Ontdek de meest voorkomende technieken voor het filteren van tijdsdomein data, en bestudeer hoe de LPC55S69's PowerQuad Dual Biquad IIR engine DSP-taken versnelt.
Bij het werken met data verzameld over tijd, is de eerste stap vaak het toepassen van een digitaal filter. Het begrijpen van de diverse filterstrategieën verbetert niet alleen signaalcaliteit maar vrijwaart ook de CPU voor andere kritieke taken – een essentiële overweging voor embedded microcontrollers.
Dit artikel dekt de meest gebruikte tijdsdomein filtermethoden en duikt in de Dual Biquad IIR engine van de PowerQuad unit in de LPC55S69 MCU, een krachtige DSP-bouwsteen die in diverse filterscenario's benut kan worden.
Veelvoorkomende filters voor continu gesamplede data
In een tijdsdomein acquisitiesysteem arriveren samples met een vaste, bekende snelheid. Tijdsdomein filters verwerken deze samples en produceren een nieuw signaal dat verder verwerkt kan worden of naar een digital-to-analog converter (DAC) gestuurd. De kern van elk filter is zijn respons op sinusgolven – amplitude en fase veranderen over frequenties. Het collectieve gedrag over een frequentiespectrum heet de frequentierespons van het filter.
Finite Impulse Response (FIR) filters zijn een standaardbenadering. Ze genereren elk output sample door de meest recente data te combineren met een historie van vorige samples.

Figuur 1. Sample-voor-sample filterverwerking met een historie van de input.
Eenvoudige implementatie slaat eerdere samples op in een array en past de volgende vergelijking toe:
x[n] // De meest recente input
x[n-1], x[n-2] // De twee vorige input samples
y[n] // Het volgende output sample
y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2]
Deze simpele multiply-and-accumulate operatie gebruikt constante coëfficiënten en een gedefinieerde historielengte om de frequentierespons van het filter te vormdoor. Door de coëfficiënten te tunen, kan het filter fungeren als low-pass, high-pass of band-pass apparaat.
Hoewel conceptueel simpel, vereisen FIR-filters vaak veel eerdere samples voor nauwkeurige controle, wat computationeel duur kan zijn op een conventionele CPU – met name wanneer de historie groeit.
Om de benodigde historie te reduceren, incorporeren veel ontwerpen feedback, wat de basis vormt van Infinite Impulse Response (IIR) filters:
// Dit voorbeeld volgt de naamconventies die eerder gebruikt werden
y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
Het bovenstaande voorbeeld illustreert een biquad filter, een veelvoorkomend IIR-bouwblok dat gecascaded kan worden voor hogere-orde responsen. Minder coëfficiënten zijn nodig vergeleken met een FIR-filter, maar zorgvuldige coëfficiëntselectie is essentieel om instabiliteit en oscillatie te vermijden.
Talrijke tools bestaan om optimale coëfficiënten voor standaard filterontwerpen te genereren. Deze "cookbooks" bieden een snelle weg naar high-quality filters.

Figuur 2. Eén van de vele tools die automatisch coëfficiënten genereren.
De PowerQuad IIR Biquad Engines gebruiken
De LPC55S69's PowerQuad unit biedt dedicated hardware voor het uitvoeren van IIR biquad filters. Het offloaden van de filterworkload naar deze co-processor vrijwaart de Cortex-M33-kernen om zich te richten op applicatielogica.
Hoewel de filteralgoritmes zelf eenvoudig zijn, kunnen ze significante CPU-cycles consumeren. De PowerQuad's hardware is specifiek geoptimaliseerd voor filtering en andere complexe wiskundige operaties. Het verbindt met het systeem via de AHB-bus en de Arm® Cortex®-M33 co-processor interface.
Ontwikkelaars gebruiken doorgaans de gratis, Eclipse-gebaseerde MCUXpresso IDE en de LPC55S69 SDK, die verschillende PowerQuad voorbeeldapplicaties bevat.

Figuur 3. Het selecteren van het PowerQuad digitaal filter voorbeeld.
Het "powerquad_filter" voorbeeld demonstreert een reeks filterconfiguraties. De kernlogica zit in powerquad_filter.c, wat basisfiltersetups toont.
Hoewel het artikel een Direct Form I implementatie introduceerde, herordent de PowerQuad intern operaties in een Direct Form II structuur. Deze rangschikking elimineert de noodzaak om zowel input- als output-historie op te slaan, in plaats daarvan een enkele intermediêre state vector v[n] onderhoudend.
Verschillende AHB registers houden de state en coëfficiënten nodig voor het configureren van de PowerQuad's IIR-filteroperaties. In de SDK-voorbeelden wordt de state geïnitialiseerd via PQ_BiquadRestoreInternalState.
Eenmaal geïnitialiseerd, verwerkt het filter datablokken met PQ_VectorBiquadDf2F32 in fsl_powerquad_filter.c:
/* Functie verwerkt input samples in veelvouden van acht. */

Figuur 4. Gevectoriseerde IIR Filter Implementatie
Deze routine overdraagt data van de hoofdcpu naar de PowerQuad co-processor via de MCR-instructie. De PowerQuad voert de multiply-add operaties uit, levert het gefilterde resultaat terug aan de CPU met een andere MCR-overdracht. Dit offloading vermindert de CPU-load dramatisch vergeleken met het uitvoeren van hetzelfde algoritme op de Cortex-M33-kernen.
De Dual Biquad IIR Engine voor digitale filtering
De LPC55S69's PowerQuad unit bevat twee onafhankelijke biquad engines, wat parallelle of gecascadeerde filteroperaties mogelijk maakt. Configuratieresisters op de AHB-bus stellen de IIR-functies in, en data-uitwisseling vindt plaats via de co-processor interface.
De MCUXpresso SDK biedt een solide startpunt, hoewel de geleverde code duidelijkheid prioriteert boven ruwe prestaties. Ontwikkelaars kunnen verder optimaliseren door data-overdrachten tussen de CPU en PowerQuad te minimaliseren.
NXP biedt een IIR Biquad Filter Design & Visualization Tool die helpt bij het genereren en visualiseren van filtercoëfficiënten. De NXP community-pagina biedt ook diepgangende documentatie over de LPC55S69's PowerQuad unit en zijn mogelijkheden.
Industry Articles zijn een vorm van content die industriële partners in staat stelt nuttig nieuws, berichten en technologie te delen met All About Circuits-lezers op een manier waar redaktionele content niet goed voor geschikt is. Alle Industry Articles zijn onderworpen aan strenge redaktionele richtlijnen met de bedoeling lezers nuttig nieuws, technische expertise of verhalen te bieden. De meningen en standpunten die in Industry Articles worden uitgedrukt, zijn die van de partner en niet noodzakelijk die van All About Circuits of zijn schrijvers.
Ingebed
- Digitale productieteams transformeren met real-time datainzichten
- GE Digital: Hoe Data & Analytics Operationele Excellentie in Productie Drijven
- Digitale transformatie versnellen: Real-time MES-data drijft fabrieksefficiëntie
- Digitale Logica met Terugkoppeling: Van Deterministische Poorten tot Multivibrators
- Waarom digitaal geheugen belangrijk is
- IC-technologie & Microcontrollers: De Hoeksteen van Moderne Embedded Systemen
- Industriële automatisering versnellen: RS‑485-fieldbus optimaliseren voor snelheid, bereik en EMC
- Naadloze OT-IT integratie: moderne industriële software koppelt slimme sensoren aan bedrijfssystemen
- Data benutten in het Internet of Reliability: Strategieën voor effectief beheer
- Digitale Transformatie Versnellen: Cisco & IBM's Edge-to-Cloud IoT-platform
- Voorspellend Onderhoud: Industry 4.0 Inzetten voor Ononderbroken Productie