MAX II CPLD による SPI-I2S 変換 この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 2007 年 12 月 ver 1.0 Application Note 487 はじめに このアプリケーション・ノートでは、アルテラ MAX® II CPLD を使用してプロト コル変換を実行し、インター IC サウンド(I2S)バス上のオーディオ・デバイス へのデータ・フローをシリアル・ペリフェラル・インタフェース(SPI)を通じて 制御する方法について説明します。 I2S および SPI インタフェー ス I2S は、I2S バスとして知られる通常の 3 線式バスを使用して、システムのオーディ オ・デバイスを相互接続するために広く使用される、3 線式半二重シリアル・イ ンタフェースです。I2S デバイスとバスは、各オーディオ・チャネルに対応する 2 つの時分割多重オーディオ・データを搬送するシリアル・データ(SDA)、シリ アル・クロック(SCK) 、および I2S バス上の各デバイス間で交換されるデジタル・ オーディオ・データを制御するワード・セレクト(WS)の 3 本の線を使用します。 I2S システムは、ジッタを除去するために、シリアル・クロックからのシリアル・ オーディオ・データを個別に処理するように設計されています。 SPI は、システムの内部または外部のペリフェラル・デバイス(スレーブ)にシ ステム・プロセッサ(マスタ)を接続するときに一般的に使用される、4 線式全 二重シリアル・インタフェースです。SPI はクロック(SCLK)とスレーブ・セレ クト信号またはチップ・セレクト信号(CS)と併せて、独立したデータ出力信号 (マスタ・アウト・スレーブ・イン、すなわち MOSI)ラインと、データ入力信号 (マスタ・イン・スレーブ・アウト、すなわち MISO)ラインで通信します。 このデザインでは、SPI インタフェースを備えたホストは、A/D コンバータ、デー タ信号プロセッサ、デジタル・フィルタ、オーディオ・プロセッサ、PC マルチ メディア・オーディオ・コンバータなどのデバイス、および I2S バス上のその他 のデバイスへのデータ・フローを制御することができます。オーディオ・データ 通信用の I2S インタフェースを内蔵しないで、SPI インタフェースを内蔵したエン ベデッド・システムがいくつかあります。このデザインは、次のような状況で使 用すると効果的です。 MAX II CPLD による SPI-I2S 変換 Altera Corporation AN-487-1.0/JP SPI ホストへのブリッジ・インタフェースは、4 線(CS、SCLK、MISO、MOSI) を持つ SPI スレーブです。I2S 側のインタフェースは、3 本の線(I2S_ SCK、 I2S_SDA、I2S_WS)を持つ I2S マスタです。CLK は I2S マスタの外部のマスタ・ク ロックです。図 1 に、MAX II CPLD を使用した SPI-I2S インタフェースの実装を 示します。 1 MAX II CPLD による SPI-I2S 変換 図 1. MAX II CPLD を使用した SPI-I2S インタフェースの実装 MAX II µP ASIC MCU FPGA S P I M A S T E R SCLK CS MOSI MISO S P I S L A V E Data Buffer Com Buffer I 12S_SCK 2 S 12S_SDA M A S 12S_WS T E R I 2 S S L A V E MCU CLK このデザインは、 (システム内のデジタル・オーディオ・デバイスとの相互接続に 使用される比較的帯域幅が低いプロトコルの)I2S バス上のオーディオ・デバイス に(マイクロプロセッサやホストにシリアル・ペリフェラル・インタフェースで接 続するのに用いられる、より一般的な4線式のシリアル・インタフェースである) SPI インタフェースを通じてデータ・フロー制御のためのプロトコル変換を提供し ます。このデザインでは、I2S バス上で接続されるデバイスと通信する SPI ホスト をブリッジするために、MAX II CPCD を使用しています。図 1 では、MAX II CPCD ブリッジが SPI マスタ(ホスト・プロセッサ)に対する SPI スレーブとして認識 され、ホストを I2S バスにブリッジする I2S マスタの機能を実行します。 送信時には、SPI データには最初の 8 ビットにコマンド・バイトがあり、その後 に 16 ビット・データが続きます。これらのデータ・ビットは、I2S へのデータ送 信が要求される場合にのみ有効です。受信時には、ステータス・バイトとして認 識される最初の 8 ビットの後に 16 ビット・データ・ワードが続きます。このデー タ・ワードの有効性は、ステータス・バイトのデータ有効ビットにより指定されます。 2 Altera Corporation 2007 年 12 月 MAX II CPLD による SPI-I2S 変換 図 2 に、SPI のタイミング図を示します。 図 2. SPI のタイミング図 CS CPOL = 0 SCLK MOSI Command (8 bits) MISO Status (8 bits) Data (16 bits) CPHA = 1 For Transmitting Data from Master CS CPOL = 0 SCLK MOSI Command (8 bits) MISO Status (8 bits) CPHA = 1 Data (16 bits) For Receiving Data from Slave SPI インタフェース 通常、SPI バスには 1 つのマスタとそれに接続される多数のスレーブがあります。 CPLD ブリッジは、SPI マスタ・デバイスへのスレーブの 1 つとして機能します。 図 1 に示す SPI スレーブ・ラインを表 1 で説明します。 表 1. Altera Corporation 2007 年 12 月 SPI-I2S ブリッジの SPI スレーブ・ライン ピン名 入力 / 出力 説明 CS 入力(アクティブ Low) チップ / スレーブ・ セレクト SCLK 入力 シリアル・クロック MISO 出力 マスタ・イン・ スレーブ・アウト MOSI 入力 マスタ・アウト・ スレーブ・イン 3 MAX II CPLD による SPI-I2S 変換 図 2 に示すように、SPI ホストは最初の 8 ビット・コマンド・バイトを送信した 後、16 ビット・データを送信します。このデータは送信時にのみ有効です。デー タが受信される場合、または I2S マスタがコントローラの役割を担う場合、これ らの 16 ビットは無効です。 図 3 に、コマンド・バイト・フォーマットを示します。各コマンド・バイトにつ いては、次の項で説明します。 図 3. コマンド・バイト・フォーマット Check RST ----- Controller WS RC Clock TR Check 最初に送信されるこのビットは、SPI マスタから送信されるワードの有効性を指 定します。このビットが 0 の場合、後続の他のビットは無効です。このビットが 1 の場合、後続の他のビットは有効です。このビットは、スレーブからステータ スが読み込まれる場合にのみ使用されます。 RST I2S マスタのリセット信号です。このビットが 1 の場合、I2S マスタはリセットさ れます。このコマンド・ビットが I2S マスタにリセットを指示する場合、マスタ は 1 クロック・サイクルの間にリセットし、次のクロック・サイクルの間に新し いコマンドに備えます。したがって、リセット・プロセスを完了するには 2 クロッ ク・サイクルが必要です。 マスタの機能の変更が要求されるたびに、コマンドと同時に RST が送 信されて、I2S マスタがリセットされます。特定の機能が完了した後、 最後のコマンドで再び I2S マスタがリセットされます。リセット・コマ ンドが送信されるときは常に、コマンド・バイトの残りのビットには必 ず前のコマンドが、1 に設定された RST とともに含まれています。こ れが必要な理由は、データ・トランザクション・サイクル全体が完了す る(16 クロック・サイクルの 15 番目)前に、コマンド・バッファから コマンドが読み込まれるためです。 Controller I2S マスタがコントローラとして機能しているときには、 このビットは High です。 I2S マスタがコントローラとして機能するには、RC とコントローラ・ ビットの両方が High でなければなりません。I2S マスタがレシーバと して機能するには、RC ビットのみ High です。 4 Altera Corporation 2007 年 12 月 MAX II CPLD による SPI-I2S 変換 WS このビットは、受信または送信されるデータの各ワードのワード・チャネルを指 定します。 RC I2S マスタがレシーバとして機能している場合、このビットは High です。 Clock I2S マスタのクロック・イネーブルです。 TR I2S マスタがトランスミッタとして機能している場合、このビットは High です。 I2S ステータス・バイト・フォーマット CSがLowになるたびに、 SPIマスタによって24ビットが送信または受信されます。 これらの 24 ビットの最初の 8 ビットはステータスを表し、次の 16 ビットは受信 されるデータに一致します。 図 4 に、8 ビット・ステータス・フォーマットを示します。各コマンド・バイト については、次の項で説明します。 図 4. I2S ステータス・バイト・フォーマット Current WS TR/RC WS/RC Data Valid Data Buff Data Buff Command Buff Command Buff Current WS このビットはマスタで現在選択されているチャネルを指定します。 TR/RC このビットは、I2S マスタのステータスを指定します。このビットが 1 に設定され ている場合、I2S マスタは現在トランスミッタとして機能しています。このビット が 0 に設定されている場合、レシーバとして機能しています。 WS/RC このビットは、データが受信されるチャネルを指定します(I2S マスタがレシーバ の場合)。 Altera Corporation 2007 年 12 月 5 MAX II CPLD による SPI-I2S 変換 Data Valid このビットは 16 ビット・データの有効性を指定します。I2S マスタがレシーバで、 このビットが 1 に設定されている場合、受信される 16 ビットは有効です。I2S マ スタがレシーバで、このビットが 0 に設定されている場合、受信される 16 ビット は無効です。 Data Buff これらの 2 ビットは、データ・バッファの現在のステータスを指定します(送信 されるデータをバッファする各 2 バイトのバッファが 3 個あります) 。これらの バッファで可能な 4 つの状態を以下に示します。 ■ 00: すべてのバッファがエンプティ ■ 01: バッファ 1 と 2 がエンプティ、バッファ 3 がフル ■ 10: バッファ 1 がエンプティ、バッファ 2 と 3 がフル ■ 11: 全バッファがフル Command Buff これらの 2 ビットは、コマンド・バッファの現在のステータスを上記のデータ・ バッファに類似したフォーマットで指定します。 コマンド・バッファのステータスは、SDA ライン上のデータ・トラン ザクションの 15 番目のクロック・サイクルで変化し、データ・バッファ のステータスは 16 番目で変化します。 CPLD ブリッジがコマンド・バイトを受信すると、最上位ビット(MSB)が 1 か どうかチェックされます。このコマンド・バイトは、MSB が 1 の場合にのみコマ ンド・バッファに送信されます。次にこれらの 8 ビットに続く 16 ビット・データ は、データ・バッファに格納されます。コマンド・バッファとデータ・バッファ は、いずれも最大 3 セットのコマンド・バイトと最大 3 セットのデータ・ワード を格納できます。ホストは毎回ステータスをチェックし、バッファのステータス を認識し、新しいコマンド・バイトおよびデータ・ワードを送信するかどうかを 決定します。 I2S マスタのデータ受信トランザクションが完了すると、ステータス・レジスタの データ有効ビットが High に設定され、I2S データの SPI スレーブへの転送が開始 されます。このデータは MISO ピンを通じて SPI マスタに転送できます。この MISO トランザクションが完了すると、データ有効ビットは 0 に設定されます。 6 Altera Corporation 2007 年 12 月 MAX II CPLD による SPI-I2S 変換 I2S インタフェース MAX II CPLD の I2S 部は、I2S バス上の I2S スレーブに接続された I2S マスタとし て機能します。表 2 に、SPI-I2S ブリッジの I2S ラインを示します。 表 2. SPI-I2S ブリッジの I2S ライン ピン名 入力 / 出力 説明 I2S_SCK 出力 I2S シリアル・クロック I2S_SDA 双方向 I2S シリアル・データ I2S_WS 出力 I2S ワード・セレクト CLK 入力 入力マスタ・クロック入力 I2S マスタはまず、コマンド・バッファおよびデータ・バッファから SPI スレーブ が設定したデータを読み出します。対応するコマンド・バイトがデータ送信を指 定している場合は、対応するデータ・バッファから読み出されたデータがI2S_SDA ライン上をシリアルに送信されます。15 番目のデータ・ビットが送信された後、 I2S マスタはコマンド・バッファから新しいコマンド・バイトを読み出し、この新 しいコマンド・バイトに指定される次の処理に備えます。これが特に重要になる のは、次のデータ・トランザクションの前に 1 クロック・サイクルだけ変化し、 新しいデータを別のチャネルに割り当てるための WS ビットです。ここで I2S マス タは、図 5 に示すように、I2S スレーブ・レシーバへのトランスミッタとして機能 しています。 Altera Corporation 2007 年 12 月 7 MAX II CPLD による SPI-I2S 変換 図 5. I2S マスタの予測されるシナリオ SPI Slave SPI Slave MAX II CPLD MAX II CPLD I2S Receiver Master I2S Transmitter Master I2S SCK I2S I2S SDA WS I2S SCK I2S Receiver Slave I2S SDA I2S WS I2S Transmitter Slave I2S マスタによりコマンド・バッファから読み出されたコマンド・バイトがデータ 受信を指定する場合、データは I2S-SDA ラインから受信されます。このライン で 16 ビットのデータが受信された後、データは SPI スレーブに送信され、同時に ステータス・レジスタのデータ有効ビットに 1 が設定されます。これにより、SPI スレーブは MISO ライン上で SPI ホストにデータを送信できます。ステータス・ バイトの WS ビットも更新され、受信されたデータのチャネルを指定します。 コントローラとしての I2S マスタ SPI マスタが I2S マスタに I2S コントローラとして機能するよう要求する場合、コ マンド・バイト内の対応するビット(controller、RC、clock)は High に設 定されます。次に、I2S マスタは I2S_SCK 信号と I2S_WS 信号をイネーブルに し、I2S_SDA ラインをトライステートにします。 8 Altera Corporation 2007 年 12 月 実装 図 6 に、コントローラ・モードの I2S マスタを示します。 図 6. コントローラ・モードの I2S マスタ SPI Slave MAX II CPLD I2S Master I2S_SCK I2S_WS I2S_SCK I2S Transmitter Slave I2S_WS I2S_SDA I2S Receiver Slave 実装 このデザインは、EPM570 または EPM1270 を使用して実装することができます。 デザインのソース・コードはコンパイルして、MAX II CPLD Map にプログラム することができます。SPI インタフェース・ポートと、適切な汎用 I/O(GPIO) への I2S バス・ラインを図 1 に示します。 ソース・ コード このデザイン例は Verilog を使用して作成されています。ソース・コード、テス トベンチ、および完成した Quartus® II プロジェクトは、以下から入手可能です。 www.altera.co.jp/literature/an/an487_design_example.zip まとめ このデザインで示すとおり、MAX II CPLD は、SPI-I2S などのインタフェース・ プロトコル・コンバータを実装するための有力な選択肢となります。低コスト、 低消費電力、および使いやすいパワー・オン機能により、MAX II CPLD はイン タフェース・プロトコル・コンバータ・アプリケーションに最適なプログラマブ ル・ロジック・デバイスになります。 関連情報 以下に、このアプリケーション・ノートの関連情報を示します。 Altera Corporation 2007 年 12 月 ■ MAX II CPLD ホームページ : www.altera.co.jp/products/devices/cpld/max2/mx2-index.jsp ■ MAXII デバイスの資料ページ : www.altera.co.jp/literature/lit-max2.jsp 9 MAX II CPLD による SPI-I2S 変換 ■ ■ MAX II パワーダウン・デザイン : www.altera.co.jp/support/examples/max/exm-power-down.html MAX II アプリケーション・ノート : 「AN 428: MAX II CPLD のデザイン・ガイドライン」 「AN 422: MAX II CPLD を使用したポータブル・システムにおける消費電力 の管理」 表 3 に、このアプリケーション・ノートの改訂履歴を示します。 改訂履歴 表 3. 改訂履歴 日付 & ドキュメント・ バージョン 2007 年 12 月 v1.0 101 Innovation Drive San Jose, CA 95134 www.altera.com Literature Services: [email protected] 10 変更内容 初版 概要 — Copyright © 2007 Altera Corporation. All rights reserved. Altera, The Programmable Solutions Company, the stylized Altera logo, specific device designations, and all other words and logos that are identified as trademarks and/or service marks are, unless noted otherwise, the trademarks and service marks of Altera Corporation in the U.S. and other countries. All other product or service names are the property of their respective holders. Altera products are protected under numerous U.S. and foreign patents and pending applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Altera Corporation