Hoe een audio-codec gebruiken om de audioprestaties in embedded systemen gemakkelijker te optimaliseren
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2021-02-17
Veel ontwerpers nemen audiocodecs op in hun op microcontrollers gebaseerde embedded systeemontwerpen in een poging om hifi-audio toe te voegen. Daarbij moeten zij uitzoeken hoe zij de audio-codec kunnen afstemmen op hun toepassing. Zonder afstemming kan de toepassing vlak of van slechte kwaliteit blijven klinken, zelfs met een goede codec en luidspreker. Het probleem is dat elke luidspreker zijn eigen frequentierespons heeft en dat de codec dus moet worden afgestemd op de kenmerken van de luidspreker, waarbij rekening moet worden gehouden met het soort audio dat zal worden afgespeeld en de vereiste respons.
De oplossing voor het afstemmen van het audioweergavesysteem is niet gebruik te maken van hardwarefiltering, maar in plaats daarvan de eigen digitale filterblokken van de audiocodec te gebruiken. Elke codec heeft dit blok om een ontwikkelaar in staat te stellen de output te filteren met behulp van high-pass, low-pass en bandpass filters. Hierdoor kan de luidsprekerresponsie zorgvuldig worden afgesteld en zelfs bijgesteld, indien nodig.
Dit artikel bespreekt de interne digitale audioblokken die in codecs zijn opgenomen, met als voorbeeld een codec van AKM Semiconductor. Er zullen ook verschillende tips en trucs worden besproken over hoe de codec kan worden afgesteld, waarmee ontwikkelaars hun ontwikkeling op het gebied van audioweergave kunnen versnellen en tegelijkertijd de geluidskwaliteit van een systeem kunnen verbeteren.
Inzicht in de frequentieresponskenmerken van luidsprekers
In het artikel "Hoe een audiocodec en een microcontroller voor ingesloten audiofeedbackbestanden selecteren en gebruiken" werden de grondbeginselen besproken van het selecteren en toevoegen van een codec aan een systeem. De volgende stap is het gebruik van die codec om de best mogelijke audio-uitvoer te krijgen.
Er zijn verschillende factoren die bepalen hoe het geluid uit een systeem zal klinken. Deze factoren omvatten:
- De behuizing van de luidspreker
- Hoe de luidspreker is gemonteerd
- De audiofrequenties die worden afgespeeld
- De frequentierespons van de luidspreker
Na zorgvuldige overweging van deze factoren zal een ontwikkelaar al snel beseffen dat het afstellen van een audiosysteem alleen zin heeft wanneer het zich in de uiteindelijke productiefase bevindt. Zeker, het systeem kan worden afgesteld met een printplaat (pc board) en de luidspreker buiten een behuizing, maar men mag niet verwachten dat dezelfde afstelparameters van toepassing zijn wanneer de luidspreker is gemonteerd en in zijn behuizing zit.
Als het mechanische team de behuizing en de bevestiging van het systeem goed heeft ontworpen, is de belangrijkste eigenschap waar de ontwikkelaar goed op moet letten de frequentierespons van de luidspreker. Elke luidspreker heeft andere kenmerken en responscurves. Zelfs luidsprekers met hetzelfde artikelnummer zullen vaak kleine variaties in frequentierespons vertonen, maar de fabrikant geeft meestal een typische frequentieresponscurve. Afbeelding 1 toont bijvoorbeeld de frequentieresponscurve voor een CUI Devices GC0401K luidspreker van 8 Ohm (Ω), 1 watt. De GC0401K is geschikt voor frequenties tussen 390 Hertz (Hz) en 20 kilohertz (kHz).
Afbeelding 1: De GC0401K 8 Ω, 1 watt luidspreker van CUI Devices is geschikt voor frequenties tussen 390 Hz en 20 kHz. (Bron afbeelding: CUI Devices)
Luidsprekers worden doorgaans beoordeeld voor het gedeelte van hun responscurve waar de respons relatief vlak is. Een nauwkeurige blik op figuur 1 leert dat de frequentierespons voor de GC0401K begint af te vlakken bij ~350 Hz en relatief vlak blijft tot ten minste 9 kHz. De hoge frequenties vertonen enige drop-off maar zijn nog steeds stabiel tot 20 kHz.
Een andere frequentierespons is te zien bij de GF0668 van CUI Devices (Afbeelding 2). Deze luidspreker is iets groter en kan 3 watt leveren. De frequentierespons ligt tussen 240 Hz en 20 kHz. Deze luidspreker kan iets lagere frequenties bereiken dan de GC0401K, maar merk opnieuw op dat binnen het gespecificeerde bereik de curve relatief vlak is met enkele dieptepunten en pieken in het geheel.
Afbeelding 2: De frequentierespons voor de GF0668 8 Ω, 3 watt luidspreker van CUI Devices toont aan waarom hij geschikt is voor het bereik van 240 Hz tot 30 kHz. (Afbeelding bron: CUI Devices)
Een laatste luidsprekerrespons die het bekijken waard is, is de SP-2804Y (figuur 3) van Soberton Inc. De SP-2804Y is een 500 milliwatt (mW) luidspreker met een frequentieresponsbereik van 600 Hz tot 8 kHz. De wetten van de fysica zorgen ervoor dat hoe kleiner de luidspreker is, des te moeilijker hij het heeft om op lagere frequenties te reageren. Dit betekent dat als ontwikkelaars de lagere frequenties niet wegfilteren en in plaats daarvan proberen de luidspreker op die frequenties aan te drijven, het resultaat kan zijn dat het geluid vreemd klinkt of dat tonen die anders kristalhelder zouden klinken, worden verstoord.
Merk op dat er ook een aanzienlijke dip is in de frequentierespons rond 10 kHz. Daarom is de luidspreker slechts belast tot 8 kHz, hoewel hij voor sommige toepassingen waarschijnlijk tot 20 kHz zou kunnen worden gebruikt.
Afbeelding 3: De frequentierespons voor de SP-2804Y 8 Ω, 0,5 watt luidspreker van Soberton Inc. toont aan dat hij geschikt is voor frequenties van 600 Hz tot 8 kHz. Het heeft een dip na 10 kHz, maar het is nog bruikbaar tot 20 kHz voor sommige toepassingen. (Afbeelding bron: CUI Devices)
Wanneer men de frequentierespons van elke luidspreker bekijkt, is het duidelijk dat er enige vorm van filtering en afstemming moet plaatsvinden, aangezien er bepaalde frequenties zijn waarop een luidspreker niet mag worden aangestuurd. Als men bijvoorbeeld probeert een lage toon van 4 Hz op deze luidsprekers aan te sturen, kan dit langdurige trillingen veroorzaken waarop hogere frequenties worden geïnjecteerd, met veel geluidsvervorming tot gevolg.
Ontleden van een audio digitaal filterblok
Een methode die in het verleden is gebruikt om ongewenste frequenties uit te schakelen, is het bouwen van hardwarefilters tot aan de luidspreker. Zo kan bijvoorbeeld een hoogdoorlaatfilter bij 500 Hz voorkomen dat frequenties beneden 500 Hz ooit de luidspreker bereiken. Aan het andere uiteinde kan een laagdoorlaatfilter worden gebruikt om audiotonen boven 15 kHz te verwijderen. Uit persoonlijke ervaring is gebleken dat wanneer de stem van een vrouw wordt gebruikt met een kleine luidspreker die efficiënt is bij hogere frequenties, de luidspreker soms een hoge twang kan vertonen. Een zorgvuldige selectie van de frequenties kan deze vervormingen verwijderen en een zuiverder klinkend geluid creëren.
Externe hardwarefilters kunnen weliswaar het gewenste effect sorteren, maar ze zijn duurder en nemen meer ruimte in beslag. Om deze redenen is het praktischer en efficiënter om het geluid af te stemmen met het digitale filterblok dat in een audiocodec is ingebouwd.
In het blokschema van de AKM Semiconductor AK4637 24-bit audio-codec is bijvoorbeeld het digitale filterblok gemarkeerd (Afbeelding 4).
Afbeelding 4: De AK4637 is een audio-codec met een mono-luidsprekeruitgang die beschikt over mogelijkheden voor het afspelen en opnemen van audio. Het bevat ook een intern audioblok dat kan worden gebruikt om inkomende en uitgaande audio te filteren om de audiokwaliteit te verbeteren. (Afbeelding: AKM Semiconductor)
Het digitale filterblok in dit geval bevat verschillende filtermogelijkheden, waaronder:
- Een hoogdoorlaatfilter (HPF2)
- Een laagdoorlaatfilter (LPF)
- Een vier-bands equalizer (4-Band EQ)
- Automatische niveauregeling (ALC)
- Een één-bands equalizer (1 Band EQ)
Deze functies hoeven niet allemaal ingeschakeld te zijn. Ontwikkelaars kunnen kiezen welke functies ze nodig hebben en de blokkering in- en uitschakelen of microfoon- of afspeelaudio er doorheen leiden. De echte vraag op dit moment is hoe de audio codec te berekenen en te programmeren?
Hoe digitale filterparameters berekenen en programmeren
In de meeste audiotoepassingen wordt een hoogdoorlaatfilter gebruikt om de lagere frequenties te verwijderen en een laagdoorlaatfilter om de hogere frequenties uit te sluiten. Een equalizer kan worden gebruikt om de frequentiekarakteristiek af te vlakken of om bepaalde tonen te benadrukken. Hoe deze instellingen precies moeten worden gekozen, valt buiten het bestek van dit artikel. In plaats daarvan zal worden nagegaan hoe de waarden die bij deze parameters horen kunnen worden berekend en geprogrammeerd, waarbij de AKM AK4637 als voorbeeld wordt gebruikt.
Ten eerste is het altijd een goed idee om het gegevensblad te bekijken. Pagina's 7 en 8 tonen in dit geval de uiterst belangrijke register map voor de codec. Een eerste blik kan intimiderend zijn, gezien het feit dat het onderdeel 63 registers telt. Veel van deze registers besturen echter het digitale audioblok. Bijvoorbeeld, registers 0x22 tot en met 0x3F regelen de equalizer. De registers 0x19 tot en met 0x1C regelen het hoogdoorlaatfilter, terwijl 0x1D tot en met 0x20 het laagdoorlaatfilter regelen.
Ontwikkelaars kunnen meestal niet zomaar een frequentie opgeven om in de codec in te voeren. In plaats daarvan is er een filtervergelijking die wordt gebruikt om filtercoëfficiënten te berekenen, die vervolgens in de codec-registers worden geprogrammeerd om het filter op de gewenste frequentie te maken. Bijvoorbeeld, om het digitale filterblok te gebruiken om een hoogdoorlaatfilter te maken bij 600 Hz, gebruik Vergelijking 1:
Afbeelding 5: Weergegeven zijn de vergelijkingen die nodig zijn om de coëfficiënten te berekenen voor een hoogdoorlaatfilter voor het AK4637 digitale filterblok. (Bron afbeelding: AKM Semiconductor)
Een ontwikkelaar zou de gewenste drempelfrequentie, fc, bepalen, die in dit geval 600 Hz bedraagt. De bemonsteringsfrequentie voor audio, fs, is gewoonlijk 48 kHz, maar kan variëren naar gelang van de toepassing. Deze waarden worden dan geplaatst in de vergelijkingen voor het berekenen van coëfficiënten A en B. Deze waarden worden dan tijdens het opstarten via I2C naar de registers van de codec geschreven. Hetzelfde proces zou worden gebruikt voor de laagdoorlaatfilters en andere digitale blokfuncties, hoewel de overdrachtsfuncties vaak verschillend zijn, waardoor hun eigen reeks vergelijkingen moet worden gebruikt (raadpleeg het gegevensblad).
Tips en trucs voor het afstellen van een audio-codec
De digitale filterblokken in een audio-codec zijn vaak zeer flexibel en krachtig. Zelfs een goedkope audio-codec biedt ontwikkelaars de instrumenten die nodig zijn om hifi-audio te genereren. Maar uiteindelijk is de audio-codec maar één stukje van de puzzel. Om een audio-codec succesvol af te stellen, zijn er verschillende "tips en trucs" die ontwikkelaars in gedachten moeten houden, zoals:
- Zorg ervoor dat de luidspreker is gemonteerd in een voor de toepassing geschikte behuizing. Een slecht ontworpen luidsprekerbox kan een verder perfect afspeelsysteem gemakkelijk ruïneren.
- Stel de codec-audiofilterblokken pas af wanneer het systeem volledig is gemonteerd in zijn productie-intentieconfiguratie. Afstemparameters kunnen anders veranderen.
- Selecteer het frequentiebereik op basis van de audio die zal worden afgespeeld. Zo zullen de frequentie-instellingen voor muziek van een gitaar, piano of iemand die spreekt allemaal verschillend zijn.
- Gebruik het digitale balansblok om de frequentierespons van de luidspreker te compenseren. Sommige frequenties klinken van nature luider en helderder en moeten wellicht worden verzwakt, terwijl andere juist moeten worden versterkt.
- Gebruik testtonen om de frequentierespons van het systeem te evalueren. Een eenvoudige internetzoekopdracht levert mp3-bestanden op voor een breed scala van audiotonen die kunnen worden gebruikt om inzicht te krijgen in de frequentierespons van het audioweergavesysteem en de werking van het digitale filterblok.
- Sla de configuratie-instellingen van het filterblok op in flash of EEPROM, zodat ze tijdens de fabricage kunnen worden ingesteld om rekening te houden met systeem-tot-systeemvariaties (als dat van belang is).
Ontwikkelaars die deze "tips en trucs" volgen, zullen merken dat zij heel wat tijd en verdriet kunnen besparen wanneer zij proberen hun audioweergavesysteem af te stellen, en ervoor te zorgen dat het op de markt komt met de bedoelde audiokenmerken.
Conclusie
Het toevoegen van een audio-codec aan een embedded systeem garandeert niet dat het goed zal klinken voor de eindgebruiker. Elk audioweergavesysteem moet zorgvuldig worden afgesteld. Het is mogelijk externe filters te gebruiken om deze afstemming te bereiken, maar audio-codecs hebben ingebouwde digitale filter- en balansmogelijkheden. Zoals getoond, kunnen deze worden gebruikt om de luidspreker alleen die frequenties te geven waarvoor hij het meest geschikt is. Met een zorgvuldige analyse en toepassing van filterinstellingen kunnen ontwikkelaars de zuiver klinkende audio creëren die eindgebruikers van hun toestellen verwachten.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.



