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

Size: px
Start display at page:

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

Transcription

1 November 2012 cv_ cv_ ハード プロセッサ システム (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 本資料では ページの 参考資料 に記載されているように SD/SDIO コマンドを指します それは Physical Layer Simplified Specification Version 3.01 および SDIO Simplified Specification Version 2.00 に詳しく記載されています HPS SD/MMC コントローラは以下の機能を提供します モバイル ストレージから HPS ブーツをサポートする 以下のスタンダードまたはカード タイプをサポートする esd を含む SD バージョン 3.0 エンベデッド SDIO (esdio) を含む SDIO バージョン 3.0 CE-ATA バージョン 1.1 emmc を含む MMC バージョン ビット 4 ビット および 8 ビット ( 11 2 ページの表 11 2 に示すとおりのいくつかのパッケージ ) 統合ディスクプタ ベースのダイレクト メモリ アクセス (DMA) 内部 4KB 受送信の FIFO バッファ 表 11 1 には 様々な SD カードのデバイス タイプおよびサポートされている電圧 バス モード およびスピードを示します 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 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. ISO 9001:2008 Registered Subscribe

2 SD/MMC コントローラは直接 esdio カード デバイスの電圧スイッチング カードの割り込み またはバック エンドのパワー コントロールをサポートしていません ただし 汎用 I/O(GPIO) に これらの信号を接続することができます 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 (1) SDR25 速度モードでは 1.8 V の信号を必要とします カードは UHS-I モード ( 例ば SDR50 SDR104 DDR50) をサポートし ていても それはまだ低速 ( 例えば SDR12 SDR25) で通信することに注意してください (2) SD の 1.8 V シグナリングをサポートするために電圧スイッチ出力をコントロールします (3) esdio 用のオプション 8 ビットのバス モードは すべての FPGA パッケージでサポートされていません 1 彼らはカード インタフェース機能に影響を与えないため カードのフォーム ファクタ ( 例えば ミニやマイクロなど ) は表 11 1 に列挙されていません 表 11 2 は さまざまな MMC カードのデバイス タイプおよびサポートされている電圧 バスモード バス速度を示しています SD/MMC コントローラが外部カード インタフェースの一部として リセット出力が含まれていません フラッシュ カードのデバイスをリセットするには 汎用出力ピンを使用することを検討してください MMC v v v v RSMMC v v v v v v MMCPlus 50 (3) 25 v v v v (2) v v MMCMobile v v v v v

3 L4 Bus L3 Interconnect emmc v v v v v v (1) SPI モードは MMC4.41 仕様では廃止されています (2) 任意の 8 ビットのバス モードは すべての FPGA パッケージでサポートされていません (3) 最大クロック レートの 52 MHz の速度の代わりに 最大クロック レートの 50 MHz(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 に統合する方法を示しています SD/MMC Controller Bus Interface Unit Card Interface Unit Master Interface DMA Controller Data Path Control FIFO Buffer Control Synchronizer FIFO Buffer Control Command Path Control I/O Pins Slave Interface Register Block Clock Control Storage FIFO Buffer MPU Subsystem Interrupt Control

4 この項では SD/MMC コントローラのコンポーネント またコントローラを動作する方法を説明します - SD/MMC/CE-ATA プロトコルはスタート ビットによって開始され ストップ ビットで終端され コマンドとデータのビット ストリームに基づいています さらに SD/MMC コントローラは基準クロックを提供し トランザクションを開始することができるたった一つのマスタ インタフェースです コマンド オペレーションを開始する CMD ピンにシリアルに送信されるトークンです 応答 特定のコマンドに応答して CMD のピンにシリアルに送信されるカードからのトークンです データ データの移動コマンドにデータ ピンを使用してシリアルに送信されます 図 11 2 には 複数ブロックのリード動作の一例を示します クロックは代表だけであり クロック サイクルの正確な数が表示されません From Host to Card From Card to Host Data from Card to Host Stop Command Stops Data Transfer sdmmc_cclk_out sdmmc_cmd Command Response Command Response sdmmc_data Data Block CRC Data Block CRC Data Block CRC Block Read Operation Data Stop Operation Multiple Block Read Operation

5 図 11 3 は 複数ブロックのライト動作にホストによって送信されたコマンド トークンの例を示しています From Host to Card From Card to Host Data from Host to Card OK Response & Busy from Card Stop Command Stops Data Transfer sdmmc_cclk_out sdmmc_cmd Command Response Command Response sdmmc_data Data Block CRC Busy Data Block CRC Busy Block Write Operation Data Stop Operation Multiple Block Read Operation 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 によって受け入れられるまで 次のレジスタを書き換えることはできません

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 である ctrlint_enable レジスタのビットは 1 になります

7 以下のビットは デバッグの目的のために トップ レベルのポートとして使用できます intmask レジスタのすべてのビット rintsts レジスタのすべてのビット ctrl レジスタのビット int_enable ctrl レジスタの int_enabl ビットは電源投入時に 0 に設定されており intmask レジスタの各ビットは 0x に設定されています これにより すべての割り込みがマスクされます 以下の条件は 割り込みが発生する原因となります リード上のエンド ビット エラー ライト上には 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 SD/MMC コントローラは 送信および受信データを格納するための 4 KB のデータ FIFO バッファを持っています FIFO バッファ メモリは エラー訂正コード (ECCS) をサポートしています FIFO バッファの両方のインタフェースは シングルとダブル ビット エラー インジェクションをサポートしています イネーブルおよびエラー インジェクション ピンはシステム マネージャによってドライブされる入力です そして ステータス ピンは MPU サブシステムにドライブされる出力です SD/MMC コントローラは シングル ビット訂正可能なエラーが検出された ( また訂正された ) ときに出力をシステム マネージャに通知するとき また ダブル ビット ( 修正不可能 ) エラーが検出されたときに提供します システム マネージャは ECC エラーが検出されたときに GIC への割り込みを生成します f 詳しくは Cyclone V デバイス ハンドブック Volume 3 の System Manager の章を参照してください 内部 DMA コントローラは CSR とカードへ またはその逆にシステム メモリからデータを転送し 単一の送信または受信のエンジンを持っています コントローラは 効率的にソースから最小限のホスト プロセッサの介入宛先へデータを移動するために ディスクリプタのメカニズムを使用します このようなカードから送信および受信データ転送の完了のような状況で ホスト プロセッサに割り込むようにコントローラを設定することができます ( 他の正常またはエラー条件も同じく ) シングル データ構造を介して DMA コントローラとホスト ドライバと通信します 内部 DMA コントローラは システム メモリにカードからデータ バッファに受信データを転送し 転送コントローラの FIFO バッファにメモリ内のデータ バッファからデータを送信します システム メモリに常駐するディスクリプタはこれらのバッファにポインタとして機能します データ バッファは システム メモリの物理メモリ スペースに常駐し 完全または部分的なデータで構成されます バッファ状態はディスクリプタに保持されます データ チェインは 複数のデータ バッファにまたがるデータを指します ただし 単一のディスクリプタには 複数のデータ バッファにまたがることはできません 単一の記述は 受信と送信の両方に使用されます リストのベース アドレスは ディスクリプタ リスト ベースのアドレス レジスタ (dbaddr) に書き込まれています ディスクリプタ リストは前方にリンクされています 最後の記述は 環構造を作成するための最初のエントリにポイントすることができます ディスクリプタ リストは ホストの物理メモリ アドレス スペースに常駐します 各ディスクリプタは 最大 2 つのデータ バッファを指すことができます 内部 DMA コントローラは ディスクリプタ構造体のこれらのタイプを使用しています

9 デュアル バッファ構造 2 ディスクリプタ間の距離は バス モード レジスタ (bmod) のディスクリプタ スキップ レングス フィールド (dsl) に書き込まれたスキップの長さの値によって決定されます チェイン構造 各ディスクリプタは ユニークなバッファへ またはリンクされたリスト内の次のディスクリプタを指しています 図 11 4 および図 11 5 にはそれぞれ 内部 DMA コントローラのデュアル バッファ ディスクリプタの構造やチェイン ディスクリプタの構造を示しています Descriptor A Data Buffer 1 Data Buffer 2 The Distance Between 2 Descriptors Is Determined by the DSL Value Programmed in the BMOD Register Descriptor B Data Buffer 1 Data Buffer 2 Descriptor C Data Buffer 1 Data Buffer 2 Descriptor A Data Buffer Descriptor B Data Buffer Descriptor C Data Buffer

10 表 11 3 は ディスクリプタの内部フォーマットを示しています ディスクリプタ アドレスは 32 ビット バスに揃える必要があります 各ディスクリプタは コントロールおよびステータス情報の 16 バイトが含まれています ディスクリプタの各ビットについて詳しくは ページの表 11 4~ ページの表 11 7 に参照してください DES0 0 OWN CES ER CH FS LD DES1 4 BS2 BS1 DES2 8 BAP1 DES3 12 BAP2 または次のディスクリプタ アドレス DIC

11 内部 DMA コントローラ ディスクリプタ内の DES0 フィールドは コントロールおよびステータス情報が含まれています 表 11 4 は このディスクリプタのビットを示しています 31 OWN 1 に設定すると このビットはディスクリプタが内部 DMA コントローラによって所有されていることを示しています このビットが 0 に設定されている場合 ディスクリプタがホストによって所有されていることを示しています データ転送を完了したとき 内部 DMA コントローラはこのビットを 0 にリセットします CES のビットは トランザクション エラーが発生したかどうかを示します CES ビットは rintsts レジスタの次のエラービット数の論理和です End-bit error (ebe) Response timeout (rto) 30 Card Error Summary (CES) 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) 4 Second Address Chained (CH) 3 First Descriptor (FS) 2 Last Descriptor (LD) 1 Disable Interrupt on Completion (DIC) 0 Reserved 1 に設定すると このビットは ディスクリプタのリストが最終的なディスクリプタに達したことを示しています 内部 DMA コントローラは ディスクリプタ リングを作成して リストのベース アドレスにリターンします ER はデュアル バッファ ディスクリプタの構造にのみ使用可能です 1 に設定すると このビットはディスクリプタ内の 2 番目のアドレス次のディスクリプタのアドレスではなく 第二のバッファ アドレスであることを示します このビットを 1 に設定すると BS2 (DES1[25:13]) は全てゼロでなければなりません 1 に設定すると このビットは このディスクリプタがデータの最初のバッファが含まれることを示します 最初のバッファのサイズが 0 の場合 次のディスクリプタは データの先頭が含まれています 1 に設定すると このビットはこのディスクリプタでポイントするバッファがデータの最後のバッファであることを示しています 1 に設定すると このビットはこのディスクリプタでポイントするバッファで最後のデータのための内部 DMA コントローラ ステータス レジスタ (idsts) の TI/RI ビットの設定を防止します

12 DES1 ディスクリプタ フィールドは バッファ サイズが格納されます 表 11 5 は このディスクリプタのビットを示しています 31:26 Reserved 25:13 Buffer 2 Size (BS2) 12:0 Buffer 1 Size (BS1) これらのビットは 第 2 データ バッファのバイト サイズを示します バッファ サイズは 4 の倍数でなければなりません バッファ サイズが 4 の倍数でない場合 結果の動作は未定義です DES0[4] が 1 に設定されている場合 このフィールドには 有効ではありません 4 バイトの倍数でなければならないデータ バッファのバイト サイズを示しています バッファ サイズが 4 の倍数でない場合 結果の動作は未定義です このフィールドが 0 の場合 DMA はバッファを無視し チェイン構造のために次のディスクリプタに またはデュアル バッファ構造のための次のバッファに移動します プログラムするディスクリプタとバッファが 1 つしかない場合 バッファ 2 の代わりに 1 バッファ 1 を使用する必要があります DES2 ディスクリプ タフィールドには データ バッファへのアドレス ポインタが含まれています 表 11 6 に このディスクリプタのビットを示します 31:0 Buffer Address Pointer 1 (BAP1) これらのビットは 最初のデータ バッファの物理アドレスを示しています 内部 DMA コントローラは唯一の 32 ビット アラインメントされたアクセスを実行するため DES2 [1:0] を無視します

13 現在のディスクリプタがデュアル バッファ構造のチェイン ディスクリプタまたは第二バッファ アドレスで最後のディスクリプタでない場合 DES3 ディスクリプタ フィールドでは 次のディスクリプタへのアドレス ポインタが含まれています 表 11 7 は このディスクリプタのビットを示しています 31:0 Buffer Address Pointer 2 (BAP2) or Next Descriptor Address 内部 DMA コントローラは bmod レジスタの固定バースト ビット (fb) を使用して構成されている場合 マスタ インタフェース上で固定長のバースト転送を実行しようとします 最大バースト長が示され bmod レジスタのプログラマブルなバースト長 (pbl) フィールドによって制限されます ディスクリプタが取得されるとき マスタ インタフェースは 常にインタコネクトに 4 つのバースト サイズを表示します 内部 DMA コントローラは 設定されたバーストを収容するのに 転送の終了での十分なスペースがある場合 または転送の終了でのバイト数でがコンフィギュレーションされたバースト長より少ない場合にデータ転送を開始します DMA マスタ インタフェースが固定長のバースト用に設定されている場合 INCR4/8/16 および SINGLE トランザクションの最も効率的な組み合わせを使用してデータを転送します DMA のマスタ インタフェースが固定長バースト用に構成されていない場合 INCR( 不定長 ) と SINGLE トランザクションを使用してデータを転送します システム メモリ内の送信および受信データ バッファは 32 ビット境界に揃える必要があります これらのビットは デュアル バッファ構造が使用されている第 2 のバッファの物理アドレスを示しています Second Address Chained (DES0[4]) ビットが 1 に設定されている場合 このアドレスでは次のディスクリプタが存在している物理メモリへのポインタが含まれます これが最後のディスクリプタでない場合 次のディスクリプタ アドレス ポインタは 32 ビットにアラインされる必要があります ビット 1 および 0 が無視されます ドライバは 送信または受信するデータの量が知られています DES1 ディスクリプタ フィールドのバッファ サイズ フィールドで指定されたカードに送信するために 内部の DMA コントローラは FIFO バッファからの正確なバイト数を転送します ディスクリプタは最後に設定されていない場合 (DES0 フィールド LD ビットが 0 に設定する状態 ) 対応するバッファは 完全なものとみなされ バッファ内の有効なデータの量は正確にバッファ サイズ フィールドによって示されています ディスクリプタが最後としてマークされている場合 DES1 フィールドでのバッファ サイズによって示されるように バッファは十分 ( または不十分 ) の場合もあります ドライバが有効である場所の数を認識しています ドライバは残留の無効なバイトを無視するように期待されています

14 割り込みは 様々なイベントの結果として生成することができます 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) の動作を示しています 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 のデータ バッファの場合 ディスクリプタは再度フェッチされていません データ転送が進行中である間に ホストがカードに 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 バッファのオーバー フローまたはアンダーフローが存在する場合発生することがあります 例えば 次のようなシナリオを考えてみましょう 送信の場合 :

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 バッファの透かし値を示します 1 1 以上 4 4 以上 8 8 以上 以上 以上 以上 以上 以上

17 致命的なバスエラーは マスタ インタフェースを介してエラー応答が原因で発生します このエラーはシステム エラーです したがって ソフトウェア ドライバは コントローラ上のすべてのそれ以上の設定を行ってはなりません このようなシナリオからのたった 1 つのリカバリー メカニズムは 次のいずれかのタスクを実行することです リセット マネージャを介してコントローラにリセットを発行します CTRL レジスタのコントローラ リセット ビット (controller_reset) に書き込むことによって プログラム コントローラのリセットを発行します 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 は コマンド パスのステート マシンを示しています load_new_cmd Command Idle t NCC Done Transmit Command response_expected = 0 wait_tncc response_expected = 1 Receive Response Send IRQ Response Request Response Done/ Response Timeout コマンド パスのステート マシンは 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 に設定されるようになります

21 3. response_length このビットが 1 に設定されている場合 136 ビット長の応答が受信され それが 0 に設定されている場合 48 ビットの短い応答が受信されます 4. check_response_crc このビットが 1 に設定されている場合 コマンド パスは 内部生成された CRC-7 と受信 CRC-7 を比較しています この 2 つが一致しない場合 応答の CRC エラーは rintsts レジスタでの rcrc ビットは 1 に設定されている 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 に記載されています コマンド パスはカード 応答の内容を検証します レスポンス送信ビット 0 コマンド インデックス 送信したコマンドのコマンド インデックス エンド ビット 1 コマンド索引は 136 ビット応答をチェックされていないか または cmd レジスタの ccheck_response_crc ビットが 0 に設定されている場合にチェックされていません 136 ビット応答や予約の CRC 48 ビット応答では コマンド インデックスが予約されています ( つまり 0b111111) f 応答値について詳しくは ページの 参考資料 を参照してください 応答が予想されていない場合 コマンド パスは 2 つのコマンドの CMD ライン上に 1 に 1 サイクル プルアップ ビット (P ビット ) をドライブします 応答が予想される場合 P ビットは 応答が受信された後 そしてコマンドの開始前にドライブされます CCS を期待するコマンドについては CE-ATA カード デバイスにアクセスするときに P ビットは CE-ATA カード (ATA のコントロール レジスタでの nien ビットは 1 に設定されている ) での割り込みがディセーブルされるときにのみ 応答した後にドライブされます つまり CCS expected ビット (ccs_expected) は cmd レジスタが 0 に設定されています コマンドが CCS を想定している場合 P ビットは CCS を受信した後にのみドライブされます

22 CE-ATA カード デバイスは 通常の ATA コマンド補完または ATA コマンド終端のホスト コントローラに通知する CCS を生成します カードからの応答を受信した後に コマンド パスのステート マシンは cmd レジスタ に応じて図 11 7 に示す機能を実行します - ccs_expected = 1 Response End Bit Transmit CMD12 ccs_expected = 0 wait_ccs cmd_in = 0 wait_tncc Command Idle send_auto_stop_ccsd okay_to_send_ccsd send_ccsd counter_zero 以下は 図 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) を送信します 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 に設定されています

23 コマンドは カード デバイス (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 コマンドを送信する必要があります 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 ビットを設定します ホスト ソフトウェアは CE-ATA カード デバイスからの読み出し中に I/O 伝送遅延 (N ACIO サイクル ) のタイムアウトを処理するためのタイムアウト メカニズムを維持します コントローラは 任意のタイムアウト メカニズムを維持すること またはデータ トークンのスタート ビットを待っている間 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) の値に応じて データ送信ステート マシンはストリームまたはブロック内のカード データ バス上にデータを入れます load_new_cmd, data_expected, Write Data & Block Transfer Data Tx Idle Stop Data Command Tx Data Block Stop Data Command Byte Count Remaining!= 0 Data Not Busy load_new_command, data_expected, Write Data & Stream Transfer Byte Count Remaining = 0 or Suspend/Stop Data Command Tx Data Stream Block Done 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 ビットのためにブロック サイズが より小さい場合 データはすべてのデータ送信ステート マシンは すべてのデータが転送されるときに終了します その場合には 内部で生成される STOP コマンドは コマンド パスにロードされます bytcnt がゼロの場合 ( ブロック サイズはゼロより大きくなければならない ) 転送は オープン エンドのブロック転送です データ転送のこのタイプのデータ送信ステート マシンは ホスト ソフトウェアが SD/SDIO STOP または STOP_TRANSMISSION(CMD12) コマンドを発行するまで ブロック ライト データ転送を継続します 図 11 9 に示されるように データ受信ステート マシンは コマンド パスが応答エラーや応答 CRC エラーを検出した場合でも データ リード コマンドの最後のビットの後にデータの 2 クロック サイクルを受信します 応答タイムアウトが発生するため 応答がカードから受信されていない場合 BIU は データ転送が完了したことを信号を受信しません コントローラによって送信されたコマンドがカードに対する不正なオペレーションのとき これは発生します これによって カードはリード データ転送を開始することを防ぎます

27 データがデータ タイムアウトの前に受信されない場合 データ パスは BIU へのデータ タイムアウトおよび実行されたデータ転送のエンドを示します cmd レジスタの transfer_mode ビットの値に基づいて データ受信ステート マシンは ストリームまたはブロック ( 複数可 ) のカード データ バスからデータを取得します load_new_cmd, data_expected, Read Data & Block Transfer Data Rx Idle Stop Data Command Rx Data Block Stop Data Command Byte Count Remaining!= 0 load_new_command, data_expected, Read Data & Stream Transfer Byte Count Remaining = 0 or Stop Data Command Rx Data Stream Block Done Read Wait cmd レジスタの transfer_mode ビットが 1 に設定されている場合 ストリーム リード データ転送が発生します このとき データ パスは カードからデータを受信し FIFO バッファに書き込まれます FIFO バッファがフルになった場合 カード クロックを停止して FIFO バッファが完全ではない場合に再起動します bytcnt レジスタが 0 に設定されている場合 オープン エンドのストリーム リード データ転送が発生します このデータ転送時には データ パスはホスト ソフトウェアがを SD/SDIO STOP コマンド発行するまで連続してストリーム内のデータを受信します ストリーム データ転送は STOP コマンドの最後のビットの後の 2 クロック サイクルを終了します bytcnt レジスタはゼロでない値が含まれている場合 そして cmd レジスタでの send_auto_stop ビット 1 に設定される場合 STOP コマンドは 内部的に生成され コマンド パスにロードされます このとき STOP コマンドのエンド ビットがストリーム データ転送が受信される最後のバイトの後に発生します すべてのデータ バイトがカードから受信される前に ホストがコマンド SD/SDIO STOP または STOP_TRANSMISSION(CMD12) を生成する場合 このデータ転送が終了することができます ctype レジスタは 1 ビット 4 ビット または 8 ビット データ転送に設定されている場合 データはそれぞれ 1 4 または 8 のデータ ラインから受信され CRC-16 は別々に生成し それぞれ 1 4 または 8 つのデータ ラインのためにチェックされます CRC-16 の不一致がある場合 データ パスは BIU へのデータの CRC エラーを通知します 受信エンド ビットが 1 でない場合 BIU は エンド ビット エラー (EBE) を受信します

28 cmd レジスタの transfer_mode ビットが 0 に設定されて bytcnt レジスタの値が block_size のレジスタの値と等しくない場合 転送は 複数ブロックのリード データ転送となります データ受信ステート マシンは 内部で生成された CRC-16 を含むブロック内のバイト数がブロック サイズに等しいブロック単位でデータを受信します ctype レジスタは 1 ビット 4 ビット または 8 ビット データ転送に設定されている場合 データはそれぞれ 1 または 8 のデータ ラインから受信され CRC- 16 は別々に生成し それぞれ 1 4 または 8 つのデータラインのためにチェックされます データ ブロックが受信された後 残りのバイト数がゼロになった場合 データ パスは BIU へのデータ転送を通知します 残りのデータバイトがゼロより大きい場合 データ パス ステート マシンは 別のデータ ブロックが受信されるようになります 受信されたデータ ブロックの CRC-16 は 内部で生成された CRC-16 と一致しない場合 BIU へのデータ CRC エラーとデータ受信はべてのバイトが送信されるまでデータ送信を継続します さらに 受信データ ブロックのエンドが 1 でない場合 データ パス信号のデータは CIU へのビット エラーを終了し データ受信ステート マシンはデータ受信を終了し データタイムアウトを待ち そして BIU にデータ転送が完了したことを通知します cmd レジスタの send_auto_stop ビットが 1 に設定されている場合 最後のデータ ブロックを転送する際に余分なバイトがカードから転送されていないと SD/SDIO STOP コマンドは 内部的に生成されます STOP コマンドのエンド ビットはまさに最後のデータ ブロックのエンド ビットと一致しない場合があります カードへのデータ転送のための要求されたブロック サイズは 1 ビット 4 ビット または 8 ビットのデータ転送モードはそれぞれ バイト未満の場合 データ送信ステート マシンは すべてのデータが転送されるとデータ転送を終了します その場合には 内部的に生成された STOP コマンドはコマンド パスにロードされます その後にカードから受信したデータは データ パスで無視されます bytcnt レジスタが 0( ブロック サイズはゼロより大きくなければならない ) の場合 転送はオープン エンドのブロック転送です このタイプのデータ転送の場合 データ受信ステート マシンは ブロック リードのデータ転送はホスト ソフトウェアが SD/SDIO STOP または STOP_TRANSMISSION(CMD12) コマンドを発行するまで続行します

29 コントローラは 内部 SD/SDIO STOP コマンドを生成し cmd レジスタの send_auto_stop ビットが 1 に設定されたコマンド パスにロードされます AUTO_STOP コマンドは MMC のためのストリーム リードまたはライト そして複数ブロックの読み出しまたは SD カード用の SD メモリ転送のためのリードまたはライトを使用して データ バイトの正確な数を送信するために役立ちます ソフトウェアは 表 に記載されている内容に応じて send_auto_stop ビットを設定する必要があります

30 以下のリストは AUTO_STOP コマンドのための条件について説明します

31 ゼロより大きいバイト数の MMC 用ストリーム リード データの最後のバイトがカードから読み出したときに STOP コマンドのエンド ビットが送信されるように また余分なデータバイトが受信されないように コントローラは 内部 STOP コマンドを生成して コマンド パスにロードします バイト数が 6(48 ビット ) よりも小さい場合 いくつかの余分なデータ バイトが送信され STOP コマンドのエンド ビットの前にカードから受信されます ゼロより大きいバイト数の MMC 用ストリーム ライト データの最後のバイトの送信したときに STOP コマンドのエンド ビットが送信されるように また余分なデータバイトが送信されないように コントローラは 内部 STOP コマンドを生成して コマンド パスにロードします バイト数は 6(48 ビット ) よりも小さい場合 データ パスは これらの条件を満たすために最後のデータを送信します ゼロより大きいバイト数の SD カード用複数ブロックのリード メモリ ブロック サイズが 4( シングル ビット データ バス ) 16(4 ビット データ バス ) または 32(8 ビット データ バス ) 未満の場合 すべてのバイトが読み込まれた後に AUTO_STOP コマンドはコマンド パスにロードされます それ以外の場合 STOP コマンドは 最後のデータ ブロックを受信した後に STOP コマンドのエンド ビットが送信されるようにコマンド パスにロードされます ゼロより大きいバイト数の SD カード用複数ブロックのライト メモリ ブロック サイズが 3( シングル ビット データ バス ) 12(4 ビット データ バス ) または 24(8 ビット データ バス ) 未満の場合 すべてのデータ ブロックが転送された後に AUTO_STOP コマンドは コマンド パスにロードされます それ以外の場合 STOP コマンドは CRC ステータスのエンド ビットが受信された後に STOP コマンドのエンド ビットが送信されるようにコマンド パスにロードされます auto-stop 中にホスト ソフトウェアのための注意事項自 AUTO_STOP コマンドが発行されるとき ホスト ソフトウェアはコントローラによって AUTO_STOP コマンドが送信されるまで そしてデータ転送が完了されるまでコントローラに新しいコマンドを発行してはいけません ホストが AUTO_STOP コマンドの進行中に新しいコマンドを発行する場合 データ転送中に新しいコマンドが送信され その応答を受信した後 AUTO_STOP コマンドが送信する場合があります これにより STOP コマンドの送信が遅延され 余分なデータ バイトを転送すること

32 ができます ストリーム ライトには 余分なデータ バイトはエラー データであり カード データが破損することがあります ホストがデータ転送が完了する前にデータ転送を終了する場合 SD/SDIO STOP または STOP_TRANSMISSION (CMD12) コマンドを発行することができます その場合には コントローラーが AUTO_STOP コマンドを生成しません いくつかの SD/SDIO データ以外の転送コマンド ( リードおよびライト コマンド以外 ) は データ パスを使用します 表 には コマンドとそのレジスタ セットアップ要件を示します

33 Cmd_index 0x1B=27 0x1E=30 0x2A=42 0x0D=13 0x16=22 0x33=51 Response_expect Response_length Check_response_crc Data_expected Read/write Transfer_mode Send_auto_stop Wait_prevdata_complete Stop_abort_cmd スタフ ビット 32 ビット ライト保護データ アドレス スタフ ビット スタフ ビット スタフ ビット スタフ ビット 16 4 Num_bytes (1) Num_bytes (1) (1) Num_bytes = ロック カードのデータ構造に従って指定されたバイト数 SD 仕様と MMC の仕様を参照してください

34 クロック コントロール ブロックは SD/MMC/CE-ATA カードに必要なさまざまなクロック周波数を提供します クロック コントロール ブロックは 別のカード クロック周波数を生成するために使用される 1 クロック ディバイダを持っています カード クロック周波数は次のクロック ctrl レジスタの設定に依存します

35 clkdiv レジスタ 内部クロック ディバイダは カードに必要なさまざまなクロック周波数を生成するために使用されます クロック ディバイダの分周比は clkdiv レジスタに書き込むことによって行います クロック ディバイダは 1 から 510 までのクロック分周係数を提供し 8 ビットの値です 値が 0 の場合 クロック ディバイダのバイパスを表し 値が 1 の場合は 2 分周を表し 値が 2 の場合 4 分周を表します clksrc レジスタ クロックはクロック ディバイダ 0 で分割したため このレジスタに 0 を設定します clkena レジスタ cclk_out カードの出力クロックは 次の条件の下でイネーブルまたはディセーブルすることができます clkena レジスタの cclk_enable ビットが 1 に設定されると cclk_out がイネーブルされ 0 に設定されるとディセーブルされます 低電力モードは clkena レジスタの cclk_low_power ビットを 1 に設定することによりイネーブルすることができます 低電力モードはカードの電源を節約するためにイネーブルされる場合 カードが少なくとも 8 カード クロック サイクルの間アイドル状態になったとき cclk_out 信号がディセーブルされます 低電力モードは 新しいコマンドがロードされたときにイネーブルされており コマンド パスが非アイドル状態になります 次の条件下では カード クロックが停止しているか またはディセーブルされます クロックは clkena レジスタに書き込むことによってディセーブルされることができます 低消費電力モードが選択される場合 またカードには 少なくとも 8 クロック サイクルの間アイドル状態になっている場合 FIFO バッファがフルの場合 そのとき FIFO バッファのオーバーフローを回避するために データ パスは カードからのデータを受け入れることができなくなり データ転送は不完全になります FIFO バッファが空の場合 FIFO バッファのアンダーフローを回避するために データ パスがカードに多くのデータを送信することができず データ転送は不完全になります 1 カード クロックは ホスト ソフトウェアが clkdiv と clksrc レジスタの値を変更する前に clkena レジスタを使ってディセーブルされる必要があります エラーは次のような状況で CIU 内でカード動作時に発生する可能性があります

36 応答タイムアウト これは タイムアウト レジスタのクロック サイクルの指定された数以内に応答スタート ビットと予想される応答を受信しません 応答 CRC エラー 応答が予想して チェック応答 CRC が要求されます 応答 CRC-7 は 内部で生成された CRC-7 と一致しません 応答エラー 応答送信ビットが 0 でない場合 コマンド インデックスは 送信コマンドのコマンド インデックスと一致しない または応答エンド ビットが 1 ではありません CRC ステータスなし ライト データ転送中 データ ブロックの終了ビットが発送された後 CRC ステータス スタートビットが 2 クロック サイクルに対して受信されない場合 データ パスは次のアクションを行ないます BIU への CRC ステータス エラーを示しません 一層のデータ転送を終了します BIU へのデータ転送が完了したことを示します 負の CRC ライト データ ブロックの後の受信した CRC ステータスが負の場合 ( つまり 0b010 ではない場合 ) データ パスは BIU へのデータの CRC エラーを通知し データ転送を継続します 空の FIFO バッファによるデータ飢餓 FIFO バッファは ライト データ送信中に空になった またはカード クロックが停止し FIFO バッファは クロック サイクルのデータ タイムアウト数の空のままである場合 データ パスは BIU とデータ パスにデータ飢餓 エラーを通知した場合 FIFO バッファ内のデータを待機し続けます データ タイムアウト リード データの転送中に データのスタート ビットがタイムアウト レジスタで指定されたクロック サイクル数の前に受信されない場合 データ パスは 以下のアクションを実行します BIU へのデータ タイムアウト エラーを示します 一層のデータ転送を終了します BIU へのデータ転送が完了したことを示します

37 データ SBE 4 ビットまたは 8 ビットのリード データ転送時には 全ビット データ ラインにスタート ビットがない場合 データ パスは BIU へのデータ SBE を示し データ タイムアウト ( それはデータ転送が修了した後に合図する ) を待ちます データ CRC エラー リード データ ブロック転送時には 受信した CRC-16 は 内部で生成された CRC-16 と一致しないと データ パスは BIU へのデータの CRC エラーを通知し データ転送を継続します データ EBE リード データ転送時には 受信したデータの最後のビットが 1 でない場合 データ パスは BIU への EBE を通知し さらにデータ転送を終了し BIU にデータ転送が終了したことを通知します FIFO バッファフルによるデータ飢餓 リード データ送信時 FIFO バッファがフルになったときに カード クロックは停止します FIFO バッファは クロック サイクルのデータ タイムアウト数の完全なままである場合 データ パスが rintsts レジスタでデータ飢餓 host timeout ビット (hto) を 1 に設定することにより BIU にデータ飢餓エラーを通知し データ パスは FIFO バッファが空になるまで待ちます SD/MMC コントローラのクロックは 表 に記載されています sdmmc_clk 入力 SD/MMC コントローラ CIU 用のクロック l4_mp_clk 入力 SD/MMC コントローラ BIU 用のクロック sdmmc_cclk_out 出力カード用の生成された出力クロック sdmmc_sample_clk 内部 カードからのコマンドとデータをサンプリングするために使用される sdmmc_clk の位相シフト クロック sdmmc_drv_clk ホールド タイムの要件要件を満たすためにカードにコマンドとデータ内部を駆動するコントローラ用 sdmmc_clk の位相シフト クロック sdmmc_clk_divided 内部 sdmmc_clk の分周 4 クロック

38 図 には コントローラへの各種クロックの接続を示します l4_mp_clk sdmmc_cclk_out sdmmc_clk Divide by 4 sdmmc_clk_divided Phase Shifter sdmmc_drv_clk SD/MMC Controller Core Phase Shifter sdmmc_sample_clk sdmmc_fb_clk_in シフタとコントローラに渡される前に クロック マネージャからの sdmmc_clk クロックは 4(sdmmc_clk_divided クロック ) によって分割されています シフタは sdmmc_drv_clk と sdmmc_sample_clk クロックを生成するために使用されます これらの位相シフタは および 315 度を含む最大 8 つの位相シフトまで提供します sdmmc_sample_clk クロックは 位相シフタからの出力によってドライブすることができます 位相シフトの度合いと sdmmc_sample_clk ソースの選択は システム マネージャで行われます 位相シフトを設定し sdmmc_sample_clk クロックのソースを選択する方法について詳しくは ページの クロックのセットアップ に参照してください コントローラーはカードにドライブされ sdmmc_cclk_out クロックを生成します sdmmc_cclk_out クロックの生成について詳しくは ページの クロック コントロール ブロック を参照してください SD/MMC コントローラが 1 つのリセット信号を持っています リセット マネージャはコールドまたはウォーム リセットで SD/MMC コントローラにこの信号をドライブします f 詳しくは Cyclone V デバイス ハンドブック Volume 3 の Reset Manager の章を参照してください

39 表 は SD/MMC コントローラのインタフェース信号の I/O ピンの使用を示しています sdmmc_cclk_out 1 力コントローラからカードへのクロック sdmmc_cmd 1 入力 / 力 カード コマンド sdmmc_pwren 1 力 外部デバイス パワー イネーブル sdmmc_data 8 入力 / 力カード データ この項では SD/MMC コントローラを初期化する方法について説明します 図 は SD/MMC コントローラの初期化フローを示しています コントローラへの電源とクロックが安定した後 コントローラ アクティブ Low のリセットがアサートされます リセット シーケンスは レジスタ FIFO バッファ ポインタ DMA インタフェース コントロール およびコントローラ内のステート マシンを初期化します Assert Active-Low Reset Enable Power to Card Set Interrupt Masks Enumerate Card Stack Set the Clock Source Assignments Set Other Controller Registers ソフトウェアは パワー オン リセット後に次のステップを実行する必要があります

40 1. カードへの電力供給をイネーブルする前に 電圧レギュレータの電圧設定が正しいことを確認します 2. 電源イネーブル レジスタ (pwren) に power enable ビット (power_enable) を 1 に設定することにより カードへの電源をイネーブルします 次のステップに進む前に 電源のランプアップ時間を待ちます 3. intmask レジスタ 0 に適切なビットをリセットすることにより 割り込みマスクを設定します 4. ctrl レジスタの int_enable ビットを 1 に設定します 1 アルテラでは 1 に int_enable ビットを設定する前に 保留中の割り込みをクリアするために rintsts レジスタに 0xFFFFFFFF を書き込むことを推奨します 5. カードの種類に応じてカード スタックを検出します ディスカバリーのためには SD/MMC/CE-ATA 基準に準拠する 400 khz のクロック周波数を制限する必要があります 詳細については ページの 列挙されたカード スタック に参照してください 6. クロック ソースの割り当てを設定します コントローラの clkdiv と clksrc レジスタを使用してカードの周波数を設定します 詳細については ページの クロックのセットアップ を参照してください 7. 次のような共通のレジスタとフィールドが初期化プロセス中に設定することができます : tmout レジスタの応答タイムアウト フィールド (response_timeout) 典型的な値は 0x64 になります tmout レジスタのデータ タイムアウト フィールド (data_timeout) 次の最高値 : 10 * N AC = 10 * ((TAAC * F OP ) + (100 * NSAC)) この場合 N AC = カード デバイスの総合アクセス時間 TAAC = データ アクセス時間の時間依存的要因 F OP = カード動作に使用されるカード クロック周波数 NSAC = データ アクセス タイムのワースト ケースのクロックのレート依存要因 ホスト FIFO バッファ レイテンシ オン リード : ホストがフル FIFO バッファから読み出しを開始する前の経過時間

41 オン ライト : ホストは空の FIFO バッファへの書き込みを開始する前の経過時間 Debounce counter レジスタ (debnce) 典型的なデバウンス値は 25 ms です FIFO スレッショルド ウォーターマーク レジスタ (fifoth) の TX watermark フィールド (tx_wmark) 通常 スレッショルド値は 512 に設定され FIFO バッファの深さの半分です fifoth レジスタの RX watermark(rx_wmark) フィールド 通常 スレッショルドは 511 に設定されています これらのレジスタは すべての SD/MMC/CE-ATA コマンドで変更する必要はありません SD/MMC/CE-ATA 仕様に従って典型的な値に設定します カード スタックは次のタスクを実行します 接続されているカードを発見します 接続したカード内の相対 Card Address Register (RCA) を設定します カード固有の情報を読み出します カード固有の情報は ローカルに格納されます コントローラに接続されているカードは MMC CE-ATA SD または SDIO(IO ONLY MEM ONLY と COMBO を含む ) カードであることができます 接続されているカードの種類を識別するには 次のディスカバリー シーケンスが必要です 1. ctype レジスタ内のカード幅 1 または 4 ビット (card_width2) およびカード幅 8 ビット (card_width1) フィールドを 0 にリセットします

42 2. SD MMC SDIO または SDIO-COMBO カードのタイプを識別します a. カードへの引数 0 で SD/SDIO IO_SEND_OP_COND(CMD5) コマンドを送信します b. コントローラ上の resp0 を読み出します IO_SEND_OP_COND コマンドに対する応答はカードがサポートしている電圧を提供します c. 引数に所望の電圧ウィンドウで IO_SEND_OP_COND コマンドを送信します このコマンドは 電圧ウィンドウを設定し カードが初期化状態を終了することができます d. resp0 のビット 27 をチェックします ビット 27 が 0 の場合 SDIO カードは ONLY IO です この場合 ステップ 5 に進みます ビット 27 が 1 の場合 カード タイプは SDIO COMBO です 次のステップに進みます 3. SDIO カード タイプが COMBO であるか または以前 IO_SEND_OP_COND コマンドから受信した応答がない場合にのみ このステップに進みます それ以外の場合 ステップ 5 に進みます a. 次の引数を使用して SD/SDIO SEND_IF_COND(CMD8) コマンドを送信します ビット [31:12] = 0x0( 予約ビット ) ビット [11:8] = 0x1( 電源電圧値 ) ビット [7:0] = 0xAA(SDIO Simplified Specification Version 2.00 または以降のバージョンに準拠した SD メモリ カードで優先のチェック パターン ) f ページの 参考資料 上で説明したように SDIO Simplified Specification Version 2.00 を参照してください b. 応答が以前の SEND_IF_COND コマンドに受信された場合 カードは D Specifications, Part 1, Physical Layer Simplified Specification Version 2.00 に準拠した SD High-Capacity をサポートしています 応答が受信されない場合 ステップ e に進みます c. 次の引数を使用して SD_SEND_OP_COND(ACMD41) コマンドを送信します ビット [31] = 0x0 ( 予約ビット ) ビット [30] = 0x1 ( 高容量ステータス ) ビット [29:25] = 0x0( 予約ビット ) ビット [24] = 0x1(S18R - 1.8V のための電圧スイッチングをサポートする ) ビット [23:0] = サポートされている電圧範囲 d. 応答が以前の SD_SEND_OP_COND コマンドに受信された場合 カードの種類は SDHC です そうでない場合 カードは MMC や CE-ATA となります それ以外の場合 次のステップをスキップして ステップ 5 に進みます e. 応答は初期の SEND_IF_COND コマンドに受信されない場合 カードは High Capacity SD2.0 をサポートしていません 次に GO_IDLE_STATE コマンドを発行して 引数を指定して SD_SEND_OP_COND コマンドを発行します

43 ビット [31] = 0x0 ( 予約ビット ) ビット [30] = 0x0( 高容量ステータス ) ビット [29:24] = 0x0( 予約ビット ) ビット [23:0] = サポートされている電圧範囲 f. 応答が以前の SD_SEND_OP_COND コマンドに受信された場合 カードは SD タイプとなります そうでない場合 カードは MMC や CE-ATA となります 1 High Capacity SD メモリ カードを初期化するために 前に最初の SD_SEND_OP_COND コマンドに SEND_IF_COND コマンドを発行する必要があります 次の条件のいずれかに該当するときは カードの SD_SEND_OP_COND コマンドの応答としてビジーを返します カードは その内部の初期化処理を実行します SEND_IF_COND コマンドは SD_SEND_OP_COND コマンドの前に発行されていません ACMD41 コマンドが発行されます コマンドの引数では Host Capacity Support(HCS) のビットは大容量 SD カードの場合 0 に設定されます 4. カードが CE-ATA1.1 CE-ATA1.0 または MMC デバイスのいずれかを判別するには 次のシーケンスを使用します a. カードは ATA モードを選択しようとする CE-ATA v1.1 のカード デバイスであるかどうかを確認します 外部カード中の EXT_CSD レジスタ ブロックのバイト 504(S_CMD_SET) を尋ねて SD/SDIO SEND_IF_COND コマンドを送信します ビット 4 が 1 に設定されている場合 カード デバイスは ATA モードをサポートしています SWITCH_FUNC(CMD6) コマンドを送信して EXT_CSD レジスタ スライス 191(CMD_SET) の ATA ビット ( ビット 4) を 1 に設定します このコマンドは ATA モードを選択して ATA コマンド セットをアクティブにします EXT_CSD レジスタのバイト 191 から読み戻すことによって 現在選択されているモードを確認することができます ステップ 5 に進みます カード デバイスが ATA モードをサポートしない場合 MMC カードまたは CE-ATA v1.0 のカードである場合があります ステップ b に進みます b. カードは CE-ATA1.0 カード デバイスまたは RW_REG コマンドを送信することにより MMC カード デバイスであることを確認します 応答が受信され 応答データに CE-ATA の署名が含まれている場合 カードは CE-ATA1.0 カード デバイスです そうでない場合 カードは MMC カード デバイスです 5. この時点で ソフトウェアは SD/SDHC SDIO または SDIO-COMBO カードのタイプを決定している場合があります この場合 発見されているタイプに応じてカード スタックを列挙する必要があります

44 6. 識別クロック レートの周波数にカード クロック ソースの周波数を 400 khz に設定します 次のディスカバリー コマンド シーケンスのいずれかを使用します SD カードや SDIO のメモリ セクションは 次の SD/SDIO コマンドシーケンスを送信します GO_IDLE_STATE SEND_IF_COND SD_SEND_OP_COND (ACMD41) ALL_SEND_CID (CMD2) SEND_RELATIVE_ADDR (CMD3) SDIO カードは 次のコマンド シーケンスを送信します IO_SEND_OP_COND. 関数カウントが有効の場合 SEND_RELATIVE_ADDR コマンドを送信します MMC は 次のコマンド シーケンスを送信します GO_IDLE_STATE SEND_OP_COND (CMD1) ALL_SEND_CID SEND_RELATIVE_ADDR 7. sdmmc_clk クロックを分周する clkdiv レジスタに値を書き込むことにより 発見された後 カード クロック周波数を変更することができます 次のリストでは さまざまな種類のカードの代表的なクロック周波数を示しています SD メモリ カードの 25 MHz MMC カード デバイスの 12.5 MHz フル スピード SDIO, 25 MHz ロー スピード SDIO, 400 khz SD/MMC コントローラの次のレジスタは ソフトウェアがカードの所望のクロック周波数を選択することができます : clksrc clkdiv clkena コントローラはアップデート クロック コマンドを受信したときに この項で説明するように これらのレジスタにロードします カード クロック周波数を変更するには 次のステップを実行します 1. クロックをディセーブルされる前に カードは以前のデータ コマンドを使用して ビジー状態でないことを確認します これを実行するには ステータス レジスタ (status) の data_busy ビットが 0 であることを確認します

45 2. カード クロック生成をディセーブルするには clkena レジスタの cclk_enable ビットを 0 にリセットします 3. clksrc レジスタを 0 にリセットします 4. cmd レジスタに次のビットを 1 に設定します update_clk_regs_only アップデート クロック コマンドを指定します wait_prvdata_complete 進行中のデータ転送が完了するまでクロック パラメータが変更されないことを保証します start_cmd コマンドを開始します 5. start_cmd と update_clk_regs_only ビットが 0 に変更されるまで待ちます クロックの変更が完了した割り込みはありません コントローラは コマンドの完了時に rintsts レジスタでの command_done ビットを設定しません それが既にキュー内の別のコマンドがある場合 コントローラは ハードウェアロック エラーを通知することがあります この場合 ステップ 4 に戻ります ハード ロック エラーに関する情報については ページの 割り込みとエラー処理 を参照してください 6. クロック マネージャ ペリフェラルの PLL グループ (perpllgrp) の enable レジスタ sdmmc_clk_enable ビットを 0 にリセットします 7. システム マネージャでの SDMMC コントローラ グループ (sdmmcgrp) のコントロール レジスタ (ctrl) では ドライブ クロック位相シフト セレクト (drvsel) およびサンプル クロックの位相シフト セレクト (smplsel) ビットを設定し 必要な位相シフト値を指定します 8. クロック マネージャ perpllgrp グループの Enable レジスタ内の sdmmc_clk_enable ビットを 1 に設定します 9. 必要なクロック周波数ディバイダの正しい値にコントローラの clkdiv レジスタを設定します 10. カード クロック生成をイネーブルするには clkena レジスタの cclk_enable ビットを 1 に設定します また カードが複数の 8 クロック サイクルの間アイドル状態のときに自動的に sdmmc_cclk_out クロックを停止し 低消費電力モードをイネーブルする clkena レジスタを使用することができます 次のリストは SD/MMC コントローラの様々な部分にあるリセットの効果を示しています

46 コントローラ リセット ctrl レジスタの controller_reset ビットを 1 に設定することにより コントローラーをリセットします コントローラー リセットは CIU とステート マシンおよび BIU-to-CIU インタフェースをリセットします このリセット ビットはセルフ クリアですので リセットを発行した後には このビットを 0 に更新するまで待ちます FIFO バッファ リセット ctrl レジスタの FIFO リセット ビット (fifo_reset) を 1 に設定することにより FIFO バッファをリセットします FIFO バッファ リセットは FIFO バッファ内の FIFO バッファ ポインタおよびカウンタをリセットします このリセット ビットはセルフ クリアですので リセットを発行した後には このビットを 0 に更新するまで待ちます DMA リセット ctrl レジスタの DMA リセット ビット (dma_reset) を 1 に設定することにより 内部 DMA コントローラ ロジックをリセットします それは 直ちに進行中の任意の DMA 転送を終了します このリセット ビットはセルフ クリアですので リセットを発行した後には このビットを 0 に更新するまで待ちます 1 DMA が DMA リセットを実行する前にアイドル状態であることを確認します それ以外の場合 L3 は相互接続は不定の状態に陥る可能性があります 最初に ctrl レジスタの controller_reset fifo_reset dma_reset と dma_reset ビットを設定し そして割り込みの結果をクリアするために 別のライトを使用して rintsts レジスタを 0 にリセットすることを推奨します ECC 付き FIFO バッファのデータを保護するには SD/MMC コントローラを持つ任意の動作を実行する前に ECC 機能をイネーブルする必要があります FIFO バッファ ECC 機能をイネーブルするには 次のステップを実行します 1. コントローラにコミットされたコマンドが存在しないことを確認します 2. FIFO バッファが初期化されていることを確認します すべての 1024 の FIFO バッファ位置に 0 を書き込むことで FIFO バッファを初期化します FIFO バッファが 0x200 から最大 FIFO バッファ サイズに任意のアドレスへの書き込み時には有効です 3. 以前に検出された ECC エラーをクリアするには システム マネージャの eccgrp グループ内の sdmmc レジスタで SDMMC RAM EC シングルとダブルの訂正可能なエラー割り込みステータス ビット (serrporta derrporta serrportb および derrportb) を 1 に設定します 4. ctrl レジスタの fifo_reset ビットを 1 に設定することによって FIFO バッファをリセットします このアクションによると FIFO バッファのポインタとカウンタがリセットされます このリセット ビットは自動的にクリアされるので リセットを発行した後 0 ビットが変化するまで待ちます 5. SD/MMC コントローラの FIFO バッファに ECC をイネーブルするには システム マネージャの eccgrp グループ内 SDMMC レジスタの en ビットを 1 に設定します

47 任意のデータ転送以外のコマンドを送信するには ソフトウェアが適切なパラメータを指定して cmd レジスタと cmdarg レジスタを書き込む必要があります これらの 2 つのレジスタを使用して コントローラがコマンドを形成し CMD ピンに送信します コントローラは rintsts レジスタのエラー ビットを介してコマンド応答でエラーを報告します 応答が受信されると ( エラー応答または有効な応答 ) コントローラが rintsts レジスタでの command_done ビットを 1 に設定します 短い応答は resp0 にコピーされていますが 長い応答はすべての 4 つの応答レジスタ (resp0 resp1 resp2 および resp3) にコピーされています 長い応答では resp3 のビット 31 は MSB を表わします また resp0 のビット 0 は LSB を表わします 基本とデータ転送以外のコマンドについては 次のステップを実行します 1. 適切なコマンドの引数パラメータで cmdarg レジスタに書き込みます ページの表 の設定で cmd をレジスタに書き込みます 3. コマンドを受け付けるようにコントローラを待ちます start_cmd ビットは コマンドが受け入れられるときに 0 にに変更されます コマンドがコントローラにロードされたときに次のアクションが発生します 前のコマンドが処理されていない場合 コントローラは実行のためにコマンドを受け入れ cmd レジスタの start_cmd ビットを 0 にリセットします 前のコマンドが処理されている場合 コントローラは コマンド バッファの新しいコマンドをロードします コントローラーが新しいコマンド ( すなわち コマンドは既に進行中の場合 ) をロードすることができない場合 2 番目のコマンドはバッファにあります また 3 番目のコマンドが試みられます そのとき コントローラはハードウェア ロック エラーを生成します 4. ハードウェア ロック エラーがあるかどうかを確認します 5. 完了するまでコマンドの実行を待ちます カードまたは応答タイムアウトからの応答を受信した後 コントローラは rintsts レジスタでの command_done ビットを 1 に設定します ソフトウェアは このビットをポーリングするか または生成された割り込み ( イネーブルされる場合 ) に応答することができます 6. 応答タイムアウト boot acknowledge received(bar) rcrc または re ビットが 1 に設定されることをチェックします ソフトウェアは これらのエラーによって提起される割り込みに応答するか または rintsts レジスタの re rcrc および bar ビットをポーリングすることができます 応答エラーが受信されない場合 応答が有効です 必要な場合 ソフトウェアが応答レジスタからの応答をコピーすることができます 1 コマンドが実行されている間 ソフトウェアはクロック パラメータを変更することはできません

48 データ転送コマンドは メモリ カードとコントローラ間のデータを転送します データ コマンドを発行するには コントローラがコマンド引数 合計データ サイズ およびブロック サイズを必要とします メモリ カードから ( またはメモリ カードに ) 転送されたデータはコントローラの FIFO バッファでバッファリングされます データ転送コマンドを発行する前に ソフトウェアは カードが使用されておらず 次のステップを実行して 転送状態にあることを確認する必要があります 1. SD/SDIO SEND_STATUS(CMD13) コマンドを発行します コントローラは コマンドに対する応答として カードのステータスを送信します 2. カードのビジー状態を確認します 3. カードがビジーでなくなるまで待ちます 4. カードの転送状態を確認します カードがスタンド バイ状態にある場合 SD/SDIO SELECT / DESELECT_CARD(CMD7) 転送状態に配置するようにコマンドを発行します 1 CE-ATA RW_BLK ライト転送時には MMC はビジー信号が最後のブロックの後にアサートされる場合があります CE-ATA カード デバイスの割り込みがディセーブルされる場合 ( カード デバイスの ATA コントロール レジスタ内の nien ビットが 1 に設定されている場合 ) カードが MMC BUSY を送信していても rintsts レジスタの dto ビットが 1 に設定されます ホストは CMD61 コマンドの後に ATA のビジー状態を確認するには CMD60 コマンドを発行することはできません 代わりに ホストは次のいずれかのアクションを実行する必要があります SEND_STATUS コマンドを発行し 新しい CMD60 コマンドを発行する前に MMC のビジー状態を確認する CMD39 コマンドを発行し 新しい CMD60 コマンドを発行する前に ATA のビジー状態を確認する データ転送コマンドの場合 ソフトウェアはそのカードにプログラムされているバス幅の ctype レジスタを設定する必要があります データ転送中に コントローラは 次の rintsts レジスタ ビットに反映される異なる条件のために割り込みを生成します 1. dto データ転送は 過剰または終端されています 応答タイムアウト エラーが発生した場合 コントローラは任意のデータ転送 データ転送を試行しなく Data Transfer Over ビットが設定されません 2. Transmit FIFO data request bit (txdr) データを送信するための FIFO バッファ スレッショルドに達した場合 適用可能な場合 ソフトウェアは FIFO バッファに データを書き込むことが期待されています 3. Receive FIFO data request bit (rxdr) FIFO バッファ スレッショルドのための受信データが到達されます ソフトウェアは FIFO バッファからデータを読み出すことが期待されています 4. hto FIFO バッファが送信中に空であることか または受信中にフルであることです ソフトウェアは空の状態のデータを書き込む または完全な状態のデータを読み出すことにより この状態を補正しない限り コントローラは データ転送を継続することはできません カードへのクロックが停止されます

49 5. bds カードがタイムアウト期間内にデータ送信していません 6. dcrc CRC エラーは データ受信時に発生しました 7. sbe スタート ビットは データ受信中に受信されていません 8. ebe エンド ビットはデータ受信中に受信しました または書き込み動作のために受信されていません CRC エラーは カードによって示されます 条件 6 7 および 8 は 受信したデータにエラーがあることを示しています 応答タイムアウトがある場合 データ転送は行われません シングル ブロックまたは複数のブロック リードを実装するには ソフトウェアは 以下のステップを実行します 1. bytcnt レジスタにバイト単位のデータ サイズを書き込みます マルチ ブロック リードの場合 bytcnt は ブロック サイズの倍数でなければなりません 2. blksiz レジスタにバイト単位のブロック サイズを書き込みます コントローラは データがサイズ blksiz のブロック内のカードから復帰することを期待しています 3. カードの遅延などのリード ラウンド トリップ遅延は sdmmc_clk_divided の半分より大きい場合 カード クロックがカードからホストへの転送されるデータのブロックの途中で停止しないようにするために card threshold control レジスタ (cardthrctl) に書き込みます 詳細については ページの カード リード スレッショルド を参照してください 1 card read threshold enable ビット (cardrdthren) が 0 の場合 ホスト システムは RX FIFO バッファが FIFO バッファに書き込まれるデータより速くレートで読み出されることを保証することによって RX FIFO バッファがリード データ転送中にフルにならないようにする必要があります それ以外の場合 オーバーフローが発生することがあります 4. データ リードの先頭データ アドレスで cmdarg レジスタを書き込みます 5. 表 に記載されているパラメータで cmd レジスタを書き込みます SD と MMC カードの場合 シングル ブロック リードのために SD/SDIO READ_SINGLE_BLOCK(CMD17) コマンドを使用して マルチ ブロック リードのために READ_MULTIPLE_BLOCK(CMD18) コマンドを使用します SDIO カードには 両方のシングル ブロックとマルチ ブロックの転送に IO_RW_EXTENDED (CMD53) コマンドを使用します cmd レジスタに書き込んだ後 コントローラは コマンドの実行を開始します コマンドをバスに送信されると Command Done が生成されます 6. ソフトウェアは rintsts レジスタでの dcrc bds sbe および ebe ビットでレポートされるをチェックする必要があります 必要な場合 ソフトウェアが SD/SDIO STOP コマンドを送信することにより データ転送を終了することができます

50 7. ソフトウェアが rintsts レジスタでホストのタイムアウト条件をチェックする必要があります : FIFO バッファのデータ要求を受信する ホストによるデータ飢餓 ホストは カードからデータを維持できる速度で FIFO バッファから読み取っていません この状態を修正するには ソフトウェアは 次のステップを実行する必要があります status レジスタの fifo_count フィールドを読み込む FIFO バッファのうちデータの対応する量を読み込む どちらの場合も ソフトウェアは FIFO バッファからデータを読み出して そしてより多くのデータを受信するための FIFO バッファにスペースを構造する必要があります 8. DTO の割り込みが受信されると ソフトウェアは FIFO バッファから残りのデータを読み出す必要があります start_cmd 1 コマンドが委託された後 このビットはそれ自体を 0 にリセットします use_hold_reg 1 or 0 使用されているスピード モードに基づいて値を選択します update_clk_regs_only 0 クロック パラメータを更新する必要はありません data_expected 1 データ コマンド card_number 1 1 つのカードのみ transfer_mode 0 ブロック転送 send_initialization 0 stop_abort_cmd 0 SD/SDIO GO_IDLE_STATE コマンドなどのカード リセット コマンドの場合は 1 それ以外の場合は 0 STOP_TRANSMISSION コマンドなどのデータ転送を中止する場合は 1 それ以外の場合は 0 send_auto_stop 0 または ページの表 に応じて設定します read_write 0 カードから読み出します response_length 0 response_expect 1 または 0 R2( 長い ) 応答の場合 値が 1 です 短いの場合 値が 0 です SD/SDIO GO_IDLE_STATE SET_DSR および GO_INACTIVE_STATE などの対応のないコマンドの場合は 0 それ以外の場合は 1 wait_prvdata_complete 1 または 0 0 直ちに CIU にコマンドを送信します 1 以前のデータ転送が終了した後にコマンドを送信します

51 check_response_crc 1 または 0 cmd_index コマンド インデックス 0 コントローラが応答 CRC をチェックしてはいけません 1 コントローラが応答 CRC をチェックする必要があります このパラメータをコマンド数に設定します 例えば SD/SDIO READ_SINGLE_BLOCK (CMS17) または READ_MULTIPLE_BLOCK (CMD18) の場合 17 または 19 に設定します 次のステップでは シングル ブロック ライトまたはマルチ ブロック ライトが含まれています 1. bytcnt レジスタにバイト単位でデータ サイズを書き込みます マルチ ブロック ライトの場合 bytcnt は ブロック サイズの倍数でなければなりません 2. blksiz レジスタにバイト単位でブロック サイズを書き込みます コントローラは それぞれサイズ blksiz ブロック単位でデータを送信します 3. 書き込む必要があるデータに データ アドレスで cmdarg レジスタを書き込みます 4. FIFO バッファにデータを書き込みます FIFO バッファがフルになるまで ホスト ソフトウェアは 最高のパフォーマンスを得るには 連続のデータを書き込む必要があります ページの表 に記載されているパラメータで cmd レジスタを書き込みます SD と MMC カードの場合 シングル ブロック ライトのために SD/SDIO WRITE_BLOCK(CMD24) コマンドを使用して マルチ ブロック ライトのために WRITE_MULTIPLE_BLOCK(CMD25) コマンドを使用します SDIO カードには 両方のシングル ブロックとマルチ ブロックの転送に IO_RW_EXTENDED コマンドを使用します cmd レジスタに書き込んだ後 他の処理したコマンドが存在しない場合 コントローラはコマンドの実行を開始します コマンドをバスに送信されると コマンド完了割り込みが生成されます 6. フトウェアは データ エラー割り込みを確認する必要があります それは rintsts レジスタの dcrc bds および ebe ビットのためです 必要な場合 ソフトウェアは SD/SDIO STOP コマンドを送信することにより 早期のデータ転送を終了することができます

52 7. ソフトウェアは rintsts レジスタでのホストのタイムアウト条件をチェックする必要があります : FIFO バッファのデータ要求を送信します ホストによるデータ飢餓 コントローラはホストがデータを供給できるより速くカードにデータを書き込みました どちらの場合も ソフトウェアは FIFO バッファにデータを書き込む必要があります 転送は 2 種類があります : オープ ンエンドと固定長 オープンエンドの転送は オープン エンドブロック転送について バイト カウントは 0 です データ転送の終了時に ソフトウェアは STOP_TRANSMISSION コマンド (CMD12) を送信する必要があります 固定長の転送 バイト数がゼロ以外の値になります このとき バイト数がすでに bytcnt レジスタに書き込まれる必要があります cmd レジスタの send_auto_stop ビットを 1 に設定した場合 コントローラは STOP コマンドを発行します 指定されたバイト数の転送が終了した後 コントローラは STOP コマンドを送信します AUTO_STOP コマンドの完了は オ Auto Command Done 割り込みで反映されます AUTO_STOP コマンドに対する応答は resp1 レジスタに書き込まれます ソフトウェアが cmd レジスタでの send_auto_stopcmd ビットを 1 に設定していない場合 ソフトウェアはオープン エンドの場合のように STOP コマンドを発行する必要があります rintsts レジスタの dto ビットが設定されている場合 データ コマンドが完了しました start_cmd 1 すとりコマンドがコミットされた後 (BIU によって受け入れられる ) このビットは自動的に 0 にリセットされます use_hold_reg 1 または 0 使用されているスピード モードに基づいて値を選択します update_clk_regs_only 0 クロック パラメータを更新する必要はありません data_expected 1 データ コマンド card_number 1 1 つのカードのみ transfer_mode 0 ブロック転送 send_initialization 0 stop_abort_cmd 0 値は 1 でも可能ですが SD/SDIO GO_IDLE_STATE などのカード リセット コマンド専用 SD/SDIO STOP_TRANSMISSION などのデータ転送を中止するコマンドのために値が 1 でも可能です send_auto_stop 0 または ページの表 に応じて設定します read_write 1 カードに書き込みます response_length 0 R2( 長い ) 応答の場合 値が 1 でも可能です response_expect 1 応答なしのコマンドのために値が 1 でも可能です 例えば SD/SDIO GO_IDLE_STATE, SET_DSR, GO_INACTIVE_STATE などです

53 wait_prvdata_complete 1 check_response_crc 1 cmd_index コマンド インデックス 0 直ちに CIU にコマンドを送信します 1 以前のデータ転送が終了した後にコマンドを送信します 0 コントローラが応答 CRC をチェックしてはいけません 1 コントローラが応答 CRC をチェックする必要があります このパラメータをコマンド数に設定します 例えば SD/SDIO WRITE_BLOCK (CMD24) の場合は 24 を設定し WRITE_MULTIPLE_BLOCK (CMD25) の場合は 25 を設定します バイト カウントが 0 に等しい場合 ソフトウェアは SD/SDIO STOP コマンドを送信する必要があります バイト カウントが 0 でない場合 指定されたバイト数が転送を完了したときに コントローラは自動的に STOP コマンドを送信します この AUTO_STOP コマンドの完了は Auto_command_done 割り込みによって反映されます AUTO_STOP コマンドに対する応答が resp1 レジスタに書き込まれます ストリーム転送は 1 ビットのデータ バスを持つカードのインタフェースにのみ許可されます ストリーム リードは cmd レジスタでの次のビットを除いて ページの シングル ブロック リードまたはマルチ ブロック リード に記載されるようにブロック リードと同じ手順を実行する必要があります transfer_mode = 0x1 ( ストリーム転送の場合 ) cmd_index = 20 (SD/SDIO CMD20) ストリーム ライトは cmd レジスタでの次のビットを除いて ページの シングル ブロック ライトまたはマルチ ブロック ライト に記載されるようにブロック ライトと同じ手順を実行する必要があります transfer_mode = 0x1( ストリーム転送の場合 ) cmd_index = 11 (SD/SDIO CMD11) オーバーヘッドを削減するために リード コマンドとライト コマンドは バス上の 1 つの転送で グループ内のすべてのコマンドのデータを転送する ( すべての読み出しまたはすべての書き込みのいずれか ) コマンドのグループにパックすることができます 転送されるブロック数を述べるために SD/SDIO SET_BLOCK_COUNT(CMD23) コマンドを使用してください その後 マルチ ブロックの読み出しと書き込みをするように シングル READ_MULTIPLE_BLOCK または WRITE_MULTIPLE_BLOCK コマンドを発行します

54 SET_BLOCK_COUNT ブロック カウントを設定する (READ_MULTIPLE_BLOCK または WRITE_MULTIPLE_BLOCK コマンドで使用されている送信したブロックの数 ) READ_MULTIPLE_BLOCK マルチ ブロックのリード コマンド WRITE_MULTIPLE_BLOCK マルチ ブロックのライト コマンド パックされたコマンドは アプリケーション ソフトウェアによってパケットに編成され コントローラに透過的です f パックされたコマンドについて詳しくは ページの 参考資料 の参照として JEDEC Standard No. 84-A441 を参照してください この項では 停止および中止コマンドについて説明します SD/SDIO STOP_TRANSMISSION コマンドは メモリ カードとコントローラ間のデータ転送を終了することができます ABORT コマンドは SDIO カードの I/O データ転送を終了することができます データ転送が進行している間 ホストはいつでも CMD ピンに STOP_TRANSMISSION (CMD12) コマンドを送信することができます SD/SDIO カード デバイスに STOP_TRANSMISSION コマンドを送信するには 次のステップを実行します 1. cmd レジスタの wait_prvdata_complete ビットを 0 に設定します 2. cmd レジスタの stop_abort_cmd を 1 に設定します これによると CIU が停止することを保証します STOP_TRANSMISSION コマンドは データ転送以外のコマンドです 詳細については ページの データ以外の転送コマンド を参照してください ABORT コマンドは SDIO カードを使用することができます データを転送している機能を中止するには IO_RW_DIRECT(CMD52) を使用してカードのデバイスで card common control register(cccr) のアドレス 0x06 で ASX[2:0] ビットでの中止ファンクションの数をプログラムします CCCR は カード スペース 0x0 0xFF のベースに位置しています ABORT コマンドは データ以外の転送コマンドです 詳細については ページの データ以外の転送コマンド を参照してください SDIO カード デバイスに ABORT コマンドを送信するには 次のステップを実行します 1. 表 に記載されている適切なコマンド引数のパラメータを含めるために cmdarg レジスタを設定します

55 2. cmd レジスタの次のフィールドを設定することにより IO_RW_DIRECT コマンドを送信します 0x52(IO_RW_DIRECT) にコマンドのインデックスを設定します cmd レジスタの stop_abort_cmd ビットは ホストがデータ転送を中止したコントローラに通知するためにレジスタを 1 に設定します cmd レジスタの wait_prvdata_complete ビットを 0 に設定します 3. rintsts レジスタでの cmd ビットが 1 に変更するまで待ちます 4. エラーがないかどうかを確認するために応答レジスタ内の IO_RW_DIRECT コマンド (R5) への応答を読み出します f 応答値について詳しくは ページの 参考資料 に記載されるように Physical Layer Simplified Specification, Version 3.01 を参照してください 31 R/W flag 1 30:28 Function number カード デバイスでの CCCR をアクセスする場合は 0 27 RAW flag 書き込み後に読み出す必要がある場合は 1 26 Don't care - 25:9 Register address 0x06 8 Don't care - 7:0 Write data 中止するファンクションの番号 より良いパフォーマンスを得るためには ホストとコントローラーの間でデータを転送するために内部の DMA コントローラを使用することができます この項では 内部の DMA コントローラの初期化プロセス 送信シーケンス 受信順序を説明しています 内部 DMA コントローラを初期化するには 次のステップを実行します

56 1. 必要な bmod レジスタのビットを設定します DMA 転送中で bmod レジスタの内部 DMA コントローラのイネーブル ビット (de) が 0 に設定された場合 その変更は効力がありません ディセーブルされると 新しいデータ転送コマンドにのみ有効になります ソフトウェア リセットを発行すると すぐに転送を終了します ソフトウェアリセットを発行する前に ホストが ctrl レジスタの dma_reset ビットを 1 に設定することによって DMA インタフェースをリセットを推奨します bmod レジスタの pbl フィールドは読み出し専用であり fifoth レジスタの DMA 複数のトランザクション サイズ フィールド (dw_dma_multiple_transaction_size) の内容を直接反映されています bmod レジスタの fb ビットは システムの性能に合わせて適切に設定する必要があります 2. 次のガイドラインに従って 不要な割り込みの引き起こしをマスクする idinten レジスタへの書き込みます Descriptor Unavailable 割り込みがアサートされると ソフトウェアはディスクリプタを形成し 適切に独自のビットを設定し ディスクリプタをリフェッチする内部 DMA コントローラの poll demand レジスタ (pldmnd) に書き込む必要があります 転送に関連するエラーがソフトウェアに報告していますので 常に異常の割り込みをイネーブルすることは ソフトウェアに適しています 3. メモリ内の送信または受信ディスクリプタ リストのいずれかを移入します その後 内部 DMA コントローラの descriptor list base address レジスタ (dbaddr) に リスト内の最初のディスクリプタのベース アドレスを書き込みます DMA コントローラは メモリからディスクリプタリストをロードします 次の 2 つの項 内部 DMA コントローラの送信シーケンス および ページの 内部 DMA コントローラの受信シーケンス は このステップについて詳しく説明します データを送信するために内部の DMA コントローラを使用するには 次のステップを実行します 1. ホストは送信用の Descriptor フィールド (DES0-DES3) を設定し OWN ビット (DES0[31]) を 1 に設定します また ホストは SD カードに書き込まれるデータでシステム メモリ内のデータ バッファをロードします 2. ホストは cmd レジスタに適切なライト データ コマンド (SD/SDIO WRITE_BLOCK または WRITE_MULTIPLE_BLOCK) を書き込みます 内部 DMA コントローラは ライト データ転送を実行する必要があるを確認します 3. ホストが fifoth レジスタの tx_wmark フィールドに必要な送信スレッショルドレベルを設定します 4. 内部 DMA コントローラ エンジンは ディスクリプタをフェッチし OWN ビットをチェックします OWN ビットが 0 に設定されている場合 ホストはディスクリプタを所有しています この場合 内部の DMA コントローラはサスペンド状態に入り Descriptor Unable 割り込みをアサートします 次に ホストは ディスクリプタ OWN ビットを 1 に設定し pldmnd レジスタに任意の値を書き込むことにより DMA コントローラをリリースする必要があります

57 5. ホストは dbaddr レジスタにディスクリプタ ベース アドレスを書き込む必要があります 6. 内部 DMA コントローラは rintsts レジスタでの Command Done(CD) ビットが 1 に設定されるまで待機します ( コマンド BIU からエラーなし ) この状態は 転送を実行することができることを示します 7. 内部 DMA コントローラ エンジンは BIU から DMA インタフェース要求を待機します BIU は 小さなチャンクに各転送を分割します 各チャンクは DMA への内部要求です この要求は 送信スレッショルドに基づいて生成されます 8. 内部 DMA コントローラは システム メモリ内のデータ バッファから送信データをフェッチして カードに伝送するための準備として FIFO バッファにデータを転送します 9. データが複数のディスクリプタをまたがるときに 内部 DMA コントローラは次のディスクリプタをフェッチし 次のディスクリプタを使用して 動作を続けます ディスクリプタ DES0 フィールドの Last Descriptor ビットは データが複数のディスクリプタをまたがるかどうかを示します 10. データ送信が完了すると ステータス情報が有効な場合 TI ビットを 1 に設定することにより idsts レジスタで更新されます また OWN ビットは ディスクリプタの DES0 フィールドを更新することによって DMA コントローラで 0 に設定されます データを受信するために内部の DMA コントローラを使用するには 次のステップを実行します 1. ホストは 受信のためのディスクリプタ フィールド (DES0 DES3) を設定します設定し自身の (DES0[31]) を 1 に設定します ホストは受信用の Descriptor フィールド (DES0-DES3) を設定し OWN ビット (DES0[31]) を 1 に設定します 2. ホストは BIU で cmd レジスタに読み出したデータ コマンドを書き込みます 内部 DMA コントローラは リード データ転送を実行する必要があるを確認します 3. ホストが fifoth レジスタの rx_wmark フィールドに必要な送信スレッショルドレベルを設定します 4. 内部 DMA コントローラ エンジンがディスクリプタをフェッチし OWN ビットをチェックします OWN ビットが 0 に設定されている場合 ホストはディスクリプタを所有しています この場合 内部の DMA コントローラはサスペンド状態に入り Descriptor Unable 割り込みをアサートします 次に ホストは ディスクリプタ OWN ビットを 1 に設定し pldmnd レジスタに任意の値を書き込むことにより DMA コントローラを解放する必要があります 5. ホストは dbaddr レジスタにディスクリプタ ベース アドレスを書き込む必要があります 6. 内部 DMA コントローラは rintsts レジスタでの Command Done(CD) ビットが 1 に設定されるまで待機します ( コマンド BIU からエラーなし ) この状態は 転送を実行することができることを示します 7. 内部 DMA コントローラ エンジンは BIU から DMA インタフェース要求を待機します BIU は 小さなチャンクに各転送を分割します 各チャンクは DMA への内部要求です この要求は 受信スレッショルドに基づいて生成されます

58 8. 内部 DMA コントローラは FIFO バッファからデータをフェッチし システム メモリにデータを転送します 9. データが複数のディスクリプタをまたがるとき 内部 DMA コントローラは次のディスクリプタをフェッチし 次のディスクリプタを使用して 動作を続けます ディスクリプタでの Last Descriptor ビットは データが複数のディスクリプタをまたがるかどうかを示します 10. データ送信が完了すると ステータス情報が有効な場合 TI ビットを 1 に設定することにより idsts レジスタで更新されます また OWN ビットは ディスクリプタの DES0 フィールドを更新することによって DMA コントローラで 0 に設定されます この項では 一時的にコントローラと SDIO カード デバイス間の転送を停止するためのコマンドについて説明します SDIO カードの場合 I/O 機能とコントローラ間のデータ転送は一時的に SUSPEND コマンドを使用して停止させることができます この機能は他の機能との優先度の高いデータ転送を実行するために必要になることがあります 所望される場合 中断されたデータ転送が RESUME コマンドを使用して再開することができます SUSPEND および RESUME 動作は SDIO カードの CCCR 内 (Function 0) の適切なビットに書き込むことによって実装されています CCCR からの読み出すために または CCCR に書き込むために コントローラの IO_RW_DIRECT コマンドを使用してください データ転送を一時停止するには 次のステップを実行します 1. SDIO カードは SUSPEND/RESUME プロトコルをサポートしていることを確認します これは カードの 0x08 オフセットに CCCR の SBS ビットを介して行うことができます 2. 必要な機能番号のデータ転送が処理中であるかどうかをチェックします 現在アクティブになっている機能番号は CCCR の function select ビット (FSX) に反映されます ( すなわち カードの 0x0D オフセットでビット 3:0) 1 アドレス 0xC でのビット 0 の bus status ビット (BS) が 1 の場合 FSx ビットで与えられた唯一のファンクション番号は有効です 3. 転送を一時停止するには アドレス 0xC でのビット 2 の bus release ビット (BR) を 1 に設定します 4. カードのオフセット 0x0C ので CCCR の BR と BS のビットは 0 に設定されるまでポーリングします 現在選択されているファンクションがデータバスを使用すると BS ビットは 1 になります バス リリースが完了するまで BR ビットが 1 のままになります BR と BS のビットが 0 の場合 選択したファンクションからのデータ転送が一時停止されています

59 5. リード データ転送時には コントローラはカードからのデータを待機することができます データ転送がカードから読み出された場合 コントローラは SUSPEND コマンドが正常に完了した後に通知する必要があります 次に コントローラはデータ ステート マシンをリセットし 待機状態を終了します これを達成するために ctrl レジスタの abort read data ビット (abort_read_data) を 1 に設定します 6. dto ビットが rintsts レジスタが 1 に設定されるまでポーリングすることにより データ処理が完了するまで待機します 転送する保留バイトの数を決定するために コントローラの転送 CIU カード バイト カウント (tcbcnt) レジスタを読み出します 合計転送サイズからこの値を減算します 適切に転送を再開するには この番号を使用します データ転送を再開するには 次のステップを実行します 1. カードが転送状態 ( データ転送ためにバスが余裕であることを確認する ) でないことをチェックします 2. カードが切断状態になっている場合 SD/SDIO SELECT/DESELECT_CARD コマンドを使用して選択します カード ステータスは IO_RW_DIRECT または IO_RW_EXTENDED コマンドに応答して取得することができます 3. 再開されるファンクションは データ転送の準備ができていることを確認します カードのオフセット 0x0F で CCCR に対応する RF<n> フラグを読み出すことで この状態を決定します RF<n> = 1 の場合 このファンクションは データ転送に進行することができます ページの 参考資料 で説明したように RF<n> フラグについて詳しくは SDIO Simplified Specification Version 2.00 を参照してください 4. 転送を再開するには CCCR での FSX ビットで ファンクション番号を書き込むために IO_RW_DIRECT コマンドを使用します ( すなわち カードのオフセット 0x0D でのビット 3:0) IO_RW_DIRECT コマンドのためにコマンド引数を形成し cmdarg レジスタに書き込みます ビット値は表 に記載されています 31 R/W flag 1 30:28 Function number CCCR アクセスの場合は 0 27 RAW flag 書き込み後の読み出しは 1 26 Don't care - 25:9 Register address 0x0D 8 Don't care - 7:0 Write data 再開するファンクション番号 5. blksiz レジスタへのブロック サイズの値を書き込みます データは このブロック サイズ単位で転送されます

60 6. bytcnt レジスタにバイト カウント値を書き込みます 転送される残りのバイトのデータの合計サイズを指定します それは データを処理するソフトウェアの責任です 転送するバイトが保留の数を決定するために 転送 CIU カード バイト カウント レジスタ (tcbcnt)) を読み出します 転送する保留バイトの数を計算するには 合計転送サイズからこの値を減算します 7. ロック転送の動作と同様に cmd レジスタを書き込みます cmd レジスタが書き込まれている場合 コマンドが送信され この関数は データ転送を再開します 詳細については ページの シングル ブロック リードまたはマルチ ブロック リード および ページの シングル ブロック ライトまたはマルチ ブロック ライト を参照してください 8. SDIO カード デバイスの再開データ フラグ (DF) を読み出します 次のように DF フラグを解釈します DF=1 この関数は 転送用データがあり すぐに関数またはメモリが再開されると データ転送を開始します DF=0 この関数は 転送用のデータがありません データ転送が読み出した場合 コントローラは データを待機します データ タイムアウト期間の後に データ タイムアウト エラーを発行します - Read_wait は SDIO カードでのみ使用されます これは 一時的に機能やメモリのいずれかから データ転送をストールし ホストが SDIO カード デバイス内の任意の関数にコマンドを送信することができます ホストがいる限り 必要に応じて この転送を停止させることができます コントローラはカードにこのストールの転送を通知する機能を提供します ストールを通知するために 次のステップを実行します 1. カードは CCCR のオフセット 0x8 でのビット 2 の SDIO カードの SRW ビットを読み出すことで read_wait 機能をサポートしているか確認します 2. このビットが 1 の場合 カード内のすべての関数は read_wait 機能をサポートしています このビットを読み出すためのコマンドを IO_RW_DIRECT SD/SDIO を使用します 3. カードが read_wait 信号をサポートしている場合 ctrl レジスタの read wait ビット (read_wait) を 1 に設定することでアサートします 4. ctrl レジスタ 0 に read_wait ビットをリセットします - この項では CE-ATA のデータ転送コマンドについて説明します 異なる条件で生成された基本的な設定と割り込みについて詳しくは ページの データ転送コマンド を参照してください いずれの CE-ATA の動作を開始する前に ホストは MMC リセットと初期化ステップを実行する必要があります ホストとデバイスは カードが MMC TRAN 状態に入る前に MMC 転送 (MMC TRAN) 状態をネゴシエートする必要があります

61 f MMC TRAN 状態および MMC のリセットと初期化については ページの 参考資料 に説明されるように JEDEC 規格番号 84-A441 をご参照ください ホストは MMC TRAN の状態をネゴシエートするために既存の MMC ディスカバリの手順に従う必要があります 通常の MMC のリセットと初期化ステップを完了すると ホストは RW_REG または CMD39 コマンドを使用して初期 ATA のタスク ファイルの値を照会する必要があります デフォルトでは MMC のブロック サイズは 512 バイトであり CE-ATA カード デバイス内の srccontrol レジスタ ビットで示されています ホストは 1KB または 4KB の MMC ブロック サイズの使用を交渉することができます カードは MMC に srccapabilities レジスタを通してサポート可能な MMC のブロック サイズを示し ホストはこれが MMC のブロック サイズを交渉するためにレジスタを読み出します ホスト コントローラは カードの srccontrol レジスタの 1:0 ビットに MMC のブロック サイズを書き込むと 交渉は完了です ATA のタスク ファイル レジスタは MMC レジスタ スペースで 0x10h を通してアドレス 0x00h をにマッピングされます RW_REG コマンドは ATA コマンドを発行するために使用され ATA のタスク ファイルは 単一の RW_REG MMC コマンドシーケンスで送信されます ホスト ソフトウェア スタックは コントローラ内 cmdarg と cmd のレジスタを設定する前に FIFO バッファにタスク ファイル イメージを作成する必要があります ホスト プロセッサは cmd レジスタ ビットを設定する前に cmdarg レジスタへのアドレスとバイト数を書き込みます RW_REG コマンドでは CE-ATA カード デバイスからの CCS がありません このコマンドは CE-ATA カード デバイスとコントローラ間のデータ転送を必要とします データ コマンドを送信するには コントローラがコマンド引数 合計データ サイズ およびブロック サイズを必要とします ソフトウェアは FIFO バッファを介してデータを受信または送信します ATA のタスク ファイル転送 ( 読み出しまたは書き込み ) を実装するには 次のステップを実行します 1. bytcnt レジスタへのバイト単位のデータ サイズを書き込みます コントローラはシングル ブロック転送を想定しているため bytcnt は ブロック サイズと等しくなければなりません 2. blksiz レジスタへのバイト単位のブロック サイズを書き込みます 3. レジスタ アドレスの先頭で cmdarg レジスタに書き込みます

62 表 ~ 表 に従って cmdarg cmd blksiz および bytcnt レジスタを設定する必要があります 31 1 または 0 読み出し動作のために 0 に設定し また書き込み動作のために 1 に設定さします 30:24 0 予約済み ( ビットはホストプロセッサで 0 に設定 ) 23:18 0 リードまたはライトのためのレジスタ アドレスの開始 (DWORD 揃え ) 17:16 0 レジスタ アドレス (DWORD 揃え ) 15:8 0 予約済み ( ビットはホスト プロセッサによって 0 に設定される ) 7:2 16 リードまたはライトのバイト数 (DWORD の整数 ) 1:0 0 バイト数 (DWORD の整数の単位で ) start_cmd 1 - ccs_expected 0 CCS が期待されません read_ceata_device 0 または 1 RW_BLK または RW_REG リードの場合は 1 に設定 update_clk_regs_only 0 クロック パラメータの更新コマンドがない card_num 0 - send_initialization 0 初期化シーケンスがない stop_abort_cmd 0 - send_auto_stop 0 - transfer_mode 0 read_write 1 または 0 ブロック転送モード ブロック サイズとバイト カウントが読み出しと書き込みバイト数と一致する必要があります ライトの場合は 1 リードの場合は 0 data_expected 1 データが期待されます response_length 0 - response_expect 1 - cmd_index コマンド インデックス このパラメータはコマンド番号に設定します 例えば SD/SDIO WRITE_BLOCK (CMD24) の場合に 24 に設定し WRITE_MULTIPLE_BLOCK (CMD25) の場合に 25 に設定します

63 wait_prvdata_complete 1 check_response_crc 1 すぐにコマンドを送信する場合は 0 以前の DTO 割り込み後にコマンドを送信する場合は 1 応答 CRC をチェックしていない場合は 0 応答 CRC をチェックする場合は 1 31:16 0 予約ビットは 0 に設定されます 15:0 (block_size) 16 タスク全体ファイル (16 8 ビット レジスタ ) にアクセスするためです 16 バイトのブロック サイズです 31:0 16 タスク全体ファイル (16 8 ビット レジスタ ) にアクセスするためです 16 のバイト数は 16 に設定されたブロック サイズと使用されています このコマンドは CE-ATA カード デバイスとコントローラ間のデータ転送を必要とします データ コマンドを送信するには コントローラがコマンド引数 合計データ サイズ およびブロック サイズを必要とします ソフトウェアは FIFO バッファを介してデータを受信または送信します ATA のペイロード転送 ( 読み出しまたは書き込み ) を実装するには 次のステップを実行します 1. bytcnt レジスタへのバイト単位のデータ サイズを書き込みます 2. blksiz レジスタへのバイト単位のブロック サイズを書き込みます コントローラは 単一 / 複数のブロック転送を期待しています 3. データ単位数を示すためにレジスタ cmdarg に書き込みます

64 表 ~ 表 に従って cmdarg cmd blksiz および bytcnt レジスタを設定する必要があります 31 1 または 0 30: : :8 7:0 データ カウント データ カウント 読み出し動作のために 1 に設定し 書き込み動作のために 1 に設定します 予約済み ( ビットはホスト プロセッサによって 0 に設定される ) 予約済み ( ビットはホストプロセッサで 0 に設定される ) Data Count Unit [15:8] Data Count Unit [7:0]

65 start_cmd 1 - ccs_expected 1 read_ceata_device 0 または 1 CCS が期待されています 割り込みが (CE-ATA カード デバイスでイネーブルされる場合 RW_BLK コマンドの 1 に設定します nien ビットは ATA コントロール レジスタを 0 に設定されている ) RW_BLK または RW_REG リード コマンドを 1 に設定します update_clk_regs_only 0 クロック パラメータの更新コマンドがありません card_num 0 - send_initialization 0 初期化シーケンスがありません stop_abort_cmd 0 - send_auto_stop 0 - transfer_mode 0 ブロック転送モードです バイト カウントは 4kB の整数倍でなければなりません ブロック サイズは 512 1K または 4k バイトです read_write 1 または 0 書き込みの場合は 1 読み出しの場合は 0 です data_expected 1 データが期待されています response_length 0 - response_expect 1 - cmd_index wait_prvdata_complete 1 check_response_crc 1 コマンド インデックス このパラメータはコマンド番号に設定します 例えば SD/SDIO WRITE_BLOCK (CMD24) の場合に 24 に設定し WRITE_MULTIPLE_BLOCK (CMD25) の場合に 25 に設定します すぐにコマンドを送信する場合は 0 以前の DTO 割り込み後にコマンドを送信する場合は 1 応答 CRC をチェックしていない場合は 0 応答 CRC をチェックする場合は 1 31:16 0 予約ビットは 0 に設定します 15:0 (block_size) または 4096 MMC のブロック サイズは ホストによって交渉されるように または 4096 バイトです

66 - 31:0 <n>*block_size バイト数は ブロックサイズの整数倍でなければなりません ATA メディアアクセスコマンドでは バイト カウントは 4 キロバイトの倍数でなければなりません (<N>* ブロックサイズ =<X>* 4 KB <N> と <x> は整数 ) この項では CCS のディセーブル CCS のタイムアウト後のリカバリ および I/O リード トランスミッション遅延 (N ACIO ) のタイムアウトを説明しています 未処理の RW_BLK コマンドの CCS を待っている間に ホストは CCSD のコマンドを送信することにより CCS をディセーブルすることができます CCSD コマンドを送信 send_ccsd ビットがコントローラの ctrl レジスタの 1 に設定されている場合 コントローラは CE-ATA カード デバイスに CCSD のコマンドを送信します このビットは 応答が RW_BLK コマンドに対して受信された後でのみ設定することができます 内部 STOP コマンドを送信 CCSD パターンを送信した後 内部で生成された SD/SDIO STOP_TRANSMISSION(CMD12) コマンドを送信します コントローラは CCSD パターンを送信するように設定されているときに ctrl レジスタの send_auto_stop_ccsd ビットが 1 に設定されている場合 コントローラは CMD ピンに内部で生成される STOP コマンドを送信します STOP コマンドを送信した後 コントローラは rintsts レジスタの acd ビットを 1 に設定します CCS を待っている間にタイムアウトが発生した場合 ホストは保留中の ATA コマンドを中止するために CCSD のコマンド そして STOP コマンドを送信する必要があります ホストは CCSD パターンを送信した後 内部で生成される STOP コマンドを送信するようにコントローラを設定することができます CCSD のコマンドを送信 ctrl レジスタの send_ccsd ビットを 1 に設定します 外部 STOP コマンドを送信 CE-ATA カード デバイスとコントローラ間のデータ転送を終了します STOP コマンドを送信する方法の詳細については ページの 停止および中止コマンドの送信 を参照してください 内部 STOP コマンドを送信 内部で生成される STOP コマンドを送信することをコントローラに指示する ctrl レジスタの send_auto_stop_ccsd ビットを 1 に設定します STOP コマンドを送信した後 コントローラは rintsts レジスタの acd ビットを 1 に設定します send_auto_stop_ccsd ビットが send_ccsd ビットを設定すると同時に 1 に設定する必要があります I/O は CE-ATA カード デバイスにリード トランスミッション遅延 (N ACIO ) タイムアウトが発生した場合 タイムアウトからリカバリするには 次のいずれかのステップを実行します

67 CCS は CE-ATA カード デバイス (cmd レジスタの ccs_expected ビットが 1 に設定されていること ) から期待されている場合 ページの CCS のタイムアウト後のリカバリ でのステップに従ってください CCS は CE-ATA カード デバイスから期待されていない場合 次のステップを実行します a. 外部 STOP コマンドを送信します b. コントローラおよび CE-ATA カード デバイス間のデータ転送を終了します CE-ATA カード デバイスは 縮小した ATA コマンドのサブセットをサポートすることが必要です IDENTIFY DEVICE コマンドは デバイス固有の情報と機能について説明するホストに 512 バイトのデータ構造体を返します MMC のブロック サイズが 512 バイトに設定されている場合にのみ ホストは IDENTIFY DEVICE コマンドを発行します 他の MMC のブロック サイズは不定結果を持っています ホストは ATA コマンドの RW_REG コマンドを発行し データは RW_BLK コマンドを使用して取得されます ホスト コントローラは IDENTIFY DEVICE の ATA コマンドの RW_REG コマンドの送信中に次の設定を使用しています cmd レジスタ設定 : data_expected ビットは 0 に設定 cmdarg レジスタ設定 : ビット [31] は 0 に設定 ビット [7:2] は 128 に設定 すべてのほかのビットは 0 に設定 タスク ファイル設定 ATA タスク ファイルのコマンド フィールドは 0xEC に設定 タスク ファイルの予約したフィールドは 0 に設定 blksiz レジスタの bytcnt レジスタおよび block_size フィールド : 16 に設定 ホスト コントローラは データ検索 (RW_BLK コマンド ) のために以下の設定を使用しています cmd レジスタ設定 : ccs_expected は 1 に設定 data_expected は 1 に設定 cmdarg レジスタ設定 : ビット [31] が 0( リード動作 ) に設定 ビット [15:0]1( データ ユニット数 =1) に設定 他のすべてのビットを 0 に設定

68 blksiz レジスタの bytcnt レジスタおよび block_size フィールド : 512 に設定 READ DMA EXT コマンドは Data-In のデータ転送プロトコルを使用してカード デバイスからのデータのロジカル ブロック数を読み出します ホストは データ転送のために ATA コマンドと RW_BLK コマンドを発行する RW_REG コマンドを使用しています WRITE DMA EXT コマンドは Data-Out データ転送プロトコルを使用して カード デバイスへのデータのロジカル ブロック数を書き込みます ホストは データ転送のために ATA コマンドと RW_BLK コマンドを発行する RW_REG コマンドを使用しています この ATA コマンドは直ちに依然として内部デバイスコンテキストを保持する最も積極的な電力管理モードに入るようにカード デバイスを引き起こします このコマンドにはデータ転送 (RW_BLK) が期待されていません 省電力モードを提供していないカード デバイスの場合 STANDBY IMMEDIATE コマンドが成功したステータスを示す値を返します ホストは ATA コマンドのための RW_REG コマンドを発行し ステータスは SD/SDIO CMD39 または RW_REG コマンドで取得されます ATA タスク ファイルドのステータス フィールドにのみ成功のステータスが含まれ エラー ステータスが存在しません STANDBY IMMEDIATE ATA コマンドの RW_REG コマンドの送信中にホスト コントローラは 次の設定を使用します cmd レジスタの設定 : data_expected ビットは 0 に設定 cmdarg レジスタの設定 : ビット [31] は 0 に設定 ビット [7:2] は 4 に設定 0 他のすべてのビットは 0 に設定 タスク ファイルドの設定 : ATA タスク ファイルドのコマンド フィールドは 0xEA に設定 タスク ファイルドの予約したフィールドは 0 に設定 blksiz レジスタの bytcnt レジスタおよび block_size ファイルド :16 に設定 書き込まれたデータをバッファとキャッシュするカード デバイスの場合 FLUSH CACHE EXT コマンドは バッファされたデータがカード メディアに書き込まれることが保証されます 書き込まれたデータをバッファリングしていないカードの場合 FLUSH CACHE EXT コマンドが成功ステータスを返します この ATA コマンドにはデータ転送 (RW_BLK) が期待されていません ホストは ATA コマンドの RW_REG コマンドを発行し ステータスは SD/SDIO CMD39 または RW_REG コマンドで取得されます ATA タスク ファイルのステータス フィールド以外のフィールドが有効である場合 この ATA コマンドのエラー状態が存在する場合があります

69 ホスト コントローラは STANDBY IMMEDIATE ATA コマンドの RW_REG コマンドの送信中に次の設定を使用します cmd レジスタの設定 : data_expected ビットは 0 に設定 cmdarg レジスタの設定 : ビット [31] は 0 に設定 ビット [7:2] は 4 に設定 0 他のすべてのビットは 0 に設定 タスク ファイルドの設定 : ATA タスク ファイルドのコマンド フィールドは 0xEA に設定 タスク ファイルドの予約したフィールドは 0 に設定 blksiz レジスタの bytcnt レジスタおよび block_size ファイルド :16 に設定 アプリケーションがシングルまたはマルチのブロック リード コマンドを実行する必要がある場合 アプリケーションは card read threshold フィールド (cardrdthreshold) で適切なカード リード スレッショルド サイズで cardthrctl を設定し cardrdthren ビットを 1 に設定する必要があります コントローラで指定されたこの追加情報は RX FIFO バッファに使用できるカード コントローラがリード スレッショルドに等しいスペースがある場合のみ リード コマンドを送信することを保証します これにより カード クロックはデータのブロックがカードから送信される間で停止されていないことを保証します カード コントローラがカード クロックをイネーブルする前に 最小の RX FIFO バッファ内の一つのブロック サイズのスペースがあることを保証するには 転送のブロック サイズにカード リード スレッショルドを設定します リード カード スレッショルドは ラウンド トリップ遅延が sdmmc_clk_divided の半分より大きいときに必要とされます 1. データ リード コマンドのための cmd レジスタを設定する前に cardthrctl レジスタを設定する必要があります 2. データ転送コマンドが進行している間 cardthrctl レジスタを設定することはできません 3. cardthrctl レジスタの cardrdthreshold フィールドはシングルまたはマルチ ブロック転送の少なくともブロック サイズに設定する必要があります リード転送のブロック サイズより大きい またはリード転送のブロック サイズと等しい cardrdthreshold フィールドの設定は カード クロックがデータのブロックの途中で停止しないことを保証します 4. ラウンド トリップ遅延がカード クロック周期の半分より大きい場合 データのブロックの途中で停止しないことを保証するために カード リード スレッショルドをイネーブルし カード スレッショルドがガイドライン 3 に従って設定する必要があります

70 5. cardrdthreshold フィールドが転送ブロック サイズ未満に設定されている場合 ホストはリード転送中に受信 FIFO バッファがオーバーフローしないことを確認する必要があります オーバーフローは停止するコントローラからカード クロックを引き起こす可能性があります コントローラは カード クロックがリード転送中に停止しないことを保証することができません 1 cardthrctl レジスタの cardrdthreshold フィールド および fifoth レジスタの rx_wmark と dw_dma_multiple_transaction_size フィールドが正しく設定されていない場合 カード クロックはコントローラによって生成された割り込みなしで無期限に停止します SDHC や SDXC などのほとんどのカードは カードで指定されるブロック サイズ または 512 バイトに固定されるブロック サイズをサポートしています 部分ブロック リード ( カード デバイスの CSD レジスタに READ_BL_PARTIAL を 1 に設定する ) をサポートする SDIO MMC および標準的なキャパシティ SD カードについては ブロック サイズは可変であり アプリケーションによって選択することができます カード リード スレッショルド機能を効果的に使用するには またカード クロックがカードから読み出されるデータのブロックの途中で FIFO Full 状態の停止しないことを保証するために 次のステップに従います 1. 4 バイトの倍数であるブロック サイズを選択します 2. カード リード スレッショルド機能をイネーブルします 所与の転送のためのブロック サイズより小さい場合 または FIFO バッファの全深さに等しい場合にのみ カード リード スレッショルドドをイネーブルすることができます ( ブロック サイズ / 4) カード リード スレッショルドを選択します ( ブロック サイズ / 4) 512 の場合 バイトで cardrdthreshold ( ブロック サイズ / 4) の cardrdthreshold を選択します ( ブロック サイズ / 4) < 512 の場合 バイトで cardrdthreshold ( ブロック サイズ / 4) の cardrdthreshold を選択します 4. DMA トランザクションを構成する転送数に fifoth レジスタでの dw_dma_multiple_transaction_size フィールドを設定します 例えば サイズ =1 とは 4 バイトが移動されることを意味します 指定できるサイズは および 256 の転送です 値 ( ブロック サイズ /4) が均等に分割されるように サイズを選択します

71 5. 1 サイズに fifoth レジスタの rx_wmark フィールドを設定します 例えば ブロック サイズが 512 バイトである場合 dw_dma_multiple_transaction_size と rx_wmark の正当な値は 表 に記載されています この項では カード リード スレッショルドをプログラムする方法の例を示しています 4 の倍数 (FIFO 位置あたりのバイト数 ) および 4096 より小さい (1024 FIFO 位置 ) ブロック サイズを選択してください 例えば 3072 バイトのブロック サイズは 3072/4 = 768 FIFO の位置ですので 合法です DMA モードの場合 ブロック サイズがサイズの倍数になるように サイズを選択します 例えば サイズ = 128 ブロック サイズ = 0 rx_wmark フィールド = サイズ 1 を設定します 例えば rx_wmark フィールド = 128 から 1 = 127 ブロック サイズ > ½ FifoDepth のため ブロック サイズに cardrdthreshold フィールドを設定します 例えば cardrdthreshold フィールド = 3072 バイト SIZE = 128 FIFO Locations Read Data to Host 256 FIFO Locations Unfilled During One Block Read Data Read from Card Block Size = cardrdthreshold = 768 One Block of Data Filled 768 FIFO Locations FIFO Depth = 1,024 rx_wmark = 127 FIFO Locations

72 この項では エラーを処理する割り込みを使用する方法について説明します パワーオンまたはリセットでは 割り込みが (ctrl レジスタの int_enable ビットが 0 に設定されている ) ディセーブルされ そしてすべての割り込みが (intmas レジスタ デフォルトは 0) マスクされます コントローラのエラー処理は エラーは 次の種類が含まれています 応答およびデータ タイムアウト エラー 応答タイムアウトの場合 ホスト ソフトウェアは コマンドを再試行できます データ タイムアウトの場合 コントローラはカードからのデータ スタート ビットを受信していないため ソフトウェアは再び全体のデータ転送を再試行するか または指定されたブロック以降から再試行できます 次に tcbcnt レジスタの内容を読み出すことによって ソフトウェアはにコピーされずに残っているバイト数 ( リード ) を決定することができます 応答エラー エラーは応答受信中に受信したとき 1 に設定されます 受信した応答が無効な場合 ソフトウェアは コマンドを再試行することができます データ エラー データ受信エラーが発生したときに 1 に設定します データ受信エラーの例としては以下に表示されます データ CRC スタート ビットが見つかりません エンド ビットが見つかりません これらのエラーは 任意のブロックで発生することができます エラーを受信すると ソフトウェアは SD/SDIO STOP または SEND_IF_COND コマンドを発行すること また全体のデータまたは一部のデータのいずれかのためにコマンドを再試行することができます

73 ハードウェア ロック エラー コントローラがソフトウェアによって発行されたコマンドをロードできない場合 1 に設定します ソフトウェアは cmd レジスタの start_cmd ビットを 1 に設定すると コントローラはコマンドをロードしようとします コマンド バッファがすでにコマンドが含まれている場合 このエラーが発生し 新しいコマンドが破棄され ソフトウェアがコマンドをリロードする必要があります FIFO バッファのアンダーラン / オーバーラン エラー FIFO バッファがフルであり ソフトウェアが FIFO バッファにデータを書き込もうとする場合 オーバーラン エラーが設定されています 逆に FIFO バッファが空である場合 ソフトウェアが FIFO バッファからデータを読み出そうとする場合 アンダーラ ンエラーが設定されています FIFO バッファ内のデータを読み込みまたは書き込みする前に ソフトウェアは status レジスタ内の FIFO buffer empty ビット (fifo_empty) または FIFO buffer full ビット (fifo_full) を読み出す必要があります ホスト タイムアウトによるデータ飢餓 ソフトウェアがコントローラに追いつくのに十分な FIFO バッファが高速なサービスがない場合 この状態が発生します この状態で また読み出し転送が進行中の場合 ソフトウェアは 次のデータ受信のためにスペースを生成する FIFO バッファからのデータを読み出す必要があります 送信動作が進行中である場合 ソフトウェアは コントローラがカードにデータを書き込むことができるように FIFO バッファを埋めるためにデータを書き込む必要があります CE-ATA エラー コマンドでの CRC エラー CRC エラーがコマンドを検出した場合 CE-ATA カード デバイスは 応答を送信しなく 応答タイムアウトがコントローラから期待されています ATA 層は MMC トランスポート層のエラーが発生したことを通知されます ライト動作 カード デバイスに通知される任意の MMC 輸送層エラーは する卓越した ATA コマンドを終了させる可能性があります ERR ビットは ATA のステータス レジスタに設定され 適切なエラー コードは ATA カード デバイスに Error Register( エラー ) に送信されます CE-ATA カード (ATA コントロール レジスタの nien ビット ) のデバイス割り込みビットが 0 に設定されている場合 CCS がホストに送信されます デバイス割り込みビットが 1 に設定されている場合 ホスト コントローラが継続の転送を中止しない場合 カード デバイスは 全体のデータ ユニット カウントを完了します 1 ネガティブ CRC 状態がカード デバイスから受信された場合 マルチ ブロックのデータ転送中に データ パスは rintsts レジスタの dcrc ビットを 1 に設定することにより BIU へのデータの CRC エラーを通知します データ送信は すべてのバイトが送信されるまで継続されます リード動作 MMC トランスポート層のエラーがホスト コントローラが検出された場合 ホストがエラー状態で ATA コマンドを完了します ホスト コントローラはリード転送を中止には CCSD コマンド そして STOP_TRANSMISSION(CMD12) コマンドを発行できます ホストは データ転送を中断しなくても全体のデータ ユニット数バイトを転送することができます

74 この項では emmc のと MMC ブート動作のためのコントローラを設定する方法について説明します コントローラは CMD ラインを押しながら MMC4.3 MMC4.4 からブートし MMC4.41 カードができます f このブート方法の詳細については ページの 参考資料 で参照として 以下の仕様を参照してください JEDEC Standard No. 84-A441 JEDEC Standard No. 84-A44 JEDEC Standard No. JESD84-A43 図 には emmc のカード デバイスのブート動作を実行するステップを示します 詳細なステップは フロー チャートに記述されています Start Step 1 Step 2 to Step 10 expect_boot_ack = 1 expect_boot_ack = 0 Step 11 Step 12 No Start Pattern Start Pattern & No Boot Data Received Start Pattern & Boot Data Received No Boot Data Received Boot Data Received Step 11.a Step 11.b Step 11.c Step 12.a Step 12.b Successfully Received Boot Data Step 11.f N AC Timeout Successfully Received Boot Data Stop

75 1. ソフトウェア ドライバは 次のチェックを実行します emmc のカード デバイスは ブート動作をサポートしている場合 (BOOT_PARTITION_ENABLE ビットは emmc カードの EXT_CSD レジスタ 1 に設定される ) EXT_CSD レジスタの BOOT_SIZE_MULT と BOOT_BUS_WIDTH 値は ブート動作中に使用される 2. ソフトウェアには 次のビットを設定します intmask レジスタ 0 に適切なビットを設定することで 割り込みのマスクを設定します ctrl レジスタのグローバル int_enable ビットを 1 に設定します ctrl レジスタの他のビットは 0 に設定する必要があります 1 アルテラは INT_ENABLE ビットを設定する前に 保留中の割り込みをクリアするために rintsts レジスタと idsts レジスタに 0xFFFFFFFF を書き込むことを推奨します 内部 DMA コントローラ モードの場合 ソフトウェア ドライバは idinten レジスタのすべての関連するフィールドのマスクを解除する必要があります 3. ソフトウェア ドライバは 受信した起動データを転送するために内部 DMA コントローラを使用する必要がある場合 それは以下のステップを実行する必要があります ページの 内部 DMA コントローラの送信シーケンス および ページの 内部 DMA コントローラの受信シーケンス に記載されているようにディスクリプタを設定します ctrl レジスタの use_internal_dmac ビットを 1 に設定します 4. clkdiv レジスタを使用して 400 khz にカード デバイスの周波数を設定します 詳細については ページの クロックのセットアップ を参照してください 5. カード デバイス総アクセス時間の N AC に等しい tmout にレジスタの data_timeout フィールドを設定します 6. blksiz レジスタを 0x200 番地 (512 バイト ) に設定ます 7. カード デバイスでの BOOT_SIZE_MULT 値によって示されるように 128 KB の倍数に bytcnt レジスタを設定します 8. fifoth レジスタの rx_wmark フィールドを設定します 典型的には スレッシュホールドは FIFO バッファの深さの半 (512) に設定することができます

76 9. cmd レジスタの次のフィールドを設定します start_cmd= 1 を設定することにより コマンドを開始します Enable boot(eenable_boot)= 1 Expect boot acknowledge(expect_boot_ack) start-acknowledge pattern がカード デバイスから期待されている場合 expect_boot_ack を 1 に expect_boot_ack を設定します start-acknowledge pattern がカード デバイスから期待されていない場合 expect_boot_ack を 0 に設定します Card number(card_number)=0 data_expected = 1 cmd レジスタ ビットの残りを 0 にリセットします 10. start-acknowledge pattern がカード デバイスから期待されていない (expect_boot_ack が 0 に設定されている ) 場合 ステップ 12 に進みます 11. このステップでは start-acknowledge pattern が期待されるケースを処理します ( ステップ 9 で expect_boot_ack が 1 に設定された場合 ) a. Boot ACK Received 割り込みがコマンド ( ステップ 9) を開始する 50 ms 内でコントローラから受信されていない場合 ソフトウェア ドライバは 次の cmd レジスタ フィールドを設定する必要があります start_cmd = 1 ディセーブル ブート (disable_boot)= 1 card_number = 0 他のすべてのフィールド = 0 コントローラは カード インタフェースの CMD ピンをディアサートした後 Command Done 割り込みを生成します 内部 DMA コントローラ モードがブート プロセスのために使用される場合 コントローラは Boot ACK Received タイムアウトの後に次のステップを実行します DMA ディスクリプタを閉じます Boot ACK Received タイムアウトを示す idsts レジスタの ces ビットを設定します idsts レジスタの ri ビットは設定しません

77 b. Boot ACK Received 割り込みが受信された場合 ソフトウェア ドライバは idsts レジスタの ces ビットに 1 を書き込むことによってこの割り込みをクリアする必要があります Boot ACK Received 割り込みの 0.95 秒以内に Boot Data Start 割り込みはコントローラから受信しなければなりません これが発生しない場合 ソフトウェア ドライバは次の cmd レジスタ フィールドを書き込む必要があります start_cmd = 1 disable_boot = 1 card_number = 0 他のすべてのフィールド = 0 コントローラは カード インタフェースの CMD ピンをディアサートした後 Command Done 割り込みを生成します 内部 DMA コントローラ モードがブート プロセスのために使用される場合 コントローラは Boot ACK Received タイムアウトの後に次のステップを実行します DMA ディスクリプタを閉じます Boot Data Start タイムアウトを示す idsts レジスタの ces ビットを設定します idsts レジスタの ri ビットは設定しません c. Boot Data Start 割り込みが受信した場合 ブート データがカード デバイスから受信されていることを示しています DMA エンジンが内部 DMA コントローラ モードでない場合には ソフトウェア ドライバは rintsts レジスタで rxdr 割り込みビットに基づいてコントローラから読み出したデータを開始することができます 内部 DMA コントローラ モードでは DMA エンジンは fifoth レジスタの rx_wmark フィールドに設定されたレベルに到達するとすぐにシステム メモリに FIFO バッファからデータの転送を開始します カードから正常に起動データ転送の終了時に 以下の割り込みが生成されます rintsts レジスタでの cmd ビットと dto ビット 内部 DMA コントローラ モードのみの idsts レジスタの ri ビット d. エラーがブート ACK パターン (0b010) で発生した場合 または EBE が発生した場合 : コントローラは High に CMD ラインをプルアップすることによりブート プロセスを自動的に中止します コントローラは Command Done を生成します コントローラは Boot ACK Received 割込みを発生しません アプリケーションはブート転送を中止します e. 内部 DMA コントローラ モードでは : ソフトウェア ドライバは 受信したブート データが必要とする以上のディスクリプタを作成した場合 余分なディスクリプタは コントローラ

78 によって閉じられません それらが閉じられるまでソフトウェアがディスクリプタを再利用することはできません ソフトウェア ドライバは 受信したブート データが必要とするより少ないディスクリプタを作成する場合 コントローラは Descriptor Unavailable 割り込みを発生し システム メモリへのデータを転送しません f. N AC がデータ ブロック転送間に違反している場合 DRTO 割り込みがアサートされます 開始ビットまたは終了ビットに関連付けられたエラーがある場合に加えて SBE または EBE 割り込みも生成されます emmc のカード デバイスのブート動作が完了です 残りのステップ (12) を実行しないでください

79 12. このステップは start-acknowledge が予想されていないケース ( ステップ 9 で expect_boot_ack は 0 に設定した ) を処理します a. コマンド ( ステップ 9) を開始する 1 秒以内にコントローラから Boot Data Start 割り込みが受信されない場合 ソフトウェア ドライバは 次のフィールドと cmd レジスタを書き込む必要があります start_cmd = 1 disable_boot = 1 card_number = 0 他のすべてのフィールド = 0 コントローラは カードの CMD ラインをデアサートした後 Command Done 割り込みを生成します 内部 DMA コントローラ モードでは ディスクリプタが閉じられ idsts レジスタの ces ビットが Boot Data Start タイムアウトをスタート示すために 1 に設定されています b. Boot Data Start 割り込みを受信した場合 ブート データがカード デバイスから受信されていることを示しています DMA エンジンが内部 DMA コントローラ モードでない場合 ソフトウェア ドライバは rintsts レジスタでの rxdr 割り込みビットに基づいてコントローラからの読み出したデータを開始することができます 内部 DMA コントローラ モードでは DMA エンジンは fifoth レジスタの rx_wmark フィールドで指定されたレベルに達するとすぐにシステム メモリに FIFO バッファからデータの転送を開始します カードから正常にブート データ転送の終了時に 以下の割り込みが生成されます rintsts レジスタでの cmd ビットおよび dto ビット 内部 DMA コントローラ モードのみの idsts レジスタの ri ビット c. 内部 DMA コントローラ モードでは : ソフトウェア ドライバは 受信したブート データが必要とする以上のディスクリプタを作成した場合 余分なディスクリプタは コントローラによって閉られていません ソフトウェア ドライバは 受信したブート データが必要とするより少ないディスクリプタを作成する場合 コントローラは Descriptor Unavailable 割り込みを発生し システム メモリへのデータを転送しません emmc のカード デバイスのブート動動作が完了です リムーバブル MMC4.3 MMC4.4 および MMC4.41 カードは これらのカードが差し込むときにブート モードの動作をサポートすることを認識していないという点で emmc に関して異なります したがって コントローラは以下を実行する必要があります 1. 最初の MMC4.0/4.1/4.2 カードを発見するように これらのカードを発見します 2. カードの特性を理解します 3. ブート動作を実行するかどうかを決定します

80 これらのカードの場合 ソフトウェア ドライバは 次のステップを実行する必要があります ページの 列挙されたカード スタック に記載されているように カードを発見します 2. カードの EXT_CSD レジスタを読み込み 次のフィールドを調べます BOOT_PARTITION_ENABLE BOOT_SIZE_MULT BOOT_INFO 3. 必要に応じて ソフトウェアがカード内のブート情報を動作することができます f 詳細については ページの 参考資料 に参照されるように以下の仕様の パーティションのブートへのアクセス を参照してください JEDEC Standard No. 84-A441 JEDEC Standard No. 84-A44 JEDEC Standard No. JESD84-A43 4. ホスト プロセッサが次のパワー アップのサイクルでブート動作を実行する必要がある場合 SWITCH_FUNC コマンドを使用して EXT_CSD レジスタの内容を動作することができます 5. このステップの後 ソフトウェア ドライバは pwren レジスタに書き込むことによって カードの電源を切る必要があります 6. ここから ページの emmc のカード デバイスのための代替ブート動作 に記載されているように 同じステップを使用します 代替ブート動作は そのソフトウェアがカードを起動するのではなく カードの CMD ラインを押しする SD/SDIO GO_IDLE_STATE コマンドを使用して 前のブート動作とは異なります 代替ブート動作は BOOT_INFO レジスタのビット 0 が 1 に設定されている場合にのみ実行できます BOOT_INFO は EXT_CSD レジスタ内のオフセット 228 に位置しています f 代替ブート動作の詳細については ページの 参考資料 で参照されるように 以下の仕様を参照してください

81 JEDEC Standard No. 84-A441 JEDEC Standard No. 84-A44 JEDEC Standard No. JESD84-A43 図 に emmc カード デバイスの代替のブート動作を実行するために必要なステップのシーケンスを示します 詳細なステップは フローチャートに記述されています Start Step 1 Step 2 to Step 12 expect_boot_ack = 1 expect_boot_ack = 0 Step 13 Step 15 No Start Pattern Start Pattern & No Boot Data Received Start Pattern & Boot Data Received No Boot Data Received Boot Data Received Step 14.a Step 14.b Step 14.e Step 16.a Step 16.b Successfully Received Boot Data (14.d) Step 14.h NAC Timeout Successfully Received Boot Data (16.d) Stop 1. ソフトウェア ドライバは 次のことを確認します emmc のカード デバイスが代替ブート動作 (BOOT_INFO ビットは emmc のカードに 1 に設定されている ) をサポートしていること カード デバイスでの BOOT_SIZE_MULT と BOOT_BUS_WIDTH 値は ブート プロセス中に使用すること 2. ソフトウェアには 次のビットを設定します intmask レジスタで適切なビットを 0 にリセットすることによって 割り込みのマスクを設定します ctrl レジスタの int_enable ビットを 1 に設定します ctrl レジスタの他のビットは 0 に設定しなければなりません

82 1 保留中の割り込みをクリアするために INT_ENABLE ビットを設定する前に rintsts レジスタおよび idsts レジスタに 0xFFFFFFFF を書き込むことが推奨されています 内部 DMA コントローラ モードでは ソフトウェア ドライバは idinten レジスタのすべての関連するフィールドのマスクを解除する必要があります 3. ソフトウェア ドライバは 受信したブート データを転送するために内部 DMA コントローラを使用する必要がある場合 次のアクションを実行する必要があります ページの 内部 DMA コントローラの送信シーケンス および ページの 内部 DMA コントローラの受信シーケンス に記載されているようにディスクリプタを設定するします trl レジスタの使用内部 DMAC ビット (use_internal_dmac) を 1 に設定します 4. clkdiv レジスタを使用して 400 khz にカード デバイスの周波数を設定します 詳細については ページの クロックのセットアップ を参照してください カード クロックが動作していることを確認します 5. カード インタフェースで少なくとも 74 カード クロック サイクルが発生するまで待ちます 6. カード デバイス総アクセス時間の N AC に等しい tmout レジスタの data_timeout フィールドを設定します 7. 0x200(512 バイト ) に blksiz レジスタを設定します 8. カード デバイスで BOOT_SIZE_MULT の値によって示されるように 128K バイトの倍数に bytcnt レジスタを設定します 9. fifoth レジスタに rx_wmark フィールドを設定します 典型的には 閾値は FIFO バッファの深さの半分 (512) に設定することができます 10. 0xFFFFFFFA に 512 レジスタを設定します 11. 次のフィールドに cmd レジスタを設定することにより コマンドを開始します start_cmd = 1 enable_boot = 1 expect_boot_ack: start-acknowledge パターンがカード デバイスから期待されている場合 expect_boot_ack を 1 に設定します start-acknowledge パターンがカード デバイスから期待されていない場合 expect_boot_ack を 0 に設定します card_number = 0 data_expected = 1 cmd_index = 0 残りの cmd レジスタのビットを 0 に設定します 12. start-acknowledge パターンがカード デバイスから期待されていない場合 (expect_boot_ack を 0 に設定される場合 ) ステップ 15 にジャンプします 13. Command Done 割り込みを待ちます

83 14. このステップでは start-acknowledge パターン (expect_boot_ack はステップ 11 で 1 に設定されていた ) が期待されるケースを処理します a. Boot ACK Received 割り込みがコマンド ( ステップ 11) を開始する 50 ms 内にコントローラから受信されていない場合 スタート パターンが受信されていません ソフトウェア ドライバは ブート プロセスを中止し 通常の回復で開始する必要があります 内部 DMA コントローラ モードがブート プロセスのために使用される場合 コントローラは Boot ACK Received タイムアウト後に次のステップを実行します DMA ディスクリプタがクローズされる idsts レジスタの ces ビットが 1 に設定されている (Boot ACK Received タイムアウトを示す ) idsts レジスタの ri ビットは設定されていない b. Boot ACK Received 割り込みが受信された場合 ソフトウェア ドライバは 1 を書き込むことによってこの割り込みをクリアする必要があります Boot ACK Received 割り込みの 0.95 秒以内に Boot Data Start 割り込みはコントローラから受信しなければなりません これが発生しない場合 ソフトウェア ドライバは ブート プロセスを中止し 通常の探索で開始する必要があります 内部 DMA コントローラ モードは ブート プロセスのために使用される場合 コントローラは Boot ACK Received タイムアウト後に次のステップを実行します DMA ディスクリプタがクローズされる idsts レジスタの ces ビットが 1 に設定されている (Boot Data Start タイムアウトを示す ) idsts レジスタの ri ビットは設定されていない c. Boot Data Start 割り込みを受信した場合 ブート データがカード デバイスから受信されていることを示しています DMA エンジンが内部 DMA コントローラ モードでない場合 ソフトウェア ドライバは rintsts レジスタでの rxdr 割り込みビットに基づいてコントローラからのデータ リードを開始することができます 内部 DMA コントローラ モードでは DMA エンジンは fifoth レジスタの rx_wmark フィールドで指定されたレベルに達するとすぐシステム メモリに FIFO バッファからデータの転送を開始します d. ソフトウェア ドライバは SD/SDIO GO_IDLE_STATE コマンドを送信するようにコントローラに指示することにより ブート プロセスを終了する必要があります cmdarg レジスタを 0 にリセットします cmd レジスタの start_cmd ビットを 1 に設定し そして 他のすべてのビットを 0 に設定します e. カードから正常にブート データ転送の終了時に 以下の割り込みが生成されます rintsts レジスタでの cmd ビットと dto ビット

84 内部 DMA コントローラ モード専用の idsts レジスタの ri ビット f. エラーがブート ACK パターン (0b010) で発生し または EBE が発生した場合 : コントローラは Boot ACK Received 割り込みを生成しません コントローラは Boot Data Start を検出して Boot Data Start 割り込みを生成します コントローラは ブート データを受信し続けます アプリケーションは Boot Data Start 割り込みを受信した後に中断する必要があります g. 内部 DMA コントローラ モードでは : ソフトウェア ドライバが受信したブート データが必要とする以上のディスクリプタを作成した場合 余分なディスクリプタは コントローラによってクローズされていません ソフトウェア ドライバは 受信したブート データが必要とするより少ないディスクリプタを作成する場合 コントローラは Descriptor Unavailable 割り込みが発生し システム メモリへのさらなるデータを転送しません h. N AC がデータ ブロック転送間で違反されている場合 DRTO 割り込みがアサートされます これとは別に スタート 美ビットまたはエンド ビットに関連付けられたエラーがある場合 SBE または EBE 割り込みも生成されます emmc のカード デバイスのための代替ブート動作が完了します 残りのステップを実行しないでください ( ステップ 15 および 16) 15. Command Done 割り込みを待ちます

85 16. このステップは start-acknowledge パターンが期待されない場合を処理します (expect_boot_ack はステップ 11 に 0 に設定されていた ) a. Boot Data Start 割り込みコマンド ( ステップ 11) を開始する 1 秒以内にコントローラから受信されていない場合 ソフトウェア ドライバは ブート プロセスを中止し 通常の回復で開始する必要があります 内部 DMA コントローラ モードでは : DMA ディスクリプタがクローズされる idsts レジスタの ces ビットが 1 に設定されている (Boot Data Start タイムアウトを示す ) idsts レジスタの ri ビットは設定されていない b. Boot Data Start 割り込みを受信した場合 ブート データは カード デバイスから受信されています DMA エンジンが内部 DMA コントローラ モードでない場合 ソフトウェア ドライバは rintsts レジスタで rxdr 割り込みビットに基づいてコントローラからのデータ リードを開始することができます 内部 DMA コントローラ モードでは DMA エンジンは fifoth レジスタの rx_wmark フィールドで指定されたレベルに達するとすぐシステム メモリに FIFO バッファからデータの転送を開始します c. ソフトウェア ドライバは SD/SDIO GO_IDLE_STATE(CMD0) コマンドを送信するようにコントローラに指示することによってブート プロセスを終了する必要があります cmdarg レジスタを 0 にリセットします cmd レジスタの start_cmd ビットを 1 に設定し そして他のすべてのビットを 0 に設定します d. カードから正常にブート データ転送の終了時に 以下の割り込みが生成されます rintsts レジスタでの cmd ビットと dto ビット 内部 DMA コントローラ モードでの idsts レジスタの ri ビット e. 内部 DMA コントローラ モードでは : ソフトウェア ドライバは 受信したブート データが必要とする以上のディスクリプタを作成した場合 余分なディスクリプタは コントローラによってクローズされていません ソフトウェア ドライバは 受信したブート データが必要とするより少ないディスクリプタを作成する場合 コントローラは Descriptor Unavailable 割り込みが発生し システム メモリへのさらなるデータを転送しません emmc のカード デバイスのための代替ブート動作が完了します リムーバブル MMC4.3 カードは これらのカードが動作のブーツ モードをサポートしているかどうかを認識していないという点で emmc のに関して異なります

86 1. 初めての MMC4.0/4.1/4.2 カードを発見するように これらのカードを発見します 2. カードの特性を理解します 3. ブート動作を実行するかどうかを決定します これらのカードについては ソフトウェア ドライバは 次のステップを実行する必要があります ページの 列挙されたカード スタック に記載されているように カードを発見します 2. MMC カード デバイスの EXT_CSD レジスタを読み出し 次のフィールドを調べます BOOT_PARTITION_ENABLE BOOT_SIZE_MULT BOOT_INFO f 詳細については ページの 参考資料 で参照されるように JEDEC Standard No. JESD84-A43 での ブート パーティションへのアクセス を参照してください 3. ホスト プロセッサは 次のパワー アップ サイクルでブート動作を実行する必要がある場合 SWITCH_FUNC コマンドを使用して MMC カード デバイスで EXT_CSD レジスタの内容を動作することができます 4. このステップの後 ソフトウェア ドライバは pwren レジスタに書き込むことによって カードの電源を切る必要があります 5. ここからは ページの emmc のカード デバイスのための代替ブート動作 と同じステップを使用します 1 それが中止シナリオ中に生成されている場合は EBE を無視します Boot acknowledge エラーを発生する場合 ブーツ アクノリッジは割り込みタイムアウトを受信します 1 内部 DMA コントローラ モードにおいて アプリケーションは data done 割り込みの代わりにディスクリプタ クローズ割り込みに依存する必要があります f アドレス マップとレジスタの定義は このハンドブック ボリウムを伴う hps.html ファイルに存在します ファイルを開くためのリンクをクリックしてください モジュールの説明とベース アドレスを表示するために 次のリンクをスクロールしクリックします

87 f sdmmc その後 レジスタおよびフィールド説明を表示するまでスクロールしてレジスタ名をクリックします レジスタ アドレスは 各モジュール インスタンスのベース アドレスへの相対的なオフセットです すべてのモジュールのベース アドレスは Cyclone V デバイス ハンドブック Vol 3 の Introduction to the Hard Processor System の章に記載されています f 次の業界仕様は SD/MMC コントローラによって実装される規格やプロトコルに関する詳細な情報を提供します 以下の仕様は JEDEC のウェブサイト ( で入手できます JEDEC Standard No. 84-A441 Embedded MultiMediaCard (e MMC) e MMC/Card Product Standard, High Capacity, including Reliable Write, Boot, Sleep Modes, Dual Data Rate, Multiple Partitions Supports, Security Enhancement, Background Operation and High Priority Interrupt (MMCA, 4.41) JEDEC Standard No. 84-A44 Embedded MultiMediaCard (e MMC) e MMC/Card Product Standard, High Capacity, including Reliable Write, Boot, Sleep Modes, Dual Data Rate, Multiple Partitions Supports and Security Enhancement (MMCA, 4.4) JEDEC Standard No. JESD84-A43 Embedded MultiMediaCard (emmc) emmc/card Product Standard, High Capacity, including Reliable Write, Boot, and Sleep Modes (MMCA, 4.3) 以下の仕様は JEDEC のウェブサイト (( で入手できます Physical Layer Simplified Specification, Version 3.01 SD Specifications Part 1 Physical Layer Simplified Specification Version 3.01 SDIO Simplified Specification Version 2.00 SD Specifications Part E1 SDIO Simplified Specification Version 2.00 表 に 本資料の改訂履歴を示します 2012 年 11 月 1.1 プログラミング モデルの章を追加 プログラミング情報を再編 ECC に関する情報を追加 ピンのリストを追加 クロックの章を更新 2012 年 1 月 1.0 初版

88

ウォッチドッグ・タイマ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM)

ウォッチドッグ・タイマ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM) 11? 2012? cv_54024-1.2 cv_54024-1.2 ウォッチドッグ タイマの主な機能は 無応答ステートから回復するシステムの方法を提供することです ハード プロセッサ システム (HPS) は レベル 4(L4) のペリフェラル バスに接続された 2 つのプログラム可能なウォッチドッグ タイマを提供しています ウォッチドッグ タイマは Synopsys DesignWare APB

More information

DDR3 SDRAMメモリ・インタフェースのレベリング手法の活用

DDR3 SDRAMメモリ・インタフェースのレベリング手法の活用 WP-01034-1.0/JP DLL (PVT compensation) 90 PLL PVT compensated FPGA fabric 90 Stratix III I/O block Read Dynamic OC T FPGA Write Memory Run Time Configurable Run Time Configurable Set at Compile dq0 dq1

More information

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

I2Cコントローラ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM) 11? 2012? cv_54020-1.2 cv_54020-1.2 I 2 C コントローラは ボード上の集積回路との間の通信リンクを提供しています 温度センサ および電圧レベル変換などのようなアプリケーションから EEPROM A/D と D/A コンバータ コーデック および多くのマイクロプロセッサの種類に使用され シリアル データ ライン (SDA) とシリアル クロック (SCL) のシンプルな

More information

AN 630: アルテラCPLD におけるリアルタイムISP およびISP クランプ

AN 630: アルテラCPLD におけるリアルタイムISP およびISP クランプ CPLD ISP ISP この資料は英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します こちらの日本語版は参考用としてご利用ください 設計の際には 最新の英語版で内容をご確認ください AN-630-1.0 アプリケーション ノート このアプリケーションノートでは MAX II および MAX V デバイスにおけるリアルタイム ISP(In-System Programmability)

More information

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

CANコントローラ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM) November 2012 cv_54025-1.2 cv_54025-1.2 ハードウェア プロセッサ システム (HPS) は Cortex -A9 マイクロプロセッサ ユニット (MPU) サブシステム ホスト プロセッサ および CAN プロトコルで使用するダイレクト メモリ アクセス (DMA) コントローラでのシリアル通信用に 2 つのコントローラ エリア ネットワーク (CAN) コントローラを提供しています

More information

USB 2.0 OTGコントローラ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM)

USB 2.0 OTGコントローラ、ハード・プロセッサ・システム(HPS)のテクニカル・リファレンス・マニュアル(TRM) 18. 11? 2012? av_54018-1.2 av_54018-1.2 ハード プロセッサ システム (HPS) は デバイスとホストの両方の機能をサポートする USB On-The-Go (OTG) コントローラの 2 つのインスタンスを提供しています コントローラは デバイスとホストの両方のモードですべての高速 全速および低速の転送をサポートしています コントローラは On-The-Go

More information

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

ハード・プロセッサ・システム (HPS)のテクニカル・リファランス・マニュアル (TRM) 、第12章:クワッドSPIフラッシュ・コントローラ November 2012 cv_54012-1.2 cv_54012-1.2 ハード プロセッサ システム (HPS) は シリアル NOR フラッシュデ バイスにアクセスするためにクワッドのシリアル ペリフェラル インタフェース (SPI) フラッシュ メモリ コントローラを提供しています クワッド SPI フラッシュ コントローラが同様に高性能デュアルおよびクワッド SPI フラッシュ デバイスの標準的な

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART

More information

Cyclone V デバイスのロジック・アレイ・ブロックおよびアダプティブ・ロジック・モジュール、Cyclone Vデバイス・ハンドブック、Volume 1、第1章

Cyclone V デバイスのロジック・アレイ・ブロックおよびアダプティブ・ロジック・モジュール、Cyclone Vデバイス・ハンドブック、Volume 1、第1章 June 2012 CV-52001-2.0 CV-52001-2.0 この章では Cyclone V コア ファブリック内のロジック アレイ ブロック (LAB) の機能を説明します LAB は ロジック ファンクション 演算ファンクション およびレジスタ ファンクションを実装するためにコンフィギュレーションできるアダプティブ ロジック モジュール () として知られる基本的なビルディング ブロックで構成されています

More information

MODBUS ユーザーズマニュアル 페이지 1 / 23

MODBUS ユーザーズマニュアル 페이지 1 / 23 MODBUS ユーザーズマニュアル 페이지 1 / 23 目次 1. 概要... 1 2. GX7 サポートファンクションコード... 1 3. GX7 サポートリファレンス... 1 4. GX7 サポートリファレンスとファンクションコードの関係... 2 5. XD+ 内プロジェクト設定でオプション別の機能... 4 6. トラブルシューティング... 9 A. APPENDIX... 12 1.

More information

スライド 1

スライド 1 RX62N 周辺機能紹介データフラッシュ データ格納用フラッシュメモリ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ データフラッシュの概要 プログラムサンプル 消去方法 書き込み方法 読み出し方法 FCUのリセット プログラムサンプルのカスタマイズ 2 データフラッシュの概要 3 データフラッシュとは フラッシュメモリ

More information

Microsoft Word - dg_sataahciip_refdesign_jp.doc

Microsoft Word - dg_sataahciip_refdesign_jp.doc SATA AHCI-IP コア リファレンス デザイン説明書 Rev1.3J 2017/03/22 本ドキュメントは AHCI-IP コア実機デモ システムのリファレンス デザインを説明したものです SATA-IP コアの上位に AHCI-IP コアを実装することで アプリケーション レイヤのドライバを介して Linux 等の OS から接続 SATA デバイスを直接ドライブとして認識でき ファイル

More information

1-2 MLAB 図 1-1: Arria 10 デバイスにおける LAB 構造およびインタコネクトの概要 この図は LAB インタコネクトを有する Arria 10 の LAB および MLAB 構造の概要を表しています C4 C27 異なる速度と長さのロウ インタコネクト R32 R3/R6 s

1-2 MLAB 図 1-1: Arria 10 デバイスにおける LAB 構造およびインタコネクトの概要 この図は LAB インタコネクトを有する Arria 10 の LAB および MLAB 構造の概要を表しています C4 C27 異なる速度と長さのロウ インタコネクト R32 R3/R6 s 1 署名 ロジック アレイ ブロック (LAB) は アダプティブ ロジック モジュール () として知られる基本のビルディング ブロックで構成されています ロジック ファンクション 演算ファンクション およびレジスタ ファンクションを実装するために LAB をコンフィギュレーションすることができます また Arria 10 デバイスで使用可能な LAB の 4 分の 1 をメモリ LAB(MLAB)

More information

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O) ALTIMA Corp. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) ver.1.0 2010 年 8 月 ELSENA,Inc. SOPC Builder ペリフェラル簡易ユーザ マニュアル PIO (Parallel I/O) 目次 1. はじめに... 3 2. PIO 概要... 3 2-1. PIO 概要... 3 2-2. PIO

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

More information

AN 357: Error Detection & Recovery Using CRC in Altera FPGA Devices

AN 357: Error  Detection & Recovery Using CRC in Altera FPGA Devices 2008 年 7 月 ver. 1.4 アルテラ FPGA デバイスの CRC によるエラー検出およびリカバリ Application Note 357 概要 航空電子 テレコム システム コントロール および軍事用アプリケーションの分野で使用されるクリティカルな用途では 以下ができることが重要です FPGA デバイスに格納されたコンフィギュレーション データが正確であるかを確認する システムにコンフィギュレーション

More information

AN 611:3G-SDI レベルB とデュアル・リンクHD-SDI(SMPTE372)リファレンス・デザインのマッピング

AN 611:3G-SDI レベルB とデュアル・リンクHD-SDI(SMPTE372)リファレンス・デザインのマッピング AN-611-1.0 この資料は英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します こちらの日本語版は参考用としてご利用ください 設計の際には 最新の英語版で内容をご確認ください このリファレンス デザインは Altera SDI MegaCore ファンクションおよびオーディオ ビデオ開発キット Stratix IV GX エディションを使用して 3 ギガビット / 秒のシリアル

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果

More information

35.STM32L4-Peripheral-SDMMC interface (SDMMC) Final_JP

35.STM32L4-Peripheral-SDMMC interface (SDMMC) Final_JP こんにちは そして [CLICK 1]STM32 SDMMC コントローラ モジュールのこのプレゼンテーションへようこそ CPU を SD カードや MMC カード または SDIO デバイスに接続するのに用いられるコントローラの主要な特徴を説明します 1 STM32 製品 [CLICK 1] に搭載されている SDMMC コントローラは マイクロコントローラをマルチメディアカード SD メモリカードと

More information

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは? アルテラ FPGA 向け PLL リコンフィグの応用回路 1. PLL リコンフィグとは アルテラ FPGA は PLL 機能を内蔵しています PLL を利用して基本周波数を逓倍 分周したクロックを利用することができます 通常 FPGA 開発ツール Quartus2( 以下 Q2) の MegaWizard プラグインマネージャを利用して PLL を設定し 希望のクロック周波数を得ることができます

More information

デュアルDIMM DDR2およびDDR3 SDRAMのボード・デザイン・ガイドライン、外部メモリ・インタフェース・ハンドブック、Volume 2、第5章

デュアルDIMM DDR2およびDDR3 SDRAMのボード・デザイン・ガイドライン、外部メモリ・インタフェース・ハンドブック、Volume 2、第5章 5? 2012? EMI_DG_005-2.0 EMI_DG_005-2.0 この章では デュアル バッファなし DIMM (UDIMM) DDR2 および DDR3 SDRAM インタフェースの実装のガイドラインについて説明します この章では デュアル DIMM 構成を次の条件で使用して データ信号のシグナル インテグリティに対する影響を説明します 1 スロット実装対 2 スロット実装 DIMM

More information

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装 LIM Corp. Nios II - PIO を使用した I 2 C-Bus (2 ワイヤ ) マスタの実装 ver.1.0 2010 年 6 月 ELSEN,Inc. 目次 1. はじめに... 3 2. 適用条件... 3 3. システムの構成... 3 3-1. SOPC Builder の設定... 3 3-2. PIO の設定... 4 3-2-1. シリアル クロック ライン用 PIO

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介安全機能 ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ 安全機能の概要 フラッシュ メモリ CRC 演算機能 RAM パリティ エラー検出機能 データの保護機能 RAM ガード機能 SFR ガード機能 不正メモリ アクセス機能 周辺機能を使用した安全機能 周波数検出機能 A/D

More information

アナログ・接点変換器

アナログ・接点変換器 LoRa/ 通信変換器 HLR-RS485 通信仕様書 (Modbus) インターフェース 2019 年 02 月 19 日 改訂履歴 日付改訂者改訂内容 2018/09/14 野村初版 2019/02/19 山下 改訂 1 P12 説明文修正 レジスタ割付修正 P13 キャリアセンス異常エラー追加 承認確認作成 ( 3 ) 目次 1 概要... 4 2 基本仕様... 4 3 通信モードについて...

More information

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /***************************************** 1 /******************************************************************************/ 2 /* IIC(Inter IC Bus) の制御 */ 3 /******************************************************************************/ 4 /*

More information

Veritas System Recovery 18 System Recovery Disk

Veritas System Recovery 18 System Recovery Disk Veritas System Recovery 18 System Recovery Disk 免責事項 ベリタステクノロジーズ合同会社は この 書の著作権を留保します また 記載された内容の無謬性を保証しません VERITAS の製品は将来に渡って仕様を変更する可能性を常に含み これらは予告なく われることもあります なお 当ドキュメントの内容は参考資料として 読者の責任において管理 / 配布されるようお願いいたします

More information

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR 第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道

More information

A-AN pdf

A-AN pdf JQFP BGA 1999 1 ver. 4 Application Note 71 J QFPFineLine BGA TM BGA JQFPBGA JQFP QFPBGA JQFP BGA JQFP BGA J QFP J QFP QFP QFP 125 QFP QFP QFPQFP Carrier & Development Socket Altera Corporation Page 1 A-AN-071-04/J

More information

ロジック・アレイ・ブロックおよびアダプティブ・ロジック・モジュール

ロジック・アレイ・ブロックおよびアダプティブ・ロジック・モジュール 1 AV-52001 署名 この章では ArriaV コア ファブリックのロジック アレイ ブロック (LAB) の機能について説明します LAB は ロジック ファンクション 演算ファンクション およびレジスタ ファンクションを実装するようにコンフィギュレーションできるアダプティブ ロジック モジュール () として知られる基本ビルディング ブロックで構成されています ArriaV デバイス内で使用可能な

More information

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A STM32L_ADC の説明 V003 2014/03/30 STM32L-Discovery の A/D 入力を行うプログラムです A/D CH0 ~ A/D CH3 の 4 本の入力が可能です 提供する PC のアプリケーション Access_SerialPort を使用して UART( 非同期シリアル通信 ) により A/D 入力の表示を行うことができます 無料の開発ツール Atollic TrueSTUDIO

More information

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設 APX-3312 と APX-3302 の差分一覧 No. OM12021D APX-3312 と APX-3302 は どちらも同じ CameraLink 規格 Base Configuration カメラ 2ch 入力可能なボードになります 本書では APX-3312 をご利用になられているお客様が APX-3302 をご利用になられる場合の資料として 両ボードについての差異 を記述しております

More information

PLCシリアル通信 MODBUS通信 データ送信/受信プログラム例

PLCシリアル通信 MODBUS通信 データ送信/受信プログラム例 MODBUS RTU 通信時の配線例 ( 例 )FPΣ と弊社製温調器 KT シリーズ通信します マスタとして使用する FPΣ の MODBUS マスタ機能を使用し スレーブの KT シリーズのデータを読み出し 書き込みを行います マスタ データ書き込み スレーブ データ読み出し RS485 FPΣ の通信カセットは COM3 カセット (FPG-COM3) もしくは COM4 カセット (FPG-COM4)

More information

ヤマハDante機器と他社AES67機器の接続ガイド

ヤマハDante機器と他社AES67機器の接続ガイド はじめに AES67 は 高性能なデジタル IP ネットワークの相互接続を実現するための標準規格です AES67 は や Ravenna Q-LAN Livewire WheatNet などの異なるネットワーク規格で構築されたシステム間で オーディオ信号を送受信する手段を提供します ヤマハも 機器のアップデートにより順次 AES67 への対応を開始し 第一弾としてデジタルミキシングコンソール CL/QL

More information

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ

1. ボードの複数台制御 コンフィグ ROM から FPGA が起動できる場合を想定しています FPGA 回路には 特定のレジスタアドレスにプリセットしたデータが必要です 製品出荷時のサンプル FPGA 回路では レジスタ No.3 を 8bit 幅に設定し FPGA 外部の 4bit ディップスイ LabVIEW 用リファレンス制御アプリケーション RefAppLV の使い方 概要 LabVIEW 開発ツールで設計したリファレンス制御アプリケーションです LabVIEW を所有していないユー ザ環境でも インストーラを利用して RefAppLV.exe を利用することができます 機能 1. 複数台ボード制御 2. USB コンフィグ機能 3. レジスタアクセス機能 4. 拡張レジスタアクセス機能

More information

外部SQLソース入門

外部SQLソース入門 Introduction to External SQL Sources 外部 SQL ソース入門 3 ESS 3 ESS : 4 ESS : 4 5 ESS 5 Step 1:... 6 Step 2: DSN... 6 Step 3: FileMaker Pro... 6 Step 4: FileMaker Pro 1. 6 Step 5:... 6 Step 6: FileMaker Pro...

More information

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携 Cisco CSS 11000 HTTP キープアライブと ColdFusion サーバの連携 目次 概要 HTTP ヘッダーについて HTTP HEAD メソッドと HTTP GET メソッドの違いについて ColdFusion サーバの HTTP キープアライブへの応答方法 CSS 11000 で認識される HTTP キープアライブ応答もう 1 つのキープアライブ URI と ColdFusion

More information

ログインおよび設定

ログインおよび設定 この章は 次の項で構成されています の概要, 1 ページ admin パスワードのリセット, 3 ページ パスワードと共有秘密のガイドライン, 3 ページ 共有秘密のリセット, 4 ページ の概要 Cisco UCS Central GUI および Cisco UCS Central CLI の両方を使用して Cisco UCS Central にログ インできます 両方のインターフェイスを使用すると

More information

Virtex-6 Clocking

Virtex-6 Clocking Spartan-6 クロックリソース Proprietary to PALTEK CORPORATION 1 AGENDA はじめに クロックネットワーク クロックマネージメントタイル (CMT) 使用例 2 AGENDA はじめに クロックネットワーク クロックマネージメントタイル (CMT) 使用例 3 高速なクロッキング 新型アプリケーションには複雑なクロック要件が必要 : 高速クロック信号

More information

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル 413180100 19.4 システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M21/M22/M23/M24/M25 テクニカルマニュアル 413556900 21.4 システムリセットコントローラ

More information

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.2.0 で作成した STM32F4 Discovery 基板用のプロジェクトです

More information

スライド 1

スライド 1 RX62N 周辺機能紹介 TMR 8 ビットタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ TMR の概要 プログラムサンプル (1) パルス出力機能 (8 ビットモード ) プログラムサンプル (2) インターバルタイマ機能 (16 ビット コンペアマッチカウントモード ) プログラムサンプルのカスタマイズ

More information

Symantec AntiVirus の設定

Symantec AntiVirus の設定 CHAPTER 29 Symantec AntiVirus エージェントを MARS でレポートデバイスとしてイネーブルにするためには Symantec System Center コンソールをレポートデバイスとして指定する必要があります Symantec System Center コンソールはモニタ対象の AV エージェントからアラートを受信し このアラートを SNMP 通知として MARS に転送します

More information

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1.Web ブラウザを起動します FW v6.50 以下の場合は Internet Explorer を FW v7.10 以降の場合は

More information

AN-1443: ADUCM3027 / ADUCM3029 の SPI バスを介した SD カードとのインターフェース

AN-1443: ADUCM3027 / ADUCM3029 の SPI バスを介した SD カードとのインターフェース 15344-001 日本語参考資料最新版英語はこちら ADUCM3027/ADUCM3029 の SPI バスを介した SD カードとのインターフェース はじめに セキュア デジタル (SD) カードは 携帯機器や組み込みシステムで使用されている最も一般的なフラッシュベースのストレージ デバイスです SD カードは小型 低消費電力 簡素 低コストなどの特長があるため ストレージ条件に対する理想的なソリューションです

More information

PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット(ハードウェア編)

PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット(ハードウェア編) ALTIMA Corp. PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット ( ハードウェア編 ) ver.1 2015 年 4 月 Rev.3 ELSENA,Inc. PCI-Express ハード IP を使用した DMA 転送の実現 for Cyclone V GT FPGA 開発キット ( ハードウェア編 ) 目次

More information

Crucial Client SSDでのファームウェアアップデート手順

Crucial Client SSDでのファームウェアアップデート手順 Crucial Client SSD でのファームウェアアップデート手順 概要このガイドを使うことにより パーソナルコンピューティング環境に ( 以下本文書ではホストシステムという ) インストールされた Crucial SSD でファームウェアアップデートを実行することがきます このガイドでは 2 つのアップデート方法を説明します 方法 1:Crucial Storage Executive ソフトウェアを介したオンラインアップデート

More information

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE 差し替え版 第 7 回マイクロプロセッサの VHDL 記述 マイクロプロセッサ全体および主要な内部ユニットの,VHDL 記述の例を示す. 1)MPU(Micro Processor Uit) Module 1MPU のエンティティ記述とコントローラの例以下は, 簡単な MPU の VHDL 記述の例である ただし, アーキテクチャ部分は, 命令読み込みと実行の状態遷移のみを実現したステートマシンである

More information

Microsoft Word - FCTT_CS_Mod( )Jver1.doc

Microsoft Word - FCTT_CS_Mod( )Jver1.doc FCTT 通信仕様書 (Modbus RTU) 目 次 1. 通信仕様 2 2. 送受信プロトコル 2 3. -16 の計算方法 3 4. 通信手順フローチャート 4 5. FCTT 通信端子配列 4 6. Modbus プロトコル RTU モード 5 6.1 5 6.2 異常応答 5 6.3 計測値データ要求 6 6.4 機種情報要求 7 7. 通信モニタ機能 8 1 1. 通信仕様 項目 仕様

More information

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル < 概要 > WAGO-I/O-SYSTEM750 シリーズ PROFIBUS バスカプラ / コントローラと 三菱電機 製 PROFIBUS ユニット QJ71PB92D とのコンフィグレーション手順を説明しております < 使用機器接続図 > 下記機器を準備し 図の通り接続しました WAGO-I/O-SYSTEM PROFIBUS バスカプラ / コントローラ 750-xxx および I/O モジュール

More information

Microsoft Word - PCI-X_PCIeバスのデータ転送-ver1.0.docx

Microsoft Word - PCI-X_PCIeバスのデータ転送-ver1.0.docx データ転送時におけるエラー / ボード認識不具合に関する資料 2012/06/20 目次 画像データ転送時に発生する問題 ( 過去の事例 )... 3 不具合の発生したチップセットの例... 7 Intel 社製チップセット... 8 テレダインダルサが推奨するチップセットの例... 9 トランザクション層の機能... 11 PCI Express のレーン順序と差動信号の特性... 12 レーン0とレーン1で送信側と受信側で速度差を吸収する機能...

More information

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受 STM32L_UART1 の説明 V004 2014/03/30 STM32L-Discovery の UART 1 の送受信を行うプログラムです 無料の開発ツール Atollic TrueSTUDIO for ARM Lite( 試用版 ) で作成したプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です PC アプリケーションの Access_SerialPort

More information

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート ) TrueSTUDIO 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです 無料の試用版開発ツール Atollic TrueSTUDIO for ARM Lite で作成したプロジェクトです ビルド可能なプログラムのコードサイズが 32Kbyte 以内の制限があります プログラムの開始番地は 0x08000000

More information

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一 RX210 グループ IRQ 割り込みを使用したパルス出力 要旨 本サンプルコードでは IRQ 割り込みが発生すると 一定期間タイマでパルスを出力する 方法について説明します 対象デバイス RX210 1 / 25 内容 1. 仕様... 3 2. 動作確認条件... 3 3. ハードウェア説明... 3 3.1 使用端子一覧... 3 4. ソフトウェア説明... 4 4.1 動作概要... 4

More information

(Microsoft PowerPoint - E6x5C SDXC Demo Seminar [\214\335\212\267\203\202\201[\203h])

(Microsoft PowerPoint - E6x5C SDXC Demo Seminar [\214\335\212\267\203\202\201[\203h]) Atom プロセッサ E6x5C の紹介と FPGA IP Core 活 例の紹介 アイウェーブ ジャパン株式会社 神奈川県横浜市中区住吉町 3 丁目 29 番住吉関内ビル8 階 B Tel: 045-227-7626 Fax: 045-227-7646 Mail: [email protected] Web: www.iwavejapan.co.jp 2011/5/30 1 iwave Japan,

More information

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R TrueSTUDIO 用 L152CD_UART1 の説明 V001 2014/10/22 UART( 非同期シリアル通信 ) で送受信を行う STM32L152C-DISCO のプロジェクトサンプルです STM32L152C-DISCO は STMicroelectronics 社製の Cortex-M3 ARM CPU である STM32L152RCT6 を搭載した基板です 試用版の開発ツール

More information

Notes and Points for TMPR454 Flash memory

Notes and Points for TMPR454 Flash memory 表紙 TMPR454 内蔵 Flash メモリ対応版手順書 株式会社 DTS インサイト ご注意 (1) 本書の内容の一部または 全部を無断転載することは禁止されています (2) 本書の内容については 改良のため予告なしに変更することがあります (3) 本書の内容について ご不明な点やお気付きの点がありましたら ご連絡ください (4) 本製品を運用した結果の影響については (3) 項にかかわらず責任を負いかねますのでご了承ください

More information

Windows GPO のスクリプトと Cisco NAC 相互運用性

Windows GPO のスクリプトと Cisco NAC 相互運用性 Windows GPO のスクリプトと Cisco NAC 相互運用性 目次 概要前提条件要件使用するコンポーネント表記法背景説明 GPO スクリプトに関する一般的な推奨事項 NAC セットアップに関する一般的な推奨事項設定シナリオ 1 シナリオ 2 トラブルシューティング関連情報 概要 このドキュメントでは PC の起動時 およびドメインへのユーザのログイン時の Windows GPO の設定例について説明します

More information

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x CoIDE 用 F4D_VCP の説明 V001 2014/07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x08000000 です デバッグが可能です 目次 1. USB の VCP( 仮想 COM ポート )

More information

ScanFront300/300P セットアップガイド

ScanFront300/300P セットアップガイド libtiff Copyright (c) 1988-1996 Sam Leffler Copyright (c) 1991-1996 Silicon Graphics, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby

More information

マルチ VRFCE PE-CE リンクのプロビジョ ニング

マルチ VRFCE PE-CE リンクのプロビジョ ニング CHAPTER 26 この章では Prime Fulfillment のプロビジョニングプロセスで MPLS VPN マルチ VRFCE PE-CE リンクを構成する方法を説明します MPLS VPN MVRFCE PE-CE リンクの概要 この項の内容は 次のとおりです ネットワークトポロジ (P.26-2) 前提タスク (P.26-2) Prime Fulfillment で MPLS VPN

More information

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは? レジスタ アクセスの拡張機能 1. レジスタ アクセスの概要 Smart-USB Plus 製品で利用できるレジスタ アクセスとは FPGA 内にハードウエア レジスタを実装し ホスト PC の制御ソフトウエアから USB 経由でそれらのレジスタに値を設定したり レジスタの設定値を読み出すことができる機能です このレジスタ アクセス制御には USB バス仕様に基づく コントロール転送 を利用しています

More information

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の ) 割り込み / ポーリング /DMA/DTC(RL78 での周辺機能制御 ) 周辺機能を介してデータ転送を制御する方法には, 大きく分けて 3 つの方法があります その中で DMA や DTC は CPU を介することなく, 高速にデータを転送することができますが, 使用できるチャネル数が限られます そのため, たとえば,CSI のスレーブでの高速通信のように限られた時間内に転送が必要な場合に使用できます

More information

使用する前に

使用する前に この章では Cisco Secure ACS リリース 5.5 以降から Cisco ISE リリース 2.4 システムへのデー タ移行に使用される Cisco Secure ACS to Cisco ISE Migration Tool について説明します 移行の概要 1 ページ Cisco Secure ACS から データ移行 1 ページ Cisco Secure ACS to Cisco ISE

More information

McAfee SaaS Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護

McAfee SaaS  Protection 統合ガイド Microsoft Office 365 と Exchange Online の保護 統合ガイド改訂 G McAfee SaaS Email Protection Microsoft Office 365 と Exchange Online の保護 Microsoft Office 365 の設定 このガイドの説明に従って McAfee SaaS Email Protection を使用するように Microsoft Office 365 と Microsoft Exchange Online

More information

CONTEC DIOプロバイダ ユーザーズガイド

CONTEC DIOプロバイダ ユーザーズガイド DIO プロバイダユーザーズガイド - 1 - DIO プロバイダ CONTEC DIO ボード Version 1.1.2 ユーザーズガイド July 17, 2012 備考 ORiN2SDK2.0.14 以降, このプロバイダは CONTEC 社の API-DIO(WDM) を使用しています. 以前 までの API-DIO(98PC) を使用する場合は,DIO98 プロバイダを使用してください.

More information

EU-SD/MCシリーズ アプリケーションノート

EU-SD/MCシリーズ アプリケーションノート の制御方法 シリアル コマンドバージョン基本編 概要 は 組み込み用 SD カードコントロールユニットです ファイルシステムを搭載していますので 煩わしいファイルの管理をホストマイコン側で行う必要が無く 手早く簡単に SD カードを使ったアプリケーションを構築できます このでは のシリアル コマンドバージョンを使 うための基本的な操作方法を説明します 動作可能ユニット EU-SD500 シリーズ及び

More information

インテル(R) Visual Fortran コンパイラ 10.0

インテル(R) Visual Fortran コンパイラ 10.0 インテル (R) Visual Fortran コンパイラー 10.0 日本語版スペシャル エディション 入門ガイド 目次 概要インテル (R) Visual Fortran コンパイラーの設定はじめに検証用ソースファイル適切なインストールの確認コンパイラーの起動 ( コマンドライン ) コンパイル ( 最適化オプションなし ) 実行 / プログラムの検証コンパイル ( 最適化オプションあり ) 実行

More information

エレクトーンのお客様向けiPhone/iPad接続マニュアル

エレクトーンのお客様向けiPhone/iPad接続マニュアル / JA 1 2 3 4 USB TO DEVICE USB TO DEVICE USB TO DEVICE 5 USB TO HOST USB TO HOST USB TO HOST i-ux1 6 7 i-ux1 USB TO HOST i-mx1 OUT IN IN OUT OUT IN OUT IN i-mx1 OUT IN IN OUT OUT IN OUT IN USB TO DEVICE

More information

スライド 1

スライド 1 RX62N 周辺機能紹介 CMT コンペアマッチタイマ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ CMT の概要 プログラムサンプル プログラムサンプルのカスタマイズ 2 CMT の概要 3 CMT の仕様 CMT ユニット 0 チャネル 16ビットタイマ CMT0 CMT1 ユニット 1 CMT2 CMT3

More information

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組 レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン HULFT BB クライアント for Windows Type BB1 6.3.0 HULFT BB クライアント for Windows Type BB2 6.3.0 < 対応 OS> Windows2000, WindowsXP, WindowsServer2003 < 追加機能一覧 > HULFT BB クライアント 管理番号 内容

More information

ESOTERIC ASIO USB DRIVER インストールマニュアル Windows 用 システム推奨条件 2 インストールで使用する言語を選択して 次へ ボタンをクリックする Intel Core 2 Duo 以上のプロセッサー搭載コンピュータ 搭載メモリ 1GB 以上 対応 OS Windo

ESOTERIC ASIO USB DRIVER インストールマニュアル Windows 用 システム推奨条件 2 インストールで使用する言語を選択して 次へ ボタンをクリックする Intel Core 2 Duo 以上のプロセッサー搭載コンピュータ 搭載メモリ 1GB 以上 対応 OS Windo ESOTERIC ASIO USB DRIVER インストールマニュアル Windows 用 システム推奨条件 2 インストールで使用する言語を選択して 次へ ボタンをクリックする Intel Core 2 Duo 以上のプロセッサー搭載コンピュータ 搭載メモリ 1GB 以上 対応 OS Windows 7 (32bit 版 64bit 版 ) Windows 8 (32bit 版 64bit 版

More information

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ arduino プログラミング課題集 ( Ver.5.0 2017/06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイコンから伝える 外部装置の状態をマイコンで確認する 信号の授受は 入出力ポート 経由で行う (2) 入出力ポートとは?

More information

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法

FPGA 外部のメモリをアバロン・MM・インタフェースへ接続する方法 ver. 8.1 2009 年 3 月 1. はじめに Nios II 開発ボードに実装されているメモリ用のコンポーネントは SOPC Builder の中にあらかじめ用意されています しかし 実際に基板を作成した場合には Nios II 開発ボードに実装されているメモリと同じ仕様の製品でない限り SOPC Builder であらかじめ用意されたメモリ用のコンポーネントを使用することはできません この場合

More information

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ 第5回 Arduino入門 I2C通信編 プレゼン by いっちー 目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラム 7 読込み 19 センサ読込み概要①

More information

SoC はじめてガイド - HPS-FPGA 間のアクセス方法(Arria® V SoC / Cyclone® V SoC 編)

SoC はじめてガイド - HPS-FPGA 間のアクセス方法(Arria® V SoC / Cyclone® V SoC 編) ALTIMA Company, MACNICA, Inc. SoC はじめてガイド HPS-FPGA 間のアクセス方法 (Arria V SoC / Cyclone V SoC 編 ) Ver.17 2017 年 7 月 Rev.1 ELSENA,Inc. SoC はじめてガイド HPS-FPGA 間のアクセス方法 (Arria V SoC / Cyclone V SoC 編 ) 目次 はじめに...3

More information

AN-1077: ADXL345 Quick Start Guide

AN-1077: ADXL345 Quick Start Guide 09119-002 TOP 09119-001 ADXL345 Quick Start Guide by Tomoaki Tsuzuki APPLICATION NOTE PHYSICAL MOUNTING ADXL345 は 3 軸の加速度センサーです 検出軸方向を Figure1 に示します ADXL345 は検出軸の正方向に加速されると正極性の出力になります 重力は検出軸方向の逆方向の極性が出力されるので注意が必要です

More information

TH-47LFX60 / TH-47LFX6N

TH-47LFX60 / TH-47LFX6N TH-47LFX60J TH-47LFX6NJ 1 2 3 4 - + - + DVI-D IN PC IN SERIAL IN AUDIO IN (DVI-D / PC) LAN, DIGITAL LINK AV IN AUDIO OUT 1 11 2 12 3 13 4 14 5 6 15 7 16 8 17 9 18 10 19 19 3 1 18 4 2 HDMI AV OUT

More information

第一章 LPC2478 ボードの概要...3 第二章 uclinux の初体験 SD カードのテスト USB メモリのテスト USB Devices のテスト network のテスト...6 第三章 uclinux のコンパイル...

第一章 LPC2478 ボードの概要...3 第二章 uclinux の初体験 SD カードのテスト USB メモリのテスト USB Devices のテスト network のテスト...6 第三章 uclinux のコンパイル... 株式会社日新テクニカ株式会社日新テクニカ株式会社日新テクニカ 1 ARM ARM ARM ARM7/TDMI 7/TDMI 7/TDMI 7/TDMI LPC LPC LPC LPC247 247 247 2478-uC uc uc uclinux inux inux inux マニュアルマニュアルマニュアルマニュアル株式会社日新テクニカ株式会社日新テクニカ株式会社日新テクニカ株式会社日新テクニカ

More information

ターゲット項目の設定について

ターゲット項目の設定について Code Debugger CodeStage マニュアル別冊 ターゲット 項目の設定について Rev. 2.8 2018 年 4 月 13 日 BITRAN CORPORATION ご注意 1 本書及びプログラムの内容の一部または 全部を無断で転載することは プログラムのバックアップの場合を除き 禁止されています 2 本書及びプログラムの内容に関しては 将来予告なしに変更することがあります 3 当社の許可なく複製

More information

SD Formatter 3.0 User's Manual (English)

SD Formatter 3.0 User's Manual (English) SD Card Formatter 4.0 for Windows ユーザーマニュアルバージョン 1.09 2014 年 11 月 1 日 SD Card Association Copyright 2010-2016 SD Card Association 0 変更履歴 Date Version Changes compared to previous issue 2010 年 2 月 15 日

More information