ENGLISH 简体中文 日本語 한국어  



   
 
キーワードまたは型番を入力    




リファレンスデザイン4242

オーディオアッテネータ回路におけるMAXQ3210の使用

要約:このアプリケーションノートでは、自動化されたステレオオーディオアッテネータを実装するシステムについて解説します。低電力16ビットRISCマイクロコントローラMAXQ3210をシステムコントローラに使用して、様々なウェイト時間の生成と、最終的に無音状態に至るオーディオ信号の段階的な減衰の駆動を行います。減衰の生成には、65ステップ、オーディオテーパ、デュアルディジタルポテンショメータDS1801を使用します。信号のバッファ処理は、デュアル、単一電源オペアンプMAX1467によって実現します。ファームウェアのソースコードはマキシムのウェブサイトからダウンロード可能です。

概要

今日のエンターテイメント機器の多くは、人間が直接介入しなくても、自動的に動作を終了することができるように設計されています。たとえば、現代の家庭に見られるラジオやテレビの場合、特定の時刻あるいは設定された時間の経過後に、自動的にオフになるのは珍しいことではありません。この機能は、ユーザが寝てしまった後で自動的に機器の電源がオフになる「スリープ」モードの実装に便利です。

残念ながら、すべてのエンターテイメント機器がそうした機能を備えているわけではなく、コンポーネントステレオシステムには一般的にこの機能がありません。その場合は、外付けのデバイスによってスリープモードの機能を追加すると良いでしょう。それらのシステムの場合、単純に電源をオフにするのは好ましくありません。突然オーディオ再生が終了し、無音状態への分断的な移行が始まる可能性があります。比較的長時間にわたってオーディオレベルを低下させることによって、少しずつ、ほとんど気づかないようにオーディオを除去していくのが望ましい方法です。このアプリケーションノートで説明する安価なデバイスが、この機能を提供します。

このデバイスは、オーディオソースから最終段のパワーアンプまでのどこかの位置で、コンポーネントステレオシステムのオーディオ信号経路に挿入するように設計されています。このデバイスはラインレベルの信号の入出力を行うようになっており、したがってこの信号レベルを容易に利用できる場所であれば、システム内の任意の位置に配置することができます。最初に起動された時点では、このデバイスは一切の減衰なしでオーディオ信号を通過させ、「start」ボタンが押されるまではこの動作を継続します。この操作によって最初の時間遅延が開始され、あらかじめ設定されたカウントダウン期間にわたってデバイスがこの「フル出力」状態に保たれます。このカウントダウン期間が経過した後、デバイスはオーディオ減衰量をスムーズな等ステップで増大させ始め、最後には信号が完全に無音化されます。

システムハードウェア

システムハードウェアの回路図を図1に示します。図から分かるように、このシステムはわずか数個のアクティブコンポーネント、すなわち、RISCマイクロコントローラMAXQ3210、デュアルオーディオテーパポテンショメータDS1801、およびデュアル単一電源オペアンプMAX4167で構成されています。これらの各コンポーネント、およびシステム内におけるそれぞれの機能について、以下の各セクションで説明します。

マイクロコントローラMAXQ3210

MAXQ3210は、システムの制御を行います。MAXQ3210は、最大クロック速度3.58MHzで動作する16ビットのRISCマシンです。ほとんどの命令がそれぞれ1クロックサイクルで実行されるため、このプロセッサの性能は1MHz当り100万命令に近い値になります。したがって、このプロセッサのピーク性能はほぼ3.58MIPS (million instructions per second)です。MAXQ3210は、プログラム格納用に16ビット1KワードのEEPROM、データ格納用に128ワードのEEPROMと64バイトのSRAMを内蔵しています。EEPROMメモリは、デバイスに内蔵されたブートストラップローダを使用するインシステムプログラミング、またはユーザ提供コードによるインアプリケーションプログラミングが可能な構成になっています。また、このマイクロコントローラは、9Vから5Vへの電圧レギュレータ、圧電ホーンドライバ、および最大15個の汎用I/O (GPIO)端子を備えています。

MAXQ3210プロセッサのバリエーションであるMAXQ3212は、圧電ホーンドライバと9Vから5Vへのレギュレータを内蔵していない点を除いてMAXQ3210と同一です。このアプリケーションにはホーンドライバもレギュレータも不要であるため、MAXQ3212もこのアプリケーションに適した選択肢です。したがって、MAXQ3212の使用によってさらに低コストのソリューションが可能になります。

最終的には、システムの柔軟性を最大化して将来の拡張を可能とするため、このアプリケーションのプロトタイプ用にはMAXQ3210を選択しました。

Figure 1. System schematic.
図1. システム回路図

MAXQ3210は、LEDを直接駆動することができるI/O端子も備えています。このアプリケーションでは、このLED直接駆動能力を使用して、システムの状態を示すために様々な速度でLEDを点滅させています。この機能については、この後の「システムの状態表示」の項でさらに詳しく説明します。

ディジタルポテンショメータDS1801

マキシムでは、ディジタルポテンショメータの幅広い選択肢を提供しています。このアプリケーションでは、いくつかの理由からDS1801を選択しました。このデバイスはオーディオテーパディジタルポテンショメータを2個内蔵しており、それぞれが65個の独立したワイパ位置を備えています。ポジション0~63は、その減衰レベル(すなわち0dB~-63dBの減衰量)を表しています。ポジション64は特別な「ミュート(無音)」位置であり、-90dBを超える減衰量を提供します。

それぞれのポテンショメータは、8ビットのシフトレジスタを使用してワイパ位置の設定を保持しています。これを表1に示します。これらの8ビットの内、低位の6ビットはポットのワイパ位置を0~63で表します。第7のビットに1をセットすると、他のビットの値に関係なく強制的にミュート状態になります。各シフトレジスタの第8のビットは「任意」であり、ポテンショメータの設定に影響しません。一方または両方のポットのワイパ位置を設定するには、16ビットすべてをこれらのレジスタにシフトインする必要があります。シフトレジスタの構成と各ビットの定義についても、表1に示します。

表1. ディジタルポットDS1801のレジスタ
15 14 13 12 11 10 9 8   7 6 5 4 3 2 1 0
Don't Care Mute Pot 1 Value MSB Pot 1 Value Pot 1 Value Pot 1 Value Pot 1 Value Pot 1 Value LSB   Don't Care Mute Pot 0 Value MSB Pot 0 Value Pot 0 Value Pot 0 Value Pot 0 Value Pot 0 Value LSB

DS1801を選択したもう1つの理由として、ポテンショメータのワイパ位置が大きく変化した場合のノイズが最小化されるという点があります。このデバイスは「ゼロクロス検出器」を内蔵しており、ポテンショメータを通過する信号がゼロの場合または50msのタイムアウト後にのみワイパ位置の変更を許可することが可能です。ワイパの遷移を信号がゼロのポイントに限定することによって、ワイパの遷移に起因する突然の振幅の変化を排除することができます。新しいワイパ位置が書き込まれてから50ms経過すればDS1801がゼロクロスを検出していなくても、入力信号の状態にかかわらずワイパ位置が変更されます。図1の回路図に示されている通り、ディジタルポットはDCバイアスがポットの両端に等しく印加されるように接続されています。これによって、実際には電源電圧の半分のDCバイアスがかかっていても、観測されるAC信号は0Vを通るようになっています。したがって、ディジタルポテンショメータのゼロクロス検出器は意図通りに動作します。ゼロクロス検出回路を有効化するため、DS1801のアクティブローのZCEN端子がローに接続されています。

最後に、制御インタフェースが3線式シリアルインタフェースであるという点も、DS1801を選択した理由です。CPUで制御するアプリケーション向けに設計されたこのインタフェースを使用して、ポテンショメータのワイパ位置を前述の2個の8ビットレジスタに書き込むことが可能です。マイクロコントローラが備えるGPIO端子の内の3個が出力として設定され、このインタフェースを提供します。DS1801の3線式インタフェースは、アクティブローのRST、CLK、およびDの、3個の入力で構成されています。アクティブローのRST信号は、3線式シリアルポートの書込み操作をイネーブルするために使用されます。CLKは、データ転送のための同期を提供するクロック信号です。D信号は、ポテンショメータのワイパ位置の設定をデバイスに通知するデータです。15個のGPIO端子を備えるMAXQ3210は、この3線式インタフェースを容易にサポートすることができます。

オペアンプMAX4167

MAX4167は、オペアンプMAX4166のデュアルバージョンです。これは、レイルトゥレイルの入出力を提供する、単一電源(+2.7V~+6.5V)のデバイスです。このアプリケーションでは、5.0V単一電源で動作します。標準的なGB積(gain-bandwidth product)は5MHz、標準的なスルーレートは2V/µsです。

MAX4167は、信号のバッファ処理をオーディオ信号に提供します。ここで示す構成では、このデバイスはユニティゲインを提供しており、単純なバッファとして機能します。

ラインレベルのオーディオ信号はシステムに対して入出力がAC結合されており、単一電源に起因するDCバイアス電圧はオーディオ信号から除去されます。

システムソフトウェア

このアプリケーションのソフトウェアの開発とテストは、MAXQ®統合開発環境(MAX-IDE)とMAXQ3210の評価(EV)キットを使用して行いました。MAX-IDEには、MAXQ3210を含む各種のマイクロプロセッサ用のコードを開発するために必要なすべてのツールが含まれています。プロジェクトベースのインタフェースを使用した、アセンブリ言語によるコード開発をサポートしています。プロジェクトをターゲットデバイス向けにアセンブルし、ダウンロードして、1行ずつ実行することが可能です。MAXQ3210のEVキットを使用する場合、メモリの内容、コールスタックに格納されているアイテム、すべてのレジスタの値、およびソースコード内でアクセス可能なすべての変数の値を表示することによって、システムの状態を調べることができます。また、ソースコード内にブレークポイントを設定して、あらかじめ決めた位置で実行を停止させることも可能です。MAX-IDEは、マキシムのウェブサイトで入手可能な無償の開発ツールです。

ソフトウェアは単純明快です。アプリケーションコードはアセンブリ言語のメインプログラム(Attenuator.asm) 1本で実装されており、その中に初期化機能、プログラムのメインループ、いくつかのサブルーチン、および1つの割込みサービスルーチンが含まれています。すべてのソースコードが、ダウンロードによって入手可能です(ZIP、8kB)。この.ZIPアーカイブには、MAX-IDEのプロジェクトファイル、必要なすべての「インクルードファイル」、およびソースコードファイルが収録されています。また、アプリケーションの.HEXファイルも含まれており、MAXQ3210のEVボードまたは独自のターゲットボードにロードして実行することができます。

ポテンショメータの制御

このソフトウェアの主な機能は、ディジタルポテンショメータDS1801を制御することです。起動時に、ポテンショメータは減衰なしの状態に設定されます。ユーザの入力(ボタンの押下など)から適切なカウントダウン時間が経過した後、ソフトウェアはポテンショメータのワイパを完全なミュート位置に向かってステップ移動させ始めます。

ポテンショメータのワイパの実際の位置決めは、Output_BytesとClk_Bytesの2つのサブルーチンによって制御されます。Output_Bytesサブルーチンは、両方のポテンショメータの位置レジスタに格納する1バイトの値を収集し、それらの妥当性を検証し、順次Clk_Bytesサブルーチンに送ります。Clk_Bytesサブルーチンは、ワイパ位置データをポテンショメータにストローブするために必要な低水準のポート端子操作とビットシリアライゼーションを提供します。このソフトウェアは、異なるインタフェースを備えた別のポテンショメータを選択した場合にも、必要なソフトウェアの変更がこの2つのサブルーチンの入れ替えだけで済むように作成してあります。

システムの状態表示

前述のように、システムの状態を示すためにLEDの点滅を使用しています。点滅間隔が約0.25秒の場合、デバイスが起動されたものの、まだカウントダウン期間を開始するためのユーザ入力を受け取っていないことを示します。点滅間隔が約1秒の場合、システムが減衰ステップを開始する前のカウントダウンモードが始まっていることを示します。点滅間隔が約2秒の場合、システムがステップ減衰モードに入っていることを示します。点滅間隔が5秒の場合、システムが完全なミュート位置に到達し、次の起動が行われるまでその状態を維持していることを示します。赤色LEDに、電流制限抵抗を通して5Vが給電されています。LEDのカソードは、必要な電流のシンク能力を持つMAXQ3210のポート0、ビット7に直結されています。前述の間隔でポート端子P0.7がそれ自身とXORされ、それによってトグルされる結果として、LEDが点滅することになります。

ウェイト時間の生成

このアプリケーションにおけるマイクロコントローラのもう1つの主な役割は、様々な機能のためのウェイト時間を測定することです。システムレベルから見ると、このアプリケーションには少なくとも2個の、可変長のウェイト時間が必要になります。第1のウェイト時間はカウントダウン期間を実現するものであり、ユーザがスタートボタンを押したときに始まって、減衰過程が開始されるときに終わります。直観的には、眠りに落ちるための十分な時間をユーザに与えるため、このウェイト時間は1時間~2時間程度にする必要があります。第2のディレイは、減衰過程における個々のステップ間の時間間隔を確立するものです。このウェイト時間によって、オーディオが減衰なしのレベルから低下して最終的なミュート状態に達するまでに必要な時間が実質的に決定します。その結果、減衰ステップのなめらかさも決まることになります。これも直観的に言うと、なめらかで耳に付かないような形でレベルを減少させるために、減衰ステップ処理は1分~60分程度にする必要があります。したがって、ポテンショメータが65個の独立したステップを持つことから、ステップ間のウェイト時間は約1秒~55秒に相当します。最後に、プッシュボタンスイッチのデバウンス処理を行うための比較的短いディレイも必要であり、これは200ms前後になります。

この広範なウェイト時間を実現するため、このアプリケーションでは2個のサブルーチンを実装しています。Delayという名前のサブルーチンは、渡された8ビットのパラメータに基づいて可変長のウェイト時間を生成します。このパラメータによって、ソフトウェアによる10msのタイミングループを通る回数が決まります。このパラメータには0~255の値を指定することができるため、このサブルーチンで最大2.55秒のウェイト時間を作ることができます。ソフトウェアのタイミングループは、プロセッサのクロック周波数が3.58MHzであると想定してウェイト時間を生成しています。このサブルーチンは、最終的なソフトウェアの実装においてデバウンス用ディレイの生成にも使用します。

第2のウェイト時間生成サブルーチンはLDelayという名前であり、プロセッサの内蔵タイマーTimer 2によって生成される1秒のウェイト時間をカウントする仕組みになっています。このタイマーは、1秒間隔で割込みを発生するように初期化しておきます。割込みサービスルーチンで、カウンタ変数TICをインクリメントします。LDelayサブルーチンはTICをあらかじめ決められた値(次項参照)と比較して、両者が等しくなったときTICをゼロにリセットします。TICのリセットと同時に、変数TOCを1だけインクリメントします。そして、変数TOCをもう1つのあらかじめ決められた値と比較します。2つの値が等しくない場合、このサイクルが繰り返されます。値が等しい場合、ウェイトが完了し、タイマーが停止されます。TICとTOCはどちらも8ビットの値であるため、このサブルーチンで最大18.06時間(255 × 255 × 1秒 = 65,025秒 = 18.06時間)のウェイトを生成することができます。

ウェイト時間の選択

このソフトウェアは、特定のアプリケーションごとに様々な要件への適応を可能とするため、2個のウェイト時間の値を容易に変更できるように作成してあります。2つの値がインクルードファイル(Attenuator.inc)の中で定義してあり、ユーザは単にそれらの値を書き換えるだけで、2つの基本システムウェイト時間を変更することができます。変数TIMEV1bおよびTIMEV1aに、カウントダウン期間(ボタンの押下から減衰ステップの開始まで)を示す16ビット値(それぞれMSBとLSB)が格納されます。TIMEV2bとTIMEV2aには、減衰ステップ間のウェイト時間を示す16ビット値(それぞれMSBとLSB)が格納されます。これらの変数への値の割当てを単純に.INCファイルの中で変更するだけで、特定のアプリケーションや環境に応じて、前述の範囲内で任意のウェイト時間を選択することが可能です。

結論

このアプリケーションノートでは、コンポーネントステレオシステムにおいてラインレベルのオーディオ信号を自動的に減衰させ、スリープモード機能を提供するために使用することができるシステムについて説明しました。オーディオの減衰は、ユーザの入力(ボタンの押下)から一定時間後に開始されます。減衰は自動的に、少しずつ、等間隔のステップで行われます。システムの制御はRISCプロセッサMAXQ3210が行い、デュアルオーディオテーパディジタルポテンショメータDS1801を操作して信号を減衰させます。単一電源、デュアルオペアンプMAX4167を使用して、信号のバッファ処理を行います。システムに対する信号の入出力にはAC結合を使用して、内部のバイアス電圧から信号を分離します。ソフトウェアはアセンブリ言語で記述されており、MAX-IDE (MAXQ統合開発環境)およびMAXQ3210のEVキットボードを使用してテストを行いました。ソースのアセンブルおよびロード可能/実行可能な.HEXファイルの生成に必要となるすべてのソフトウェアは、マキシムのウェブサイトからダウンロードによって入手可能です。



MAXQはMaxim Integrated Products, Inc.の登録商標です。


関連製品  APP 4242: Oct 20, 2008
DS1801 デュアルオーディオテーパポテンショメータ フルデータシート
(PDF, 240kB)
無料
サンプル
MAX4167 シャットダウン付き、高出力ドライブ、高精度、低電力、単一電源、レイルトゥレイルI/Oオペアンプ フルデータシート
(PDF, 256kB)
無料
サンプル
MAXQ3210 電圧レギュレータ、圧電ホーンドライバ、およびコンパレータ内蔵、マイクロコントローラ フルデータシート
(PDF, 400kB)
MAXQ3212 アナログコンパレータおよびLEDドライバ付きマイクロコントローラ フルデータシート
(PDF, 324kB)

自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。


We Want Your Feedback!



フィードバックをお寄せください。
内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。—マキシムはお客様からいただく訂正、提案を元に改善していきます。 このページを評価し、フィードバックを送信する。

 

ダウンロード、PDFフォーマットダウンロード、PDFフォーマット(65kB)
 AN4242, AN 4242, APP4242, Appnote4242, Appnote 4242

        •         •         •     プライバシーポリシー     •     法的お知らせ

    Copyright © 2009 by Maxim Integrated Products