Äänikoodekin ja mikrokontrollerin valinta sulautetuille äänipalautetiedostoille

Kirjoittaja Jacob Beningo

Julkaisija DigiKeyn kirjoittajat Pohjois-Amerikassa

Sulautetuissa järjestelmissä tarvitaan käyttäjäpalautteen antamiseen yhä enemmän laadukasta ääntä sen sijaan, että esimerkiksi hälytysten antamiseen käytettäisiin äänimerkkejä. Piippaukset ja pirinät toimivat hyvin aiemmin, mutta käyttäjät odottavat nykyään laadukkaampaa ääntä, ja sitä voidaan tuottaa vain toistamalla ääntä esimerkiksi MP3-muotoisista tiedostoista. Ongelman muodostaa kuitenkin se, että äänentoisto saattaa vaikuttaa hankalalta, lisätä järjestelmän kustannuksia ja tehdä siitä monimutkaisemman. Ensimmäisenä tulee mieleen MP3-tiedostoja toistavan mikrokontrollerin etsiminen, mutta tällaisen komponentin hinta on usein monta dollaria, ja sen käyttö tekee sulautetusta ohjelmistosta huomattavasti monimutkaisemman.

Äänikoodekki onkin hyvä ratkaisu lisäkustannusten ja ohjelmiston kompleksisuuden tasapainottamiseen. Äänikoodekit vastaanottavat mikrokontrollerilta tulevan äänidatavirran. Lisäksi niissä on usein monenlaisia toimintoja, joiden avulla kehittäjä voi säätää äänipalautusjärjestelmää tarkasti ja parantaa järjestelmän toistaman äänen laatua.

Tässä artikkelissa käsitellään äänikoodekkien roolia, tärkeimpiä niiden valinnassa huomioon otettavia seikkoja sekä niiden tehokasta käyttöä. Käytän esimerkkinä AKM Semiconductor-, Texas Instruments- ja Maxim Integrated ‑yhtiöiden ratkaisuja, mutta saatavana on muitakin vaihtoehtoja. Annan artikkelin lopussa muutamia vinkkejä siitä, miten äänipalautesovelluksen kehittämistä voi nopeuttaa käyttämällä koodekkia ja samalla alentaa järjestelmän kustannuksia.

Mitä äänikoodekit ovat?

Äänikoodekki on laitteistokomponentti, joka pystyy koodaamaan ja purkamaan äänidataa sisältävää digitaalista datavirtaa1. Äänikoodekin ansiosta äänen käsittely voidaan siirtää pois mikrokontrollerin tehtävistä, mikä voi auttaa yksinkertaistamaan ohjelmistoa huomattavasti. Lisäksi voidaan valita edullisempi ja pienitehoisempi mikrokontrolleri.

Tyypillisessä äänikoodekissa on useita toimintolohkoja:

  • I2S-rajapinta, joka lähettää tai vastaanottaa koodattua digitaalista äänidataa.
  • I2C-rajapinta, jolla äänikoodekin ohjausrekistereitä voidaan määrittää ja lukea.
  • Mikrofonitulo, joka on kytketty analogi-digitaalimuuntimeen (ADC).
  • Vähintään yksi äänilähtökanava, kuten kaiutinlähtö, mutta yleensä myös linjalähtö ja mahdollisesti useita kaiutinlähtöjä stereotoistoa varten.
  • Digitaalinen lohko, jonka ylipäästö-, alipäästö- ja kaistanestosuodattimilla sekä taajuuskorjaimella voidaan säätää äänen toistoa ja tallennusta.

AKM Semiconductor ‑yhtiön 24-bittinen AK4637EN-äänikoodekki on hyvä esimerkki edullisesta ja tehokkaasta äänikoodekista (kuva 1). AK4637EN-koodekki tarjoaa kaikki edellä mainitut ominaisuudet, ja lisäksi siinä on äänimerkkigeneraattorin tulo, jonka avulla voidaan tuottaa äänimerkki halutulla PWM-taajuudella (Pulse Width Modulation; pulssinleveysmodulaatio).

Kaavio: AKM Semiconductorin AK4637EN-äänikoodekki monokaiutinlähdöllä (suurenna napsauttamalla)Kuva 1: AK4637EN-äänikoodekissa on monokaiutinlähtö, ja sillä voi sekä toistaa että tallentaa ääntä. Siinä on sisäinen äänilohko, jolla tulevaa ja lähtevää ääntä laatua voidaan parantaa suodattamalla. (Kuvan lähde: AKM Semiconductor)

Kehittäjien kannalta audiokoodekit poikkeavat toisistaan eniten siinä suhteessa, toistavatko ne äänen monona vai stereona, sekä digitaalisen lohkon ominaisuuksiensa osalta. Esimerkiksi AK4637EN-koodekissa on ylipäästö- ja alipäästösuodatin, nelikaistainen taajuuskorjain, automaattinen kanavasäätö ja yksikaistainen taajuuskorjain, jota voi käyttää kaistanestosuodattimena. Näiden digitaalisten suodattimien asetukset voivat vaikuttaa toistettavaan ääneen dramaattisesti.

Äänikoodekin käyttö voi tuntua hankalalta, jos kehittäjä ei tunne äänentoistoa kovin hyvin. Vaikka esimerkiksi AK4637EN on yksinkertainen äänikoodekki, sen teknisistä tiedoista selviää nopeasti, että siinä on 64 konfiguroitavaa rekisteriä. Määrä voi äkkiseltään vaikuttaa suurelta, mutta valtaosaa rekistereistä käytetään koodekin digitaalisten suodattimien suodatinkertoimien määritykseen. Vain muutaman rekisterin määrittäminen riittää saamaan järjestelmän toistamaan ääntä kunnolla, joten äänikoodekin ohjaimien kehittäminen on paljon helpompaa kuin aloittelijasta saattaa vaikuttaa.

Äänikoodekin valitseminen

Kustannukset ovat tuotekehityksessä tärkeä osa komponenttien valintaa, eivätkä äänikoodekit ole tässä suhteessa mikään poikkeus. Siitä huolimatta on tärkeää muistaa, että kehittäjät saavat sen mistä maksavat. Ääniasioissa suunnitteluvaatimuksia täytyykin punnita huolella suhteessa ratkaisun tärkeimpiin parametreihin.

Aivan ensimmäiseksi täytyy valita äänikoodekin lähdöt. Käytettävissä on useita vaihtoehtoja. Esimerkiksi AK4637EN-koodekissa on linjalähtö ja monokaiutinlähtö. Texas Instrumentsin TLV320AIC3110IRHBR-stereoäänikoodekki taas pystyy ohjaamaan kahta 1,29 watin kaiutinta (kuva 2).

Kaavio: TI TLV320AIC3110IRHBR ‑äänikoodekki, jossa on stereolähtö ja vahvistus (suurenna napsauttamalla)Kuva 2: TI TLV320AIC3110IRHBR ‑äänikoodekissa on mikrofonitulon lisäksi stereolähtö ja vahvistus. Koodekin sisäiset vahvistimet voivat syöttää 1,29 wattia ja siinä on ohjelmoitavat digitaaliset äänilohkot. (Kuvan lähde: Texas Instruments)

Jotkin muut äänikoodekit, kuten Maxim Integrated ‑yhtiön MAX9867 on suunniteltu vain kuulokkeiden ohjaamiseen (kuva 3). MAX9867-äänikoodekissa on tyypillisten digitaalisten I2S- ja I2C ‑rajapintojen lisäksi stereomikrofonitulot ja kaksi linjatuloa, jotka voidaan valita digitaalisesti.

Kaavio: Maxim Integrated MAX9867 ‑äänikoodekkiKuva 3: Maxim Integrated MAX9867 ‑äänikoodekilla voidaan ohjata stereokuulokkeita. Valittavissa on digitaalinen, mikrofoni- ja linjatulo. (Kuvan lähde: Maxim Integrated)

Lähdön tyypin (tai myös tulon tyypin) valinta näistä kolmesta vaihtoehdosta on tärkeä päätös, joka täytyy tehdä jo alkuvaiheessa.

Lisäksi kehittäjien on otettava huomioon, mitä koodekilla ohjataan – käytetäänkö sitä suoraan kuulokkeiden, yhden kaiuttimen vai kaiutinparin ohjaukseen ja kuinka suuri lähtötehon on oltava? Sulautettuihin järjestelmiin, joilla käytetään 5 watin kaiutinta, on saatavana vain muutama koodekkivaihtoehto. Sen vuoksi kehittäjän voikin olla järkevää valita linjalähtö ja ohjata kaiutinta suoraan erillisellä D-luokan vahvistimella. Tällainen ratkaisu on hieman edullisempi ja lisää suunnittelun joustavuutta.

Lopuksi on otettava huomioon vielä sisäinen reititys ja digitaalinen suodatuskyky. Juuri nämä asiat todella ratkaisevatkin äänikoodekkien tason ja kustannukset. Esimerkiksi TLV320AIC311IRHBR-koodekissa on kaiuttimen napsumisen esto-ominaisuus ja pehmeä käynnistys, jotka vähentävät kaiuttimen napsumista ja käynnistävät äänentoiston pehmeästi. Lisäksi siinä on sisäinen mikseri jokaiselle lähtökanavalle ja digitaalinen äänenvoimakkuuden ohjaus.

Kehittäjän on äänikoodekilta vaadittavia ominaisuuksia harkitessaan otettava huomioon kustannukset ja piirien vaatima tila.

Äänentoistojärjestelmä

Äänikoodekkia käytettäessä on tärkeää huomaa, että hyvään äänentoistoon tarvitaan äänikoodekin lisäksi myös useita muita lohkoja. Ne vaihtelevat sovelluskohteen ja toistomenetelmän mukaan, mutta kuvassa 4 on valintoja koskeva yleisen tason kaavio.

Kaavio: Äänentoistojärjestelmän kytkentöjen yleisen tason lohkokaavioKuva 4: Tyypillisen sulautetun sovelluksen äänentoistojärjestelmän kytkentöjen yleisen tason lohkokaaviosta käy ilmi, että äänitiedostoille tarvitaan myös tallennuspaikka, joka voi sijaita mikrokontrollerissa tai ulkoisessa muistissa. (Kuvan lähde: Beningo Embedded Group)

Tässä kaaviossa on useita kohtia, joita kannattaa pohtia. Toistettavia äänitiedostoja täytyy ensinnäkin säilyttää jossain. Vaihtoehtoja on kaksi: tiedostojen säilyttäminen mikrokontrollerin sisäisessä flash-muistissa tai ulkoisessa flash-muistissa. Äänitiedoston tai -tiedostojen sekä mikrokontrollerin sisäisen flash-muistin koko vaikuttavat tähän päätökseen.

Lisäksi kehittäjien on otettava huomioon, mitä äänentoistomuotoa käytetään. MP3-tiedostot ovat yleisin ratkaisu. Valittavassa mikrokontrollerissa täytyy silloin olla MP3-tiedostojen purkua tukeva ohjelmistopino, jolloin MP3-tiedosto pystytään avaamaan ja toistamaan DMA-ohjaimella (Direct Memory Access, muistin suorasaanti) ulos I2S-rajapinnan kautta. I2S-portin voi kyllä konfiguroida isäntä/ohjattava-tilaan ja useisiin muihin tiloihin, mutta ratkaisu on selvitettävä huolellisesti ja varmistettava, että data siirtyy koodekkiin oikealla nopeudella.

Kuten mainitsin jo edellä, ulkoisen äänenvahvistimen tarve riippuu käyttötarkoituksesta. Tyypillisen koodekin lähtöteho on noin 1–1,5 wattia, mikä riittää pienen kaiuttimen ohjaukseen. 3-wattisen tai suuremman kaiuttimen ohjaukseen tarvitaan ulkoinen vahvistin, yleisimmin D-luokan vahvistin. Vahvistimen ei myöskään välttämättä tarvitse olla säädettävä, sillä äänikoodekki voi säätää äänenvoimakkuutta digitaalisesti laajalla lähtötehoalueella.

Virransyötön kapasitanssi jää usein liian vähälle huomiolle. Äänentoisto voi rasittaa syöttöjännitettä huomattavasti. Jos laitteen kapasitanssi loppuu kesken, äänenlaatu voi heikentyä dramaattisesti ja ääni voi muuttua vaikkapa vonkuvaksi. Syöttöjännitettä kannattaakin tarkkailla huolella testausvaiheessa. Voi olla hyvä ajatus jättää piirilevyn kehitysvaiheessa levylle hieman ylimääräistä tilaa, jotta lähtöpiiriä säädettäessä voidaan kokeilla erilaisia kapasitanssiarvoja.

Vinkkejä äänikoodekin valintaan ja käyttöön

Äänikoodekit voivat yksinkertaistaa sulautettua ohjelmistoa dramaattisesti ja antaa sovellukselle erinomaisen äänenlaadun. Ne voivat kuitenkin olla tottumattomalle kehittäjälle hieman hankalia käyttää. Tässä on joitakin vinkkejä audiokoodekkien hyödyntämiseksi tehokkaasti:

  • Käytä mikrokontrollerin DMA-ohjainta äänikoodekin syöttämiseen siten, että suorittimen työkuorma jää mahdollisimman pieneksi. Näin voidaan varmistaa datan riittävä syöttö koodekille.
  • Kun ääntä ei toisteta, estä hiljaisten hälyäänien pääsy kaiuttimiin koodekkien vaimennusominaisuudella.
  • Kun lopetat tai aloitat äänentoiston, estä kaiuttimien napsuminen ja muut hälyäänet äänikoodekin pehmeällä vaimennustoiminnolla.
  • Tulosta koodekin rekisterit päätesovelluksessa koodekin alustamisen jälkeen. Tästä voi olla hyötyä etenkin viankorjauksessa tai kaiuttimen lähtöpiirin ja kotelon säätämisessä.
  • Hyödynnä koodekin sisäisiä digitaalisia suodattimia, joiden avulla voi korjata lähtöä, suodattaa pois haitallisen korkeat ja matalat taajuudet sekä maksimoida äänijärjestelmän laadun.
  • Muista, että äänen säätämisestä on hyötyä vain silloin, kun piirilevy ja kaiutin on jo asennettu koteloon, sillä kotelo ja asennustapa vaikuttavat ääneen valtavasti.

Kokeilujen alkuun pääsee Maxim Integratedin MAX9867-koodekin MAX9867EVKIT+-arviointisarjalla (kuva 5).

Kuva: MAX9867-koodekin Maxim MAX9867EVKIT+ ‑arviointisarjaKuva 5: MAX9867-koodekin MAX9867EVKIT+-arviointisarja kytketään tietokoneeseen USB-kaapelilla. Siinä on RCA-tulot, kuulokelähdöt sekä kuituoptiset lähetys- ja vastaanottomoduulit. (Kuvan lähde: Maxim Integrated)

Sarja sisältää levyn ja tarvittavat ohjelmistot, ja se on toimitushetkellä määritetty lähettämään ja vastaanottamaan äänidataa digitaalisen Sony/Philips-rajapinnan kautta (S/PDIF). Sen voi kuitenkin määrittää myös käyttämään I2S-rajapintaa. Siinä on kaksi RCA-tuloliitintä, kaksi 3,5 millimetrin (mm) analogista kuulokelähtöliitintä sekä kuituoptiset vastaanotto- ja lähetysmoduulit. Ohjelmisto on Windows-yhteensopiva. Kun sarja kytketään USB-kaapelilla tietokoneeseen, saadaan käyttöön graafinen käyttöliittymä, jonka kautta kehittäjä voi kokeilla MAX9867-äänikoodekin erilaisia asetuksia (kuva 6).

Kuva: Windows-pohjainen graafinen käyttöliittymä (suurenna napsauttamalla)Kuva 6: Käyttäjät voivat kokeilla monia MAX9867-äänikoodekin asetuksia Windows-pohjaisen graafisen käyttöliittymän avulla – kellosta ja digitaalisesta äänestä (valittuna oleva välilehti) aina rekistereihin 1 ja 2 (oikealla). (Kuvan lähde: Maxim Integrated)

Yhteenveto

Sulautettujen järjestelmien käyttäjät ovat tottuneet laadukkaaseen ääneen siinä määrin, että sitä odotetaan käytettävän hälytysten ja muun käyttäjille suunnatun äänipalautteen antamiseen erilaisten äänimerkkien ja piippausten sijaan. Kehitystiimien täytyykin nyt ottaa MP3-tiedostojen toistomahdollisuus huomioon järjestelmien kehittämisessä, mikä saattaa ensi silmäyksellä vaikuttaa aika monimutkaiselta tehtävältä. Äänisovellusten kustannuksia ja kompleksisuutta voidaan kuitenkin tasapainottaa valitsemalla sopiva äänikoodekki ja mikrokontrolleri sekä noudattamalla parhaita suunnittelukäytäntöjä.

Lähteet

  1. https://en.wikipedia.org/wiki/Audio_codec
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.

Tietoja kirjoittajasta

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.

Tietoja tästä julkaisijasta

DigiKeyn kirjoittajat Pohjois-Amerikassa