MAX II CPLDによるSPI-I2S変換

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