この翻訳版ドキュメントのメンテナンスは終了しております。
この文書には、古いコンテンツや商標が含まれている場合があります。
最新情報につきましては、次のリンクから英語版の最新資料をご確認ください。
https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
Please take note that this document is no longer being maintained. It may contain legacy content and trademarks which may be outdated.
Please refer to English version for latest update at
https://www.intel.com/content/www/us/en/programmable/documentation/lit-index.html
cv_54011-1.1
© 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. 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. 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.
Portions © 2011 Synopsys, Inc. Used with permission. All rights reserved. Synopsys & DesignWare are registered trademarks of Synopsys, Inc. All documentation is provided "as is" and without any warranty. Synopsys expressly disclaims any and all warranties, express, implied, or otherwise, including the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, and any warranties arising out of a course of dealing or usage of trade.
†Paragraphs marked with the dagger (†) symbol are Synopsys Proprietary. Used with permission.
Cyclone V デバイス・ハンドブック
ISO 9001:2008 Registered
ハード・プロセッサ・システム(HPS)は、外部SDとMMCのフラッシュ・カード、
セキュア・デジタルI/O(SDIO)デバイス、およびConsumer Electronics Advanced Transport Architecture(CE-ATA)ハード・ドライブにインタフェースするためのSecure Digital/MultiMediaCard(SD/MMC)コントローラを提供します。SD/MMCコントローラ はブート・イメージを格納し、除去可能なフラッシュ・カードからプロセッサ・シ ステムをブートすることをイネーブルできます。また、大規模なアプリケーション やユーザー・データ用のオン・ボード・ストレージ容量を拡張するためにフラッ シュ・カードを使用することができます。他のアプリケーションは、エンベデッド
SD(ESD)およびエンベデッドMMC(eMMC)除去不可能なフラッシュ・デバイスへ
のインタフェースが含まれています。
SD/MMCコントローラは、シノプシスのSynopsys® DesignWare® Mobile Storage Host
(DWC_mobile_storage)コントローラに基づいています。
f 本資料では、11–87ページの「参考資料」に記載されているように、SD/SDIOコマンド を指します。それは、Physical Layer Simplified Specification、Version 3.01 、および SDIO Simplified Specification Version 2.00に詳しく記載されています。
SD/MMC コントローラの特性
HPS SD/MMCコントローラは以下の機能を提供します。
■ モバイル・ストレージからHPSブーツをサポートする
■ 以下のスタンダードまたはカード・タイプをサポートする
■ eSDを含むSD—バージョン3.0
■ エンベデッドSDIO (eSDIO)を含むSDIO—バージョン3.0
■ CE-ATA—バージョン1.1
■ eMMCを含むMMC—バージョン4.41、1ビット、 4ビット、 および8ビット、
( 11–2ページの表 11–2に示すとおりのいくつかのパッケージ)
■ 統合 ディスクプタ・ベースのダイレクト・メモリ・アクセス(DMA)
■ 内部4 KB受送信のFIFOバッファ
表 11–1には、様々なSDカードのデバイス・タイプおよびサポートされている電圧、
バス・モード、およびスピードを示します。
November 2012 cv_54011-1.1
SD/MMCコントローラは直接eSDIOカード・デバイスの電圧スイッチング、カード の割り込み、またはバック・エンドのパワー・コントロールをサポートしていませ ん。ただし、汎用I/O(GPIO)に、これらの信号を接続することができます。
1 彼らはカード・インタフェース機能に影響を与えないため、カードのフォーム・
ファクタ(例えば、ミニやマイクロなど)は表 11–1に列挙されていません。
表 11–2は、さまざまなMMCカードのデバイス・タイプおよびサポートされている 電圧、バスモード、バス速度を示しています。
SD/MMCコントローラが外部カード・インタフェースの一部として、リセット出力
が含まれていません。フラッシュ・カードのデバイスをリセットするには、汎用出 力ピンを使用することを検討してください。
表 11‒1. SD カードを使用するケース
カード・デ バイスのタ
イプ
サポートさ れる電圧
サポートされるバス
・モード
サポートされるバス・スピード・モード デフォル
トの速度 高速 SDR12 SDR25 (1)
3.3 V 1.8 V SPI 1 ビッ
ト 4 ビッ
ト 8 ビッ
ト
12.5 MBps 25 MHz
25 MBps 50 MHz
12.5 MBps 25 MHz
25 MBps 50 MHz
SDSC (SD) v — v v — — v v — —
SDHC v v(2) v v v — v v v v
SDXC v v(2) v v v — v v v v
eSD v v(2) v v v — v v v v
SDIO v v(2) v v v — v v v v
eSDIO v v(2) v v v v(3) v v v v
表 11‒1の注 :
(1) SDR25速度モードでは1.8 Vの信号を必要とします。カードは、UHS-Iモード(例ばSDR50、SDR104、DDR50)をサポートし ていても、それはまだ低速(例えばSDR12、SDR25)で通信することに注意してください。
(2) SDの1.8 Vシグナリングをサポートするために電圧スイッチ出力をコントロールします。
(3) eSDIO用のオプション8ビットのバス・モードは、すべてのFPGAパッケージでサポートされていません。
表 11‒2. MMC を使用するケース
カード・デバイス のタイプ
最大ク ロック・
スピー ド (MHz)
最大デー タ・レー
ト (MBps)
サポートされ る電圧
サポートされるバス
・モード
サポートされる バス・スピー
ド・モード
3.3 V 1.8 V SPI(1) 1 ビッ ト
4 ビッ ト
8 ビッ ト
デフォ ルトの 速度
高ス ピード
MMC 20 2.5 v — v v — — v —
RSMMC 20 10 v — v v v — v v
SD/MMC コントローラのブロック図とシステム・インテグレー ション
SD/MMCコントローラでは、バス・インタフェース・ユニット(BIU)およびカー
ド・インタフェース・ユニット(CIU)が含まれています。 BIUは、コントロールお よびステータス・レジスタ(CSR)をアクセスするホストのためのスレーブ・インタ フェースを提供します。また、このユニットはDMAインタフェースを介して独立し たFIFOバッファへのアクセスを提供します。 DMAコントローラは、システム・メモ リとFIFOバッファ間でデータを交換するための責任があります。 DMAレジスタは、
DMA動作をコントロールするホストからアクセスできます。 CIUは、コントローラ上
のSD、MMC、およびCE-ATAプロトコルをサポートし、クロック・コントロール・
ブロックを介してクロック管理を提供します。割り込みを発生させるための割り込 みのコントロール・ブロックは、ARM® Cortex™-A9マイクロプロセッサ・ユニット
(MPU)サブシステム内の汎用割り込みコントローラに接続します。
図 11–1は、SD/MMCコントローラのブロック図とHPSに統合する方法を示していま す。
eMMC 50 25 v v — v v — v v
表 11‒2の注 :
(1) SPIモードはMMC4.41仕様では廃止されています。
(2) 任意の8ビットのバス・モードは、すべてのFPGAパッケージでサポートされていません。
(3) 最大クロック・レートの52 MHzの速度の代わりに、最大クロック・レートの50 MHz(MMC仕様で指定されている)をサ ポートしています。
表 11‒2. MMC を使用するケース
図 11‒1. SD/MMC コントローラの接続
Slave Interface
Master Interface
MPU Subsystem
I/O Pins FIFO
Buffer Control
Synchronizer
Storage FIFO Buffer
FIFO Buffer Control
Data Path Control
Command Path Control
Clock Control
Interrupt Control
DMA Controller
Register Block
Bus Interface Unit Card Interface Unit
SD/MMC Controller
L4 BusL3 Interconnect
SD/MMC コントローラの機能の説明
この項では、SD/MMCコントローラのコンポーネント、またコントローラを動作す る方法を説明します。
SD/MMC/CE-ATA プロトコール
SD/MMC/CE-ATAプロトコルはスタート・ビットによって開始され、ストップ・ビッ
トで終端され、コマンドとデータのビット・ストリームに基づいています。さらに、
SD/MMCコントローラは基準クロックを提供し、トランザクションを開始すること
ができるたった一つのマスタ・インタフェースです。
■ コマンド— オペレーションを開始するCMDピンにシリアルに送信されるトークン
です。
■ 応答— 特定のコマンドに応答して、CMDのピンにシリアルに送信されるカードか
らのトークンです。
■ データ—データの移動コマンドにデータ・ピンを使用してシリアルに送信されま す。
図 11–2には、複数ブロックのリード動作の一例を示します。クロックは代表だけで あり、クロック・サイクルの正確な数が表示されません。
図 11‒2. 複数ブロックのリード動作
Command Response sdmmc_cclk_out
sdmmc_cmd
sdmmc_data Data Block CRC Data Block CRC Data Block CRC
Command Response
Block Read Operation
Multiple Block Read Operation
Data Stop Operation From Host
to Card
From Card to Host
Data from Card to Host
Stop Command Stops Data Transfer
図 11–3は、複数ブロックのライト動作にホストによって送信されたコマンド・トー クンの例を示しています。
BIU
BIUはCIUとインタフェースされ、レベル3(L3)のインタコネクトとレベル4(L4)
のペリフェラル・バスに接続されています。 BIUは、次の主な機能ブロックで構成さ れています。
■ スレーブ・インタフェース
■ レジスタ・ブロック
■ FIFOバッファ
■ 内部DMAコントローラ
スレーブ・インタフェース
ホス・トプロセッサは、スレーブ・インタフェースを介して、SD/MMCコントロー ラのレジスタやデータのFIFOバッファをアクセスします。
レジスタ・ブロック
レジスタ・ブロックはBIUの一部であり、CSRのへのリードおよびライトのアクセ スを提供しています。
すべてのレジスタはBIUクロック・ドメインに存在しています。コマンドが1にコ マンド・レジスタ(cmd)のスタート・コマンド・ビット(start_cmd)を設定して ことで、カードに送信され、CIUの動作に必要なすべての関連レジスタはCIUブロッ クに転送されます。この間、ソフトウェアはBIUからCIUに転送されたレジスタへ の書き込みはいけません。ソフトウェアは、再びこれらのレジスタへの書き込み前 に、ハードウェアが0にstart_cmdビットをリセットするまで待機する必要があり ます。レジスタ・ユニットはハードウェアのロック機能があり、レジスタへの不正 な書き込みを防止します。
スタート・コマンドがcmdレジスタのstart_cmdビットを設定することによって発 行された後、コマンドがCIUによって受け入れられるまで、次のレジスタを書き換 えることはできません。
図 11‒3. 複数ブロックのライト動作
Command Response sdmmc_cclk_out
sdmmc_cmd
sdmmc_data Data Block CRC Data Block CRC
Command Response
Block Write Operation
Multiple Block Read Operation
Data Stop Operation From Host
to Card
From Card to Host
Data from Host to Card
Stop Command Stops Data Transfer OK Response &
Busy from Card
Busy Busy
■ Command (cmd)
■ Command argument (cmdarg)
■ Byte count (bytcnt)
■ Block size (blksiz)
■ Clock divider (clkdiv)
■ Clock enable (clkena)
■ Clock source (clksrc)
■ Timeout (tmout)
■ Card type (ctype)
ハードウェアは、CIUがコマンドをstart_cmdビット受け入れるとリセットします。
これらのレジスタのいずれかがこのロック・タイムの間に、ホストが書き込もうと する場合、書き込みは無視され、ハードウェア・ロックのライト・エラー・ビット
(hle)が実際の込みステータ・スレジスタ(rintsts)に1に設定されています。さ らに、割り込みがイネーブルされ、ハードウェア・ロック・エラーに対してマスク されていない場合、割り込みがホストに送信されます。
コマンドが受け入れられた後に、次の条件の下で、CIU(これは一深いコマンド キューがある)に、別のコマンドを送信することができます。
■ 前のコマンドがデータ転送コマンドでない場合、前のコマンドが完了すると、新 しいコマンドはライトSD/MMC/CE-ATAカードに送信されます。
■ 前のコマンドがデータ転送コマンドである場合、cmdレジスタのWait Previous Data Completeビット(wait_prvdata_complete)は新しいコマンドのために1に設定 されている場合、新しいコマンドはデータ転送が完了するときにSD/MMC/CE-ATA カードに送信されます。
■ wait_prvdata_completeビットが0の場合、前のコマンドが送信されると、新しい コマンドはすぐにSD/MMC/CE-ATAカードに送信されます。一般に、停止または中 止する前のデータ転送またはデータ転送の途中でカードのステータスを照会する ために、またはデータ転送の途中でカードのステータスを照会するために、この 機能を使用してください。
割り込みコントローラ・ユニット
割り込みコントローラユニットはrintstsレジスタ、割り込みマスク・レジスタ
(intmask)、およびコントロール・レジスタ(ctrl)の割込みイネーブル・ビット
(int_enable)に依存する割り込みを発生します。割り込み条件が検出されると、コ ントローラはrintsts内の対応する割り込みビット・レジスタを設定します。
rintstsレジスタのビットは、0ビットはそのまま残さを書く; ソフトウェアがリセッ
ト割り込みビットに1を書き込むことによってビットを0にするまで1に設定され たままです。rintstsレジスタのビットは、ソフトウェアが割り込みビットに1を書 き込むことによってこのビットを0にレセットするまで1に設定されたままです(0 を書き込むとビットはそのままに維持される)。
割り込みポートはアクティブHighとレベル・センシティブの割り込みです。割り込 みポートは、rintstsレジスタ内の少なくとも1ビットが1に設定される場合にのみ アクティブになり、このとき対応する レジスタ・ビットが である、
以下のビットは、デバッグの目的のために、トップ・レベルのポートとして使用で きます。
■ intmaskレジスタのすべてのビット
■ rintstsレジスタのすべてのビット
■ ctrlレジスタのビットint_enable
ctrlレジスタのint_enablビットは電源投入時に0に設定されており、intmaskレジス タの各ビットは、0x0000000に設定されています。これにより、すべての割り込みが マスクされます。
以下の条件は、割り込みが発生する原因となります。
■ リード上のエンド・ビット・エラー
■ ライト上にはCRC(Cyclic Redundancy Code)なし
■ オート・コマンドが完了
■ スタート・ビット・エラー
■ ハードウェア・ロックされたのライト・エラー
■ FIFOバッファのアンダーフローまたはオーバーフロー・エラー
■ ホスト・タイムアウトによるデータ飢餓
■ データ・リード・タイムアウトまたはブート・データ・スタート
■ 応答タイムアウトまたはACKブートが受信
■ データCRCエラー
■ 応答CRCエラー
■ FIFOバッファのデータ要求が受信
■ トランスミットFIFOバッファのデータ要求
■ データ転送上
■ コマンドが完了
■ 応答エラー
Receive FIFO Data RequestおよびTransmit FIFO Data Requestの割り込みはレベル・セン シティブの割り込み要因によって設定されます。したがって、rintstsレジスタに0 で割り込みの対応するビットをリセットする前に、割り込みソースは、まずクリア する必要があります。
例えば、Receive FIFO Data Request割り込みを受信受信したときに、FIFOバッファは FIFOバッファ・カウントがRX watermarkより大きくならないように空にする必要が あります。それ以外の場合、割り込みがトリガされるようになります。
割り込みの残りの部分は、シングル・クロック・パルス幅のソースによってトリガ されます。
FIFO バッファ
SD/MMCコントローラは、送信および受信データを格納するための、4 KBのデータ
FIFOバッファを持っています。 FIFOバッファ・メモリは、エラー訂正コード(ECCS)
をサポートしています。 FIFOバッファの両方のインタフェースは、シングルとダブ ル・ビット・エラー・インジェクションをサポートしています。イネーブルおよび エラー・インジェクション・ピンはシステム・マネージャによってドライブされる 入力です。そして、ステータス・ピンは、MPUサブシステムにドライブされる出力 です。
SD/MMCコントローラは、シングル・ビット訂正可能なエラーが検出された(また
訂正された)ときに出力をシステム・マネージャに通知するとき、また、ダブル・
ビット(修正不可能)エラーが検出されたときに提供します。システム・マネー ジャは、ECCエラーが検出されたときにGICへの割り込みを生成します。
f 詳しくは、Cyclone®Vデバイス・ハンドブックVolume 3の「 System Manager 」の章を 参照してください。
内部 DMA コントローラ
内部DMAコントローラは、CSRとカードへ、またはその逆にシステム・メモリから データを転送し、単一の送信または受信のエンジンを持っています。コントローラ は、効率的にソースから最小限のホスト・プロセッサの介入宛先へデータを移動す るために、ディスクリプタのメカニズムを使用します。このようなカードから送信 および受信データ転送の完了のような状況で、ホスト・プロセッサに割り込むよう にコントローラを設定することができます(他の正常またはエラー条件も同じく)。
シングル・データ構造を介してDMAコントローラとホスト・ドライバと通信しま す。
内部DMAコントローラは、システム・メモリにカードからデータ・バッファに受信 データを転送し、転送コントローラのFIFOバッファにメモリ内のデータ・バッファ からデータを送信します。システム・メモリに常駐するディスクリプタはこれらの バッファにポインタとして機能します。
データ・バッファは、システム・メモリの物理メモリ・スペースに常駐し、完全ま たは部分的なデータで構成されます。バッファ状態はディスクリプタに保持されま す。データ・チェインは、複数のデータ・バッファにまたがるデータを指します。
ただし、単一のディスクリプタには、複数のデータ・バッファにまたがることはで きません。
単一の記述は、受信と送信の両方に使用されます。リストのベース・アドレスは、
ディスクリプタ・リスト・ベースのアドレス・レジスタ(dbaddr)に書き込まれて います。ディスクリプタ・リストは前方にリンクされています。最後の記述は、環 構造を作成するための最初のエントリにポイントすることができます。ディスクリ プタ・リストは、ホストの物理メモリ・アドレス・スペースに常駐します。各ディ スクリプタは、最大2つのデータ・バッファを指すことができます。
内部 DMA コントローラ・ディスクリプタ
内部DMAコントローラは、ディスクリプタ構造体のこれらのタイプを使用していま す。
■ デュアル・バッファ構造— 2ディスクリプタ間の距離は、バス・モード・レジス タ(bmod)のディスクリプタ・スキップ・レングス・フィールド(dsl)に書き 込まれたスキップの長さの値によって決定されます。
■ チェイン構造—各ディスクリプタは、ユニークなバッファへ、またはリンクされ たリスト内の次のディスクリプタを指しています。
図 11–4および図 11–5にはそれぞれ、内部DMAコントローラのデュアル・バッ ファ・ディスクリプタの構造やチェイン・ディスクリプタの構造を示しています。
図 11‒4. デュアル・バッファ・ディスクリプタの構造
図 11‒5. チェイン・ディスクリプタの構造 Descriptor A
Descriptor B
Data Buffer 1
Descriptor C
Data Buffer 1 Data Buffer 1
Data Buffer 2
Data Buffer 2 Data Buffer 2
The Distance Between 2 Descriptors Is Determined by the DSL Value Programmed in the BMOD Register
Descriptor A
Descriptor B
Data Buffer
Descriptor C
Data Buffer Data Buffer
表 11–3は、ディスクリプタの内部フォーマットを示しています。ディスクリプタ・
アドレスは32ビット・バスに揃える必要があります。各ディスクリプタは、コント ロールおよびステータス情報の16バイトが含まれています。ディスクリプタの各 ビットについて詳しくは、11–11ページの表 11–4~ 11–13ページの表 11–7に参照し てください。
表 11‒3. ディスクリプのフォーマット ディスク
リプタ名 オフ セッ ト
31 30 29 ... 26 25 ... 13 12 ... 6 5 4 3 2 1 0
DES0 0
OWN CES — ER CH FS LD DIC —
DES1 4 — BS2 BS1
DES2 8 BAP1
DES3 12 BAP2または次のディスクリプタ・アドレス
内部DMAコントローラ・ディスクリプタ内のDES0フィールドは、コントロールお よびステータス情報が含まれています。表 11–4は、このディスクリプタのビットを 示しています。
表 11‒4. 内部 DMA コントローラ DES0 のディスクリプタ・フィールド
ビット ビット名 説明
31 OWN
1に設定すると、このビットはディスクリプタが内部DMAコント ローラによって所有されていることを示しています。
このビットが0に設定されている場合、ディスクリプタがホストに よって所有されていることを示しています。データ転送を完了したと き、内部DMAコントローラはこのビットを0にリセットします。
30 Card Error Summary (CES)
CESのビットは、トランザクション・エラーが発生したかどうかを示 します。 CESビットは、 rintstsレジスタの次のエラービット数の論 理和です。
■ End-bit error (ebe)
■ Response timeout (rto)
■ Response CRC (rcrc)
■ Start-bit error (sbe)
■ Data read timeout (drto)
■ Data CRC for receive (dcrc)
■ Response error (re)
29:6 Reserved —
5 End of Ring (ER)
1に設定すると、このビットは、ディスクリプタのリストが最終的な ディスクリプタに達したことを示しています。内部DMAコントロー ラは、ディスクリプタ・リングを作成して、リストのベース・アドレ スにリターンします。 ERはデュアル・バッファ・ディスクリプタの構 造にのみ使用可能です。
4 Second Address Chained (CH)
1に設定すると、このビットはディスクリプタ内の2番目のアドレス 次のディスクリプタのアドレスではなく、第二のバッファ・アドレス であることを示します。このビットを1に設定すると、BS2
(DES1[25:13])は全てゼロでなければなりません。
3 First Descriptor (FS)
1に設定すると、このビットは、このディスクリプタがデータの最初 のバッファが含まれることを示します。最初のバッファのサイズが0 の場合、次のディスクリプタは、データの先頭が含まれています。
2 Last Descriptor (LD) 1に設定すると、このビットはこのディスクリプタでポイントする
バッファがデータの最後のバッファであることを示しています。
1 Disable Interrupt on Completion (DIC)
1に設定すると、このビットはこのディスクリプタでポイントする バッファで最後のデータのための内部DMAコントローラ・ステータ ス・レジスタ(idsts)のTI/RIビットの設定を防止します。
0 Reserved —
DES1ディスクリプタ・フィールドは、バッファ・サイズが格納されます。表 11–5 は、このディスクリプタのビットを示しています。
DES2ディスクリプ・タフィールドには、データ・バッファへのアドレス・ポインタ が含まれています。表 11–6に、このディスクリプタのビットを示します。
表 11‒5. 内部 DMA コントローラ DES1 のディスクリプタ・フィールド
ビット ビット名 説明
31:26 Reserved —
25:13 Buffer 2 Size (BS2)
これらのビットは、第2データ・バッファのバイ ト・サイズを示します。バッファ・サイズは4の 倍数でなければなりません。バッファ・サイズが 4の倍数でない場合、結果の動作は未定義です。
DES0[4]が1に設定されている場合、このフィー ルドには、有効ではありません。
12:0 Buffer 1 Size (BS1)
4バイトの倍数でなければならないデータ・バッ ファのバイト・サイズを示しています。バッ ファ・サイズが4の倍数でない場合、結果の動作 は未定義です。このフィールドが0の場合、DMA はバッファを無視し、チェイン構造のために次の ディスクリプタに、またはデュアル・バッファ構 造のための次のバッファに移動します。
プログラムするディスクリプタとバッファが1つ しかない場合、バッファ2の代わりに1バッファ 1を使用する必要があります。
表 11‒6. 内部 DMA コントローラ DES2 のディスクリプタ・フィールド
ビット ビット名 説明
31:0 Buffer Address Pointer 1 (BAP1)
これらのビットは、最初のデータ・バッファの物 理アドレスを示しています。内部DMAコント ローラは唯一の32ビット・アラインメントされ たアクセスを実行するため、DES2 [1:0]を無視し ます。
現在のディスクリプタがデュアル・バッファ構造のチェイン・ディスクリプタまた は第二バッファ・アドレスで最後のディスクリプタでない場合、DES3ディスクリプ タ・フィールドでは、次のディスクリプタへのアドレス・ポインタが含まれていま す。表 11–7は、このディスクリプタのビットを示しています。
ホスト・バスのバースト・アクセス
内部DMAコントローラは、bmodレジスタの固定バースト・ビット(fb)を使用して 構成されている場合、マスタ・インタフェース上で固定長のバースト転送を実行し ようとします。最大バースト長が示され、bmodレジスタのプログラマブルなバース ト長(pbl)フィールドによって制限されます。ディスクリプタが取得されるとき、
マスタ・インタフェースは、常にインタコネクトに4つのバースト・サイズを表示 します。
内部DMAコントローラは、設定されたバーストを収容するのに、転送の終了での十 分なスペースがある場合、または転送の終了でのバイト数でがコンフィギュレー ションされたバースト長より少ない場合にデータ転送を開始します。 DMAマスタ・
インタフェースが固定長のバースト用に設定されている場合、INCR4/8/16および
SINGLEトランザクションの最も効率的な組み合わせを使用してデータを転送しま
す。 DMAのマスタ・インタフェースが固定長バースト用に構成されていない場合、
INCR(不定長)とSINGLEトランザクションを使用してデータを転送します。
ホスト・データ・バッファのアラインメント
システム・メモリ内の送信および受信データ・バッファは、32ビット境界に揃える 必要があります。
バッファ・サイズの計算
ドライバは、送信または受信するデータの量が知られています。DES1ディスクリプ タ・フィールドのバッファ・サイズ・フィールドで指定されたカードに送信するた めに、内部のDMAコントローラは、FIFOバッファからの正確なバイト数を転送しま す。
ディスクリプタは最後に設定されていない場合(DES0フィールドLDビットが0に 設定する状態)、対応するバッファは、完全なものとみなされ、バッファ内の有効な データの量は正確にバッファ・サイズ・フィールドによって示されています。ディ スクリプタが最後としてマークされている場合、DES1フィールドでのバッファ・サ イズによって示されるように、バッファは十分(または不十分)の場合もあります。
ドライバが有効である場所の数を認識しています。ドライバは残留の無効なバイト を無視するように期待されています。
表 11‒7. 内部 DMA コントローラ DES3 のディスクリプタ・フィールド
ビット ビット名 説明
31:0
Buffer Address Pointer 2 (BAP2) or Next Descriptor Address
これらのビットは、デュアル・バッファ構造が 使用されている第2のバッファの物理アドレス を示しています。Second Address Chained
(DES0[4])ビットが1に設定されている場合、
このアドレスでは次のディスクリプタが存在し ている物理メモリへのポインタが含まれます。
これが最後のディスクリプタでない場合、次の ディスクリプタ・アドレス・ポインタは32ビッ トにアラインされる必要があります。ビット1 および0が無視されます。
内部 DMA コントローラの割り込み
割り込みは、様々なイベントの結果として生成することができます。idstsレジスタ には、割り込みを発生させる可能性のあるすべてのビットが含まれています。内部 DMAコントローラの割り込みイネーブル・レジスタ(idinten)は、割り込みを発生 する可能性があるイベントのそれぞれのイネーブル・ビットが含まれています。
idstsのレジスタで2つのサマリー割り込みがあります:通常の割り込みサマリ・
ビット(nis)と異常な割り込みサマリ・ビット(ais)。nisビットは、idstsで の送信割り込み(ti)と受信割り込み(ri)ビットの論理和からの出力されます。
aisビットは、idstsレジスタでの致命バス・エラー割り込み(fbe)、ディスクリプタ 不使用能割り込み(du)、カード・エラーの要約割り込み(ces)ビットの論理和
(OR)の結果です。
割り込みは、対応するビット位置に1を書き込むことによってクリアされます。 0割 り込みのビット位置に書き込まれた場合、書き込みは無視され、割り込みはクリア されません。グループ内のすべてのイネーブルされた割り込みがクリアされると、
対応するサマリ・ビットは0に設定されます。両方の要約ビットを0に設定すると、
割り込み信号がデアサートされます。
割り込みは、キューに入れられません。ドライバは以前の割り込みに応答する前に 他の割り込みイベントが発生した場合、追加の割り込みは生成されません。例えば、
idstsレジスタのri ビットは、1つ以上のデータをホスト・バッファに転送されたこ
とを示します。
割り込みは同時の複数のイベントのために一度だけ生成されます。ドライバは、割 り込み要因のためのidsts レジスタをスキャンする必要があります。コントローラ からの最終の割り込み信号はBIUと内部DMAコントローラからの割り込みで論理和 です。
内部 DMA コントローラ FSM
次のステップでは、内部のDMAコントローラの機能ステート・マシン(FSM)の動 作を示しています。
1. 内部DMAコントローラがディスクリプタをフェッチするために4つのアクセス を実行します。
2. DMAコントローラは、内部ディスクリプタ情報を格納します。それが最初のディ
スクリプタの場合、コントローラはFIFOバッファ・リセットを発行して、リセッ トが完了するまで待ちます。
3. 内部DMAコントローラは、正しさのディスクリプタの各ビットをチェックしま す。ビットのミスマッチが発見された場合、適切なエラー・ビットが1に設定さ れ、ディスクリプタはDES0フィールドでのOWNビットを1に設定することで閉 じられます。
rintstsレジスタは、次の条件のいずれかを示します。
■ 応答タイムアウト
■ 応答CRCエラー
■ データ受信タイムアウト
■ 応答エラー
4. DMAがシステム・メモリにデータを書き込む前に到達するRXの透かし、または システム・メモリからデータを読み出す前に到達するTXの透かしを待ちます。
RXの透かしは、DMAがメモリへの書き込みをする前に、FIFOバッファにローカ ルに格納されるバイト数を表します。 DMAがメモリからデータを読み込む前に、
TXの透かしは地元のFIFOバッファの空きバイト数を表します。
5. プログラマブルなバースト長(PBL)のフィールドの値は、バッファ内のデータ の残量よりも大きい場合、単一の転送が開始されます。デュアル・バッファが使 用されている場合、また第2のバッファにデータ(バッファ・サイズ= 0)が含 まれていない場合、バッファがスキップされ、ディスクリプタが閉じられます。
6. ディスクリプタ内のOWNビットは、1ディスクリプタのデータ転送が完了した 後の内部DMAコントローラによって0に設定されます。転送は複数のディスク リプタにまたがっている場合、DMAコントローラは、次のディスクリプタを フェッチします。転送が現在のディスクリプタで終わっている場合、内部のDMA コントローラはidsts レジスタのri ビットまたはtiビットを設定した後、アイ ドル状態になります。ディスクリプタ構造(デュアル・バッファもしくはチェイ ンされたバッファ)に応じて、ディスクリプタの適切な開始アドレスがロードさ れます。デュアル・バッファ・ディスクリプタの第2のデータ・バッファの場 合、ディスクリプタは再度フェッチされていません。
内部 DMA 転送中の中断
データ転送が進行中である間に、ホストがカードにSD/SDIO STOP_TRANSMISSIONコ マンド(CMD12)を発行する場合、内部DMAコントローラは、Data Transfer Over
(DTO)の割り込みがアサートされるまでデータ転送が完了した後に現在のディスク リプタを閉じます。STOP_TRANSMISSIONコマンドが発行されると、DMAコントロー ラは、単一のバースト転送を実行します。
1. カードのライト動作では、内部DMAコントローラは、DTOの割り込みがアサー トされるまでシステム・メモリからフェッチした後FIFOバッファにデータを書き 込みます。これは、カード・クロックの動作を維持して、STOP_TRANSMISSION コマンドが確実にカードに送信されるように行われます。
2. カードのリード動作では、内部DMAコントローラは、FIFOバッファからデータ の読み出しを維持して、DTOの割り込みが発生するまで、システム・メモリに書 き込みます。すべてのFIFOバッファのデータが空にされていない限り、DTOの割 り込みが発生されないため、このステップが必要です。
1 カード・ライトの中止の場合、STOP_TRANSMISSIONコマンドが発行されている間の 現在のディスクリプタのみ内部DMAコントローラによってクローズされています。
残りの未読ディスクリプタは内部DMAコントローラでクローズされていません。
1 カード・リードの中止の場合、内部のDMAコントローラは、FIFOバッファのデータ出 力を読み出し、対応するディスクリプタのデータ・バッファに書き込みます。残り の未読ディスクリプタはクローズされません。
FIFO バッファのオーバーフローおよびアンダーフロー
通常のデータ転送状態の間、FIFOバッファのオーバーフローやアンダーフローは発 生しません。しかし、プログラミング・エラーは、FIFOバッファのオーバー・フ ローまたはアンダーフローが存在する場合発生することがあります。例えば、次の ようなシナリオを考えてみましょう。
送信の場合:
■ PBL=4
■ TX の透かし= 1
これらのプログラミング値では、FIFOバッファが1つの空場所のみを持っている場 合、DMAは、使用可能なストレージでたった1つのワードがあってもメモリから4 ワードを読み込もうとします。これは、 FIFOバッファオーバフロー割り込みに結果し ます。
受信の場合:
■ PBL=4
■ RXの透かし = 1
FIFOバッファが1つの場所のみを満たす場合、DMAは、たった1つのワードがあっ てもメモリから4ワードを読み込もうとします。これは、 FIFOバッファオーバフロー 割り込みに結果します。
ドライバは、バイト数が転送されることを確認する必要があります(ディスクリプ タで示されるように4バイトの倍数である)。例えば、bytcntレジスタは13の場合、
レングス・フィールドは常に4バイトの倍数でなければならないため、ディスクリ プタで示されるバイト数は16に切り上げなければなりません。
表 11–8に内部DMAコントローラのデータ転送動作のための法的PBLとFIFOバッ ファの透かし値を示します。
表 11‒8. PBL とウォーターマーク・レベル
PBL ( 転送数 ) TX/RX のウォーターマーク値
1 1以上
4 4以上
8 8以上
16 16以上
32 32以上
64 64以上
128 128以上
256 256以上
致命バスエラーのシナリオ
致命的なバスエラーは、マスタ・インタフェースを介してエラー応答が原因で発生 します。このエラーはシステム・エラーです。したがって、ソフトウェア・ドライ バは、コントローラ上のすべてのそれ以上の設定を行ってはなりません。このよう なシナリオからのたった1つのリカバリー・メカニズムは、次のいずれかのタスク を実行することです。
■ リセット・マネージャを介してコントローラにリセットを発行します。
■ CTRLレジスタのコントローラ・リセット・ビット(controller_reset)に書き 込むことによって、プログラム・コントローラのリセットを発行します。
CIU
CIUインタフェースは、BIUとSD/MMCカードまたはデバイスとインタフェースして います。ホスト・プロセッサはSD/MMCコントローラのBIUのコントロール・レジ スタにコマンド・パラメータを書き込み、これらのパラメータは、CIUに渡されま す。コントロール・レジスタの値に応じて、CIUはSD/MMCプロトコルに従ってカー ド・バスでSD/ MMCコマンドおよびデータ・トラフィックを生成します。コント ロール・レジスタの値は、コマンドとデータ・トラフィックがCE-ATAカードに向け られているかどうかを決定し、SD/MMCコントローラがコマンドとデータ・パスを 制御します。
以下のリストは、CIUの動作の制約について説明します。
■ コマンドが発行された後、CIUは、リード・ステータスを確認するために、また は転送を停止するために、別のコマンドを受け入れます。
■ 一度に1回のデータ転送コマンドしか発行できません。
■ オープン・エンドのカードのライト動作中、FIFOバッファが空であるため、カー ド・クロックが停止している場合、ソフトウェアはFIFOバッファにデータを記入 し、カード・クロックを開始する必要があります。そして、カードに1つの SD/SDIO STOP_TRANSMISSION (CMD12)コマンドのみ発行することができます。
■ SDIO/COMBOカードの転送中は、カード機能を中断し、ソフトウェアが中断転送
を再開する場合、新たなデータ転送コマンドのように、まずFIFOバッファをリ セットして、再開のコマンドを起動する必要があります。
■ カードのデータ転送が進行している間、SD/SDIOカードのリセット・コマンド
(GO_IDLE_STATE、GO_INACTIVE_STATEまたはCMD52_reset)を発行すると、ソフ トウェアは、cmdレジスタ内のstop_abort_cmdを1に設定する必要があります。
それにより、カードのリセット・コマンドを発行した後にコントローラはデータ 転送を停止することができます。
■ カード・リード間にFIFOバッファがいっぱいになっているため、カード・クロッ クが停止している場合、ソフトウェアはそのカード・クロックを開始するには、
少なくとも2つのFIFOバッファの位置を読み出す必要があります。
■ CE-ATAカード・デバイスの割り込みがイネーブルされる場合(ATAのコントロー
ル・レジスタでnIENビットはに0に設定されている場合)、進行中に保留の
RW_BLKコマンドがある場合、新しいRW_BLKコマンドは同じカード・デバイス
に送信してはいけません(このドキュメントで使用されるRW_BLKコマンドは CE-ATA仕様によって定義されたRW_MULTIPLE_BLOCK MMCコマンドである)。 Command Completion Signal(CCS)を待っている間にCommand Completion Signal Disable(CCSD)コマンドのみ送信することができます。
■ 同じカード・デバイスでは、CE-ATAカードで割り込みがディセーブル場合、ス テータス情報を読み出すために新しいコマンドを実行することができます(nIEN ビットはATAのコントロール・レジスタが1に設定されています)。
■ オープ・ンエンドの転送はCE-ATAカード・デバイスではサポートされません。
■ send_auto_stop信号は、CE-ATAの転送のためにはサポートされません(ソフト ウェアはcmdレジスタのsend_auto_stopビットを設定してはいけない)。
CIUは、主に次のような機能ブロックから構成されています。
■ コマンド・パス
■ データ・パス
■ クロック・コントロール
コマンド・パス
コマンド・パスは次の機能を実行します。
■ カード・コマンドのパラメータをロードする
■ カード・バスにコマンドを送信する
■ カード・バスからの応答を受信する
■ BIUに対して応答を送信する
■ クロック・パラメータを読み込む
■ コマンド・ピンにPビットをドライブする
新しいコマンドは、BIUのレジスタに書き込み、そしてcmdレジスタにstart_cmd ビットを設定することにより、コントローラに要求されます。コマンド・パスは、
新しいコマンド(コマンド、コマンド引数は、タイムアウト)をロードするとBIU に確認応答を送信します。
新しいコマンドがロードされた後、コマンド・パスのステート・マシンはカード・
バス(内部生成7項のCRC-7を含む)にコマンドを送信し、任意の場合、応答を受 信します。そして、ステート・マシンはコマンドが完了したことをBIUに対する受 信応答と信号を送信し、新しいコマンドをロードする前に、8クロック・サイクルを 待ちます。CE-ATAのデータ・ペイロード転送(RW_MULTIPLE_BLOCK)コマンドで は、カード・デバイスの割り込みがイネーブルされる場合(ATAのコントロール・レ ジスタでnIENビットは0に設定されている場合)、ステート・マシンが応答を受信 した後、次のアクションを実行します。
■ Pビットをドライブするのではなく、CCSを待機して、デコードし、アイドル状態 に戻り、その後、Pビットをドライブします。
■ ホストがCCSDのコマンドを送信すると、応答した後に8クロック・サイクルが有 効期限が切れている場合、コマンド・ピンのCCSDパターンを送信します。
コマンド・パラメータのロード
コマンドまたは応答は、次のような状況でコマンド・パスにロードされます。
■ BIUからの新しいコマンド—BIUがCIUに新しいコマンドを送信すると、cmd レジス タでのstart_cmdビットは1に設定されます。
■ 内部生成send_auto_stop—データ・パスが終了すると、SD/SDIO STOPコマンド要 求がロードされます。
■ 相対カード・アドレス(RCA)0x000との割り込み要求(IRQ)—コマンド・パス は、MMCからIRQ応答を待っている場合、そしてBIUによって「send irq
response」 という要求がシグナルされる場合、ctrlレジスタでのIRQ要求ビッ
ト(send_irq_response)は 1に設定されています。
コマンド・パスでBIUからの新しいコマンドをロードすることは、次のcmdレジス タ・ビットの設定に依存します:
■ update_clock_registers_only—このビットはcmdレジスタで1に設定されている 場合、コマンド・パスはclkenaは、clkdiv、およびclksrcレジスタのみ更新し ます。このビットが0に設定されている場合、コマンド・パスは、cmd、cmdarg、
およびtmoutにレジスタをロードします。その後、カードに送信される新しいコ
マンドを処理します。
■ wait_prvdata_complete—このビットが1に設定されている場合、コマンド・パス は、次のいずれかの条件の下で、新しいコマンドをロードします。
■ すぐにデータ・パスが空いている場合(つまり、進行中のデータ転送がない 場合)、またはオープン・エンドのデータ転送が進行中の場合((bytcnt= 0)。
■ 現在のデータ転送が完了した後に、事前定義されたデータ転送が進行中の場 合。
コマンドの送信および対応の受信
新しいコマンドがコマンド・パス(cmd レジスタのupdate_clock_registers_only ビットが0に設定されている)にロードされた後、コマンド・パスのステート・マ シンはカード・バス上のコマンドを送出します。図 11–6は、コマンド・パスのス テート・マシンを示しています。
コマンド・パスのステート・マシンは、cmdレジスタ・ビット値に応じて、次の機能 を実行します。
1. send_initialization—80クロック・サイクルの初期化シーケンスは、コマンド を送信する前に送信されます。
2. response_expected—応答は、コマンドのために期待されています。コマンドが 送信された後、コマンド・パスのステート・マシンは、48ビットまたは136ビッ トの応答を受信するとBIUに送信します。カード応答のスタート・ビットがク ロック・サイクル数(tmout レジスタとして設定される)内に受信されない場合、
BIUをシグナルするためにrtoビットとcommand done(CD)ビットがrintsts レジスタで1に設定されます。response-expectedビットが0に設定されている場 合、コマンド・パスは、コマンドを送信し、BIUにresponse doneをシグナルしま す。これにより、cmdビットは rintsts レジスタで1に設定されるようになりま 図 11‒6. コマンド・パースのステート・マシン
Command Idle
wait_tncc Transmit
Command
Receive Response
Send IRQ Response Request
Response Done/
Response Timeout tNCC Done
response_expected = 0 load_new_cmd
response_expected = 1
3. response_length—このビットが1に設定されている場合、136ビット長の応答 が受信され、それが0に設定されている場合、48ビットの短い応答が受信されま す。
4. check_response_crc—このビットが1に設定されている場合、コマンド・パス は、内部生成されたCRC-7と受信CRC-7を比較しています。この2つが一致しな い場合、応答のCRCエラーは、rintstsレジスタでのrcrcビットは1に設定さ れているBIUに通知されます。
BIU に応答を送信
response_expectedビットがCMDレジスタで1に設定されている場合、受信した応答 がBIUに送信されます。 応答・レジス0(resp0)は短い応答のために更新され、応 答・レジス3(resp3)、応答・レジスタ2(resp2)、応答・レジス1(resp1)、およ
びresp0レジスタは、長い応答で更新されます(cmdビットがrintstsレジスタが1
に設定された後)。応答がCIUによって送信されるAUTO_STOPコマンドのためのも のである場合、応答はresp1 に書き込まれます(auto command done bitのacdが rintstsレジスタに設定された後)。
正しいカードの応答は、表 11–9に記載されています。コマンド・パスはカード・応 答の内容を検証します。
コマンド索引は、136ビット応答をチェックされていないか、またはcmdレジスタの
ccheck_response_crc ビットが0に設定されている場合にチェックされていません。
136ビット応答や予約のCRC 48ビット応答では、コマンド・インデックスが予約さ れています(つまり0b111111)。
f 応答値について詳しくは、11–87ページの「参考資料」を参照してください。
CMD ライン上で P ビットのドライブ
応答が予想されていない場合、コマンド・パスは、2つのコマンドのCMDライン上 に1に1サイクル・プルアップ・ビット(Pビット)をドライブします。応答が予 想される場合、Pビットは、応答が受信された後、そしてコマンドの開始前にドラ イブされます。 CCSを期待するコマンドについては、CE-ATAカード・デバイスにアク セスするときに、Pビットは、CE-ATAカード(ATAのコントロール・レジスタでの
nIEN ビットは1に設定されている)での割り込みがディセーブルされるときにのみ、
応答した後にドライブされます。つまり、CCS expectedビット(ccs_expected)は
cmd レジスタが0に設定されています。コマンドがCCSを想定している場合、Pビット
は、CCSを受信した後にのみドライブされます。
表 11‒9. カード・応答のフィールド
フィールド 内容
レスポンス送信ビット 0
コマンド・インデックス 送信したコマンドのコマンド・インデック ス
エンド・ビット 1
CCS のポーリング
CE-ATAカード・デバイスは、通常のATAコマンド補完またはATAコマンド終端のホ
スト・コントローラに通知するCCSを生成します。カードからの応答を受信した後 に、コマンド・パスのステート・マシンは、cmdレジスタ・に応じて図 11–7に示す 機能を実行します。
以下は、図 11–7での細部について説明します。
1. Response end bit state— ステート・マシンはカード・デバイスからの応答の最後の ビットを受信します。 cmdレジスタのccs_expectedビットが1に設定されている 場合、ステート・マシンはwait CCSのステートになります。
2. Wait CCS—ステート・マシンは、CE-ATAカード・デバイスからのCCSを待ちま す。 CCSのを待っている間、以下のイベントが発生する可能性があります。
a. ソフトウェアは、CCSを待つことと、コマンド・ラインでCCSDパターンを送 信しないことを示す ctrl レジスタでのsend CCSDビット(send_ccsd)を設 定します。
b. CMDラインのCCSを受信します。
3. Send CCSD command—CMDライン上CCSDパターン(0b00001)を送信します。
ホスト・プロセッサへの CCS 検出および割り込み
cmdレジスタのccs_expected ビットが1に設定された場合、CE-ATAカード・デバイス からのCCSがrintsts レジスタでのdata transfer overビット(dto)を設定すること によって示されます。この割り込みがマスクされていない場合、コントローラは、
DTOの割り込みを生成します。
RW_MULTIPLE_BLOCKコマンドについては、CE-ATAカード・デバイス割り込みがディ
セーブルされる場合(ATAのコントロール・レジスタのnIENビットが1に設定され ている) 、cmdレジスタでccs_expected ビットが0に設定されると、カードからの CCSが存在しません。データ転送が完了すると(すなわち、要求されたバイト数が 転送されると)、rintstsレジスタのdto ビットが1に設定されています。
図 11‒7. CE-ATA コマンド・パスのステート・マシン
Response End Bit
wait_tncc
Transmit CMD12 ccs_expected = 1
cmd_in = 0
okay_to_send_ccsd
counter_zero
ccs_expected = 0
send_auto_stop_ccsd wait_CCS
send_CCSD
Command Idle
CCS タイムアウト
コマンドは、カード・デバイス(ccs_expectedビットはcmd レジスタが1に設定さ れている)からのCCSをウェイトする場合、コマンド・ステート・マシンは、CCS をウェイトして、ウェイトCCS状態に留まります。 CE-ATAカードがCCSを送信する ために失敗した場合、ホスト・ソフトウェアは、コマンドとデータ・パスを解放す るためにタイムアウト・メカニズムを実装する必要があります。コントローラは、
ハードウェア・タイマを実装するのではなく、ソフトウェア・タイマを維持するこ とはホスト・ソフトウェアの責任です。
CCSのタイムアウトが発生した場合、ホストは、ctrlレジスタのsend_ccsdビット を設定することによって、CCSDのコマンドを発行する必要があります。コントロー ラー・コマンド・パスのステート・マシンはCE-ATAカード・デバイスにCCSDのコ マンドを送信して、アイドル状態を完了します。 また、CCSDのコマンドを送信した 後、ホストは未処理のATAコマンドの中止にCE-ATAカードにSD/SDIO
STOP_TRANSMISSIONコマンドを送信する必要があります。
CCSD のコマンドの送信
ctrlレジスタの send_ccsdビットが1に設定されている場合、コントローラは、CMD ライン上のCCSDパターンを送信します。 CCSを待っている間、またはCCSのタイム アウトが発生した後、にホストはCCSDのコマンドを送信することができます。
CCSDパターンを送信した後、コントローラはrintstsレジスタのcmd ビットを設定 し、Command Doneの割り込みがマスクされていない場合、ホストに割り込みを発生 します。
1 CIUブロック内で、 ctrlレジスタのビットsend_ccsdがCCSがサンプリングされている
のと同じクロック・サイクルで1に設定されている場合、CIUブロックはCMDライ ン上のCCSDパターンを送信しません。このケースでは、rintstsレジスタのdto お よび cmdビットが1に設定されます。
1 非同期境界のため、CCSがすでに発生した可能性があり、send_ccsdビットが1に設定 されます。このケースでは、CCSDのコマンドは、CE-ATAカード・デバイスに送信さ れなくなり、send_ccsdビットは0に設定されていません。次のコマンドが発行され る前に、ホストは0にsend_ccsdビットをリセットする必要があります。
ctrlレジスタの送信自動停止CCSD(send_auto_stop_ccsd)ビットが1に設定されて いる場合、コントローラは、CCSDのパターンを送信した後、内部で生成された STOP_TRANSMISSIONコマンド(CMD12)を送信します。コントローラはrintstsレ ジスタでのacdビットを設定します。
I/O 伝送遅延 (NACIO タイムアウト )
ホスト・ソフトウェアは、CE-ATAカード・デバイスからの読み出し中にI/O伝送遅 延(NACIOサイクル)のタイムアウトを処理するためのタイムアウト・メカニズムを 維持します。コントローラは、任意のタイムアウト・メカニズムを維持すること、
またはデータ・トークンのスタート・ビットを待っている間NACIOサイクルの経過 を示すことをしません。I/O伝送遅延がRW_REGとRW_BLKコマンドを使用して転送 を読み出すために適当ですが、このドキュメントで使用されているRW_REGと RW_BLKコマンドは、CE-ATA仕様で定義されるRW_MULTIPLE_REGISTERと RW_MULTIPLE_BLOCK MMCコマンドを参照しています。
1 NACIOタイムアウトの後に、アプリケーションはCCSDとSTOPコマンド、またはSTOP コマンドを送信することによって、コマンドを中止する必要があります。rintstsレ ジスタでのデータ・リード・タイムアウトのboot data start ビット(bds)とdtoビッ トが1に設定されている場合、Data Read Timeout(DRTO)割り込みは、
STOP_TRANSMISSIONコマンドがコントローラの転送されている間に1に設定される
ことがあります。
データ・パス
データ・パス・ブロックは、ライト・データ転送中にカード・バス上でデータFIFO バッファを読み込み、データを送信します。または、リード・データの転送中に FIFOバッファにデータを受信して、書き込みます。データ・パスは、予期される データ、リード/ライトのデータ転送、ストリーム/ブロック転送、ブロック・サイ ズ、バイト数、カードタイプ、タイムアウト・レジスタなどの新しいデータ・パラ メータをデータ転送コマンドが進行中ではないときにロードします。cmdレジスタの data transfer expectedビット(data_expected)が1に設定されている場合、新しいコ マンドは、データ転送コマンドであり、データ・パスは、次のいずれかのアクショ ンを開始します。
■ リード/ライト・ビットの転送データ = 1
■ リード/ライト・ビットの受信データ = 0 データ送信
図 11–8に示すように、データ送信ステート・マシンは、データ・ライト・コマンド を受信したとき応答した後にデータ伝送の2つのクロック・サイクルを開始します。
コマンド・パスが応答エラーまたは応答のCRCエラーを検出しても発生します。応 答が原因で応答タイムアウトのカードから受信されていない場合、データは送信さ れません。 cmdレジスタでのtransfer modeビット(transfer_mode)の値に応じて、
データ送信ステート・マシンはストリームまたはブロック内のカード・データ・バ ス上にデータを入れます。
図 11‒8. データ送信ステート・マシン
Data Tx Idle load_new_cmd,
data_expected, Write Data & Block Transfer
Stop Data Command Byte Count Remaining != 0 Data Not Busy
Block Done
Stop Data Command
load_new_command, data_expected, Write Data & Stream Transfer
Byte Count Remaining = 0 or Suspend/Stop Data Command
Tx Data Stream Tx
Data Block
Rx CRC Status