Jak wybrać i zastosować kodek oraz mikrokontroler do wbudowanych plików sygnałów akustycznych

Przez: Jacob Beningo

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Sygnalizacja alarmów i alertów użytkownika w systemach wbudowanych coraz częściej realizowana jest z wykorzystaniem dźwięku wysokiej jakości zamiast zwykłych brzęczyków. O ile „pikanie” i „ćwierkanie” działało w przeszłości, to dziś użytkownicy oczekują zaawansowanych dźwięków, które można generować jedynie odtwarzając dźwięk z formatów plików takich jak MP3. Problem w tym, że odtwarzanie dźwięku może wydawać się dużym wyzwaniem, generować dodatkowe koszty i przyczyniać się do zwiększenia stopnia złożoności systemu. Pierwszym odruchem bywa znalezienie mikrokontrolera będącego w stanie odtwarzać pliki MP3, ale często powoduje to zarówno wzrost kosztu materiałów, jak i złożoności wbudowanego oprogramowania.

Użycie kodeka audio jest jednym z rozwiązań, które szczególnie dobrze równoważy kwestie dodatkowych kosztów i złożoności oprogramowania. Kodeki audio nie tylko przyjmują strumień danych audio z mikrokontrolera, ale często realizują wiele funkcji pozwalających deweloperowi na poprawę jakości odtwarzanego dźwięku dzięki precyzyjnemu dostrojeniu systemu odtwarzania dźwięku.

W artykule omówiona zostanie rola kodeków audio, ich główne cechy, które deweloperzy powinni uwzględniać na etapie doboru tych urządzeń oraz sposób ich skutecznego stosowania. Zaprezentowane zostaną przykładowe rozwiązania proponowane przez firmy AKM Semiconductor, Texas Instruments oraz Maxim Integrated, jakkolwiek na rynku dostępne są również produkty innych wytwórców. W podsumowaniu przedstawionych zostanie kilka porad i wskazówek pokazujących, jak używając kodeka można przyspieszyć tworzenie aplikacji do odtwarzania dźwięku i jednocześnie obniżyć koszt systemu.

Czym są kodeki audio?

Kodek audio to komponent sprzętowy, który potrafi zakodować lub odkodować cyfrowy strumień danych zawierający informacje audio1. Przydatność kodeka audio polega na możliwości przetwarzania dźwięku poza mikrokontrolerem. Pozwala to na znaczne uproszczenie oprogramowania, a także na użycie tańszego i mniej wydajnego mikrokontrolera w danym zastosowaniu.

Typowy kodek audio zawiera kilka bloków funkcjonalnych:

  • interfejs I2S do nadawania lub odbioru zakodowanych cyfrowych danych audio
  • interfejs I2C do konfiguracji i odczytu rejestrów sterowania kodeka audio
  • wejście mikrofonowe połączone z przetwornikiem analogowo-cyfrowym (ADC)
  • co najmniej jeden kanał wyjścia audio, taki jak wyjście głośnikowe, jednak większość kodeków wyposażonych jest również w wyjście liniowe i może posiadać również kilka wyjść głośnikowych do obsługi odtwarzania stereo
  • blok cyfrowy zawierający filtry górnoprzepustowe, dolnoprzepustowe, środkowozaporowe i korekcyjne do strojenia odtwarzanego i nagrywanego dźwięku

Kodekiem dość popularnym ze względu na jego niską cenę i możliwości audio jest 24-bitowy kodek audio AK4637EN firmy AKM Semiconductor (ilustracja 1). Układ AK4637EN posiada wszystkie wymienione cechy, a dodatkowo jest wyposażony w wejście generatora sygnału dźwiękowego, którego można użyć do generowania dźwięku przy użyciu sygnału modulacji szerokości impulsu (PWM) o żądanej częstotliwości.

Schemat kodeka audio AK4637EN firmy AKM Semiconductor z monofonicznym wyjściem głośnikowym (kliknij, aby powiększyć)Ilustracja 1: AK4637EN to wyposażony w monofoniczne wyjście głośnikowe kodek audio, który może odtwarzać i nagrywać dźwięk. Zawiera on również wewnętrzny blok audio, który można zastosować do filtrowania dźwięku na wejściach i wyjściach w celu poprawy jego wierności. (Źródło ilustracji: AKM Semiconductor)

Z punktu widzenia deweloperów,głównym kryterium podziału kodeków będzie fakt, czy generują one dźwięk mono czy stereo oraz możliwości ich bloków cyfrowych. Na przykład układ AK4637EN wyposażony jest w filtr górnoprzepustowy, filtr dolnoprzepustowy, czteropasmowy korektor, funkcję automatycznego wyrównywania poziomu kanału i jednopasmowy korektor. Tego ostatniego można użyć jako filtra środkowozaporowego. Brzmienie systemu może w istotny sposób zależeć od konfiguracji tych filtrów cyfrowych przez dewelopera.

Kodeki audio mogą wydawać się skomplikowane dla dewelopera początkującego w dziedzinie odtwarzania dźwięku. Przykładem tego może być stosunkowo prosty kodek AK4637EN - rzut oka na arkusz danych wykazuje, iż posiada on 64 konfigurowane rejestry. Początkowo ta liczba może wydawać się wysoka, ale większości z tych rejestrów używa się do ustawiania współczynników filtrowania dla różnych dostępnych filtrów cyfrowych. Tylko kilka z nich jest niezbędnych do prawidłowego generowania dźwięku przez system, co czyni opracowanie sterownika dla kodeków audio o wiele prostszym, niż nowicjusz byłby w stanie sobie wyobrazić.

Jak wybrać kodek audio

Jednym z kluczowych czynników decydujących o doborze jakichkolwiek elementów w fazie rozwoju produktu są koszty, a kodeki audio nie są tu wyjątkiem. Nie wolno jednak zapominać, że deweloperzy dostają to, za co płacą, zatem w kwestiach dotyczących dźwięku zespół musi dokładnie rozważyć wymagania projektowe w odniesieniu do kluczowych parametrów rozwiązania.

Pierwszą kwestią jest wymagane wyjście z kodeka audio. Do wyboru jest kilka różnych opcji. Na przykład kodek AK4637EN dysponuje wyjściem liniowym i monofonicznym wyjściem głośnikowym. Dostępne są również inne kodeki, takie jak TLV320AIC3110IRHBR firmy Texas Instruments – stereofoniczny kodek audio obsługujący dwa głośniki o mocy 1,29W (ilustracja 2).

Schemat kodeka audio TLV320AIC3110IRHBR firmy TI z wyjściem stereofonicznym i wzmacniaczem (kliknij, aby powiększyć)Ilustracja 2: kodek audio TLV320AIC3110IRHBR firmy TI z wejściem mikrofonowym, wyjściem stereofonicznym i wzmacniaczem. Kodek jest wyposażony w programowane cyfrowe bloki audio oraz wzmacniacze wewnętrzne o mocy 1,29W. (Źródło ilustracji: Texas Instruments)

Inne kodeki audio, takie jak MAX9867 firmy Maxim Integrated zaprojektowane są wyłącznie do obsługi pary słuchawek (ilustracja 3). Kodek MAX9867 wyposażony jest w typowe interfejsy cyfrowe I2S oraz I2C, ale posiada również stereofoniczne wejścia mikrofonowe oraz dwa wejścia liniowe, które można wybrać cyfrowo.

Schemat kodeka audio MAX9867 firmy Maxim IntegratedIlustracja 3: kodek audio MAX9867 firmy Maxim Integrated obsługuje słuchawki stereofoniczne oraz umożliwia wybór pomiędzy wejściami cyfrowymi, mikrofonowymi i liniowymi. (Źródło ilustracji: Maxim Integrated)

Wybór pomiędzy tymi trzema możliwościami typu wyjścia (lub nawet wejścia) to krytyczna decyzja podejmowana na wczesnym etapie.

Deweloperzy muszą również wziąć pod uwagę obsługiwane urządzenie. Czy kodek audio będzie bezpośrednio obsługiwał słuchawki, jeden głośnik czy parę głośników, a także jaka będzie znamionowa moc wyjściowa? Jeżeli system ma obsłużyć głośnik o mocy 5W, do dyspozycji pozostaje niewiele kodeków dla systemów wbudowanych. W zamian deweloper może zadecydować o wyborze wyjścia liniowego, a do bezpośredniej obsługi głośnika użyć oddzielnego wzmacniacza klasy D. Redukuje to nieco koszty przy jednoczesnym zapewnieniu elastyczności projektu.

Dwie ostatnie kwestie to możliwości routingu wewnętrznego i filtrowania cyfrowego. To tu następuje rzeczywiste i kosztowe różnicowanie kodeków audio. Na przykład kodek TLV320AIC311IRHBR posiada funkcję eliminacji trzasków głośnika oraz „łagodnego startu”, minimalizujące trzaski głośnika i pozwalające na płynne przejście do odtwarzania dźwięków. Posiada on również wewnętrzny mikser dla poszczególnych kanałów wyjściowych oraz cyfrową regulację głośności.

Zadaniem dewelopera jest dokładne zrównoważenie realizowanych przez kodek potrzeb z wykazem materiałów oraz ilością miejsca na płycie zajętego przez obwody.

System odtwarzania dźwięku

Podczas pracy z kodekiem audio istotna jest świadomość, że dla uzyskania właściwego odtwarzania dźwięku niezbędnych jest szereg różnych bloków na zewnątrz kodeka audio. Konkretne bloki będą się nieznacznie różnić w zależności od zastosowania i wybranej metody odtwarzania, ale uogólniony schemat przedstawia ilustracja 4.

Ogólny schemat blokowy połączeń systemu odtwarzania dźwiękuIlustracja 4: uogólniony schemat blokowy połączeń dla systemu odtwarzania dźwięku w typowej aplikacji wbudowanej pokazuje, że niezbędna jest przestrzeń do przechowywania plików audio, która może być zlokalizowana na mikrokontrolerze lub w pamięci zewnętrznej. (Źródło ilustracji: Beningo Embedded Group)

Kilka punktów na ukazanym schemacie zasługuje na omówienie. Przede wszystkim musi istnieć metoda przechowywania plików audio. Do wyboru są dwie opcje - wewnętrzne przechowywanie plików w pamięci flash mikrokontrolera lub w zewnętrznej pamięci flash. Wybór jest zależny od wielkości plików audio oraz od pojemności wewnętrznej pamięci flash mikrokontrolera.

Deweloperzy muszą również wziąć pod uwagę format odtwarzanego dźwięku. Najczęściej będzie to format MP3. W tym przypadku, wybrany mikrokontroler musi dysponować stosem oprogramowania obsługującym dekodowanie MP3. Umożliwia to otwarcie pliku MP3, a następnie jego przesłanie za pomocą kontrolera bezpośredniego dostępu do pamięci (DMA) przez interfejs I2S. Nawet port I2S można skonfigurować do pracy w trybie nadrzędnym/podrzędnym i kilku innych trybach, zatem należy to dokładnie zweryfikować, aby dane były przesyłane do kodeka z właściwą prędkością.

Jak już wspomniano, konieczność użycia zewnętrznego wzmacniacza audio jest zależna od zastosowania. Moc wyjść typowego kodeka oscyluje wokół wartości od 1 do 1,5W i umożliwia obsługę niewielkiego głośnika. Do obsługi głośników o mocy od 3W wzwyż, konieczne będzie użycie wzmacniacza zewnętrznego. Tu też najczęściej stosowane są wzmacniacze klasy D. Wzmacniacz nie musi również posiadać zmiennego wzmocnienia. Aby zapewnić szeroki zakres mocy wyjściowej, kodek audio może regulować głośność cyfrowo.

Obszarem, któremu często nie poświęca się należytej uwagi są kondensatory o dużej pojemności. Odtwarzanie dźwięku może skutkować intensywnym poborem mocy z szyn zasilających. Jeśli pojemność kondensatorów na płytce jest niewystarczająca, może nastąpić znaczne pogorszenie jakości wyjściowej, przybierające formę brzęczenia i innych niepożądanych dźwięków. Sytuację taką można wykryć dzięki starannemu monitorowaniu szyn zasilających prowadzonemu podczas testów. Niezłym pomysłem jest również przewidzenie dodatkowych miejsc na płytce drukowanej podczas jej projektowania, co umożliwi wypróbowanie różnych wartości pojemności w celu dostrojenia obwodów wyjściowych.

Porady i wskazówki dotyczące doboru oraz stosowania kodeków audio

Kodeki audio mogą znacząco uprościć wbudowane oprogramowanie i pomagają uzyskać aplikacje o doskonałej jakości dźwięku. Kodeki audio bywają zdradliwe, jeśli deweloper nie ma z nimi doświadczenia. Istnieje kilka porad i wskazówek, o których należy pamiętać, aby z powodzeniem wykorzystać potencjał kodeków audio:

  • Aby dostarczanie danych do kodeka audio odbywało się przy minimalnym udziale procesora, należy użyć funkcji kontrolera bezpośredniego dostępu do pamięci (DMA) w mikrokontrolerze. Pomoże to dostarczyć kodekowi odpowiednią ilość danych.
  • Gdy dźwięk nie jest odtwarzany, należy użyć funkcji wyciszania kodeka, aby uniemożliwić przesyłanie niskopoziomowych szumów wyjściowych do głośnika.
  • Aby zapobiec pojawianiu się trzasków z głośnika oraz innych niepożądanych dźwięków, podczas wyłączania lub włączania odtwarzania należy użyć funkcji łagodnego wyciszania kodeka audio.
  • Po zainicjowaniu kodeka, do wysłania jego rejestrów na wyjście należy użyć aplikacji terminalowej. Może to okazać się szczególnie użyteczne przy próbie debugowania lub dostrajania obwodów wyjściowych głośników oraz obudowy.
  • Należy wykorzystywać możliwości oferowane przez wewnętrzne mechanizmy filtra cyfrowego kodeka. Filtry cyfrowe pozwalają deweloperowi na korekcję sygnału wyjściowego, odfiltrowanie niepożądanych wysokich i niskich częstotliwości oraz na osiągnięcie najwyższej jakości systemu dźwiękowego.
  • Należy pamiętać, że strojenie dźwięku będzie miało sens tylko wtedy, gdy płytka drukowana i głośnik zostaną zainstalowane w obudowie, ponieważ obudowa i sposób mocowania powodują wielką różnicę.

Na początek deweloperzy mogą eksperymentować z zestawem ewaluacyjnym MAX9867EVKIT+ dla układu MAX9867 firmy Maxim Integrated (ilustracja 5).

Wygląd zestawu ewaluacyjnego MAX9867EVKIT+ firmy Maxim dla układu MAX9867Ilustracja 5: zestaw ewaluacyjny MAX9867EVKIT+ dla układu MAX9867 łączy się z komputerem za pośrednictwem kabla USB i posiada wejścia RCA, wyjścia słuchawkowe oraz światłowodowe moduły nadawcze i odbiorcze. (Źródło ilustracji: Maxim Integrated)

Zestaw składa się z płytki oraz powiązanego z nią oprogramowania i jest skonfigurowany do wysyłania i odbierania danych audio za pośrednictwem cyfrowego interfejsu Sony/Philips (S/PDIF), choć można go również skonfigurować do korzystania z interfejsu I2S. Wyposażony jest on w dwa gniazda wejściowe RCA, dwa analogowe gniazda słuchawkowe wyjściowe 3,5mm oraz światłowodowe moduły odbiorcze i nadawcze. Oprogramowanie jest kompatybilne z systemem Windows, a po podłączeniu do komputera za pomocą kabla USB wyświetlane jest w formie graficznego interfejsu użytkownika (GUI), za pośrednictwem którego deweloper może eksperymentować z ustawieniami układu MAX9867 (ilustracja 6).

Wygląd graficznego interfejsu użytkownika (GUI) opartego na systemie Windows (kliknij, aby powiększyć)Ilustracja 6: korzystając z graficznego interfejsu użytkownika (GUI) opartego na systemie Windows, użytkownicy mogą eksperymentować z szerokim zakresem ustawień układu MAX9867, począwszy od karty Clock and Digital Audio (Zegar i dźwięk cyfrowy) - wybrana karta - aż po karty rejestrów Registers 1 i Registers 2 (po prawej). (Źródło ilustracji: Maxim Integrated)

Podsumowanie

Użytkownicy systemów wbudowanych do tego stopnia przywykli do dźwięku wysokiej jakości, że obecnie oczekuje się stosowania go w miejsce brzęczyków i „piknięć” w alarmach, ostrzeżeniach oraz innych sygnałach akustycznych dla użytkowników. Wymaga to od zespołów deweloperów wdrożenia funkcji odtwarzania plików MP3 w ich systemach. Początkowo może się to wydawać złożonym przedsięwzięciem. Jednakże po zastosowaniu odpowiedniego kodeka audio wraz z mikrokontrolerem oraz wdrożeniu kilku najlepszych praktyk projektowych, deweloperzy będą w stanie zrównoważyć koszty i złożoność związaną z zastosowaniami audio.

Źródła

  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.

Informacje o autorze

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.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey