Visszajelző hangfájlok lejátszása megfelelően kiválasztott audiokodekkel és mikrovezérlővel beágyazott rendszereknél
Contributed By DigiKey's North American Editors
2020-12-02
A beágyazott rendszereknél egyre nagyobb igény mutatkozik, hogy zümmögők helyett nagyfokú hanghűségű hangokat használjanak a felhasználói visszajelzésekhez, ideértve a riasztásokat és vészjelzéseket is. Míg a múltban a csipogás és a ciripelés is elég volt, ma a felhasználók már olyan fejlett hangokat várnak el, amelyek csak hangfájlok lejátszásával, például MP3 fájlformátumokkal biztosíthatók. A probléma az, hogy a hanglejátszás beépítése ijesztőnek tűnhet, valamint a rendszer megvalósításának költsége és bonyolultsága ezzel növekedhet. Elsőre talán egy MP3 fájlok lejátszására képes mikrovezérlő tűhet a legjobban járható útnak, ez azonban gyakran nem kevés dollárral növeli az anyagszámlát (BOM), és jelentősen bonyolítja a beágyazott szoftvert.
Van viszont egy olyan megoldás, amellyel a többletköltségek és a szoftverek bonyolultsága különösen jól ellensúlyozható, ez pedig az audiokodekek használata. Az audiokodekek nemcsak, hogy fogadni tudják a mikrovezérlő audio adatfolyamát, hanem gyakran több olyan funkcióval is rendelkeznek, amelyek segítségével a fejlesztők finombeállításokkal konfigurálhatják az audiolejátszó rendszert, a lejátszott hang minőségének javítása érdekében.
Ez a cikk az audiokodekek szerepét, a fejlesztők által a kiválasztás során figyelembe veendő főbb jellemzőiket, illetve hatékony alkalmazásukat tárgyalja. Az AKM Semiconductor, a Texas Instruments, és a Maxim Integrated megoldásait mutatjuk be és használjuk példaként, bár mások is rendelkezésre állnak. Tippekkel és trükkökkel zárjuk a cikket, hogy hogyan gyorsítható fel a hanglejátszási alkalmazások fejlesztése kodek használatával a rendszer költségeinek csökkentése mellett.
Mik azok az audiokodekek?
Az audiokodek egy olyan hardverkomponens, amely audio információt tartalmazó digitális adatfolyam kódolására és dekódolására képes1. Az audiokodek azért hasznos, mert segítségével a hang feldolgozása mikrovezérlőn kívül is elvégezhető. Ez jelentősen csökkentheti a szoftver bonyolultságát, és lehetővé teheti egy olcsóbb és gyengébb képességű mikrovezérlő használatát az alkalmazáshoz.
Egy tipikus audiokodek több funkcióblokkból áll:
- egy I2S interfész, kódolt digitális audio adatok adására és vételére;
- egy I2C interfész az audiokodek vezérlőregisztereinek konfigurálására és olvasására;
- egy analóg-digitális átalakítóhoz (ADC) csatlakozó mikrofonbemenet
- legalább egy audio kimeneti csatorna, pl. hangszórókimenet, de a legtöbb eszköznél van vonali kimenet, illetve sztereó lejátszáshoz több hangszórókimenet is;
- egy digitális blokk, amelyben felüláteresztő-, aluláteresztő-, lyuk- és hangszínszabályzó (equalizer) szűrők találhatók a lejátszás és a felvétel beállításához.
Olcsó ára és audio képességei miatt népszerű például az AK4637EN 24 bites audiokodek, amely az AKM Semiconductor gyártmánya (1. ábra). Az AK4637EN mindezen tulajdonságokon felül rendelkezik egy olyan hangjelző (beep) generátor bemenettel is, amely impulzusszélesség-modulált (PWM) jel használatával elő tudja állítani a kívánt frekvenciájú hangjelzést.
1. ábra: Az AK4637EN egy monó hangszórókimenettel, valamint hanglejátszási és felvételi funkciókkal rendelkező audiokodek. Tartalmaz egy belső audio blokkot is, amely a bejövő és a kimenő jel szűrésére használható a hanghűség javítása érdekében. (Kép: AKM Semiconductor)
A fejlesztők számára gyorsan nyilvánvalóvá válhat, hogy az audiokodekeket a digitális blokk képességei mellett legfőképpen az különbözteti meg egymástól, hogy monó vagy sztereó jelet adnak-e ki. Például az AK4637EN felüláteresztő szűrővel, aluláteresztő szűrővel, négycsatornás equalizerrel, auto-leveling csatornafunkcióval és egycsatornás equalizerrel rendelkezik. Utóbbi lyukszűrőként használható. Drámai módon befolyásolja a rendszer hangzását, hogy a fejlesztő hogyan állítja be ezeket a digitális szűrőket.
Egy audiokodek használata néha ráijeszthet a hanglejátszás területén tapasztalatlan fejlesztőkre. Az AK4637EN például bár csak egy egyszerű audiokodek, az adatlap gyors átfutásával azonban kiderül, hogy 64 konfigurálható regisztere van. Ez elsőre soknak tűnhet, de a legtöbb regisztert a rendelkezésre álló különböző digitális szűrők szűrőegyütthatóinak beállítására használják. Csak néhányukat kell állítgatni ahhoz, hogy a rendszer megfelelő hangkimenetet adjon, tehát az audiokodek illesztőprogramjának fejlesztése sokkal egyszerűbb, mint azt egy újonc esetleg elsőre gondolná!
Hogyan válasszunk audiokodeket
A termékfejlesztésben minden döntésnél egyik kulcsfontosságú szempont az alkatrészek költsége, és ez alól az audiokodek sem kivétel. Fontos azonban szem előtt tartani, hogy a fejlesztők a pénzüknek megfelelő alkatrészt kapják, tehát ami a hangot illeti, gondosan mérlegelniük kell a tervezési követelményeket a megoldás legfontosabb paramétereinek tekintetében.
Az első szempont az audiokodektől várt kimenet, és itt több különböző választás lehetséges. Az AK4637EN például vonali kimenettel és monó hangszórókimenettel rendelkezik. Vannak más kodekek, például a Texas Instruments TLV320AIC3110IRHBR sztereó audiokodekje, amely két hangszóró meghajtására képes 1,29 W teljesítménnyel (2. ábra).
2. ábra: A TI TLV320AIC3110IRHBR egy sztereó kimenettel és erősítővel rendelkező audiokodek, amelyen egy mikrofonbemenet is található. A kodek belső erősítőivel 1,29 W leadására képes, és programozható digitális audio blokkokkal rendelkezik. (Kép: Texas Instruments)
Más audiokodekek, például a Maxim Integrated MAX9867 csak egy pár fejhallgató meghajtására készülnek (3. ábra). Az MAX9867-ben megtalálhatók a tipikus I2S és I2C digitális interfészek, de sztereó mikrofonbemeneteket, és két vonali bemenetet is tartalmaz, amelyek digitálisan választhatók.
3. ábra: A Maxim Integrated MAX9867 audiokodek sztereó fejhallgató meghajtására, illetve digitális bemenet, mikrofonbemenet és vonali bemenet közötti választásra képes. (Kép: Maxim Integrated)
Fontos korai döntés annak meghatározása, hogy ezen három megoldás közül a kimenet (vagy akár a bemenet) típusa melyik lesz.
A fejlesztőknek azt is figyelembe kell venniük, hogy mit kívánnak meghajtani. Az audiokodek közvetlenül egy fejhallgatót, egy hangszórót vagy egy pár hangszórót fog meghajtani? És mekkora lesz a kimenőteljesítmény? Ha a rendszer 5 W-os hangszórót hajt meg, akkor nem sok olyan, beágyazott rendszerekhez való kodek van, ami erre képes. Ehelyett a fejlesztők választhatják a vonali kimenetet és használhatnak egy D-osztályú külön erősítőt a hangszórók közvetlen meghajtására. Ez némi költségmegtakarítás mellett nagyobb tervezési rugalmasságot is jelent.
A két utolsó szempont a belső útválasztási és digitális szűrési képességek. Ezek határozzák meg a tényleges különbségeket és költségeltéréseket az audiokodekek esetében. A TLV320AIC311IRHBR például koppanásgátló és lágyindítási áramkörökkel rendelkezik, hogy minimalizálja a hangszórókból hallatszódó koppanást, és a hanglejátszásra való fokozatos áttérés biztosításához. Ugyancsak rendelkezik belső keverővel minden kimeneti csatorna számára, továbbá digitális hangerő-szabályozóval.
A fejlesztő feladata, hogy gondosan egyensúlyba hozza az audiokodekkel kapcsolatos elvárásokat az anyagszükséglettel, illetve az áramkör helyigényével.
A hanglejátszó rendszer
Audiokodekkel dolgozva fontos tudomásul venni, hogy rajta kívül több különböző külső blokk is szükséges a sikeres hanglejátszáshoz. Az, hogy pontosan milyen blokkokra van szükség, az alkalmazástól és a lejátszáshoz választott módszertől függően kissé eltér, de egy általánosított elrendezés a 4. ábrán látható.
4. ábra: Egy tipikus beágyazott alkalmazás hanglejátszó rendszerének blokkdiagramja alapján látható, hogy a hangfájlok számára tárolóhelyet kell biztosítani, ami lehet a mikrovezérlő memóriája vagy külső memória. (Kép: Beningo Embedded Group)
A diagramnak több figyelemre méltó pontja van. Először is, szükség van valamilyen módszerre a hangfájlok tárolásához. Erre két lehetőség van: a fájlok belső tárolása a mikrovezérlő flash memóriájában, vagy külső tárolás flash memóriában. A döntés a hangfájl(ok) és a mikrovezérlő belső memóriájának méretétől függ.
A tervezőknek a hanglejátszás formátumát is figyelembe kell venniük. A leggyakrabban az MP3 formátummal találkozhatunk. Ebben az esetben a kiválasztott mikrovezérlőnek rendelkeznie kell egy MP3 dekódolást támogató szoftververemmel. Ez lehetővé teszi az MP3 fájl megnyitását, majd egy közvetlen memória-hozzáférést biztosító (DMA) vezérlő használatával az I2S interfészen keresztüli kiadását. Még az I2S port is konfigurálható master/slave és néhány más üzemmódba is, ezt tehát alaposan meg kell vizsgálni annak biztosításához, hogy az adatok továbbítása a kodekhez megfelelő sebességgel történjen.
Mint korábban említettük, az alkalmazástól függ, hogy szükség van-e külső hangerősítőre, vagy sem. Egy tipikus kodek kimenőteljesítménye kb. 1...1,5 W, ami egy kis hangszóró meghajtására elegendő, de 3 W vagy nagyobb teljesítményű hangszóró meghajtásához már külső erősítő szükséges. Ismételjük, a legelterjedtebben a D-osztályú erősítőket használják. Az erősítőnek nem kell feltétlenül rendelkeznie szabályozható erősítéssel. Az audiokodek digitálisan szabályozni tudja a hangerőt, hogy biztosítani tudja a széles kimenőteljesítmény-tartományt.
Gyakran figyelmen kívül hagyott terület a nagy kondenzátorkapacitás. A hanglejátszás erősen megterhelheti a tápellátás vezetékeit. Ha nincs elegendő kondenzátorkapacitás a kártyán, az drámai mértékben ronthatja a kimenet minőségét és furcsa hangok jelenhetnek meg, számos más nem kívánt zaj mellett. Hogy van-e ilyen probléma, az kideríthető a tápsínek gondos figyelésével az egység tesztelése közben. A nyomtatott áramköri lap tervezése során nem rossz ötlet további helyeket hagyni más alkatrészek számára a kártyán, hogy lehetővé tegyük a különböző kapacitásértékek kipróbálását a kimeneti áramkör beállítása érdekében.
Tippek és trükkök az audiokodekek kiválasztására és használatára
Az audiokodekek drámai mértékben leegyszerűsíthetik a beágyazott szoftvert, és segítségükkel kiváló hanghatású rendszerek hozhatók létre, ennek ellenére mégis bonyolultnak tűnhetnek azon fejlesztők számára, akiknek nincs korábbi tapasztalatuk a velük való munkával. Az audiokodek sikeres alkalmazásához számos tippet és trükköt kell figyelembe venni, ilyenek például:
- Használja az audiokodek táplálására a mikrovezérlők belső közvetlen memória-hozzáférés (DMA) vezérlőjét, mert ez minimális beavatkozást igényel a CPU részéről. Így a kodek soha nem lesz „adatokra éhes”.
- Ha nem történik hanglejátszás, kapcsolja be a kodek némító (mute) funkcióját, hogy a hangszóróra alacsony szintű kimeneti zaj ne kerüljön.
- A lejátszás letiltásakor vagy engedélyezésekor használja az audiokodek lágy némítás (soft mute) funkcióját a hangszórókból hallatszódó koppanás megakadályozására, és az egyéb nem kívánt zajok elkerülésére.
- Használjon terminálalkalmazást a kodek regisztereinek kiolvasására a kodek inicializálása után. Ez különösen hibakeresési kísérleteknél, vagy a hangszóró kimeneti áramköre, illetve a hangdoboz kialakításakor hasznos.
- Használja ki a kodek belső digitális szűrő mechanizmusait. A digitális szűrők lehetővé teszik a fejlesztő számára a kimenet szabályozását, hogy kiszűrje a nem kívánt magas és alacsony frekvenciákat, illetve maximalizálja a hangrendszer minőségét.
- Ne feledje, hogy a hang beállításával csak azt követően érdemes foglalkozni, ha az áramköri kártya és a hangszóró már be van építve a hangdobozba, mivel rengeteg függ a hangdoboztól és a szerelés módjától.
A fejlesztők kezdésképpen kísérletezhetnek a Maxim Integrated MAX9867 termékéhez való MAX9867EVKIT+ fejlesztőkészlettel (5. ábra).
5. ábra: Az MAX9867 jelű termékhez való MAX9867EVKIT+ fejlesztőkészlet USB kábelen keresztül csatlakozik a PC-hez és RCA bemenetekkel, fejhallgató-kimenetekkel, valamint optikai kábeles adó- és vevőmodulokkal rendelkezik. (Kép: Maxim Integrated)
A készlet tartalmazza a kártyát és a hozzá tartozó szoftvert, és Sony/Philips digitális interfész (S/PDIF) használatával történő hangadat-küldésére és fogadásra van konfigurálva, de I2S-re is beállítható. Két RCA bemeneti csatlakozóval, két 3,5 mm-es analóg kimeneti fejhallgató-csatlakozóval, valamint optikai kábeles vevő- és adómodulokkal rendelkezik. A szoftver Windows-kompatibilis és USB-kábelen keresztüli csatlakoztatáskor megnyílik egy grafikus felhasználói felület (GUI), amelyen keresztül a fejlesztő kísérletezhet az MAX9867 beállításával (6. ábra).
6. ábra: A Windows-alapú grafikus felhasználói felület (GUI) használatával a felhasználók igen széleskörű beállításokkal kísérletezhetnek az MAX9867-re vonatkozólag, a „Clock and Digital Audio” (a képen) fültől egészen a „Registers 1” és „Registers 2” fülekig (jobbról). (Kép: Maxim Integrated)
Összegzés
A beágyazott rendszerek felhasználói olyannyira megszokták a minőségi hangzást, hogy ma már a zümmögések, riasztások, vészjelzések és egyéb felhasználói hangvisszajelzések helyett is ezt várják. Ez a fejlesztőkre rója a felelősséget, hogy megvalósítsák az MP3-lejátszás képességét saját rendszereikben. Ez első látásra bonyolult feladatnak tűnhet, egy megfelelő audiokodek és mikrovezérlő használatával, valamint néhány bevált tervezési gyakorlat követésével azonban az audioalkalmazások költségeit és bonyolultságát a fejlesztők megfelelően ellensúlyozni tudják.
Felhasznált forrásanyagok
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.

