• 検索結果がありません。

ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル (TRM)、第11章:SD/MMC コントローラ

N/A
N/A
Protected

Academic year: 2021

シェア "ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル (TRM)、第11章:SD/MMC コントローラ"

Copied!
88
0
0

読み込み中.... (全文を見る)

全文

(1)

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 SpecificationVersion 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

(2)

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 vv v — — v — RSMMC 20 10 vv v vv v

(3)

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 Bus

(4)

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

(5)

図 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

(6)

■ 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 レジスタ・ビットが 1 である、

(7)

以下のビットは、デバッグの目的のために、トップ・レベルのポートとして使用で きます。 ■ 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 より大きくならないように空にする必要が あります。それ以外の場合、割り込みがトリガされるようになります。

割り込みの残りの部分は、シングル・クロック・パルス幅のソースによってトリガ されます。

(8)

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 コントローラは、ディスクリプタ構造体のこれらのタイプを使用していま す。

(9)

■ デュアル・バッファ構造 — 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

(10)

表 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 OW N CES — ER CH FS LD DIC — DES1 4 — BS2 BS1 DES2 8 BAP1 DES3 12 BAP2 または次のディスクリプタ・アドレス

(11)

内部 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 —

(12)

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] を無視し ます。

(13)

現在のディスクリプタがデュアル・バッファ構造のチェイン・ディスクリプタまた は第二バッファ・アドレスで最後のディスクリプタでない場合、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 が無視されます。

(14)

内部 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 エラー ■ データ受信タイムアウト ■ 応答エラー

(15)

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 バッファのオーバー・フ ローまたはアンダーフローが存在する場合発生することがあります。例えば、次の ようなシナリオを考えてみましょう。 送信の場合:

(16)

■ 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 以上

(17)

致命バスエラーのシナリオ

致命的なバスエラーは、マスタ・インタフェースを介してエラー応答が原因で発生 します。このエラーはシステム・エラーです。したがって、ソフトウェア・ドライ バは、コントローラ上のすべてのそれ以上の設定を行ってはなりません。このよう なシナリオからのたった 1 つのリカバリー・メカニズムは、次のいずれかのタスク を実行することです。 ■ リセット・マネージャを介してコントローラにリセットを発行します。 ■ CTRL レジスタのコントローラ・リセット・ビット(controller_reset)に書き 込むことによって、プログラム・コントローラのリセットを発行します。

CIU

CIU インタフェースは、BIU と SD/MMC カードまたはデバイスとインタフェースして います。ホスト・プロセッサは SD/MMC コントローラの BIU のコントロール・レジ スタにコマンド・パラメータを書き込み、これらのパラメータは、CIU に渡されま す。コントロール・レジスタの値に応じて、CIU は SD/MMC プロトコルに従ってカー ド・バスで SD/ MMC コマンドおよびデータ・トラフィックを生成します。コント ロール・レジスタの値は、コマンドとデータ・トラフィックが CE-ATA カードに向け られているかどうかを決定し、SD/MMC コントローラがコマンドとデータ・パスを 制御します。 以下のリストは、CIU の動作の制約について説明します。

(18)

■ コマンドが発行された後、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 は、主に次のような機能ブロックから構成されています。 ■ コマンド・パス ■ データ・パス ■ クロック・コントロール

(19)

コマンド・パス

コマンド・パスは次の機能を実行します。 ■ カード・コマンドのパラメータをロードする ■ カード・バスにコマンドを送信する ■ カード・バスからの応答を受信する ■ 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 レジス タ・ビットの設定に依存します:

(20)

■ 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

(21)

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

(22)

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

(23)

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 コマンドを参照しています。

(24)

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

(25)

ストリーム・データ送信 cmd レジスタの transfer_mode ビットが1 に設定されている場合、転送はストリー ム・ライト・データ転送となります。データ・パスは BIU からの FIFO バッファ からデータを読み込み、カード・データ・バスへのストリームに送信します。 FIFO バッファが空になった場合、データが FIFO バッファに使用可能になると、 カード・クロックを停止して再始動します。 bytcnt レジスタが0 にリセットされると、転送はオープン・エンド・ストリー ム・ライトのデータ転送となります。このデータ転送時には、データ・パスは連 続してホスト・ソフトウェアが SD/SDIO STOP コマンドを発行するまでストリー ム内のデータを送信します。 STOP コマンドのエンド・ビットおよびデータのエ ンド・ビットは 2 つのクロック・サイクルに一致した場合、ストリーム・データ 転送は終了します。 bytcnt レジスタがゼロ以外の値が記述されている場合、または cmd レジスタの send_auto_stop ビットが1 に設定されている場合、STOP コマンドの最後のビット ストリーム・ライト転送の最後のバイトが一致した後に発生したときに、STOP コマンドは内部で生成され、コマンド・パスにロードされます。また、データ・ バイトがすべてカード・バスに転送される前に、ホストが STOP コマンドを出せ ば、このデータ転送はさらに終了することができます。また、すべてのデータ・ バイトがカード・バスに転送される前にホストは STOP コマンドを発生すると、 このデータ転送が終了させることができます。 シングル・ブロック・データ cmd レジスタの transfer_mode ビットが 0 に設定されており、bytcnt レジスタの値 は block_size レジスタ値に等しい場合、シングル・ブロックのライト・データ 転送が発生します。データ・送信ステート・マシンは、内部で生成された 16 項 CRC (CRC-16) を含むバイト数がブロック・サイズに等しいシングル・ブロックで データを送信します。 ctype レジスタが1 ビット、4 ビット、または 8 ビット・データ転送用に設定され ている場合、データはそれぞれ 1、4、または 8 のデータ・ラインに送信されま す。また、CRC-16 はそれぞれ 1、4、または 8 のデータ・ラインに別々に生成 し、送信されます。 シングル・データ・ブロックが送信された後、データ送信ステート・マシンは カードから CRC ステータスを受信して、BIU へのデータ転送を通知します。これ は rintsts レジスタの dto のビットが 1 に設定された場合に発生します。 負の CRC ステータスがカードから受信した場合、データ・パスがレジスタ rintsts で dcrc ビットを設定することにより、BIU に対するデータの CRC エラーを 通知します。 また、CRC ステータスのスタート・ビットは、データ・ブロックの終了後に 2 ク ロック・サイクルで受信されない場合、CRC ステータス・スタート・ビット・エ ラー(SBE)は、rintsts レジスタの SBE ビットを設定することにより、BIU に 通知されます。 複数のブロック・データ cmd レジスタの transfer_mode ビットが0 に設定されて、bytcnt レジスタの値が block_size のレジスタの値に等しくない場合、複数のブロックのライト・デー タ転送が発生します。データ送信ステート・マシンは、内部で生成された CRC-16 を含むブロック内のバイト数がブロック・サイズと等しいブロック内のデー タを送信します。

(26)

ctype レジスタが1 ビット、4 ビット、または 8 ビット・データ転送用に設定され ている場合、データはそれぞれ 1、4、または 8 のデータ・ラインに送信されま す。また、CRC-16 はそれぞれ 1、4、または 8 のデータ・ラインに別々に生成 し、送信されます。 1 データ・ブロックが送信された後、データ送信ステート・マシンがカードから CRC ステータスを受信ししす。残りのバイト数が 0 になった場合、BIU へのデー タ・パスは、データ転送が完了したことを通知します。これは、rintsts レジス タの dto のビットが 1 に設定された場合に発生します。 残りのデータ・バイトがゼロより大きい場合、データ・パス・ステート・マシン は、別のデータ・ブロックの送信を開始します。 負の CRC ステータスがカードから受信した場合、データ・パスは rintsts レジ スタに dcrc ビットを設定することにより、BIU に対するデータ CRC エラーを通 知し、すべてのバイトが送信されるまで、データ送信を継続します。 CRC ステータ・ススタート・ビットがデータ・ブロックの終了後に 2 クロック・ サイクルで受信されない場合、CRC ステータス SBE は rintsts レジスタに ebe ビットを設定し、データ転送が終了したことにより、BIU に通知されます。 send_auto_stopビットはcmdレジスタが1に設定されている場合、 SD/SDIO STOPコ マンドは、内部的に余分なバイトがカードに転送されていない最後のデータ・ブ ロックの転送中に生成されます。 STOP コマンドのエンド・ビットは最後のデー タ・ブロックの CRC ステータスのエンド・ビットと一致しない場合があります。 カードのデータ幅のそれぞれ 1 ビット、4 ビット、または 8 ビットのためにブ ロック・サイズが 4、16、32 より小さい場合、データはすべてのデータ送信ス テート・マシンは、すべてのデータが転送されるときに終了します。その場合に は、内部で生成される STOP コマンドは、コマンド・パスにロードされます。 bytcnt がゼロの場合(ブロック・サイズはゼロより大きくなければならない) 転送は、オープン・エンドのブロック転送です。データ転送のこのタイプのデー タ送信ステート・マシンは、ホスト・ソフトウェアが SD/SDIO STOP または STOP_TRANSMISSION(CMD12)コマンドを発行するまで、ブロック・ライト・ データ転送を継続します。 データ・レシーバ 図 11–9に示されるように、データ受信ステート・マシンは、コマンド・パスが応答 エラーや応答 CRC エラーを検出した場合でも、データ・リード・コマンドの最後の ビットの後にデータの 2 クロック・サイクルを受信します。応答タイムアウトが発 生するため、応答がカードから受信されていない場合、BIU は、データ転送が完了し たことを信号を受信しません。コントローラによって送信されたコマンドがカード に対する不正なオペレーションのとき、これは発生します。これによって、カード はリード・データ転送を開始することを防ぎます。

参照

関連したドキュメント

⇒ 12月20日(P) 第6回CCS長期ロードマップ検討会

先に述べたように、このような実体の概念の 捉え方、および物体の持つ第一次性質、第二次

87.06 原動機付きシャシ(第 87.01 項から第 87.05 項までの自動車用のものに限る。).. この項には、87.01 項から

第 98 条の6及び第 98 条の7、第 114 条の 65 から第 114 条の 67 まで又は第 137 条の 63

本文書の目的は、 Allbirds の製品におけるカーボンフットプリントの計算方法、前提条件、デー タソース、および今後の改善点の概要を提供し、より詳細な情報を共有することです。

2 前項の規定は、地方自治法(昭和 22 年法律第 67 号)第 252 条の 19 第1項の指定都 市及び同法第 252 条の

延床面積 1,000 ㎡以上 2,000 ㎡未満の共同住宅、寄宿舎およびこれらに

・ 改正後薬機法第9条の2第1項各号、第 18 条の2第1項各号及び第3項 各号、第 23 条の2の 15 の2第1項各号及び第3項各号、第 23 条の