Sådan vælges og bruges en lydcodec og mikrocontroller til indlejrede lydfiler
Bidraget af DigiKeys nordamerikanske redaktører
2020-12-02
Der er et voksende behov blandt indlejrede systemer for at levere lyd med høj kvalitet i stedet for summere til brugerfeedback, inklusive alarmer og advarsler. Mens bip og kvitrer har været effektive tidligere, forventer brugerne avancerede lyde, der kun kan produceres gennem afspilning af lyd fra filformater som MP3. Problemet er, at lydafspilning kan virke skræmmende og tilføje ekstra omkostninger og kompleksitet til et system. Det første instinkt er at finde en mikrocontroller, der kan afspille MP3'er, men dette tilføjer ofte flere dollars til styklisten (BOM) og betydelig kompleksitet til den integrerede software.
En løsning, der er særlig god til at afbalancere de ekstra omkostninger og softwarekompleksiteten, er at bruge en lydcodec. Audio codecs accepterer ikke kun en lyddatastrøm fra en mikrocontroller, de har ofte også flere funktioner, der giver udvikleren mulighed for omhyggeligt at indstille lydafspilningssystemet for at forbedre kvaliteten af den lyd, der spilles af systemet.
Denne artikel vil diskutere lydcodecs rolle, de vigtigste egenskaber, som udviklere skal overveje, når de foretager et valg, og hvordan de anvendes effektivt. Løsninger fra AKM Semiconductor, Texas Instruments og Maxim integrered vil blive introduceret og brugt som eksempler her, selvom andre også er tilgængelige. Det afsluttes med tip og tricks til, hvordan du fremskynder lydafspilning af applikationsudvikling ved hjælp af en codec, samtidig med at systemomkostningerne sænkes.
Hvad er en lydcodecs?
En lydcodec er en hardwarekomponent, der er i stand til at kode eller afkode en digital datastrøm, der indeholder lydinformation1. En lydcodek er nyttig, fordi den gør det muligt at afbryde lydbehandlingen fra mikrocontrolleren. Dette kan reducere softwarekompleksiteten betydeligt og også gøre det muligt at bruge en billigere og mindre kapabel mikrokontroller til en applikation.
En typisk lydcodec vil indeholde flere funktionelle blokke:
- Et I2S-interface til transmission eller modtagelse af kodede digitale lyddata
- Et I2C-interface til konfiguration og læsning af lydcodecs kontrolregistre
- En mikrofonindgang, der er tilsluttet en analog-til-digital-konverter (ADC)
- Mindst en lydudgangskanal, såsom en højttalerudgang, men de fleste inkluderer også en linjeudgang og kan omfatte flere højttalerudgange til stereoafspilning
- En digital blok, der indeholder high-pass, low-pass, hak og equalizer-filtre for at indstille lydafspilninger og optagelser
Et eksempel på lydcodec, der er ganske populært på grund af dens lave omkostninger og lydfunktioner, er AK4637EN 24-bit lydcodec fra AKM Semiconductor (figur 1). AK4637EN har alle disse funktioner ud over et bipgeneratorindgang, der kan bruges til at generere et bip ved hjælp af et PWM-signal (Puls Width Modulation) med en ønsket frekvens.
Figur 1: AK4637EN 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)
Udviklere vil finde ud af, at den vigtigste differentiator for en lydcodec vil være, om den udsender mono- eller stereolyd samt de digitale blokfunktioner. For eksempel tilbyder AK4637EN et højpasfilter, et lavpasfilter, en fire-bånds equalizer, en automatisk nivelleringskanalfunktion og en enkeltbånds-equalizer. Sidstnævnte kan bruges som et hakfilter. Hvordan en udvikler opretter disse digitale filtre kan dramatisk påvirke, hvordan et system lyder.
Audio codec kan undertiden skræmme en udvikler, der er ny til lydafspilning. For eksempel, mens AK4637EN er en simpel lydcodec, viser en hurtig undersøgelse af databladet, at den har 64 konfigurerbare registre. Det kan virke som meget i starten, men de fleste af disse registre bruges til at indstille filterkoefficienterne for de forskellige digitale filtre, der er tilgængelige. Der er kun en håndfuld, der skal bruges til at få systemet til at udsende lyd korrekt, hvilket gør driverudviklingen til en lydcodec langt enklere end en nybegynder kunne forestille sig.
Sådan vælges en lydcodec
En af nøgledrivere til valg af noget i produktudvikling er omkostninger, og lydcodecs er ikke anderledes. Alligevel er det vigtigt at huske på, at udviklere får det, de betaler for, så når det kommer til lyd, skal et team nøje afveje designkravene i forhold til de vigtigste løsningsparametre.
Den første overvejelse er det krævede output fra lydcodecen. Der er flere forskellige valg. For eksempel har AK4637EN en line output og en mono højttaler output. Der er andre codecs som Texas Instruments TLV320AIC3110IRHBR stereolyd-codec, der kan køre to højttalere ved 1,29 watt (figur 2).
Figur 2: TI TLV320AIC3110IRHBR er en lydcodec med stereoudgang og forstærkning ud over en mikrofonindgang. Codec kan køre 1,29 watt fra interne forstærkere og har programmerbare digitale lydblokke. (Billedkilde: Texas Instruments)
Andre lyd-codecs som Maxim Integrated MAX9867 er designet til kun at køre et par hovedtelefoner (figur 3). MAX9867 har det typiske I2S og I2C digitale grænseflader, men den indeholder også stereomikrofonindgange og to linjeindgange, der kan vælges digitalt.
Figur 3: Maxim Integrated MAX9867 audio codec kan drive stereohovedtelefoner og vælge mellem digital-, mikrofon- og line-indgange. (Billedkilde: Maxim Integrated)
Beslutningen mellem disse tre løsninger om, hvad output-typen vil være (eller endda input) er en kritisk tidlig beslutning.
Udviklere skal også overveje, hvad de vil køre. Vil lydcodecen direkte køre hovedtelefoner, en højttaler eller et par højttalere, og hvad vil outputklassificeringen være? Hvis systemet kører en 5 watt højttaler, er der ikke mange codecs til indlejrede systemer, der kan gøre det. I stedet vil en udvikler muligvis vælge linjen og bruge en separat Klasse-D forstærker til at køre højttaleren direkte. Dette sparer nogle omkostninger og giver samtidig designfleksibilitet.
To sidste overvejelser er de interne routing- og digitale filtreringsfunktioner. Her bestemmes den reelle differentiering og omkostningsforskelle for en lydcodec. For eksempel har TLV320AIC311IRHBR de-pop- og softstart-funktioner for at minimere højttalerspring og muliggøre en jævn overgang til lydafspilning. Det har også en intern mixer til hver outputkanal og digital lydstyrkekontrol.
Det er op til udvikleren at omhyggeligt afbalancere deres behov fra lydcodecsen med styklisten og den mængde plads på kortet, der forbruges af kredsløbet.
Systemet til lydafspilning
Når du arbejder med en lydcodec, er det vigtigt at indse, at der er flere forskellige blokke uden for lydcodec, som er nødvendige for at opnå en vellykket lydafspilning. De nøjagtige blokke vil variere lidt baseret på applikation og den metode, der er valgt til afspilning, men et generaliseret diagram er vist i figur 4.
Figur 4: Et generaliseret forbindelsesblokdiagram for et lydafspilningssystem i en typisk integreret applikation viser, at der skal være lager til lydfiler, som kan være på mikrocontrolleren eller på den eksterne hukommelse. (Billedkilde: Beningo Embedded Group)
Der er flere punkter i dette diagram, der er værd at diskutere. For det første skal der være en metode, der bruges til at gemme lydafspilningsfilerne. Der er to muligheder for dette; gemme filerne internt i microcontroller-flashhukommelsen eller gemme dem eksternt i flash-hukommelse. Valget afhænger af hvor stor lydfil (erne) er, og hvor stor den interne flashhukommelse er på mikrocontrolleren.
Udviklere skal også overveje, hvad lydafspilningsformatet vil være. Det mest almindelige er at bruge en MP3. I dette tilfælde skal den valgte mikrocontroller have en softwarestak, der understøtter MP3-dekodning. Dette gør det muligt at åbne MP3-filen og derefter skubbe den ved hjælp af en DMA-controller (dynamic memory access) via I2S-grænseflade. Selv I2S-port kan konfigureres til maste /slave og flere andre tilstande, så dette skal undersøges nøje for at sikre, at dataene overføres til codec med den korrekte hastighed.
Som nævnt tidligere er en ekstern lydforstærker muligvis ikke nødvendig, afhængigt af applikationen. En typisk codec udgange omkring 1 til 1,5 watt, hvilket er nyttigt at drive en lille højttaler. For at drive en 3 watt eller større højttaler er det nødvendigt at bruge ekstern forstærker. Igen er de mest anvendte klasse-D. Forstærkeren behøver heller ikke nødvendigvis at have variabel forstærkning. Audio codec kan justere lydstyrkeknappen digitalt for at give en bred vifte af udgangseffekt.
Et område, der ofte overses, er bulkkapacitans. Når lyd afspilles, kan den trække meget strøm på strømskinnerne. Hvis der ikke er tilstrækkelig kapacitans på skinnen, kan outputkvaliteten påvirkes dramatisk og kan få en snurrende lyd sammen med flere andre uønskede lyde. Dette kan detekteres ved nøje at overvåge strømskinnerne under testningen. Det er ikke en dårlig idé under pc-kortudvikling at efterlade ekstra plads på kortet, så forskellige kapacitansværdier kan afprøves for at indstille udgangskredsløbet.
Tips og tricks til valg og brug af en lydcodec
Audio codecs kan dramatisk forenkle den integrerede software og give en applikation med god lydkvalitet. Audio codecs kan være vanskelige, hvis en udvikler ikke har arbejdet med dem før. For at kunne udnytte en lydcodec med succes, er der flere "tip og tricks" hold, som du skal huske på som:
- Brug funktionen direkte hukommelsesadgang (DMA) i en mikrocontroller til at fodre lydcocdecen med minimal CPU-intervention. Dette vil hjælpe med at sikre, at codec ikke "sultes" med data.
- Når lyd ikke afspilles, skal du bruge funktionen til lydafbrydelse af codecs for at forhindre, at outputniveauet på lavt niveau når højttaleren.
- Når du deaktiverer eller aktiverer afspilning, skal du bruge en lydcodecs soft-mute-funktion til at forhindre, at højttaler popper og anden uønsket støj.
- Brug en terminalapplikation til at udlæse codec-registre, efter at codec er initialiseret. Dette kan være særligt nyttigt, når du forsøger at fejle problemer eller indstille højttalerudgangskredsløbet og kabinettet.
- Udnyt de interne digitale filtermekanismer, der er inkluderet i en codec. De digitale filtre giver en udvikler mulighed for at udjævne output, filtrere uønskede høje og lave frekvenser og maksimere lydsystemets kvalitet.
- Glem ikke, at indstilling af lyden kun vil være en nyttig indsats, når printkortet og højttaleren er installeret i kabinettet, da kabinettet og monteringen gør en enorm forskel.
For at komme i gang kan udviklere eksperimentere med MAX9867EVKIT+ evalueringskit til Maxim Integrateds MAX9867 (figur 5).
Figur 5: MAX9867EVKIT+ eval kit til MAX9867 tilsluttes til en pc via et USB-kabel og har RCA-indgange, hovedtelefonudgange og fiberoptiske sende- og modtagemoduler. (Billedkilde: Maxim Integrated)
Sættet består af kortet og tilhørende software og er konfigureret til at sende og modtage lyddata ved hjælp af Sony/Philips digitale interface (S/PDIF), selvom det også kan indstilles til at bruge I2S. Den har to RCA-indgangsstik, to 3,5 millimeter (mm) analoge output-hovedtelefonstik og fiberoptiske modtagelses- og sendemoduler. Softwaren er Windows-kompatibel, og når den er tilsluttet en pc via et USB-kabel, åbnes den i en grafisk brugergrænseflade (GUI), hvorigennem udvikleren kan eksperimentere med MAX9867's indstillinger (figur 6).
Figur 6: Brug af den Windows-baserede GUI kan brugerne eksperimentere med en bred vifte af MAX9867-indstillinger startende med ur og digital lyd (valgt fane), helt til Registers 1 og Registers 2 (højre). (Billedkilde: Maxim Integrated)
Konklusion
Indbyggede systembrugere er vant til kvalitetslyd til det punkt, at det nu forventes i stedet for summer og bip for alarmer, alarmer og anden feedback fra brugerlyd. Dette lægger vægt på udviklingshold at implementere MP3-afspilningsfunktioner i deres systemer. Dette kan først synes at være en kompleks bestræbelse. Ved at bruge den rigtige lydcodec sammen med en mikrocontroller og ved at følge nogle af de bedste fremgangsmåder for design kan udviklere balancere omkostningerne og kompleksiteten i forbindelse med lydapplikationer.
Referencer
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.

