組み込みオーディオフィードバックファイル用のオーディオコーデックとマイクロコントローラの選択と使用

著者 Jacob Beningo

DigiKeyの北米担当編集者の提供

組み込みシステムでは、アラームやアラートなどのユーザーフィードバックのために、ブザーの代わりに高忠実度のオーディオを提供する必要性が高まっています。これまでもビープ音やチャープ音は効果的でしたが、ユーザーはMP3などのファイル形式のオーディオを再生することでしか生成できない高度なサウンドを期待しています。問題は、オーディオ再生はハードルが高く見え、システムに追加のコストと複雑さを発生させる可能性があることです。最初の直感的行動としては、MP3を再生できるマイクロコントローラを見つけることですが、これは多くの場合、BOM(部品表)に数ドル分のコストを追加し、組み込みソフトウェアがかなり複雑になります。

追加コストとソフトウェアの複雑さのバランスを取るのに適したソリューションの1つは、オーディオコーデックを使用することです。オーディオコーデックは、マイクロコントローラからのオーディオデータストリームを受け入れるだけでなく、開発者がオーディオ再生システムを注意深く調整して、システムで再生されるサウンドの品質を向上させる複数の機能を備えています。

この記事では、オーディオコーデックの役割や、開発者が選択する際に考慮すべき主な特長、そしてそれらを効果的に適用する方法などについて解説します。ここでは、AKM SemiconductorTexas Instruments、Maxim Integratedのソリューションを紹介し、それを例として使用しますが、他にもソリューションはあります。そして最後に、システムコストを下げつつ、コーデックを使ったオーディオ再生アプリケーション開発を加速させるコツを説明します。

オーディオコーデックとは?

オーディオコーデックは、ここではオーディオ情報を含むデジタルデータストリームをエンコードまたはデコードできるハードウェアコンポーネントを指します1。オーディオコーデックは、オーディオ処理をマイクロコントローラからオフボード化できるので便利です。これにより、ソフトウェアの複雑さが大幅に軽減され、アプリケーションに安価で機能の少ないマイクロコントローラを使用できるようになります。

典型的なオーディオコーデックには、いくつかの機能ブロックが含まれています。

  • エンコードされたデジタルオーディオデータを送受信するためのI2Sインターフェース
  • オーディオコーデックの制御レジスタを設定して読み出すためのI2Cインターフェース
  • アナログ/デジタル変換器(ADC)に接続されたマイク入力
  • スピーカ出力などの少なくとも1つのオーディオ出力チャンネルがあり、ほとんどの場合、ライン出力も含まれ、ステレオ再生用の複数のスピーカ出力が含まれることもある
  • オーディオの再生と録音を調整するためのハイパス、ローパス、ノッチ、イコライザフィルタを含むデジタルブロック

低コストとそのオーディオ機能で非常に人気のあるオーディオコーデックの例としては、AKM SemiconductorのAK4637EN 24ビットオーディオコーデックがあります(図1)。AK4637ENは、これらすべての機能に加えて、任意の周波数でパルス幅変調(PWM)信号を使用してビープ音を発生させることができるビープ音発生器入力を備えています。

AKM Semiconductorのモノラルスピーカ出力付きAK4637ENオーディオコーデックの図(クリックで拡大図1:AK4637ENは、オーディオの再生/録音機能を備えたモノラルスピーカ出力のオーディオコーデックです。また、オーディオの忠実度を向上させるために、受信と送信のオーディオをフィルタリングするために使用できる内部オーディオブロックも含まれています。 (画像提供:AKM Semiconductor)

開発者は、オーディオコーデックの主な差別化要因は、デジタルブロック機能と同様、モノラルまたはステレオオーディオを出力できるかどうかであることに気付くでしょう。たとえば、AK4637ENは、ハイパスフィルタ、ローパスフィルタ、4バンドイコライザ、オートレベリングチャンネル機能、およびシングルバンドイコライザを搭載しています。後者はノッチフィルタとして使用できます。開発者がこれらのデジタルフィルタをどのように設定するかは、システムのサウンドに劇的な影響を与える可能性があります。

オーディオコーデックは、オーディオ再生に不慣れな開発者にとってはハードルが高く見えることがあります。たとえば、AK4637ENはシンプルなオーディオコーデックですが、データシートを見てみると、64個の構成可能なレジスタを持っていることがわかります。一見すると多いように思えるかもしれませんが、これらのレジスタのほとんどは、利用可能なさまざまなデジタルフィルタのフィルタ係数を設定するために使用されます。システムが適切にオーディオを出力するために使用する必要があるのは、そのほんの一部であり、オーディオコーデックのドライバ開発は初心者が想像するよりもはるかに簡単です。

オーディオコーデックの選び方

製品開発で何を選択するかの主要因の1つはコストであり、オーディオコーデックもその例外ではありません。しかし、開発者は対価を得ることを心に留めておくことが重要です。オーディオに関しては、チームは設計要件と主要なソリューションのパラメータを慎重に比較検討する必要があります。

最初に考えるのは、オーディオコーデックからの必要な出力です。いくつかの選択肢があります。たとえば、AK4637ENにはライン出力とモノラルスピーカ出力があります。他にもTexas InstrumentsのTLV320AIC3110IRHBRステレオオーディオコーデックのように、2台のスピーカを1.29Wで駆動できるコーデックもあります(図2)。

TIのTLV320AIC3110IRHBRは、ステレオ出力と増幅機能を備えたオーディオコーデックです(クリックで拡大)。図2:TIのTLV320AIC3110IRHBRは、ステレオ出力と増幅に加えてマイク入力を備えたオーディオコーデックです。コーデックは、内蔵アンプから1.29Wの駆動が可能で、プログラム可能なデジタルオーディオブロックを搭載しています。(画像提供:Texas Instruments)

Maxim IntegratedのMAX9867のような他のオーディオコーデックは、1組のヘッドフォンのみを駆動するように設計されています(図3)。MAX9867は、典型的なI2SとI2Cのデジタルインターフェースを備えていますが、ステレオマイク入力とデジタル選択可能な2つのライン入力も搭載しています。

Maxim IntegratedのMAX9867オーディオコーデックの図図3:Maxim IntegratedのMAX9867オーディオコーデックは、ステレオヘッドフォンを駆動し、デジタル入力、マイク入力、ライン入力のいずれかを選択することができます。(画像提供:Maxim Integrated)

これら3つのソリューションのうち、出力タイプを何にするか(入力タイプも然り)を決定することは、初期段階での重要な決定事項です。

また、開発者は何を駆動するかを考える必要があります。オーディオコーデックはヘッドフォンを直接駆動するのか、1台のスピーカか、2台のスピーカか、出力定格はどのくらいにするのかなどを決める必要があります。システムが5Wのスピーカを駆動するのであれば、それを実現する組み込みシステム用のコーデックは多くありません。その代わりに、ライン出力を選択し、別のD級アンプを使用してスピーカを直接駆動することを開発者にはお勧めします。これにより、設計の柔軟性を確保しつつ、ある程度のコストを削減することができます。

最終的に考慮すべきことは、内部ルーティングとデジタルフィルタリング機能の2つです。ここで、オーディオコーデックの本当の差別化とコストの違いが決まります。たとえば、TLV320AIC311IRHBRはデポップ機能とソフトスタート機能を搭載しており、スピーカのポップを最小限に抑え、スムーズにオーディオ再生に移行することができます。また、各出力チャンネル用のミキサを内蔵しており、デジタルボリュームコントロールも備えています。

オーディオコーデックとBOMのニーズ、そして回路によって占有される基板スペースの面積のバランスを慎重に取るのは、開発者の責任です。

オーディオ再生システム

オーディオコーデックを扱う際には、オーディオコーデックの外側には、オーディオ再生を正しく機能させるために必要ないくつかの異なるブロックがあることを理解することが重要です。正確なブロックは、アプリケーションや再生用に選ばれた方法によって若干異なりますが、一般図式を図4に示します。

オーディオ再生システムの一般化された接続ブロック図図4:典型的な組み込みアプリケーションにおけるオーディオ再生システムのための一般化された接続ブロック図を見ると、オーディオファイルのためにストレージが必要であることがわかりますが、これはマイクロコントローラ上にある場合と外部メモリ上にある場合があります。(画像提供:Beningo Embedded Group)

この図の中には、議論に値するポイントがいくつかあります。まず、オーディオ再生ファイルを保存するために何らかの手段が必要ですが、2つのオプションがあります。ファイルをマイクロコントローラのフラッシュメモリに内部的に保存するか、フラッシュメモリに外部的に保存するかです。どちらを選ぶかは、オーディオファイルのサイズと、マイクロコントローラ上の内蔵フラッシュメモリのサイズに左右されます。

また、開発者はオーディオ再生フォーマットを検討する必要があります。最も一般的なのはMP3を使用することです。この場合、採用するマイクロコントローラは、MP3デコードをサポートするソフトウェアスタックを備えていることが必要です。これにより、MP3ファイルを開き、I2Sインターフェースを介してDMA(ダイナミックメモリアクセス)コントローラを使用してプッシュすることができます。I2Sポートであっても、マスター/スレーブおよび他のいくつかのモードを設定できるので、データが正しい速度でコーデックに転送されるかどうかを注意深く調べる必要があります。

前述したように、アプリケーションによっては外部オーディオアンプが必要な場合と必要でない場合があります。一般的なコーデックの出力は1~1.5W程度で、小型スピーカを駆動するのに使えます。3W以上のスピーカを駆動するには、外部アンプを使用する必要があります。繰り返しになりますが、最も広く使われているのはD級アンプです。アンプは必ずしも可変ゲインである必要はありません。オーディオコーデックは、音量調整をデジタルで調整することができ、幅広い出力を提供できます。

見落とされがちな領域の1つにバルク静電容量があります。オーディオの再生中は、電源レールに大きく引っ張られることがあります。基板上に十分な静電容量がない場合、出力品質が劇的な影響を受ける可能性があり、他の不要なノイズとともにひどい音を発生させることがあります。これは、テスト中に電源レールを注意深く監視することで検出できます。プリント基板の開発中に、出力回路を調整するためにさまざまな静電容量値を試すことができるよう、基板上に余分なフットプリントを残しておくことは悪い考えではありません。

オーディオコーデックの選び方と使い方のコツ

オーディオコーデックは、組み込みソフトウェアを劇的に簡素化し、アプリケーションに優れた音質を提供します。オーディオコーデックは、開発者が以前にそれを使ったことがない場合には厄介なものです。オーディオコーデックをうまく活用するには、以下のようないくつかの「ヒントとコツ」があります。

  • マイクロコントローラ内のDMA(ダイレクトメモリアクセス)コントローラ機能を使用して、最小限のCPU介入でオーディオコーデックにフィードします。これは、コーデックがデータに対して「飢餓状態」にならないようにするのに役立ちます。
  • オーディオを再生していないときは、コーデックのミュート機能を使用して、低レベルの出力ノイズがスピーカに到達しないようにします。
  • 再生を無効にしたり、有効にしたりする場合は、オーディオコーデックのソフトミュート機能を使用して、スピーカのポップやその他の不要なノイズを防ぎます。
  • コーデックが初期化された後、ターミナルアプリケーションを使用してコーデックレジスタを出力します。これは、問題のデバッグやスピーカ出力回路やエンクロージャの調整を行う際に特に役立ちます。
  • コーデックに含まれる内部デジタルフィルタ機構を活用します。デジタルフィルタを使用することで、開発者は出力を均等化し、不要な高周波数と低周波数をフィルタで除去し、サウンドシステムの品質を最大限に高めることができます。
  • エンクロージャと取り付けが大きな違いを生むので、サウンドのチューニングは回路基板とスピーカがエンクロージャに取り付けられている状態でのみ意味をなすことを忘れないでください。

開発者の手始めとしては、Maxim IntegratedのMAX9867用のMAX9867EVKIT+評価キットを使って実験ができます(図5)。

MaximのMAX9867用MAX9867EVKIT+評価キットの画像図5:MAX9867用のMAX9867EVKIT+評価キットは、USBケーブルでPCに接続します。RCA入力、ヘッドフォン出力、光ファイバ送受信モジュールを備えています。(画像提供:Maxim Integrated)

このキットはボードと関連ソフトウェアで構成されており、S/PDIF(Sony/Philips Digital InterFace)を使用してオーディオデータを送受信するように構成されていますが、I2Sを使用するように設定することもできます。キットは、RCA入力端子 × 2、3.5mmアナログ出力ヘッドホン端子 × 2、光ファイバ受信送信モジュールを装備しています。ソフトウェアはWindowsベースで、USBケーブルを介してPCに接続するとGUIが開き、開発者はMAX9867の設定を試すことができます(図6)。

Windows版のGUIの画像(クリックで拡大)図6:ユーザーはWindowsベースのGUIを使用して、クロックとデジタルオーディオ(選択中のタブ)からレジスタ1とレジスタ2(一番右)に至るまで、さまざまなMAX9867の設定を試すことができます。(画像提供:Maxim Integrated)

結論

組み込みシステムのユーザーは、アラーム、アラート、およびその他のユーザーオーディオフィードバックとして、ブザー音やビープ音の代わりに今では当たり前となった高品質オーディオに慣れています。これにより、開発チームはシステムへのMP3再生機能の実装を義務のように求められています。これは、最初は複雑な作業のように見えるかもしれません。しかし、マイクロコントローラと一緒に適切なオーディオコーデックを使用し、いくつかの設計ベストプラクティスに従うことで、開発者はオーディオアプリケーションに関連するコストと複雑さのバランスを取ることができます。

出典

  1. https://en.wikipedia.org/wiki/Audio_codec
DigiKey logo

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。

著者について

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo氏は組み込みソフトウェアコンサルタントで、現在、製品の品質、コスト、市場投入までの時間を改善することで、ビジネスを劇的に変革するために数十か国以上のお客様と作業しています。同氏は、組み込みソフトウェア開発技術に関する200以上の記事を発表しており、引っ張りだこのスピーカーでありテクニカルトレーナです。ミシガン大学のエンジニアリングマスターを含む3つの学位を取得しています。気楽にjacob@beningo.comにメールするか、彼のウェブサイトwww.beningo.comから連絡してみてください。そして毎月のEmbedded Bytes Newsletterにサインアップしましょう。

出版者について

DigiKeyの北米担当編集者