Sådan bruges en lydkodek til lettere at optimere lydydelsen i indlejrede systemer

Af Jacob Beningo

Bidraget af DigiKeys nordamerikanske redaktører

Mange designere inkluderer lydkodecs i deres mikrocontroller-baserede integrerede systemdesign i et forsøg på at tilføje high-fidelity-lyd. Dermed er de nødt til at finde ud af, hvordan de kan indstille lydkodeken til deres applikation. Uden indstilling kan applikationen efterlade lyden flad eller af dårlig kvalitet, selv med en god codec og højttaler. Problemet er, at hver højttaler har sit eget frekvensrespons, og codec'en skal derfor indstilles til højttaleregenskaberne, mens man husker på den slags lyd, der afspilles, og det krævede svar.

Løsningen til at indstille lydafspilningssystemet er ikke at bruge hardwarefiltrering, men i stedet udnytte lydkodeksens egne digitale filtreringsblokke. Hver codec har denne blok, så en udvikler kan filtrere output ved hjælp af højpas-, lavpas- og båndpasfiltre. Dette gør det muligt at justere højttalerresponsen omhyggeligt og endda justere efter behov.

Denne artikel vil diskutere de interne digitale lydblokke, der er inkluderet i codecs, ved hjælp af en codec fraAKM Semiconductor som et eksempel. Det vil også diskutere flere tip og tricks til, hvordan man indstiller codec, der vil hjælpe udviklere med at fremskynde deres lydafspilningsudvikling og samtidig forbedre systemets lydkvalitet.

Forståelse af højttalerfrekvensresponsegenskaber

Artiklen "Sådan vælges og bruges en lydkodec og mikrocontroller til indlejrede lydfeedbackfiler ”Diskuterede det grundlæggende ved valg og tilføjelse af en codec til et system. Det næste trin er at bruge den codec til at få den bedst mulige lydoutput.

Der er flere forskellige faktorer, der bidrager til, hvordan lyden, der kommer ud af et system, lyder. Disse faktorer inkluderer:

  • Højttalerens kabinet
  • Sådan monteres højttaleren
  • De lydfrekvenser, der afspilles
  • Højttalerens frekvensrespons

Efter nøje overvejelse af disse faktorer vil en udvikler snart indse, at tuning af et lydsystem kun er nyttigt, når det er i dets endelige produktionstilstand. Sikker på, at systemet kan indstilles med et printkort (pc-kort) og højttaleren uden for et hus, men man bør ikke forvente, at de samme indstillingsparametre gælder, når højttaleren er monteret og inden i dens kabinet.

Hvis det mekaniske team har designet systemkabinettet korrekt er monteringen, er det vigtigste kendetegn, som udvikleren skal følge nøje, højttalerfrekvensresponset. Hver højttaler har forskellige egenskaber og reaktionskurver. Selv højttalere med samme varenummer vil ofte have små variationer i frekvensrespons, men producenten giver normalt en typisk frekvensresponskurve. For eksempel viser figur 1 frekvensresponskurven for aCUI-enhederGC0401K 8 Ohm (Ω), 1 watt højttaler. GC0401K er klassificeret til frekvenser mellem 390 Hertz (Hz) og 20 kilohertz (kHz).

Graf over CUI Devices 'GC0401K 8 Ω, 1 watt højttaler Figur 1: CUI Devices' GC0401K 8 Ω, 1 watt højttaler er klassificeret til frekvenser mellem 390 Hz og 20 kHz. (Billedkilde: CUI Devices)

Højttalere klassificeres typisk for det område af deres responskurve, hvor svaret er relativt fladt. Et nøje kig på figur 1 viser, at frekvensresponset for GC0401K begynder at flade ved ~ 350 Hz og forbliver relativt fladt mindst 9 kHz. High-end frekvenserne har noget drop-off, men er stadig stabile op til 20 kHz.

En anden højttalerfrekvensrespons kan ses i CUI Devices' 'GF0668 (Figur 2). Denne højttaler er lidt større og kan levere 3 watt. Frekvensresponsvurderingen er mellem 240 Hz og 20 kHz. Denne højttaler kan ramme lidt lavere frekvenser end GC0401K, men bemærk igen, at inden for det angivne område er kurven relativt flad med nogle trug og toppe overalt.

Graf med frekvensrespons for CUI Devices' GF0668 8 Ω, 3 watt højttaler (klik for at forstørre) Figur 2: Frekvensresponset for CUI Devices' GF0668 8 Ω, 3 watt højttaler viser, hvorfor det er klassificeret i området 240 Hz til 30 kHz. (Billedkilde: CUI Devices)

Et sidste højttalersvar, der er værd at se på, erSoberton Inc.'sSP-2804Y (Figur 3). SP-2804Y er en 500 milliwatt (mW) højttaler med et frekvensresponsområde på 600 Hz til 8 kHz. Fysikens love sikrer, at jo mindre højttaleren er, jo længere er den tid, den reagerer på lavere frekvenser. Dette betyder, at hvis udviklere ikke filtrerer ud lavere frekvenser og i stedet prøver at køre højttaleren ved disse frekvenser, kan resultatet være noget knasende lyd eller defekter i toner, der ellers ville lyde krystalklar.

Bemærk, at der også er en betydelig nedgang i frekvensresponset omkring 10 kHz. Derfor er højttaleren kun bedømt til 8 kHz, selvom den sandsynligvis kunne bruges op til 20 kHz til nogle applikationer.

Graf med frekvensrespons for Soberton Inc.'s SP-2804Y 8 Ω, 0,5 watt højttaler (klik for at forstørre) Figur 3: Frekvensresponsen for Soberton Inc.'s SP-2804Y 8 Ω, 0,5 watt højttaler viser, at den er velegnet til frekvenser fra 600 Hz til 8 kHz. Det har en dip efter 10 kHz, men det kan stadig bruges til 20 kHz til nogle applikationer. (Billedkilde: CUI Devices)

Når man ser på hver højttalers frekvensrespons, er det klart, at en eller anden form for filtrering og tuning skal finde sted, da der er nogle frekvenser, hvor en højttaler ikke skal fungere For eksempel kan forsøg på at køre en 4 Hz bass tone på disse højttalere forårsage langvarige vibrationer, hvor højere frekvenser injiceres, hvilket resulterer i masser af lydforvrængning.

Dissekering af en digital digital filterblok

En metode, der tidligere har været brugt til at indstille uønskede frekvenser, er at oprette hardwarefiltre, der fører op til højttaleren. For eksempel kan et højpasfilter ved 500 Hz forhindre, at frekvenser under 500 Hz nogensinde kommer til højttaleren. I den anden ende kan et lavpasfilter bruges til at fjerne alle lydtoner over 15 kHz. Personlig erfaring har vist, at hvis kvindens stemme undertiden bruges med en lille højttaler, der er effektiv ved højere frekvenser, kan højttaleren udvise en høj lyd. Omhyggeligt valg af frekvenser kan fjerne disse forvrængninger og skabe renere lyd.

Mens eksterne hardwarefiltre kan udføre jobbet, tilføjer de omkostninger og optager ekstra plads. Af disse grunde er det mere praktisk og effektivt at indstille lyden ved hjælp af den digitale filterblok, der er indbygget i en lydkodec.

For eksempel har blokdiagrammet til AKM Semiconductor AK4637 24-bit lydkodek den digitale filterblok fremhævet (figur 4).

Diagram over AKM Semiconductor AK4637 er en lydkodec med mono-højttalerudgang (klik for at forstørre)Figur 4: AK4637 er en lydcodec med en mono-højttalerudgang, der har lydafspilnings- og optagefunktioner. Den indeholder også en intern lydblok, der kan bruges til at filtrere indgående og udgående lyd for at forbedre lydfideliteten. (Billedkilde: AKM Semiconductor)

Den digitale filterblok i dette tilfælde indeholder flere forskellige filtreringsfunktioner, som inkluderer:

  • Et højpasfilter (HPF2)
  • Et lavpasfilter (LPF)
  • En firebånds equalizer (4-bånds EQ)
  • Automatisk nivelleringskontrol (ALC)
  • En ensbånds equalizer (1 bånds EQ)

Disse funktioner behøver ikke alle være aktiveret. Udviklere kan vælge hvilke funktioner de har brug for og aktivere og deaktivere blokken eller dirigere mikrofonen eller afspille lyd gennem dem. Det virkelige spørgsmål på dette tidspunkt er, hvordan man beregner og programmerer lydkodeken?

Sådan beregnes og programmeres digitale filterparametre

I de fleste lydapplikationer bruges et højpasfilter til at fjerne lavere frekvenser, og et lavpasfilter bruges til at udelukke højere frekvenser. En equalizer kan bruges til at udjævne frekvensresponskurven eller til at fremhæve visse toner. Hvordan nøjagtigt disse indstillinger skal vælges men det ligger uden for anvendelsesområdet for denne artikel. Det vil i stedet se på er hvordan man beregner og programmerer de værdier, der er knyttet til disse parametre ved hjælp af AKM AK4637 som et eksempel.

For det første er det altid en god ide at gennemgå databladet. Side 7 og 8 viser i dette tilfælde det vigtige registerkort til codec. Et første blik kan være skræmmende, da delen har 63 registre. Imidlertid styrer mange af disse registre den digitale lydblok. For eksempel registrerer registre 0x22 til 0x3F equalizeren. Registrerer 0x19 til 0x1C styr højpasfiltret, mens 0x1D til 0x20 styrer lavpasfilteret.

Udviklere kan normalt ikke bare angive en frekvens, der skal indtastes i codec. I stedet er der en filterligning, der bruges til at beregne filterkoefficienter, som derefter programmeres i kodeksregistrene til at oprette filteret med den ønskede frekvens. For eksempel, hvis du bruger den digitale filterblok til at oprette et højpasfilter ved 600 Hz, skal du bruge ligning 1:

Billede af ligninger, der er nødvendige for at beregne koefficienterne for et højpasfilter Figur 5: De viste ligninger er nødvendige for at beregne koefficienterne for et højpasfilter til den digitale AK4637-filterblok. (Billedkilde: AKM Semiconductor)

En udvikler vil identificere den ønskede afskæringsfrekvens, fc, som i dette tilfælde er 600 Hz. Lydsamplingsfrekvensen, fs, er typisk 48 kHz, men kan variere afhængigt af applikationen. Disse værdier placeres derefter i ligningerne til beregning af koefficienterne A og B. Disse værdier skrives derefter til codec-registre over I2 C under opstart. Den samme proces ville blive brugt til lavpasfiltrene og andre digitale blokfunktioner, selvom overførselsfunktionerne ofte er forskellige, hvilket kræver, at deres eget sæt ligninger skal bruges (se databladet).

Tips og tricks til tuning af en lydkodec

De digitale filterblokke, der er inkluderet i en lydkodec, er ofte ret fleksible og kraftfulde. Selv en billig lydkodek giver udviklere de nødvendige værktøjer til at generere lyd med høj kvalitet. I slutningen af dagen er lydkodeken dog kun et stykke af puslespillet. For at kunne indstille en lydkodec med succes, er der flere "tip og tricks", som udviklere skal huske på som:

  • Sørg for, at højttaleren er monteret i et passende kabinet til applikationen. En ukorrekt designet højttalerkasse kan let ødelægge et ellers perfekt afspilningssystem.
  • Du må ikke indstille codec-lydfilterblokkene, før systemet er fuldt samlet i sin produktionskonfiguration. Indstillingsparametre kan ellers ændre sig.
  • Vælg frekvensområdet baseret på den lyd, der afspilles. For eksempel vil frekvensindstillingerne for musik fra en guitar, klaver eller nogen, der spiller alle være forskellige.
  • Brug den digitale balanceblok til at kompensere for højttalernes frekvensrespons. Nogle frekvenser lyder naturligvis højere og klarere og kan være nødvendigt at dæmpe dem, mens andre muligvis skal forstærkes.
  • Brug testtoner til at evaluere systemets frekvensrespons. En simpel internetsøgning giver mp3-filer til en bred vifte af lydtoner, der kan bruges til at forstå lydafspilningssystemets frekvensrespons, og hvordan den digitale filterblok fungerer.
  • Opbevar konfigurationsindstillingerne for filterblokken i flash eller EEPROM, så de kan indstilles under fremstillingen for at tage højde for variationer fra system til system (hvis det er bekymrende).

Udviklere, der følger disse “tip og tricks”, finder ud af, at de sparer en hel del tid og problemer, når de forsøger at indstille deres lydafspilningssystem og sikre, at det kommer på markedet med de tilsigtede lydegenskaber.

Konklusion

Tilføjelse af en lydkodec til et integreret system garanterer ikke, at det lyder godt for slutbrugeren. Hvert lydafspilningssystem skal omhyggeligt indstilles. Det er muligt at bruge eksterne filtre til at opnå denne indstilling, men lydkodecs leveres med indbygget digital filtrering og balancefunktioner. Som vist kan disse kun bruges til at fremføre højttaleren de frekvenser, som den er bedst egnet til. Med omhyggelig analyse og anvendelse af filterindstillinger kan udviklere skabe den lyd, som slutbrugerne har forventet fra deres enheder.

DigiKey logo

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.

Om denne forfatter

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

Om udgiveren

DigiKeys nordamerikanske redaktører