ハード・プロセッサ・システム(hps)のテクニカル …...11‒2 第11章:sd/mmc...

88
cv_54011-1.1 © 2012 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html . Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Portions © 2011 Synopsys, Inc. Used with permission. All rights reserved. Synopsys & DesignWare are registered trademarks of Synopsys, Inc. All documentation is provided "as is" and without any warranty. Synopsys expressly disclaims any and all warranties, express, implied, or otherwise, including the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, and any warranties arising out of a course of dealing or usage of trade. †Paragraphs marked with the dagger (†) symbol are Synopsys Proprietary. Used with permission. Cyclone V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファランす・マニュアル 2012 年 11 月 Subscribe ISO 9001:2008 Registered 11. SD/MMC コントローラ 雌実詩質寺竺止紫支質斯旨至痔θHPSχ朔腰弸使 SD MMC 昨児鹿紫斯自質始実詩腰 止姿自仔質視施祉識 I/OθSDIOχ視飼使旨腰採皿索 Consumer Electronics Advanced Transport ArchitectureθCE-ATAχ雌実詩質詩鹿使字削使執祉児史実旨際傘冴薩昨 Secure Digital/MultiMediaCardθSD/MMCχ思執詞竺実鹿燦蛬盗裁擦際甑SD/MMC 思執詞竺実鹿 朔字実詞質使磁実施燦駟㊄裁腰瞩履療1作児鹿紫斯自質始実詩栽晒寺竺止紫支質斯 旨至痔燦字実詞際傘祭碕燦使資実字識埼済擦際甑擦冴腰彳サ⑪作仔寺式師実斯辞執 鯖蒔実孜実質視実祉ぁ昨士執質滋実詩質旨詞鴫実施杞褻燦荐甍際傘冴薩削児鹿紫 斯自質始実詩燦砺ぁ際傘祭碕歳埼済擦際甑直昨仔寺式師実斯辞執朔腰嗣執持視紫詩 SDθESDχ採皿索嗣執持視紫詩 MMCθeMMCχ瞩履濁療1作児鹿紫斯自質視飼使旨匙 昨使執祉児史実旨歳零擦参崎哉擦際甑 SD/MMC 思執詞竺実鹿朔腰斯賜寺斯旨昨 Synopsys ® DesignWare ® Mobile Storage Host θDWC_mobile_storageχ思執詞竺実鹿削嫻咲哉崎哉擦際甑 f 鑚ユ賽埼朔腰11–87 時実施昨坤理iユ賽墾 削ぇÓ細参崎哉傘皿妻削腰 SD/SDIO 思爾執詩 燦莉裁擦際甑罪参朔腰Phys i cal Laye r Simpl if i ed Spec i fi cation V e r s i on 3.01 腰採皿索 SDIO Simpli f ie d Spec if i cation Ve rsion 2.00 削ゆ裁采ぇÓ細参崎哉擦際甑 SD/MMC コントローラの特性 HPS SD/MMC 思執詞竺実鹿朔通託昨㎏1燦蛬盗裁擦際甑 示飼使識質旨詞鴫実施栽晒 HPS 字実肢燦支治実詞際傘 通託昨旨祉執私実詩擦冴朔始実詩質祉使寺燦支治実詞際傘 eSD 燦零殺 SD— 飼実施辞執 3.0 嗣執持視紫詩 SDIO θeSDIOχ燦零殺 SDIO— 飼実施辞執 3.0 CE-ATA— 飼実施辞執 1.1 eMMC 燦零殺 MMC— 飼実施辞執 4.411 似紫詞腰 4 似紫詞腰 採皿索 8 似紫詞腰 θ 11–2 時実施昨← 11–2 削1際碕採三昨哉采肴栽昨歯紫師実施χ 3淋 視伺旨屍寺祉質持実旨昨私使鴫屍詞質磁示式質仔屍止旨θDMAχ 不使 4 KB 溜=徳昨 FIFO 飼紫児仕 11–1 削朔腰┦骨作 SD 始実詩昨視飼使旨質祉使寺採皿索支治実詞細参崎哉傘鴈坎腰 飼旨質示実詩腰採皿索旨侍実詩燦1裁擦際甑 November 2012 cv_54011-1.1

Upload: others

Post on 29-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

cv_54011-1.1

© 2012 Altera Corporation. All rights reserved. ALTERA, ARRIare trademarks of Altera Corporation and registered in the U.Strademarks or service marks are the property of their respectivsemiconductor products to current specifications in accordanceservices at any time without notice. Altera assumes no responsdescribed herein except as expressly agreed to in writing by Alon any published information and before placing orders for pr

Portions © 2011 Synopsys, Inc. Used with permission. All rightis provided "as is" and without any warranty. Synopsys expressof merchantability, fitness for a particular purpose, and non-in

†Paragraphs marked with the dagger (†) symbol are Synopsys

Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテ2012 年 11 月

November 2012cv_54011-1.1

11. SD/MMC コントローラ

ハード・プロセッサ・システム(HPS)は、外部 SD と MMC のフラッシュ・カード、

セキュア・デジタル I/O(SDIO)デバイス、および Consumer Electronics Advanced Transport Architecture(CE-ATA)ハード・ドライブにインタフェースするための Secure Digital/MultiMediaCard(SD/MMC)コントローラを提供します。SD/MMC コントローラ

はブート・イメージを格納し、除去可能なフラッシュ・カードからプロセッサ・シ

ステムをブートすることをイネーブルできます。また、大規模なアプリケーション

やユーザー・データ用のオン・ボード・ストレージ容量を拡張するためにフラッ

シュ・カードを使用することができます。他のアプリケーションは、エンベデッド

SD(ESD)およびエンベデッド MMC(eMMC)除去不可能なフラッシュ・デバイスへ

のインタフェースが含まれています。

SD/MMC コントローラは、シノプシスの Synopsys® DesignWare® Mobile Storage Host(DWC_mobile_storage)コントローラに基づいています。

f 本資料では、11–87 ページの「参考資料」に記載されているように、SD/SDIO コマンド

を指します。それは、Physical Layer Simplified Specification、Version 3.01 、および SDIO Simplified Specification Version 2.00 に詳しく記載されています。

SD/MMCコントローラの特性HPS SD/MMC コントローラは以下の機能を提供します。

■ モバイル・ストレージから HPS ブーツをサポートする

■ 以下のスタンダードまたはカード・タイプをサポートする

■ eSD を含む SD— バージョン 3.0

■ エンベデッド SDIO (eSDIO)を含む SDIO— バージョン 3.0

■ CE-ATA— バージョン 1.1

■ eMMC を含む MMC— バージョン 4.41、1 ビット、 4 ビット、 および 8 ビット、

( 11–2 ページの表 11–2 に示すとおりのいくつかのパッケージ)

■ 統合 ディスクプタ・ベースのダイレクト・メモリ・アクセス(DMA)

■ 内部 4 KB 受送信の FIFO バッファ

表 11–1 には、様々な SD カードのデバイス・タイプおよびサポートされている電圧、

バス・モード、およびスピードを示します。

A, CYCLONE, HARDCOPY, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos . Patent and Trademark Office and in other countries. All other words and logos identified as e holders as described at www.altera.com/common/legal.html. Altera warrants performance of its with Altera's standard warranty, but reserves the right to make changes to any products and ibility or liability arising out of the application or use of any information, product, or service tera. Altera customers are advised to obtain the latest version of device specifications before relying oducts or services.

s reserved. Synopsys & DesignWare are registered trademarks of Synopsys, Inc. All documentation ly disclaims any and all warranties, express, implied, or otherwise, including the implied warranties fringement, and any warranties arising out of a course of dealing or usage of trade.

Proprietary. Used with permission.

クニカル・ リファランす・マニュアル

Subscribe

ISO 9001:2008 Registered

Page 2: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒2 第 11 章 : SD/MMC コントローラSD/MMCコントローラの特性

SD/MMC コントローラは直接 eSDIO カード・デバイスの電圧スイッチング、カード

の割り込み、またはバック・エンドのパワー・コントロールをサポートしていませ

ん。ただし、汎用 I/O(GPIO)に、これらの信号を接続することができます。

1 彼らはカード・インタフェース機能に影響を与えないため、カードのフォーム・

ファクタ(例えば、ミニやマイクロなど)は表 11–1 に列挙されていません。

表 11–2 は、さまざまな MMC カードのデバイス・タイプおよびサポートされている

電圧、バスモード、バス速度を示しています。

SD/MMC コントローラが外部カード・インタフェースの一部として、リセット出力

が含まれていません。フラッシュ・カードのデバイスをリセットするには、汎用出

力ピンを使用することを検討してください。

表11‒1. SD カードを使用するケース

カード・デバイスのタイプ

 サポートされる電圧

サポートされるバス・モード

サポートされるバス・スピード・モード

デフォルトの速度 高速 SDR12 SDR25 (1)

3.3 V 1.8 V SPI1ビット

4ビット

8ビット

12.5 MBps25 MHz

25 MBps50 MHz

12.5 MBps25 MHz

25 MBps50 MHz

SDSC (SD) v — v v — — v v — —

SDHC v v (2) v v v — v v v v

SDXC v v (2) v v v — v v v v

eSD v v (2) v v v — v v v v

SDIO v v (2) v v v — v v v v

eSDIO v v (2) v v v v (3) v v v v

表11‒1 の注 :(1) SDR25 速度モードでは 1.8 V の信号を必要とします。カードは、UHS-I モード(例ば SDR50、SDR104、DDR50)をサポートし

ていても、それはまだ低速(例えば SDR12、SDR25)で通信することに注意してください。

(2) SD の 1.8 V シグナリングをサポートするために電圧スイッチ出力をコントロールします。

(3) eSDIO 用のオプション 8 ビットのバス・モードは、すべての FPGA パッケージでサポートされていません。

表11‒2. MMC を使用するケース

カード・デバイスのタイプ

最大クロック・スピード (MHz)

最大データ・レート

(MBps)

サポートされる電圧

サポートされるバス・モード

サポートされるバス・スピード・モード

3.3 V 1.8 V SPI (1) 1 ビット4ビット

8ビット

デフォルトの速度

高スピード

MMC 20 2.5 v — v v — — v —

RSMMC 20 10 v — v v v — v v

MMCPlus 50 (3) 25 v — — v v v (2) v v

MMCMobile 50 6.5 v v — v — — v v

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 3: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒3SD/MMCコントローラのブロック図とシステム・インテグレーション

SD/MMCコントローラのブロック図とシステム・インテグレーション

SD/MMC コントローラでは、バス・インタフェース・ユニット(BIU)およびカー

ド・インタフェース・ユニット(CIU)が含まれています。 BIU は、コントロールお

よびステータス・レジスタ(CSR)をアクセスするホストのためのスレーブ・インタ

フェースを提供します。また、このユニットは DMA インタフェースを介して独立し

た FIFO バッファへのアクセスを提供します。 DMA コントローラは、システム・メモ

リと FIFO バッファ間でデータを交換するための責任があります。 DMA レジスタは、

DMA 動作をコントロールするホストからアクセスできます。 CIU は、コントローラ上

の SD、MMC、および CE-ATA プロトコルをサポートし、クロック・コントロール・

ブロックを介してクロック管理を提供します。割り込みを発生させるための割り込

みのコントロール・ブロックは、ARM® Cortex™-A9 マイクロプロセッサ・ユニット

(MPU)サブシステム内の汎用割り込みコントローラに接続します。

図 11–1 は、SD/MMC コントローラのブロック図と HPS に統合する方法を示していま

す。

eMMC 50 25 v v — v v — v v

表11‒2 の注 :(1) SPI モードは MMC4.41 仕様では廃止されています。

(2) 任意の 8 ビットのバス・モードは、すべての FPGA パッケージでサポートされていません。

(3) 大クロック・レートの 52 MHz の速度の代わりに、 大クロック・レートの 50 MHz(MMC 仕様で指定されている)をサポートしています。

表11‒2. MMC を使用するケース

図11‒1. SD/MMCコントローラの接続

SlaveInterface

MasterInterface

MPUSubsystem

I/O PinsFIFOBuffer

Control

Synchronizer

StorageFIFO Buffer

FIFOBuffer

Control

Data PathControl

CommandPath Control

ClockControl

InterruptControl

DMAController

RegisterBlock

Bus Interface Unit Card Interface Unit

SD/MMC Controller

L4 B

usL3

Inter

conn

ect

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 4: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒4 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

SD/MMCコントローラの機能の説明この項では、SD/MMC コントローラのコンポーネント、またコントローラを動作す

る方法を説明します。

SD/MMC/CE-ATA プロトコールSD/MMC/CE-ATA プロトコルはスタート・ビットによって開始され、ストップ・ビッ

トで終端され、コマンドとデータのビット・ストリームに基づいています。さらに、

SD/MMC コントローラは基準クロックを提供し、トランザクションを開始すること

ができるたった一つのマスタ・インタフェースです。

■ コマンド — オペレーションを開始する CMDピンにシリアルに送信されるトークン

です。

■ 応答 — 特定のコマンドに応答して、CMDのピンにシリアルに送信されるカードか

らのトークンです。

■ データ — データの移動コマンドにデータ・ピンを使用してシリアルに送信されま

す。

図 11–2 には、複数ブロックのリード動作の一例を示します。クロックは代表だけで

あり、クロック・サイクルの正確な数が表示されません。

図11‒2. 複数ブロックのリード動作

Command Response

sdmmc_cclk_out

sdmmc_cmd

sdmmc_data Data Block CRC Data Block CRC Data Block CRC

Command Response

Block Read Operation

Multiple Block Read Operation

Data Stop Operation

From Hostto Card

From Cardto Host

Data fromCard to Host

Stop CommandStops Data Transfer

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 5: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒5SD/MMCコントローラの機能の説明

図 11–3 は、複数ブロックのライト動作にホストによって送信されたコマンド・トー

クンの例を示しています。

BIUBIU は CIU とインタフェースされ、レベル 3(L3)のインタコネクトとレベル 4(L4)のペリフェラル・バスに接続されています。 BIU は、次の主な機能ブロックで構成さ

れています。

■ スレーブ・インタフェース

■ レジスタ・ブロック

■ FIFO バッファ

■ 内部 DMA コントローラ

スレーブ・インタフェースホス・トプロセッサは、スレーブ・インタフェースを介して、SD/MMC コントロー

ラのレジスタやデータの FIFO バッファをアクセスします。

レジスタ・ブロックレジスタ・ブロックは BIU の一部であり、CSR のへのリードおよびライトのアクセ

スを提供しています。

すべてのレジスタは BIU クロック・ドメインに存在しています。コマンドが 1 にコ

マンド・レジスタ(cmd)のスタート・コマンド・ビット(start_cmd)を設定して

ことで、カードに送信され、CIU の動作に必要なすべての関連レジスタは CIU ブロッ

クに転送されます。この間、ソフトウェアは BIU から CIU に転送されたレジスタへ

の書き込みはいけません。ソフトウェアは、再びこれらのレジスタへの書き込み前

に、ハードウェアが 0 に start_cmdビットをリセットするまで待機する必要があり

ます。レジスタ・ユニットはハードウェアのロック機能があり、レジスタへの不正

な書き込みを防止します。

スタート・コマンドが cmdレジスタの start_cmdビットを設定することによって発

行された後、コマンドが CIU によって受け入れられるまで、次のレジスタを書き換

えることはできません。

図11‒3. 複数ブロックのライト動作

Command Response

sdmmc_cclk_out

sdmmc_cmd

sdmmc_data Data Block CRC Data Block CRC

Command Response

Block Write Operation

Multiple Block Read Operation

Data Stop Operation

From Hostto Card

From Cardto Host

Data fromHost to Card

Stop CommandStops Data Transfer

OK Response &Busy from Card

Busy Busy

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 6: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒6 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

■ 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 になります。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 7: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒7SD/MMCコントローラの機能の説明

以下のビットは、デバッグの目的のために、トップ・レベルのポートとして使用で

きます。

■ intmaskレジスタのすべてのビット

■ rintstsレジスタのすべてのビット

■ ctrlレジスタのビット int_enable

ctrlレジスタのint_enablビットは電源投入時に0に設定されており、intmaskレジス

タの各ビットは、0x0000000 に設定されています。これにより、すべての割り込みが

マスクされます。

以下の条件は、割り込みが発生する原因となります。

■ リード上のエンド・ビット・エラー

■ ライト上には CRC(Cyclic Redundancy Code)なし

■ オート・コマンドが完了

■ スタート・ビット・エラー

■ ハードウェア・ロックされたのライト・エラー

■ FIFO バッファのアンダーフローまたはオーバーフロー・エラー

■ ホスト・タイムアウトによるデータ飢餓

■ データ・リード・タイムアウトまたはブート・データ・スタート

■ 応答タイムアウトまたは ACK ブートが受信

■ データ CRC エラー

■ 応答 CRC エラー

■ FIFO バッファのデータ要求が受信

■ トランスミット FIFO バッファのデータ要求

■ データ転送上

■ コマンドが完了

■ 応答エラー

Receive FIFO Data Request および Transmit FIFO Data Request の割り込みはレベル・セン

シティブの割り込み要因によって設定されます。したがって、rintstsレジスタに 0で割り込みの対応するビットをリセットする前に、割り込みソースは、まずクリア

する必要があります。

例えば、Receive FIFO Data Request 割り込みを受信受信したときに、FIFO バッファは

FIFO バッファ・カウントが RX watermark より大きくならないように空にする必要が

あります。それ以外の場合、割り込みがトリガされるようになります。

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

されます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 8: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒8 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

FIFO バッファSD/MMC コントローラは、送信および受信データを格納するための、4 KB のデータ

FIFO バッファを持っています。 FIFO バッファ・メモリは、エラー訂正コード(ECCS)をサポートしています。 FIFO バッファの両方のインタフェースは、シングルとダブ

ル・ビット・エラー・インジェクションをサポートしています。イネーブルおよび

エラー・インジェクション・ピンはシステム・マネージャによってドライブされる

入力です。そして、ステータス・ピンは、MPU サブシステムにドライブされる出力

です。

SD/MMC コントローラは、シングル・ビット訂正可能なエラーが検出された(また

訂正された)ときに出力をシステム・マネージャに通知するとき、また、ダブル・

ビット(修正不可能)エラーが検出されたときに提供します。システム・マネー

ジャは、ECC エラーが検出されたときに GIC への割り込みを生成します。

f 詳しくは、Cyclone® V デバイス・ハンドブック Volume 3 の「 System Manager 」の章を

参照してください。

内部DMAコントローラ内部 DMA コントローラは、CSR とカードへ、またはその逆にシステム・メモリから

データを転送し、単一の送信または受信のエンジンを持っています。コントローラ

は、効率的にソースから 小限のホスト・プロセッサの介入宛先へデータを移動す

るために、ディスクリプタのメカニズムを使用します。このようなカードから送信

および受信データ転送の完了のような状況で、ホスト・プロセッサに割り込むよう

にコントローラを設定することができます(他の正常またはエラー条件も同じく)。

シングル・データ構造を介して DMA コントローラとホスト・ドライバと通信しま

す。

内部 DMA コントローラは、システム・メモリにカードからデータ・バッファに受信

データを転送し、転送コントローラの FIFO バッファにメモリ内のデータ・バッファ

からデータを送信します。システム・メモリに常駐するディスクリプタはこれらの

バッファにポインタとして機能します。

データ・バッファは、システム・メモリの物理メモリ・スペースに常駐し、完全ま

たは部分的なデータで構成されます。バッファ状態はディスクリプタに保持されま

す。データ・チェインは、複数のデータ・バッファにまたがるデータを指します。

ただし、単一のディスクリプタには、複数のデータ・バッファにまたがることはで

きません。

単一の記述は、受信と送信の両方に使用されます。リストのベース・アドレスは、

ディスクリプタ・リスト・ベースのアドレス・レジスタ(dbaddr)に書き込まれて

います。ディスクリプタ・リストは前方にリンクされています。 後の記述は、環

構造を作成するための 初のエントリにポイントすることができます。ディスクリ

プタ・リストは、ホストの物理メモリ・アドレス・スペースに常駐します。各ディ

スクリプタは、 大 2 つのデータ・バッファを指すことができます。

内部 DMAコントローラ・ディスクリプタ内部 DMA コントローラは、ディスクリプタ構造体のこれらのタイプを使用していま

す。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 9: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒9SD/MMCコントローラの機能の説明

■ デュアル・バッファ構造 — 2 ディスクリプタ間の距離は、バス・モード・レジス

タ(bmod)のディスクリプタ・スキップ・レングス・フィールド(dsl)に書き

込まれたスキップの長さの値によって決定されます。

■ チェイン構造 — 各ディスクリプタは、ユニークなバッファへ、またはリンクされ

たリスト内の次のディスクリプタを指しています。

図 11–4 および図 11–5 にはそれぞれ、内部 DMA コントローラのデュアル・バッ

ファ・ディスクリプタの構造やチェイン・ディスクリプタの構造を示しています。

図11‒4. デュアル・バッファ・ディスクリプタの構造

図11‒5. チェイン・ディスクリプタの構造

Descriptor A

Descriptor B

Data Buffer 1

Descriptor C

Data Buffer 1

Data Buffer 1

Data Buffer 2

Data Buffer 2

Data Buffer 2

The Distance Between 2Descriptors Is Determined by the DSL Value Programmedin the BMOD Register

Descriptor A

Descriptor BData Buffer

Descriptor CData Buffer

Data Buffer

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 10: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒10 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

表 11–3 は、ディスクリプタの内部フォーマットを示しています。ディスクリプタ・

アドレスは 32 ビット・バスに揃える必要があります。各ディスクリプタは、コント

ロールおよびステータス情報の 16 バイトが含まれています。ディスクリプタの各

ビットについて詳しくは、11–11ページの表 11–4~ 11–13ページの表 11–7に参照し

てください。

表11‒3. ディスクリプのフォーマット

ディスクリプタ名

オフセット

31 30 29 ... 26 25 ... 13 12 ... 6 5 4 3 2 1 0

DES0 0

OWN

CES — ER CH FS LD DIC —

DES1 4 — BS2 BS1

DES2 8 BAP1

DES3 12 BAP2 または次のディスクリプタ・アドレス

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 11: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒11SD/MMCコントローラの機能の説明

内部 DMA コントローラ・ディスクリプタ内の DES0 フィールドは、コントロールお

よびステータス情報が含まれています。表 11–4 は、このディスクリプタのビットを

示しています。

表11‒4. 内部 DMAコントローラ DES0 のディスクリプタ・フィールド

ビット ビット名 説明

31 OWN

1 に設定すると、このビットはディスクリプタが内部 DMA コントローラによって所有されていることを示しています。

このビットが 0 に設定されている場合、ディスクリプタがホストによって所有されていることを示しています。データ転送を完了したとき、内部 DMA コントローラはこのビットを 0 にリセットします。

30 Card Error Summary (CES)

CES のビットは、トランザクション・エラーが発生したかどうかを示します。 CES ビットは、 rintsts レジスタの次のエラービット数の論理和です。

■ End-bit error (ebe)

■ Response timeout (rto)

■ Response CRC (rcrc)

■ Start-bit error (sbe)

■ Data read timeout (drto)

■ Data CRC for receive (dcrc)

■ Response error (re)

29:6 Reserved —

5 End of Ring (ER)

1 に設定すると、このビットは、ディスクリプタのリストが 終的なディスクリプタに達したことを示しています。内部 DMA コントローラは、ディスクリプタ・リングを作成して、リストのベース・アドレスにリターンします。 ER はデュアル・バッファ・ディスクリプタの構造にのみ使用可能です。

4Second Address Chained

(CH)

1 に設定すると、このビットはディスクリプタ内の 2 番目のアドレス次のディスクリプタのアドレスではなく、第二のバッファ・アドレスであることを示します。このビットを 1 に設定すると、BS2 (DES1[25:13]) は全てゼロでなければなりません。

3 First Descriptor (FS)1 に設定すると、このビットは、このディスクリプタがデータの 初のバッファが含まれることを示します。 初のバッファのサイズが 0の場合、次のディスクリプタは、データの先頭が含まれています。

2 Last Descriptor (LD) 1 に設定すると、このビットはこのディスクリプタでポイントするバッファがデータの 後のバッファであることを示しています。

1Disable Interrupt on

Completion (DIC)

1 に設定すると、このビットはこのディスクリプタでポイントするバッファで 後のデータのための内部 DMA コントローラ・ステータス・レジスタ(idsts)の TI/RI ビットの設定を防止します。

0 Reserved —

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 12: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒12 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

DES1 ディスクリプタ・フィールドは、バッファ・サイズが格納されます。表 11–5は、このディスクリプタのビットを示しています。

DES2 ディスクリプ・タフィールドには、データ・バッファへのアドレス・ポインタ

が含まれています。表 11–6 に、このディスクリプタのビットを示します。

表11‒5. 内部 DMAコントローラ DES1 のディスクリプタ・フィールド

ビット ビット名 説明31:26 Reserved —

25:13 Buffer 2 Size (BS2)

これらのビットは、第 2 データ・バッファのバイト・サイズを示します。バッファ・サイズは 4 の倍数でなければなりません。バッファ・サイズが4 の倍数でない場合、結果の動作は未定義です。 DES0[4] が 1 に設定されている場合、このフィールドには、有効ではありません。

12:0 Buffer 1 Size (BS1)

4 バイトの倍数でなければならないデータ・バッファのバイト・サイズを示しています。バッファ・サイズが 4 の倍数でない場合、結果の動作は未定義です。このフィールドが 0 の場合、DMAはバッファを無視し、チェイン構造のために次のディスクリプタに、またはデュアル・バッファ構造のための次のバッファに移動します。

プログラムするディスクリプタとバッファが 1 つしかない場合、バッファ 2 の代わりに 1 バッファ1 を使用する必要があります。

表11‒6. 内部 DMAコントローラ DES2 のディスクリプタ・フィールド

ビット ビット名 説明

31:0 Buffer Address Pointer 1 (BAP1)

これらのビットは、 初のデータ・バッファの物理アドレスを示しています。内部 DMA コントローラは唯一の 32 ビット・アラインメントされたアクセスを実行するため、DES2 [1:0] を無視します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 13: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒13SD/MMCコントローラの機能の説明

現在のディスクリプタがデュアル・バッファ構造のチェイン・ディスクリプタまた

は第二バッファ・アドレスで 後のディスクリプタでない場合、DES3 ディスクリプ

タ・フィールドでは、次のディスクリプタへのアドレス・ポインタが含まれていま

す。表 11–7 は、このディスクリプタのビットを示しています。

ホスト・バスのバースト・アクセス内部 DMA コントローラは、bmodレジスタの固定バースト・ビット(fb)を使用して

構成されている場合、マスタ・インタフェース上で固定長のバースト転送を実行し

ようとします。 大バースト長が示され、bmodレジスタのプログラマブルなバース

ト長(pbl)フィールドによって制限されます。ディスクリプタが取得されるとき、

マスタ・インタフェースは、常にインタコネクトに 4 つのバースト・サイズを表示

します。

内部 DMA コントローラは、設定されたバーストを収容するのに、転送の終了での十

分なスペースがある場合、または転送の終了でのバイト数でがコンフィギュレー

ションされたバースト長より少ない場合にデータ転送を開始します。 DMA マスタ・

インタフェースが固定長のバースト用に設定されている場合、INCR4/8/16 および

SINGLE トランザクションの も効率的な組み合わせを使用してデータを転送しま

す。 DMA のマスタ・インタフェースが固定長バースト用に構成されていない場合、

INCR(不定長)と SINGLE トランザクションを使用してデータを転送します。

ホスト・データ・バッファのアラインメントシステム・メモリ内の送信および受信データ・バッファは、32 ビット境界に揃える

必要があります。

バッファ・サイズの計算ドライバは、送信または受信するデータの量が知られています。DES1 ディスクリプ

タ・フィールドのバッファ・サイズ・フィールドで指定されたカードに送信するた

めに、内部の DMA コントローラは、FIFO バッファからの正確なバイト数を転送しま

す。

ディスクリプタは 後に設定されていない場合(DES0 フィールド LD ビットが 0 に

設定する状態)、対応するバッファは、完全なものとみなされ、バッファ内の有効な

データの量は正確にバッファ・サイズ・フィールドによって示されています。ディ

スクリプタが 後としてマークされている場合、DES1 フィールドでのバッファ・サ

イズによって示されるように、バッファは十分(または不十分)の場合もあります。

ドライバが有効である場所の数を認識しています。ドライバは残留の無効なバイト

を無視するように期待されています。

表11‒7. 内部 DMAコントローラ DES3 のディスクリプタ・フィールド

ビット ビット名 説明

31:0Buffer Address Pointer 2 (BAP2) or Next Descriptor Address

これらのビットは、デュアル・バッファ構造が使用されている第 2 のバッファの物理アドレスを示しています。Second Address Chained

(DES0[4])ビットが 1 に設定されている場合、このアドレスでは次のディスクリプタが存在している物理メモリへのポインタが含まれます。

これが 後のディスクリプタでない場合、次のディスクリプタ・アドレス・ポインタは 32 ビットにアラインされる必要があります。ビット 1および 0 が無視されます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 14: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒14 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

内部DMAコントローラの割り込み割り込みは、様々なイベントの結果として生成することができます。idstsレジスタ

には、割り込みを発生させる可能性のあるすべてのビットが含まれています。内部

DMA コントローラの割り込みイネーブル・レジスタ(idinten)は、割り込みを発生

する可能性があるイベントのそれぞれのイネーブル・ビットが含まれています。

idsts のレジスタで 2 つのサマリー割り込みがあります:通常の割り込みサマリ・

ビット(nis)と異常な割り込みサマリ・ビット(ais)。nisビットは、idsts で 

の送信割り込み(ti)と受信割り込み(ri)ビットの論理和からの出力されます。 aisビットは、idsts レジスタでの致命バス・エラー割り込み(fbe)、ディスクリプタ

不使用能割り込み(du)、カード・エラーの要約割り込み(ces)ビットの論理和

(OR)の結果です。

割り込みは、対応するビット位置に 1 を書き込むことによってクリアされます。 0 割

り込みのビット位置に書き込まれた場合、書き込みは無視され、割り込みはクリア

されません。グループ内のすべてのイネーブルされた割り込みがクリアされると、

対応するサマリ・ビットは 0 に設定されます。両方の要約ビットを 0 に設定すると、

割り込み信号がデアサートされます。

割り込みは、キューに入れられません。ドライバは以前の割り込みに応答する前に

他の割り込みイベントが発生した場合、追加の割り込みは生成されません。例えば、

idsts レジスタの ri ビットは、1 つ以上のデータをホスト・バッファに転送されたこ

とを示します。

割り込みは同時の複数のイベントのために一度だけ生成されます。ドライバは、割

り込み要因のための idsts レジスタをスキャンする必要があります。コントローラ

からの 終の割り込み信号は BIU と内部 DMA コントローラからの割り込みで論理和

です。

内部DMAコントローラ FSM次のステップでは、内部の DMA コントローラの機能ステート・マシン(FSM)の動

作を示しています。

1. 内部 DMA コントローラがディスクリプタをフェッチするために 4 つのアクセス

を実行します。

2. DMA コントローラは、内部ディスクリプタ情報を格納します。それが 初のディ

スクリプタの場合、コントローラは FIFO バッファ・リセットを発行して、リセッ

トが完了するまで待ちます。

3. 内部 DMA コントローラは、正しさのディスクリプタの各ビットをチェックしま

す。ビットのミスマッチが発見された場合、適切なエラー・ビットが 1 に設定さ

れ、ディスクリプタは DES0 フィールドでの OWN ビットを 1 に設定することで閉

じられます。

rintstsレジスタは、次の条件のいずれかを示します。

■ 応答タイムアウト

■ 応答 CRC エラー

■ データ受信タイムアウト

■ 応答エラー

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 15: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒15SD/MMCコントローラの機能の説明

4. DMA がシステム・メモリにデータを書き込む前に到達する RX の透かし、または

システム・メモリからデータを読み出す前に到達する TX の透かしを待ちます。 RX の透かしは、DMA がメモリへの書き込みをする前に、FIFO バッファにローカ

ルに格納されるバイト数を表します。 DMA がメモリからデータを読み込む前に、

TX の透かしは地元の FIFO バッファの空きバイト数を表します。

5. プログラマブルなバースト長(PBL)のフィールドの値は、バッファ内のデータ

の残量よりも大きい場合、単一の転送が開始されます。デュアル・バッファが使

用されている場合、また第 2 のバッファにデータ(バッファ・サイズ = 0)が含

まれていない場合、バッファがスキップされ、ディスクリプタが閉じられます。

6. ディスクリプタ内の OWN ビットは、1 ディスクリプタのデータ転送が完了した

後の内部 DMA コントローラによって 0 に設定されます。転送は複数のディスク

リプタにまたがっている場合、DMA コントローラは、次のディスクリプタを

フェッチします。転送が現在のディスクリプタで終わっている場合、内部の DMAコントローラは idsts レジスタの ri ビットまたは tiビットを設定した後、アイ

ドル状態になります。ディスクリプタ構造(デュアル・バッファもしくはチェイ

ンされたバッファ)に応じて、ディスクリプタの適切な開始アドレスがロードさ

れます。デュアル・バッファ・ディスクリプタの第 2 のデータ・バッファの場

合、ディスクリプタは再度フェッチされていません。

内部DMA転送中の中断データ転送が進行中である間に、ホストがカードに SD/SDIO STOP_TRANSMISSION コ

マンド (CMD12) を発行する場合、内部 DMA コントローラは、Data Transfer Over (DTO)の割り込みがアサートされるまでデータ転送が完了した後に現在のディスク

リプタを閉じます。STOP_TRANSMISSION コマンドが発行されると、DMA コントロー

ラは、単一のバースト転送を実行します。

1. カードのライト動作では、内部 DMA コントローラは、DTO の割り込みがアサー

トされるまでシステム・メモリからフェッチした後 FIFO バッファにデータを書き

込みます。これは、カード・クロックの動作を維持して、STOP_TRANSMISSIONコマンドが確実にカードに送信されるように行われます。

2. カードのリード動作では、内部 DMA コントローラは、FIFO バッファからデータ

の読み出しを維持して、DTO の割り込みが発生するまで、システム・メモリに書

き込みます。すべての FIFO バッファのデータが空にされていない限り、DTO の割

り込みが発生されないため、このステップが必要です。

1 カード・ライトの中止の場合、STOP_TRANSMISSION コマンドが発行されている間の

現在のディスクリプタのみ内部 DMA コントローラによってクローズされています。

残りの未読ディスクリプタは内部 DMA コントローラでクローズされていません。

1 カード・リードの中止の場合、内部の DMA コントローラは、FIFO バッファのデータ出

力を読み出し、対応するディスクリプタのデータ・バッファに書き込みます。残り

の未読ディスクリプタはクローズされません。

FIFO バッファのオーバーフローおよびアンダーフロー通常のデータ転送状態の間、FIFO バッファのオーバーフローやアンダーフローは発

生しません。しかし、プログラミング・エラーは、FIFO バッファのオーバー・フ

ローまたはアンダーフローが存在する場合発生することがあります。例えば、次の

ようなシナリオを考えてみましょう。

送信の場合:

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 16: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒16 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

■ PBL=4

■ TX の透かし = 1

これらのプログラミング値では、FIFO バッファが 1 つの空場所のみを持っている場

合、DMA は、使用可能なストレージでたった 1 つのワードがあってもメモリから 4ワードを読み込もうとします。これは、 FIFO バッファオーバフロー割り込みに結果し

ます。

受信の場合:

■ PBL=4

■ RX の透かし = 1

FIFO バッファが 1 つの場所のみを満たす場合、DMA は、たった 1 つのワードがあっ

てもメモリから 4 ワードを読み込もうとします。これは、 FIFO バッファオーバフロー

割り込みに結果します。

ドライバは、バイト数が転送されることを確認する必要があります(ディスクリプ

タで示されるように 4 バイトの倍数である)。例えば、bytcntレジスタは 13 の場合、

レングス・フィールドは常に 4 バイトの倍数でなければならないため、ディスクリ

プタで示されるバイト数は 16 に切り上げなければなりません。

表 11–8 に内部 DMA コントローラのデータ転送動作のための法的 PBL と FIFO バッ

ファの透かし値を示します。

表11‒8. PBL とウォーターマーク・レベル

PBL ( 転送数 ) TX/RX のウォーターマーク値1 1 以上

4 4 以上

8 8 以上

16 16 以上

32 32 以上

64 64 以上

128 128 以上

256 256 以上

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 17: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒17SD/MMCコントローラの機能の説明

致命バスエラーのシナリオ致命的なバスエラーは、マスタ・インタフェースを介してエラー応答が原因で発生

します。このエラーはシステム・エラーです。したがって、ソフトウェア・ドライ

バは、コントローラ上のすべてのそれ以上の設定を行ってはなりません。このよう

なシナリオからのたった 1 つのリカバリー・メカニズムは、次のいずれかのタスク

を実行することです。

■ リセット・マネージャを介してコントローラにリセットを発行します。

■ CTRL レジスタのコントローラ・リセット・ビット(controller_reset)に書き

込むことによって、プログラム・コントローラのリセットを発行します。

CIUCIU インタフェースは、BIU と SD/MMC カードまたはデバイスとインタフェースして

います。ホスト・プロセッサは SD/MMC コントローラの BIU のコントロール・レジ

スタにコマンド・パラメータを書き込み、これらのパラメータは、CIU に渡されま

す。コントロール・レジスタの値に応じて、CIU は SD/MMC プロトコルに従ってカー

ド・バスで SD/ MMC コマンドおよびデータ・トラフィックを生成します。コント

ロール・レジスタの値は、コマンドとデータ・トラフィックが CE-ATA カードに向け

られているかどうかを決定し、SD/MMC コントローラがコマンドとデータ・パスを

制御します。

以下のリストは、CIU の動作の制約について説明します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 18: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒18 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

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

■ コマンド・パス

■ データ・パス

■ クロック・コントロール

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 19: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒19SD/MMCコントローラの機能の説明

コマンド・パスコマンド・パスは次の機能を実行します。

■ カード・コマンドのパラメータをロードする

■ カード・バスにコマンドを送信する

■ カード・バスからの応答を受信する

■ 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レジス

タ・ビットの設定に依存します:

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 20: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒20 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

■ update_clock_registers_only—このビットはcmdレジスタで1に設定されている

場合、コマンド・パスは clkenaは、clkdiv、および clksrcレジスタのみ更新し

ます。このビットが 0 に設定されている場合、コマンド・パスは、cmd、cmdarg、および tmoutにレジスタをロードします。その後、カードに送信される新しいコ

マンドを処理します。

■ wait_prvdata_complete— このビットが 1 に設定されている場合、コマンド・パス

は、次のいずれかの条件の下で、新しいコマンドをロードします。

■ すぐにデータ・パスが空いている場合(つまり、進行中のデータ転送がない

場合)、またはオープン・エンドのデータ転送が進行中の場合((bytcnt= 0)。

■ 現在のデータ転送が完了した後に、事前定義されたデータ転送が進行中の場

合。

コマンドの送信および対応の受信新しいコマンドがコマンド・パス(cmd レジスタの update_clock_registers_onlyビットが 0 に設定されている)にロードされた後、コマンド・パスのステート・マ

シンはカード・バス上のコマンドを送出します。図 11–6 は、コマンド・パスのス

テート・マシンを示しています。

コマンド・パスのステート・マシンは、cmdレジスタ・ビット値に応じて、次の機能

を実行します。

1. send_initialization—80 クロック・サイクルの初期化シーケンスは、コマンド

を送信する前に送信されます。

2. response_expected— 応答は、コマンドのために期待されています。コマンドが

送信された後、コマンド・パスのステート・マシンは、48 ビットまたは 136 ビッ

トの応答を受信すると BIU に送信します。カード応答のスタート・ビットがク

ロック・サイクル数(tmout レジスタとして設定される)内に受信されない場合、

BIU をシグナルするために rtoビットと command done(CD)ビットが rintstsレジスタで 1 に設定されます。response-expected ビットが 0 に設定されている場

合、コマンド・パスは、コマンドを送信し、BIU に response done をシグナルしま

す。これにより、cmdビットは rintsts レジスタで 1 に設定されるようになりま

す。

図11‒6. コマンド・パースのステート・マシン

CommandIdle

wait_tnccTransmitCommand

ReceiveResponse

Send IRQResponseRequest

Response Done/Response Timeout

tNCC Done

response_expected = 0

load_new_cmd

response_expected = 1

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 21: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒21SD/MMCコントローラの機能の説明

3. response_length— このビットが 1 に設定されている場合、136 ビット長の応答

が受信され、それが 0 に設定されている場合、48 ビットの短い応答が受信されま

す。

4. check_response_crc— このビットが 1 に設定されている場合、コマンド・パス

は、内部生成された CRC-7 と受信 CRC-7 を比較しています。この 2 つが一致しな

い場合、応答の CRC エラーは、rintstsレジスタでの rcrcビットは 1 に設定さ

れている BIU に通知されます。

BIU に応答を送信response_expectedビットが CMD レジスタで 1 に設定されている場合、受信した応答

が BIU に送信されます。 応答・レジス 0(resp0)は短い応答のために更新され、応

答・レジス 3(resp3)、応答・レジスタ 2(resp2)、応答・レジス 1(resp1)、およ

び resp0 レジスタは、長い応答で更新されます(cmdビットが rintstsレジスタが 1に設定された後)。応答が CIU によって送信される AUTO_STOP コマンドのためのも

のである場合、応答は resp1 に書き込まれます(auto command done bit の acdが

rintstsレジスタに設定された後)。

正しいカードの応答は、表 11–9 に記載されています。コマンド・パスはカード・応

答の内容を検証します。

コマンド索引は、136 ビット応答をチェックされていないか、または cmdレジスタの

ccheck_response_crc ビットが 0 に設定されている場合にチェックされていません。 136 ビット応答や予約の CRC 48 ビット応答では、コマンド・インデックスが予約さ

れています(つまり 0b111111)。

f 応答値について詳しくは、11–87 ページの「参考資料」を参照してください。

CMD ライン上で Pビットのドライブ応答が予想されていない場合、コマンド・パスは、2 つのコマンドの CMD ライン上

に 1 に 1 サイクル・プルアップ・ビット(P ビット)をドライブします。応答が予

想される場合、P ビットは、応答が受信された後、そしてコマンドの開始前にドラ

イブされます。 CCS を期待するコマンドについては、CE-ATA カード・デバイスにアク

セスするときに、P ビットは、CE-ATA カード(ATA のコントロール・レジスタでの

nIEN ビットは 1 に設定されている)での割り込みがディセーブルされるときにのみ、

応答した後にドライブされます。つまり、CCS expected ビット(ccs_expected)は

cmd レジスタが 0 に設定されています。コマンドが CCS を想定している場合、P ビット

は、CCS を受信した後にのみドライブされます。

表11‒9. カード・応答のフィールド

フィールド 内容

レスポンス送信ビット 0

コマンド・インデックス送信したコマンドのコマンド・インデックス

エンド・ビット 1

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 22: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒22 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

CCS のポーリングCE-ATA カード・デバイスは、通常の ATA コマンド補完または ATA コマンド終端のホ

スト・コントローラに通知する CCS を生成します。カードからの応答を受信した後

に、コマンド・パスのステート・マシンは、cmdレジスタ・に応じて図 11–7 に示す

機能を実行します。

以下は、図 11–7 での細部について説明します。

1. Response end bit state— ステート・マシンはカード・デバイスからの応答の 後の

ビットを受信します。 cmdレジスタの ccs_expectedビットが 1 に設定されている

場合、ステート・マシンは wait CCS のステートになります。

2. Wait CCS— ステート・マシンは、CE-ATA カード・デバイスからの CCS を待ちま

す。 CCS のを待っている間、以下のイベントが発生する可能性があります。

a. ソフトウェアは、CCS を待つことと、コマンド・ラインで CCSD パターンを送

信しないことを示す ctrl レジスタでの send CCSD ビット(send_ccsd)を設

定します。

b. CMD ラインの CCS を受信します。

3. Send CCSD command—CMD ライン上 CCSD パターン(0b00001)を送信します。

ホスト・プロセッサへの CCS 検出および割り込みcmdレジスタの ccs_expected ビットが 1 に設定された場合、CE-ATA カード・デバイス

からの CCS が rintsts レジスタでの data transfer over ビット(dto)を設定すること

によって示されます。この割り込みがマスクされていない場合、コントローラは、

DTO の割り込みを生成します。

RW_MULTIPLE_BLOCK コマンドについては、CE-ATA カード・デバイス割り込みがディ

セーブルされる場合(ATA のコントロール・レジスタの nIENビットが 1 に設定され

ている) 、cmdレジスタで ccs_expected ビットが 0 に設定されると、カードからの

CCS が存在しません。データ転送が完了すると(すなわち、要求されたバイト数が

転送されると)、rintstsレジスタの dto ビットが 1 に設定されています。

図11‒7. CE-ATA コマンド・パスのステート・マシン

ResponseEnd Bit

wait_tncc

TransmitCMD12

ccs_expected = 1

cmd_in = 0

okay_to_send_ccsd

counter_zero

ccs_expected = 0

send_auto_stop_ccsdwait_CCS

send_CCSD

CommandIdle

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 23: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒23SD/MMCコントローラの機能の説明

CCS タイムアウトコマンドは、カード・デバイス(ccs_expectedビットは cmd レジスタが 1 に設定さ

れている)からの CCS をウェイトする場合、コマンド・ステート・マシンは、CCSをウェイトして、ウェイト CCS 状態に留まります。 CE-ATA カードが CCS を送信する

ために失敗した場合、ホスト・ソフトウェアは、コマンドとデータ・パスを解放す

るためにタイムアウト・メカニズムを実装する必要があります。コントローラは、

ハードウェア・タイマを実装するのではなく、ソフトウェア・タイマを維持するこ

とはホスト・ソフトウェアの責任です。

CCS のタイムアウトが発生した場合、ホストは、ctrlレジスタの send_ccsdビット

を設定することによって、CCSD のコマンドを発行する必要があります。コントロー

ラー・コマンド・パスのステート・マシンは CE-ATA カード・デバイスに CCSD のコ

マンドを送信して、アイドル状態を完了します。 また、CCSD のコマンドを送信した

後、ホストは未処理の ATA コマンドの中止に CE-ATA カードに SD/SDIO STOP_TRANSMISSION コマンドを送信する必要があります。

CCSD のコマンドの送信ctrlレジスタの send_ccsdビットが 1 に設定されている場合、コントローラは、CMDライン上の CCSD パターンを送信します。 CCS を待っている間、または CCS のタイム

アウトが発生した後、にホストは CCSD のコマンドを送信することができます。

CCSD パターンを送信した後、コントローラは rintstsレジスタの cmd ビットを設定

し、Command Done の割り込みがマスクされていない場合、ホストに割り込みを発生

します。

1 CIUブロック内で、 ctrlレジスタのビットsend_ccsdがCCSがサンプリングされている

のと同じクロック・サイクルで 1 に設定されている場合、CIU ブロックは CMD ライ

ン上の CCSD パターンを送信しません。このケースでは、rintstsレジスタの dto および cmdビットが 1 に設定されます。

1 非同期境界のため、CCS がすでに発生した可能性があり、send_ccsdビットが 1 に設定

されます。このケースでは、CCSD のコマンドは、CE-ATA カード・デバイスに送信さ

れなくなり、send_ccsdビットは 0 に設定されていません。次のコマンドが発行され

る前に、ホストは 0 に send_ccsdビットをリセットする必要があります。

ctrlレジスタの送信自動停止 CCSD(send_auto_stop_ccsd)ビットが 1 に設定されて

いる場合、コントローラは、CCSD のパターンを送信した後、内部で生成された

STOP_TRANSMISSION コマンド(CMD12)を送信します。コントローラは rintstsレジスタでの acdビットを設定します。

I/O 伝送遅延 (NACIO タイムアウト ) ホスト・ソフトウェアは、CE-ATA カード・デバイスからの読み出し中に I/O 伝送遅

延(NACIO サイクル)のタイムアウトを処理するためのタイムアウト・メカニズムを

維持します。コントローラは、任意のタイムアウト・メカニズムを維持すること、

またはデータ・トークンのスタート・ビットを待っている間 NACIO サイクルの経過

を示すことをしません。I/O 伝送遅延が RW_REG と RW_BLK コマンドを使用して転送

を読み出すために適当ですが、このドキュメントで使用されている RW_REG と

RW_BLK コマンドは、CE-ATA 仕様で定義される RW_MULTIPLE_REGISTER と

RW_MULTIPLE_BLOCK MMC コマンドを参照しています。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 24: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒24 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

1 NACIO タイムアウトの後に、アプリケーションは CCSD と STOP コマンド、または STOPコマンドを送信することによって、コマンドを中止する必要があります。rintstsレ

ジスタでのデータ・リード・タイムアウトの boot data start ビット(bds)と dtoビッ

トが 1 に設定されている場合、Data Read Timeout(DRTO)割り込みは、

STOP_TRANSMISSION コマンドがコントローラの転送されている間に 1 に設定される

ことがあります。

データ・パスデータ・パス・ブロックは、ライト・データ転送中にカード・バス上でデータ FIFOバッファを読み込み、データを送信します。または、リード・データの転送中に

FIFO バッファにデータを受信して、書き込みます。データ・パスは、予期される

データ、リード / ライトのデータ転送、ストリーム / ブロック転送、ブロック・サイ

ズ、バイト数、カードタイプ、タイムアウト・レジスタなどの新しいデータ・パラ

メータをデータ転送コマンドが進行中ではないときにロードします。cmdレジスタの

data transfer expected ビット(data_expected)が 1 に設定されている場合、新しいコ

マンドは、データ転送コマンドであり、データ・パスは、次のいずれかのアクショ

ンを開始します。

■ リード / ライト・ビットの転送データ = 1

■ リード / ライト・ビットの受信データ = 0

データ送信図 11–8 に示すように、データ送信ステート・マシンは、データ・ライト・コマンド

を受信したとき応答した後にデータ伝送の 2 つのクロック・サイクルを開始します。

コマンド・パスが応答エラーまたは応答の CRC エラーを検出しても発生します。応

答が原因で応答タイムアウトのカードから受信されていない場合、データは送信さ

れません。 cmdレジスタでの transfer mode ビット(transfer_mode)の値に応じて、

データ送信ステート・マシンはストリームまたはブロック内のカード・データ・バ

ス上にデータを入れます。

図11‒8. データ送信ステート・マシン

Data TxIdle

load_new_cmd, data_expected, WriteData & Block Transfer

Stop Data Command

Byte CountRemaining != 0Data Not Busy

Block Done

Stop Data Command

load_new_command,data_expected, WriteData & Stream Transfer

Byte CountRemaining = 0or Suspend/StopData Command

TxData Stream

TxData Block

RxCRC Status

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 25: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒25SD/MMCコントローラの機能の説明

ストリーム・データ送信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 を含むブロック内のバイト数がブロック・サイズと等しいブロック内のデー

タを送信します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 26: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒26 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

ctypeレジスタが 1 ビット、4 ビット、または 8 ビット・データ転送用に設定され

ている場合、データはそれぞれ 1、4、または 8 のデータ・ラインに送信されま

す。また、CRC-16 はそれぞれ 1、4、または 8 のデータ・ラインに別々に生成

し、送信されます。

1 データ・ブロックが送信された後、データ送信ステート・マシンがカードから

CRC ステータスを受信ししす。残りのバイト数が 0 になった場合、BIU へのデー

タ・パスは、データ転送が完了したことを通知します。これは、rintstsレジス

タの dtoのビットが 1 に設定された場合に発生します。

残りのデータ・バイトがゼロより大きい場合、データ・パス・ステート・マシン

は、別のデータ・ブロックの送信を開始します。

負の CRC ステータスがカードから受信した場合、データ・パスは rintstsレジ

スタに dcrcビットを設定することにより、BIU に対するデータ CRC エラーを通

知し、すべてのバイトが送信されるまで、データ送信を継続します。

CRC ステータ・ススタート・ビットがデータ・ブロックの終了後に 2 クロック・

サイクルで受信されない場合、CRC ステータス SBE は rintstsレジスタに ebeビットを設定し、データ転送が終了したことにより、BIU に通知されます。

send_auto_stopビットはcmdレジスタが1に設定されている場合、 SD/SDIO STOPコマンドは、内部的に余分なバイトがカードに転送されていない 後のデータ・ブ

ロックの転送中に生成されます。 STOP コマンドのエンド・ビットは 後のデー

タ・ブロックの CRC ステータスのエンド・ビットと一致しない場合があります。

カードのデータ幅のそれぞれ 1 ビット、4 ビット、または 8 ビットのためにブ

ロック・サイズが 4、16、32 より小さい場合、データはすべてのデータ送信ス

テート・マシンは、すべてのデータが転送されるときに終了します。その場合に

は、内部で生成される STOP コマンドは、コマンド・パスにロードされます。

bytcntがゼロの場合(ブロック・サイズはゼロより大きくなければならない)

転送は、オープン・エンドのブロック転送です。データ転送のこのタイプのデー

タ送信ステート・マシンは、ホスト・ソフトウェアが SD/SDIO STOP または

STOP_TRANSMISSION(CMD12)コマンドを発行するまで、ブロック・ライト・

データ転送を継続します。

データ・レシーバ図 11–9 に示されるように、データ受信ステート・マシンは、コマンド・パスが応答

エラーや応答 CRC エラーを検出した場合でも、データ・リード・コマンドの 後の

ビットの後にデータの 2 クロック・サイクルを受信します。応答タイムアウトが発

生するため、応答がカードから受信されていない場合、BIU は、データ転送が完了し

たことを信号を受信しません。コントローラによって送信されたコマンドがカード

に対する不正なオペレーションのとき、これは発生します。これによって、カード

はリード・データ転送を開始することを防ぎます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 27: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒27SD/MMCコントローラの機能の説明

データがデータ・タイムアウトの前に受信されない場合、データ・パスは BIU への

データ・タイムアウトおよび実行されたデータ転送のエンドを示します。cmdレジス

タの transfer_modeビットの値に基づいて、データ受信ステート・マシンは、スト

リームまたはブロック(複数可)のカード・データ・バスからデータを取得します。

ストリーム・データ・リード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)を受信します。

図11‒9. データ受信ステート・マシン

Data RxIdle

load_new_cmd, data_expected, ReadData & Block Transfer

Stop Data Command

Byte CountRemaining != 0

Block Done

Stop Data Command

load_new_command,data_expected, ReadData & Stream Transfer

Byte CountRemaining = 0or Stop Data Command

RxData Stream

RxData Block

ReadWait

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 28: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒28 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

複数ブロック・データ・リード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 ビットのデータ転送モードはそれぞれ 4、16、32 バイト未満の場

合、データ送信ステート・マシンは、すべてのデータが転送されるとデータ転送

を終了します。その場合には、内部的に生成された STOP コマンドはコマンド・

パスにロードされます。その後にカードから受信したデータは、データ・パスで

無視されます。

bytcntレジスタが 0(ブロック・サイズはゼロより大きくなければならない)の

場合、転送はオープン・エンドのブロック転送です。このタイプのデータ転送の

場合、データ受信ステート・マシンは、ブロック・リードのデータ転送はホス

ト・ソフトウェアが SD/SDIO STOP または STOP_TRANSMISSION(CMD12)コマン

ドを発行するまで続行します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 29: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒29SD/MMCコントローラの機能の説明

オート・ストップコントローラは、内部 SD/SDIO STOP コマンドを生成し、cmdレジスタの

send_auto_stopビットが 1 に設定されたコマンド・パスにロードされます。 AUTO_STOP コマンドは、MMC のためのストリーム・リードまたはライト、そして複

数ブロックの読み出しまたは SD カード用の SD メモリ転送のためのリードまたはラ

イトを使用して、データ・バイトの正確な数を送信するために役立ちます。ソフト

ウェアは、表 11–10 に記載されている内容に応じて send_auto_stopビットを設定す

る必要があります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 30: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒30 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

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

表11‒10. オート・ストップの生成

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 31: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒31SD/MMCコントローラの機能の説明

■ ゼロより大きいバイト数の 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 コマンドの送信が遅延され、 余分なデータ・バイトを転送すること

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 32: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒32 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

ができます。ストリーム・ライトには、余分なデータ・バイトはエラー・データ

であり、カード・データが破損することがあります。ホストがデータ転送が完了

する前にデータ転送を終了する場合、SD/SDIO STOP または STOP_TRANSMISSION(CMD12)コマンドを発行することができます。その場合には、コントローラー

が AUTO_STOP コマンドを生成しません。

データ・パスを使用するデータ以外の転送コマンドいくつかの SD/SDIO データ以外の転送コマンド(リードおよびライト・コマンド以

外)は、データ・パスを使用します。表 11–11 には、コマンドとそのレジスタ・

セットアップ要件を示します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 33: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒33SD/MMCコントローラの機能の説明

表11‒11. データ以外の転送コマンドと要件

PROGRAM_CSD

(CMD27)

SEND_WRITE_PROT

(CMD30)

LOCK_UNLOCK

(CMD42)

SD_STATUS

(ACMD13)

SEND_NUM_WR_BLOCKS

(ACMD22)

SEND_SCR

(ACMD51)

cmd レジスタ・セットアップ

Cmd_index 0x1B=27 0x1E=30 0x2A=42 0x0D=13 0x16=22 0x33=51

Response_expect 1 1 1 1 1 1

Response_length 0 0 0 0 0 0

Check_response_crc 1 1 1 1 1 1

Data_expected 1 1 1 1 1 1

Read/write 1 0 1 0 0 0

Transfer_mode 0 0 0 0 0 0

Send_auto_stop 0 0 0 0 0 0

Wait_prevdata_complete 0 0 0 0 0 0

Stop_abort_cmd 0 0 0 0 0 0

cmdarg レジスタ・セットアップ

スタフ・ビット

32 ビット・ライト保護データ・アドレス

スタフ・ビット

スタフ・ビット

スタフ・ビット

スタフ・ビット

blksiz レジスタ・セットアップ16 4 Num_bytes (1) 64 4 8

bytcnt レジスタ・セットアップ16 4 Num_bytes (1) 64 4 8

表 11‒11 の注 :(1) Num_bytes = ロック・カードのデータ構造に従って指定されたバイト数。 SD 仕様と MMC の仕様を参

照してください。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 34: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒34 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

クロック・コントロール・ブロッククロック・コントロール・ブロックは、SD/MMC/CE-ATA カードに必要なさまざまな

クロック周波数を提供します。クロック・コントロール・ブロックは、別のカード・

クロック周波数を生成するために使用される 1 クロック・ディバイダを持っていま

す。

カード・クロック周波数は次のクロック ctrlレジスタの設定に依存します。

表11‒12.

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 35: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒35SD/MMCコントローラの機能の説明

■ 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 内でカード動作時に発生する可能性があります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 36: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒36 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

応答■ 応答タイムアウト — これは、タイムアウト・レジスタのクロック・サイクルの指

定された数以内に応答スタート・ビットと予想される応答を受信しません。

■ 応答 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 へのデータ転送が完了したことを示します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 37: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒37SD/MMCコントローラの機能の説明

■ データ 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 コントローラのクロックは、表 11–13 に記載されています。

表11‒13. 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 クロック

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 38: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒38 第 11 章 : SD/MMC コントローラSD/MMCコントローラの機能の説明

図 11–10 には、コントローラへの各種クロックの接続を示します。

シフタとコントローラに渡される前に、クロック・マネージャからの sdmmc_clkクロックは 4(sdmmc_clk_dividedクロック)によって分割されています。シフタは

sdmmc_drv_clkと sdmmc_sample_clkクロックを生成するために使用されます。これら

の位相シフタは、0、45、90、135、180、225、270、および 315 度を含む 大 8 つの

位相シフトまで提供します。 sdmmc_sample_clkクロックは、位相シフタからの出力

によってドライブすることができます。位相シフトの度合いと sdmmc_sample_clkソースの選択は、システム・マネージャで行われます。位相シフトを設定し、

sdmmc_sample_clkクロックのソースを選択する方法について詳しくは、11–44ページ

の「クロックのセットアップ」に参照してください。

コントローラーはカードにドライブされ sdmmc_cclk_outクロックを生成します。 sdmmc_cclk_outクロックの生成について詳しくは、11–34 ページの「クロック・コン

トロール・ブロック」を参照してください。

リセットSD/MMC コントローラが 1 つのリセット信号を持っています。リセット・マネー

ジャはコールドまたはウォーム・リセットで SD/MMC コントローラにこの信号をド

ライブします。

f 詳しくは、Cyclone V デバイス・ハンドブック Volume 3 の「 Reset Manager 」の章を参

照してください。

図11‒10. SD/MMCコントローラのクロック接続

Divideby 4

PhaseShifter

PhaseShifter

sdmmc_cclk_outl4_mp_clk

sdmmc_clk

sdmmc_fb_clk_in

sdmmc_clk_divided

sdmmc_drv_clk

sdmmc_sample_clk

SD/MMCController

Core

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 39: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒39SD/MMCコントローラのプログラミング・モード

インタフェース信号表 11–14 は SD/MMC コントローラのインタフェース信号の I/O ピンの使用を示してい

ます。

SD/MMCコントローラのプログラミング・モード

初期化この項では、SD/MMC コントローラを初期化する方法について説明します。

図 11–11 は、SD/MMC コントローラの初期化フローを示しています。コントローラ

への電源とクロックが安定した後、コントローラ・アクティブ Low のリセットがア

サートされます。リセット・シーケンスは、レジスタ、FIFO バッファ・ポインタ、

DMA インタフェース・コントロール、およびコントローラ内のステート・マシンを

初期化します。

ソフトウェアは、パワー・オン・リセット後に次のステップを実行する必要があり

ます。

表11‒14. コントローラのインタフェースの I/O ピン

信号 幅 方向 説明sdmmc_cclk_out 1 力 コントローラからカードへのクロック

sdmmc_cmd 1 入力 / 力 カード・コマンド

sdmmc_pwren 1 力 外部デバイス・パワー・イネーブル

sdmmc_data 8 入力 / 力 カード・データ

図11‒11. SD/MMCコントローラ初期化シーケンス

Assert Active-Low Reset

Enable Power to Card

Set Interrupt Masks

Enumerate Card Stack

Set the Clock Source Assignments

Set Other Controller Registers

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 40: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒40 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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 のクロック周波数を制限する必要が

あります。詳細については、11–41 ページの「列挙されたカード・スタック」に

参照してください。

6. クロック・ソースの割り当てを設定します。コントローラの clkdivと clksrcレジスタを使用してカードの周波数を設定します。詳細については、11–44 ページ

の「クロックのセットアップ」を参照してください。

7. 次のような共通のレジスタとフィールドが初期化プロセス中に設定することがで

きます:

■ tmoutレジスタの応答タイムアウト・フィールド(response_timeout)。典型

的な値は 0x64 になります。

■ tmoutレジスタのデータ・タイムアウト・フィールド(data_timeout)、次の

高値:

■ 10 * NAC

= 10 * ((TAAC * FOP) + (100 * NSAC))

この場合、

NAC = カード・デバイスの総合アクセス時間

TAAC = データ・アクセス時間の時間依存的要因

FOP = カード動作に使用されるカード・クロック周波数

NSAC = データ・アクセス・タイムのワースト・ケースのクロックのレート

依存要因

■ ホスト FIFO バッファ・レイテンシ

オン・リード : ホストがフル FIFO バッファから読み出しを開始する前の経過

時間

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 41: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒41SD/MMCコントローラのプログラミング・モード

オン・ライト : ホストは空の 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 にリセットします。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 42: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒42 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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 11–87 ページの「参考資料」上で説明したように、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 コマンドを発行します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 43: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒43SD/MMCコントローラのプログラミング・モード

■ ビット [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 カードのタイ

プを決定している場合があります。この場合、発見されているタイプに応じて

カード・スタックを列挙する必要があります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 44: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒44 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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 であることを確認します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 45: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒45SD/MMCコントローラのプログラミング・モード

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 に戻ります。

ハード・ロック・エラーに関する情報については、11–72 ページの「割り込みと

エラー処理」を参照してください。

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レジスタを使用することができます。

コントローラ /DMA/FIFO バッファ・リセットの使用次のリストは、SD/MMC コントローラの様々な部分にあるリセットの効果を示して

います。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 46: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒46 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

■ コントローラ・リセット —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 にリセットすることを推奨します。

FIFO バッファ ECC のイネーブル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 に設定しま

す。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 47: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒47SD/MMCコントローラのプログラミング・モード

データ以外の転送コマンド任意のデータ転送以外のコマンドを送信するには、ソフトウェアが適切なパラメー

タを指定して cmdレジスタと cmdargレジスタを書き込む必要があります。これらの

2 つのレジスタを使用して、コントローラがコマンドを形成し、CMDピンに送信しま

す。コントローラは rintsts レジスタのエラー・ビットを介してコマンド応答でエ

ラーを報告します。

応答が受信されると(エラー応答または有効な応答)コントローラが rintstsレジ

スタでの command_doneビットを 1 に設定します。短い応答は、resp0にコピーされ

ていますが、長い応答はすべての 4 つの応答レジスタ(resp0、resp1、resp2、およ

び resp3)にコピーされています。長い応答では、resp3のビット 31 は MSB を表わ

します。また、resp0のビット 0 は LSB を表わします。

基本とデータ転送以外のコマンドについては、次のステップを実行します。

1. 適切なコマンドの引数パラメータで cmdargレジスタに書き込みます。

2. 11–50 ページの表 11–15 の設定で 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 コマンドが実行されている間、ソフトウェアはクロック・パラメータを変更するこ

とはできません。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 48: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒48 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

データ転送コマンドデータ転送コマンドは、メモリ・カードとコントローラ間のデータを転送します。

データ・コマンドを発行するには、コントローラがコマンド引数、合計データ・サ

イズ、およびブロック・サイズを必要とします。メモリ・カードから(またはメモ

リ・カードに)転送されたデータはコントローラの 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 バッファが送信中に空であることか、または受信中にフルであること

です。ソフトウェアは空の状態のデータを書き込む、または完全な状態のデータ

を読み出すことにより、この状態を補正しない限り、コントローラは、データ転

送を継続することはできません。カードへのクロックが停止されます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 49: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒49SD/MMCコントローラのプログラミング・モード

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)に書き込みます。詳細については、11–69 ページの「カード・リー

ド・スレッショルド」を参照してください。

1 card read threshold enable ビット(cardrdthren)が 0 の場合、ホスト・シス

テムは、RX FIFO バッファが FIFO バッファに書き込まれるデータより速く

レートで読み出されることを保証することによって、RX FIFO バッファが

リード・データ転送中にフルにならないようにする必要があります。それ

以外の場合、オーバーフローが発生することがあります。

4. データ・リードの先頭データ・アドレスで cmdarg レジスタを書き込みます。

5. 表 11–15 に記載されているパラメータで 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 コマンドを送信することにより、データ転送を終了することができ

ます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 50: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒50 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

7. ソフトウェアが rintstsレジスタでホストのタイムアウト条件をチェックする必

要があります:

■ FIFO バッファのデータ要求を受信する

■ ホストによるデータ飢餓 — ホストは、カードからデータを維持できる速度で

FIFO バッファから読み取っていません。この状態を修正するには、ソフト

ウェアは、次のステップを実行する必要があります。

■ statusレジスタの fifo_countフィールドを読み込む

■ FIFO バッファのうちデータの対応する量を読み込む

どちらの場合も、ソフトウェアは FIFO バッファからデータを読み出して、そして

より多くのデータを受信するための FIFO バッファにスペースを構造する必要があ

ります。

8. DTO の割り込みが受信されると、ソフトウェアは、FIFO バッファから残りのデー

タを読み出す必要があります。

表11‒15. シングル・ブロック・リードおよびマルチ・ブロック・リードのための cmd レジスタの設定 ( その1 )

パラメータ 値 説明

デフォールト

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 0SD/SDIO GO_IDLE_STATE コマンドなどのカード・リセット・コマンドの場合は 1

それ以外の場合は 0

stop_abort_cmd 0STOP_TRANSMISSION コマンドなどのデータ転送を中止する場合は 1

それ以外の場合は 0send_auto_stop 0 または 1 11–30 ページの表 11–10 に応じて設定します。

read_write 0 カードから読み出します。

response_length 0R2(長い ) 応答の場合、値が 1 です。

短いの場合、値が 0 です。

response_expect 1 または 0SD/SDIO GO_IDLE_STATE、SET_DSR、および GO_INACTIVE_STATE などの対応のないコマンドの場合は 0

それ以外の場合は 1

ユーザー選択可能

wait_prvdata_complete 1 または 00— 直ちに CIU にコマンドを送信します。

1— 以前のデータ転送が終了した後にコマンドを送信します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 51: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒51SD/MMCコントローラのプログラミング・モード

シングル・ブロック・ライトまたはマルチ・ブロック・ライト次のステップでは、 シングル・ブロック・ライトまたはマルチ・ブロック・ライトが

含まれています。

1. bytcntレジスタにバイト単位でデータ・サイズを書き込みます。マルチ・ブ

ロック・ライトの場合、bytcntは、ブロック・サイズの倍数でなければなりませ

ん。

2. blksizレジスタにバイト単位でブロック・サイズを書き込みます。コントロー

ラは、それぞれサイズ blksizブロック単位でデータを送信します。

3. 書き込む必要があるデータに、データ・アドレスで cmdargレジスタを書き込み

ます。

4. FIFO バッファにデータを書き込みます。 FIFO バッファがフルになるまで、ホス

ト・ソフトウェアは、 高のパフォーマンスを得るには、連続のデータを書き込

む必要があります。

5. 11–52 ページの表 11–16 に記載されているパラメータで 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 コマンドを送信することにより、早期のデータ転送を

終了することができます。

check_response_crc 1 または 00— コントローラが応答 CRC をチェックしてはいけません。

1— コントローラが応答 CRC をチェックする必要があります。

cmd_indexコマンド・インデックス

このパラメータをコマンド数に設定します。例えば、SD/SDIO READ_SINGLE_BLOCK (CMS17) または READ_MULTIPLE_BLOCK (CMD18) の場合、17 または 19 に設定します。

表11‒15. シングル・ブロック・リードおよびマルチ・ブロック・リードのための cmd レジスタの設定 ( その2 )

パラメータ 値 説明

デフォールト

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 52: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒52 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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 ビットが設定されている場合、データ・コマンドが完了

しました。

表11‒16. シングル・ブロックまたはマルチ・ブロックのための cmd レジスタ設定 ( その1 )

パラメータ 値 コメント

デフォールト

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 値は 1 でも可能ですが、SD/SDIO GO_IDLE_STATE などのカード・リセット・コマンド専用。

stop_abort_cmd 0 SD/SDIO STOP_TRANSMISSION などのデータ転送を中止するコマンドのために値が 1 でも可能です。

send_auto_stop 0 または 1 11–30 ページの表 11–10 に応じて設定します。

read_write 1 カードに書き込みます。

response_length 0 R2(長い ) 応答の場合、値が 1 でも可能です。

response_expect 1 応答なしのコマンドのために値が 1 でも可能です。例えば、 SD/SDIO GO_IDLE_STATE, SET_DSR, GO_INACTIVE_STATE などです。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 53: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒53SD/MMCコントローラのプログラミング・モード

ストリーム・リードおよびライトバイト・カウントが 0 に等しい場合、ソフトウェアは、SD/SDIO STOP コマンドを送

信する必要があります。バイト・カウントが 0 でない場合、指定されたバイト数が

転送を完了したときに、コントローラは自動的に STOP コマンドを送信します。この

AUTO_STOP コマンドの完了は Auto_command_done 割り込みによって反映されます。 AUTO_STOP コマンドに対する応答が resp1レジスタに書き込まれます。ストリーム

転送は、1 ビットのデータ・バスを持つカードのインタフェースにのみ許可されま

す。

ストリーム・リードは、cmd レジスタでの次のビットを除いて 11–49 ページの「シン

グル・ブロック・リードまたはマルチ・ブロック・リード」に記載されるようにブ

ロック・リードと同じ手順を実行する必要があります。

■ transfer_mode = 0x1 (ストリーム転送の場合)

■ cmd_index = 20 (SD/SDIO CMD20)

ストリーム・ライトは、cmd レジスタでの次のビットを除いて 11–51 ページの「シン

グル・ブロック・ライトまたはマルチ・ブロック・ライト」に記載されるようにブ

ロック・ライトと同じ手順を実行する必要があります。

■ transfer_mode = 0x1(ストリーム転送の場合)

■ cmd_index = 11 (SD/SDIO CMD11)

パックされたコマンドオーバーヘッドを削減するために、リード・コマンドとライト・コマンドは、バス

上の 1 つの転送で、グループ内のすべてのコマンドのデータを転送する(すべての

読み出しまたはすべての書き込みのいずれか)コマンドのグループにパックするこ

とができます。転送されるブロック数を述べるために SD/SDIO SET_BLOCK_COUNT(CMD23) コマンドを使用してください。その後、マルチ・ブロッ

クの読み出しと書き込みをするように、シングル READ_MULTIPLE_BLOCK または

WRITE_MULTIPLE_BLOCK コマンドを発行します。

ユーザー選択可能

wait_prvdata_complete 10— 直ちに CIU にコマンドを送信します。

1— 以前のデータ転送が終了した後にコマンドを送信します。

check_response_crc 10— コントローラが応答 CRC をチェックしてはいけません。

1— コントローラが応答 CRC をチェックする必要があります。

cmd_indexコマンド・インデックス

このパラメータをコマンド数に設定します。例えば、SD/SDIO WRITE_BLOCK (CMD24) の場合は 24 を設定し、 WRITE_MULTIPLE_BLOCK (CMD25) の場合は 25 を設定します。

表11‒16. シングル・ブロックまたはマルチ・ブロックのための cmd レジスタ設定 ( その2 )

パラメータ 値 コメント

デフォールト

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 54: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒54 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

■ SET_BLOCK_COUNT— ブロック・カウントを設定する(READ_MULTIPLE_BLOCK ま

たは WRITE_MULTIPLE_BLOCK コマンドで使用されている送信したブロックの数)

■ READ_MULTIPLE_BLOCK— マルチ・ブロックのリード・コマンド

■ WRITE_MULTIPLE_BLOCK— マルチ・ブロックのライト・コマンド

パックされたコマンドは、アプリケーション・ソフトウェアによってパケットに編

成され、コントローラに透過的です。

f パックされたコマンドについて詳しくは、11–87 ページの「参考資料」の参照として、

JEDEC Standard No. 84-A441 を参照してください。

停止および中止コマンドの送信この項では、停止および中止コマンドについて説明します。 SD/SDIO STOP_TRANSMISSION コマンドは、メモリ・カードとコントローラ間のデータ転送を

終了することができます。 ABORT コマンドは SDIO カードの I/O データ転送を終了す

ることができます。

STOP_TRANSMISSION (CMD12)データ転送が進行している間、ホストはいつでも CMDピンに STOP_TRANSMISSION

(CMD12)コマンドを送信することができます。 SD/SDIO カード・デバイスに

STOP_TRANSMISSION コマンドを送信するには、次のステップを実行します。

1. cmdレジスタの wait_prvdata_completeビットを 0 に設定します。

2. cmdレジスタの stop_abort_cmdを 1 に設定します。これによると、CIU が停止す

ることを保証します。

STOP_TRANSMISSION コマンドは、データ転送以外のコマンドです。詳細について

は、11–47 ページの「データ以外の転送コマンド」を参照してください。

ABORTABORT コマンドは、SDIO カードを使用することができます。データを転送している

機能を中止するには、IO_RW_DIRECT(CMD52)を使用してカードのデバイスで card common control register(CCCR)のアドレス 0x06 で ASX[2:0] ビットでの中止ファンク

ションの数をプログラムします。 CCCR は、 カード・スペース 0x0 – 0xFF のベースに位

置しています。

ABORT コマンドは、データ以外の転送コマンドです。詳細については、11–47 ページ

の「データ以外の転送コマンド」を参照してください。

SDIO カード・デバイスに ABORT コマンドを送信するには、次のステップを実行しま

す。

1. 表 11–17 に記載されている適切なコマンド引数のパラメータを含めるために

cmdargレジスタを設定します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 55: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒55SD/MMCコントローラのプログラミング・モード

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 応答値について詳しくは、11–87 ページの「参考資料」に記載されるように、Physical Layer Simplified Specification, Version 3.01 を参照してください。

内部 DMAコントローラの動作より良いパフォーマンスを得るためには、ホストとコントローラーの間でデータを

転送するために内部の DMA コントローラを使用することができます。この項では、

内部の DMA コントローラの初期化プロセス、送信シーケンス、受信順序を説明して

います。

内部DMAコントローラの初期化内部 DMA コントローラを初期化するには、次のステップを実行します。

表11‒17. SD/SDIO ABORT コマンドのための cmdarg レジスタ設定

ビット 内容 値31 R/W flag 1

30:28 Function number カード・デバイスでの CCCR をアクセスする場合は 027 RAW flag 書き込み後に読み出す必要がある場合は 126 Don't care -

25:9 Register address 0x06

8 Don't care -

7:0 Write data 中止するファンクションの番号

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 56: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒56 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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 コントローラの送信シーケンス」 および 11–57 ページ

の「内部 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 コントローラをリリースする必要があります。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 57: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒57SD/MMCコントローラのプログラミング・モード

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コントローラの受信シーケンスデータを受信するために内部の 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 への内

部要求です。この要求は、受信スレッショルドに基づいて生成されます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 58: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒58 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

8. 内部 DMA コントローラは、FIFO バッファからデータをフェッチし、システム・

メモリにデータを転送します。

9. データが複数のディスクリプタをまたがるとき 、内部 DMA コントローラは次の

ディスクリプタをフェッチし、次のディスクリプタを使用して、動作を続けま

す。ディスクリプタでの Last Descriptor ビットは、データが複数のディスクリプ

タをまたがるかどうかを示します。

10. データ送信が完了すると、ステータス情報が有効な場合、TI ビットを 1 に設定す

ることにより、idstsレジスタで更新されます。また、OWN ビットは、ディスク

リプタの DES0 フィールドを更新することによって、DMA コントローラで 0 に設

定されます。

SDIO カード・デバイス用のコマンドこの項では、一時的にコントローラと 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 の場合、選択したファンクションから

のデータ転送が一時停止されています。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 59: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒59SD/MMCコントローラのプログラミング・モード

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 の場合、このファンクションは、データ転

送に進行することができます。

1 11–87 ページの「参考資料」で説明したように、RF<n> フラグについて詳

しくは、SDIO Simplified Specification Version 2.00 を参照してください。

4. 転送を再開するには、CCCR での FSX ビットで、ファンクション番号を書き込む

ために IO_RW_DIRECT コマンドを使用します(すなわち、カードのオフセット

0x0D でのビット 3:0)。IO_RW_DIRECT コマンドのためにコマンド引数を形成し、

cmdarg レジスタに書き込みます。ビット値は表 11–18 に記載されています。

5. blksizレジスタへのブロック・サイズの値を書き込みます。データは、このブ

ロック・サイズ単位で転送されます。

表11‒18. RESUME コマンド用のビット cmdarg 値

ビット 内容 値31 R/W flag 1

30:28 Function number CCCR アクセスの場合は 027 RAW flag 書き込み後の読み出しは 126 Don't care -

25:9 Register address 0x0D

8 Don't care -

7:0 Write data 再開するファンクション番号

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 60: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒60 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

6. bytcnt レジスタにバイト・カウント値を書き込みます。転送される残りのバイト

のデータの合計サイズを指定します。それは、データを処理するソフトウェアの

責任です。

転送するバイトが保留の数を決定するために、転送 CIU カード・バイト・カ

ウント・レジスタ(tcbcnt))を読み出します。転送する保留バイトの数を計

算するには、合計転送サイズからこの値を減算します。

7. ロック転送の動作と同様に cmdレジスタを書き込みます。 cmdレジスタが書き込

まれている場合、コマンドが送信され、この関数は、データ転送を再開します。

詳細については、11–49 ページの「シングル・ブロック・リードまたはマルチ・

ブロック・リード」および 11–51 ページの「シングル・ブロック・ライトまたは

マルチ・ブロック・ライト」を参照してください。

8. SDIO カード・デバイスの再開データ・フラグ(DF)を読み出します。次のよう

に DF フラグを解釈します。

■ DF=1— この関数は、転送用データがあり、すぐに関数またはメモリが再開さ

れると、データ転送を開始します。

■ DF=0— この関数は、転送用のデータがありません。データ転送が読み出した

場合、コントローラは、データを待機します。データ・タイムアウト期間の

後に、データ・タイムアウト・エラーを発行します。

Read-Wait シーケンス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 のデータ転送コマンドについて説明します。異なる条件で生成

された基本的な設定と割り込みについて詳しくは、11–48 ページの「データ転送コマ

ンド」を参照してください。

リセットとカード・デバイス・ディスカバリの概要いずれの CE-ATA の動作を開始する前に、ホストは、MMC リセットと初期化ステップ

を実行する必要があります。ホストとデバイスは、カードが MMC TRAN 状態に入る

前に、MMC 転送(MMC TRAN)状態をネゴシエートする必要があります。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 61: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒61SD/MMCコントローラのプログラミング・モード

f MMC TRAN 状態および MMC のリセットと初期化については、11–87 ページの「参考資

料」に説明されるように、JEDEC 規格番号 84-A441 をご参照ください。

ホストは、MMC TRAN の状態をネゴシエートするために既存の MMC ディスカバリの

手順に従う必要があります。通常の MMC のリセットと初期化ステップを完了する

と、ホストは RW_REG または CMD39 コマンドを使用して初期 ATA のタスク・ファイ

ルの値を照会する必要があります。

デフォルトでは、MMC のブロック・サイズは 512 バイトであり、CE-ATA カード・デ

バイス内の srcControl レジスタ・ビットで示されています。ホストは 1 KB または

4 KB の MMC ブロック・サイズの使用を交渉することができます。カードは MMC に

srcCapabilities レジスタを通してサポート可能な MMC のブロック・サイズを示し、ホ

ストはこれが MMC のブロック・サイズを交渉するためにレジスタを読み出します。

ホスト・コントローラは、カードの srcControl レジスタの 1:0 ビットに MMC のブ

ロック・サイズを書き込むと、交渉は完了です。

ATA タスク・ファイル転送の概要ATA のタスク・ファイル・レジスタは、MMC レジスタ・スペースで 0x10h を通して

アドレス 0x00h をにマッピングされます。 RW_REG コマンドは、ATA コマンドを発行

するために使用され、ATA のタスク・ファイルは、単一の RW_REG MMC コマンド

シーケンスで送信されます。

ホスト・ソフトウェア・スタックは、コントローラ内 cmdargと cmdのレジスタを設

定する前に FIFO バッファにタスク・ファイル・イメージを作成する必要があります。

ホスト・プロセッサは cmdレジスタ・ビットを設定する前に cmdargレジスタへのア

ドレスとバイト数を書き込みます。

RW_REG コマンドでは、CE-ATA カード・デバイスからの CCS がありません。

RW_MULTIPLE_REGISTER (RW_REG) コマンドを使用する ATA タスク・ファイルの転送このコマンドは、CE-ATA カード・デバイスとコントローラ間のデータ転送を必要と

します。データ・コマンドを送信するには、コントローラがコマンド引数、合計

データ・サイズ、およびブロック・サイズを必要とします。ソフトウェアは、FIFOバッファを介してデータを受信または送信します。

ATA のタスク・ファイル転送(読み出しまたは書き込み)を実装するには、次のス

テップを実行します。

1. bytcntレジスタへのバイト単位のデータ・サイズを書き込みます。コントロー

ラはシングル・ブロック転送を想定しているため、bytcntは、ブロック・サイズ

と等しくなければなりません。

2. blksizレジスタへのバイト単位のブロック・サイズを書き込みます。

3. レジスタ・アドレスの先頭で cmdarg レジスタに書き込みます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 62: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒62 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

表 11–19 ~表 11–22 に従って、cmdarg、cmd、blksiz、および、bytcntレジスタを設

定する必要があります。

表11‒19. ATAタスク・ファイルの転送のための cmdarg レジスタ設定

ビット 値 コメント

311 または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 の整数の単位で)

表11‒20. ATA タスク・ファイルの転送のための cmd レジスタ設定

ビット 値 コメントstart_cmd 1 -

ccs_expected 0 CCS が期待されません。

read_ceata_device0 または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_write1 または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に設定します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 63: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒63SD/MMCコントローラのプログラミング・モード

RW_MULTIPLE_BLOCK (RW_BLK) コマンドを使用するATA ペイロードの転送このコマンドは、CE-ATA カード・デバイスとコントローラ間のデータ転送を必要と

します。データ・コマンドを送信するには、コントローラがコマンド引数、合計

データ・サイズ、およびブロック・サイズを必要とします。ソフトウェアは、FIFOバッファを介してデータを受信または送信します。

ATA のペイロード転送(読み出しまたは書き込み)を実装するには、次のステップを

実行します。

1. bytcntレジスタへのバイト単位のデータ・サイズを書き込みます。

2. blksizレジスタへのバイト単位のブロック・サイズを書き込みます。コント

ローラは、単一 / 複数のブロック転送を期待しています。

3. データ単位数を示すためにレジスタ cmdarg に書き込みます。

wait_prvdata_complete 1■ すぐにコマンドを送信する場合は 0

■ 以前のDTO割り込み後にコマンドを送信する場合は1

check_response_crc 1■ 応答 CRC をチェックしていない場合は 0

■ 応答 CRC をチェックする場合は 1

表11‒21. ATA タスク・ファイルの転送のための blksiz レジスタ設定

ビット 値 コメント31:16 0 予約ビットは 0 に設定されます。

15:0 (block_size) 16 タスク全体ファイル(16、8 ビット・レジスタ)にアクセスするためです。 16 バイトのブロック・サイズです。

表11‒22. ATA タスク・ファイルの転送のための bytcnt レジスタ設定

ビット 値 コメント

31:0 16タスク全体ファイル(16、8 ビット・レジスタ)にアクセスするためです。16 のバイト数は、16 に設定されたブロック・サイズと使用されています。

表11‒20. ATA タスク・ファイルの転送のための cmd レジスタ設定

ビット 値 コメント

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 64: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒64 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

表 11–23 ~表 11–26 に従って、cmdarg、cmd、blksiz、および、bytcntレジスタを設

定する必要があります。

表11‒23. ATAペーロードの転送のための cmdarg レジスタ設定

ビット 値 コメント

31 1 または 0 読み出し動作のために 1 に設定し、書き込み動作のために 1 に設定します。

30:24 0 予約済み(ビットはホスト・プロセッサによって0 に設定される)

23:16 0 予約済み(ビットはホストプロセッサで 0 に設定される)

15:8 データ・カウント

Data Count Unit [15:8]

7:0 データ・カウント

Data Count Unit [7:0]

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 65: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒65SD/MMCコントローラのプログラミング・モード

表11‒24. ATA ペーロードの転送のための cmd レジスタ設定

ビット 値 コメントstart_cmd 1 -

ccs_expected 1

CCS が期待されています。割り込みが(CE-ATAカード・デバイスでイネーブルされる場合、RW_BLK コマンドの 1 に設定します nIENビットは ATA コントロール・レジスタを 0 に設定されている)。

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ブロック転送モードです。バイト・カウントは4kB の整数倍でなければなりません。ブロック・サイズは、512、1K または 4k バイトです。

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 に設定します。

wait_prvdata_complete 1■ すぐにコマンドを送信する場合は 0

■ 以前のDTO 割り込み後にコマンドを送信する場合は 1

check_response_crc 1■ 応答 CRC をチェックしていない場合は 0

■ 応答 CRC をチェックする場合は 1

表11‒25. ATA ペーロードの転送のための blksiz レジスタ設定

ビット 値 コメント31:16 0 予約ビットは 0 に設定します。

15:0 (block_size) 512、1024、または 4096

MMC のブロック・サイズは、ホストによって交渉されるように、512、1024、または 4096 バイトです。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 66: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒66 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

CE-ATA CCSこの項では、CCS のディセーブル、CCS のタイムアウト後のリカバリ、および I/Oリード・トランスミッション遅延 (NACIO) のタイムアウトを説明しています。

CCS のディセーブル未処理の 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 のタイムアウト後のリカバリCCS を待っている間にタイムアウトが発生した場合、ホストは保留中の ATA コマン

ドを中止するために CCSD のコマンド、そして STOP コマンドを送信する必要があり

ます。ホストは CCSD パターンを送信した後、内部で生成される STOP コマンドを送

信するようにコントローラを設定することができます。

■ CCSD のコマンドを送信 —ctrlレジスタの send_ccsdビットを 1 に設定します。

■ 外部 STOP コマンドを送信 —CE-ATAカード・デバイスとコントローラ間のデータ転

送を終了します。 STOP コマンドを送信する方法の詳細については、11–54 ページ

の「停止および中止コマンドの送信」を参照してください。

■ 内部 STOPコマンドを送信—内部で生成されるSTOPコマンドを送信することをコ

ントローラに指示する ctrlレジスタの send_auto_stop_ccsdビットを 1 に設定

します。 STOP コマンドを送信した後、コントローラは rintsts レジスタの acdビットを 1 に設定します。 send_auto_stop_ccsdビットが send_ccsdビットを設

定すると同時に 1 に設定する必要があります。

I/O リード・トランスミッション遅延(NACIO)タイムアウト後のリカバリI/O は、CE-ATA カード・デバイスにリード・トランスミッション遅延(NACIO)タイム

アウトが発生した場合、タイムアウトからリカバリするには、次のいずれかのス

テップを実行します。

表11‒26. ATA ペーロードの転送のための bytcnt レジスタ設定

ビット 値 コメント

31:0 <n>*block_size

バイト数は、ブロックサイズの整数倍でなければなりません。 ATA メディアアクセスコマンドでは、バイト・カウントは 4 キロバイトの倍数でなければなりません。

(<N>* ブロックサイズ =<X>* 4 KB、<N> と <x> は整数)

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 67: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒67SD/MMCコントローラのプログラミング・モード

■ CCS は、CE-ATA カード・デバイス(cmdレジスタの ccs_expectedビットが 1 に設定

されていること)から期待されている場合、11–66 ページの「CCS のタイムアウ

ト後のリカバリ」でのステップに従ってください。

■ CCS は、CE-ATA カード・デバイスから期待されていない場合、次のステップを実

行します。

a. 外部 STOP コマンドを送信します。

b. コントローラおよび CE-ATA カード・デバイス間のデータ転送を終了します。

減少したATA コマンド・セットCE-ATA カード・デバイスは、縮小した ATA コマンドのサブセットをサポートするこ

とが必要です。

IDENTIFY DEVICE コマンド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 に設定

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 68: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒68 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

■ blksiz レジスタの bytcntレジスタおよび block_sizeフィールド : 512 に設定

READ DMA EXTコマンドREAD DMA EXT コマンドは、Data-In のデータ転送プロトコルを使用してカード・デバ

イスからのデータのロジカル・ブロック数を読み出します。 ホストは、データ転送の

ために ATA コマンドと RW_BLK コマンドを発行する RW_REG コマンドを使用してい

ます。

WRITE DMA EXT コマンドWRITE DMA EXT コマンドは、Data-Out データ転送プロトコルを使用して、カード・デ

バイスへのデータのロジカル・ブロック数を書き込みます。 ホストは、データ転送の

ために ATA コマンドと RW_BLK コマンドを発行する RW_REG コマンドを使用してい

ます。

STANDBY IMMEDIATE コマンドこの 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 コマンドは、バッファされたデータがカード・メディアに書き込まれる

ことが保証されます。書き込まれたデータをバッファリングしていないカードの場

合、FLUSH CACHE EXT コマンドが成功ステータスを返します。この ATA コマンドには

データ転送(RW_BLK)が期待されていません。

ホストは ATA コマンドの RW_REG コマンドを発行し、ステータスは、SD/SDIO CMD39 または RW_REG コマンドで取得されます。 ATA タスク・ファイルのステータ

ス・フィールド以外のフィールドが有効である場合、この ATA コマンドのエラー状

態が存在する場合があります。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 69: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒69SD/MMCコントローラのプログラミング・モード

ホスト・コントローラは、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 に従って設

定する必要があります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 70: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒70 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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) ≤ 1024

3. カード・リード・スレッショルドを選択します。

■ ( ブロック・サイズ / 4) ≥ 512 の場合、バイトで cardrdthreshold ≤ ( ブロック・

サイズ / 4) の cardrdthresholdを選択します。

■ ( ブロック・サイズ / 4) < 512 の場合、バイトで cardrdthreshold ≤ ( ブロック・

サイズ / 4) の cardrdthresholdを選択します。

4. DMA トランザクションを構成する転送数に fifothレジスタでの

dw_dma_multiple_transaction_size フィールドを設定します。例えば、サイズ

=1 とは 4 バイトが移動されることを意味します。指定できるサイズは、1、4、8、16、32、64、128、および 256 の転送です。値(ブロック・サイズ /4)が均等に

分割されるように、サイズを選択します。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 71: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒71SD/MMCコントローラのプログラミング・モード

5. – 1 サイズに fifothレジスタの rx_wmarkフィールドを設定します。

例えば、ブロック・サイズが 512 バイトである場合、

dw_dma_multiple_transaction_sizeとrx_wmarkの正当な値は、表 11–27に記載さ

れています。

カード・リード・スレッショルドのプログラミング例この項では、カード・リード・スレッショルドをプログラムする方法の例を示して

います。

■ 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 バイト。

表11‒27. ブロック・サイズ = 512 のための dw_dma_multiple_transaction_size および rx_wmark の正確の値

ブロック・サイズ dw_dma_multiple_transaction_size rx_wmark

512 1 0

512 4 3

512 8 7

512 16 15

512 32 31

512 64 63

512 128 127

図11‒12. カード・リード・スレッショルドが 768 に設定されている FIFO バッファの内容

256 FIFO LocationsUnfilled During OneBlock Read

Read Datato Host

SIZE = 128FIFO Locations

Data Readfrom Card

Block Size = cardrdthreshold = 768

One Block of Data Filled 768 FIFO Locations

FIFO Depth = 1,024rx_wmark = 127FIFO Locations

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 72: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒72 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

割り込みとエラー処理この項では、エラーを処理する割り込みを使用する方法について説明します。パ

ワーオンまたはリセットでは、割り込みが(ctrlレジスタの int_enableビットが 0に設定されている)ディセーブルされ、そしてすべての割り込みが(intmasレジス

タ・デフォルトは 0)マスクされます。コントローラのエラー処理は、エラーは、次

の種類が含まれています。

■ 応答およびデータ・タイムアウト・エラー — 応答タイムアウトの場合、ホスト・

ソフトウェアは、コマンドを再試行できます。データ・タイムアウトの場合、コ

ントローラはカードからのデータ・スタート・ビットを受信していないため、ソ

フトウェアは再び全体のデータ転送を再試行するか、または指定されたブロック

以降から再試行できます。次に tcbcntレジスタの内容を読み出すことによって、

ソフトウェアはにコピーされずに残っているバイト数(リード)を決定すること

ができます。

■ 応答エラー — エラーは応答受信中に受信したとき 1 に設定されます。受信した応

答が無効な場合、ソフトウェアは、コマンドを再試行することができます。

■ データ・エラー — データ受信エラーが発生したときに 1 に設定します。データ受

信エラーの例としては以下に表示されます。

■ データ CRC

■ スタート・ビットが見つかりません

■ エンド・ビットが見つかりません

これらのエラーは、任意のブロックで発生することができます。エラーを受信す

ると、ソフトウェアは、SD/SDIO STOP または SEND_IF_COND コマンドを発行する

こと、また全体のデータまたは一部のデータのいずれかのためにコマンドを再試

行することができます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 73: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒73SD/MMCコントローラのプログラミング・モード

■ ハードウェア・ロック・エラー — コントローラがソフトウェアによって発行され

たコマンドをロードできない場合、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)コマンドを発行できます。ホストは、データ

転送を中断しなくても全体のデータ・ユニット数バイトを転送することがで

きます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 74: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒74 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

eMMC およびMMC のブート動作この項では、eMMC のと MMC ブート動作のためのコントローラを設定する方法につ

いて説明します。

CMDラインを押し続けることによるブート動作コントローラは、CMD ラインを押しながら MMC4.3、MMC4.4 からブートし、

MMC4.41 カードができます。

f このブート方法の詳細については、11–87 ページの「参考資料」で参照として、以下

の仕様を参照してください。

■ JEDEC Standard No. 84-A441

■ JEDEC Standard No. 84-A44

■ JEDEC Standard No. JESD84-A43

MMC カード・デバイスのブート動作図 11–13 には、eMMC のカード・デバイスのブート動作を実行するステップを示し

ます。詳細なステップは、フロー・チャートに記述されています。

図11‒13. eMMCブート動作のフロー

Start

Step 1

Step 2 to Step 10

Step 11 Step 12

expect_boot_ack = 1 expect_boot_ack = 0

Step 11.a Step 11.b Step 11.c

No StartPattern

Start Pattern & NoBoot Data Received

Start Pattern & Boot Data Received

Step 12.a Step 12.b

No Boot DataReceived

Boot DataReceived

Stop

Step 11.f

SuccessfullyReceived Boot

Data

NAC TimeoutSuccessfullyReceived BootData

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 75: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒75SD/MMCコントローラのプログラミング・モード

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 コ

ントローラを使用する必要がある場合、それは以下のステップを実行する必要が

あります。

■ 11–56 ページの「内部 DMA コントローラの送信シーケンス」および 11–57 ペー

ジの「内部 DMA コントローラの受信シーケンス」に記載されているように

ディスクリプタを設定します。

■ ctrlレジスタの use_internal_dmac ビットを 1 に設定します。

4. clkdivレジスタを使用して 400 kHz にカード・デバイスの周波数を設定します。

詳細については、11–44 ページの「クロックのセットアップ」を参照してくださ

い。

5. カード・デバイス総アクセス時間の NAC に等しい tmoutにレジスタの

data_timeoutフィールドを設定します。

6. blksizレジスタを 0x200 番地(512 バイト)に設定ます。

7. カード・デバイスでの BOOT_SIZE_MULT 値によって示されるように、128 KB の倍

数に bytcnt レジスタを設定します。

8. fifothレジスタの rx_wmarkフィールドを設定します。典型的には、スレッシュ

ホールドは、FIFO バッファの深さの半(512)に設定することができます。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 76: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒76 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

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ビットは設定しません。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 77: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒77SD/MMCコントローラのプログラミング・モード

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 コントローラ・モードでは:

■ ソフトウェア・ドライバは、受信したブート・データが必要とする以上の

ディスクリプタを作成した場合、余分なディスクリプタは、コントローラ

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 78: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒78 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

によって閉じられません。それらが閉じられるまでソフトウェアがディス

クリプタを再利用することはできません。

■ ソフトウェア・ドライバは、受信したブート・データが必要とするより少

ないディスクリプタを作成する場合、コントローラは Descriptor Unavailable割り込みを発生し、システム・メモリへのデータを転送しません。

f. NAC がデータ・ブロック転送間に違反している場合、DRTO 割り込みがアサー

トされます。開始ビットまたは終了ビットに関連付けられたエラーがある場

合に加えて、SBE または EBE 割り込みも生成されます。

eMMC のカード・デバイスのブート動作が完了です。残りのステップ(12)を実

行しないでください。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 79: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒79SD/MMCコントローラのプログラミング・モード

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 カードのブートの動作リムーバブル MMC4.3、MMC4.4、および MMC4.41 カードは、これらのカードが差し

込むときにブート・モードの動作をサポートすることを認識していないという点で

eMMC に関して異なります。したがって、コントローラは以下を実行する必要があ

ります。

1. 初の MMC4.0/4.1/4.2 カードを発見するように、これらのカードを発見します。

2. カードの特性を理解します。

3. ブート動作を実行するかどうかを決定します。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 80: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒80 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

これらのカードの場合、ソフトウェア・ドライバは、次のステップを実行する必要

があります。

1. 11–41 ページの「列挙されたカード・スタック」 に記載されているように、カー

ドを発見します。

2. カードの EXT_CSD レジスタを読み込み、次のフィールドを調べます。

■ BOOT_PARTITION_ENABLE

■ BOOT_SIZE_MULT

■ BOOT_INFO

3. 必要に応じて、ソフトウェアがカード内のブート情報を動作することができま

す。

f 詳細については、11–87 ページの「参考資料」に参照されるように以下の仕

様の「パーティションのブートへのアクセス」を参照してください。

■ JEDEC Standard No. 84-A441

■ JEDEC Standard No. 84-A44

■ JEDEC Standard No. JESD84-A43

4. ホスト・プロセッサが次のパワー・アップのサイクルでブート動作を実行する必

要がある場合、SWITCH_FUNC コマンドを使用して EXT_CSD レジスタの内容を動

作することができます。

5. このステップの後、ソフトウェア・ドライバは pwrenレジスタに書き込むことに

よって、カードの電源を切る必要があります。

6. ここから、11–81 ページの「eMMC のカード・デバイスのための代替ブート動作」

に記載されているように、同じステップを使用します。

代替ブート動作代替ブート動作は、そのソフトウェアがカードを起動するのではなく、カードの

CMD ラインを押しする SD/SDIO GO_IDLE_STATE コマンドを使用して、前のブート動

作とは異なります。代替ブート動作は、BOOT_INFO レジスタのビット 0 が 1 に設定

されている場合にのみ実行できます。 BOOT_INFO は EXT_CSD レジスタ内のオフセッ

ト 228 に位置しています。

f 代替ブート動作の詳細については、11–87 ページの「参考資料」で参照されるように、

以下の仕様を参照してください

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 81: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒81SD/MMCコントローラのプログラミング・モード

■ JEDEC Standard No. 84-A441

■ JEDEC Standard No. 84-A44

■ JEDEC Standard No. JESD84-A43

eMMC のカード・デバイスのための代替ブート動作図 11–14 に、eMMC カード・デバイスの代替のブート動作を実行するために必要な

ステップのシーケンスを示します。詳細なステップは、フローチャートに記述され

ています。

1. ソフトウェア・ドライバは、次のことを確認します。

■ eMMC のカード・デバイスが代替ブート動作(BOOT_INFO ビットは eMMC の

カードに 1 に設定されている)をサポートしていること。

■ カード・デバイスでの BOOT_SIZE_MULT と BOOT_BUS_WIDTH 値は、ブート・プ

ロセス中に使用すること。

2. ソフトウェアには、次のビットを設定します。

■ intmaskレジスタで適切なビットを 0 にリセットすることによって、割り込み

のマスクを設定します。

■ ctrlレジスタのint_enableビットを1に設定します。ctrlレジスタの他のビッ

トは 0 に設定しなければなりません。

図11‒14. eMMCの代替ブート動作のフロー

Start

Step 1

Step 2 to Step 12

Step 13 Step 15

expect_boot_ack = 1 expect_boot_ack = 0

Step 14.a Step 14.b Step 14.e

No StartPattern

Start Pattern & NoBoot Data Received

Start Pattern & Boot Data Received

Step 16.a Step 16.b

No Boot DataReceived

Boot DataReceived

Stop

Step 14.h

SuccessfullyReceived Boot

Data (14.d)

NAC TimeoutSuccessfullyReceived BootData (16.d)

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 82: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒82 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

1 保留中の割り込みをクリアするために、INT_ENABLE ビットを設定する前に

rintstsレジスタおよび idstsレジスタに 0xFFFFFFFFを書き込むことが推奨

されています。内部 DMA コントローラ・モードでは、ソフトウェア・ド

ライバは idintenレジスタのすべての関連するフィールドのマスクを解除

する必要があります。

3. ソフトウェア・ドライバは、受信したブート・データを転送するために内部 DMAコントローラを使用する必要がある場合、次のアクションを実行する必要があり

ます。

■ 11–56 ページの「内部 DMA コントローラの送信シーケンス」 および 11–57 ペー

ジの「内部 DMA コントローラの受信シーケンス」 に記載されているように

ディスクリプタを設定するします。

■ trlレジスタの使用内部 DMAC ビット(use_internal_dmac)を 1 に設定します。

4. clkdivレジスタを使用して 400 kHz にカード・デバイスの周波数を設定します。

詳細については、11–44 ページの「クロックのセットアップ」を参照してくださ

い。カード・クロックが動作していることを確認します。

5. カード・インタフェースで少なくとも 74 カード・クロック・サイクルが発生す

るまで待ちます。

6. カード・デバイス総アクセス時間の NAC に等しい 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 割り込みを待ちます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 83: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒83SD/MMCコントローラのプログラミング・モード

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ビット

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 84: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒84 第 11 章 : SD/MMC コントローラSD/MMC コントローラのプログラミング・モード

■ 内部 DMA コントローラ・モード専用の idsts レジスタの riビット

f. エラーがブート ACK パターン(0b010)で発生し、または EBE が発生した場

合:

■ コントローラは Boot ACK Received 割り込みを生成しません。

■ コントローラは Boot Data Start を検出して、Boot Data Start 割り込みを生成し

ます。

■ コントローラは、ブート・データを受信し続けます。

■ アプリケーションは、Boot Data Start 割り込みを受信した後に中断する必要

があります。

g. 内部 DMA コントローラ・モードでは:

■ ソフトウェア・ドライバが受信したブート・データが必要とする以上の

ディスクリプタを作成した場合、余分なディスクリプタは、コントローラ

によってクローズされていません。

■ ソフトウェア・ドライバは、受信したブート・データが必要とするより少

ないディスクリプタを作成する場合、コントローラは Descriptor Unavailable割り込みが発生し、システム・メモリへのさらなるデータを転送しませ

ん。

h. NAC がデータ・ブロック転送間で違反されている場合、DRTO 割り込みがア

サートされます。これとは別に、スタート・美ビットまたはエンド・ビット

に関連付けられたエラーがある場合、SBE または EBE 割り込みも生成されま

す。

eMMC のカード・デバイスのための代替ブート動作が完了します。残りのステッ

プを実行しないでください(ステップ 15 および 16)。

15. Command Done 割り込みを待ちます。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 85: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒85SD/MMCコントローラのプログラミング・モード

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 カードの代替ブート動作リムーバブル MMC4.3 カードは、これらのカードが動作のブーツ・モードをサポー

トしているかどうかを認識していないという点で、eMMC のに関して異なります。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 86: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒86 第 11 章 : SD/MMC コントローラSD/MMCコントローラ・アドレス・マップとレジスタ定義

1. 初めての MMC4.0/4.1/4.2 カードを発見するように、これらのカードを発見しま

す。

2. カードの特性を理解します。

3. ブート動作を実行するかどうかを決定します。

これらのカードについては、ソフトウェア・ドライバは、次のステップを実行する

必要があります。

1. 11–41 ページの「列挙されたカード・スタック」 に記載されているように、カー

ドを発見します。

2. MMC カード・デバイスの EXT_CSD レジスタを読み出し、次のフィールドを調べ

ます。

■ BOOT_PARTITION_ENABLE

■ BOOT_SIZE_MULT

■ BOOT_INFO

f 詳細については、11–87 ページの「参考資料」で参照されるように、JEDEC Standard No. JESD84-A43 での「ブート・パーティションへのアクセス」を

参照してください。

3. ホスト・プロセッサは、次のパワー・アップ・サイクルでブート動作を実行する

必要がある場合、SWITCH_FUNC コマンドを使用して、MMC カード・デバイスで

EXT_CSD レジスタの内容を動作することができます。

4. このステップの後、ソフトウェア・ドライバは pwrenレジスタに書き込むことに

よって、カードの電源を切る必要があります。

5. ここからは、11–81 ページの「eMMC のカード・デバイスのための代替ブート動

作」と同じステップを使用します。

1 それが中止シナリオ中に生成されている場合は EBE を無視します。

Boot acknowledge エラーを発生する場合、ブーツ・アクノリッジは割り込

みタイムアウトを受信します。

1 内部 DMA コントローラ・モードにおいて、アプリケーションは data done 割

り込みの代わりにディスクリプタ・クローズ割り込みに依存する必要があ

ります。

SD/MMCコントローラ・アドレス・マップとレジスタ定義f アドレス・マップとレジスタの定義は、このハンドブック・ボリウムを伴う

hps.html ファイルに存在します。ファイルを開くためのリンクをクリックしてくだ

さい。

モジュールの説明とベース・アドレスを表示するために、次のリンクをスクロール

しクリックします。

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 87: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

第 11 章 : SD/MMC コントローラ 11‒87参考資料

■ sdmmc

その後、レジスタおよびフィールド説明を表示するまでスクロールしてレジスタ名

をクリックします。レジスタ・アドレスは、各モジュール・インスタンスのベース・

アドレスへの相対的なオフセットです。

f すべてのモジュールのベース・アドレスは Cyclone V デバイス・ハンドブック Vol 3 の

「Introduction to the Hard Processor System」の章に記載されています。

参考資料f 次の業界仕様は、SD/MMC コントローラによって実装される規格やプロトコルに関す

る詳細な情報を提供します。

以下の仕様は、JEDEC のウェブサイト(www.jedec.org)で入手できます。

■ 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 のウェブサイト((www.sdcard.org)で入手できます。

■ 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

改訂履歴表 11–28 に、本資料の改訂履歴を示します。

表11‒28. 改訂履歴

日付 バージョン 変更内容

2012 年 11 月 1.1

■ プログラミング・モデルの章を追加。

■ プログラミング情報を再編。

■ ECC に関する情報を追加。

■ ピンのリストを追加。

■ クロックの章を更新。

2012 年 1 月 1.0 初版。

2012 年 11 月 Altera Corporation Cyclone V デバイス・ハンドブックVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル

Page 88: ハード・プロセッサ・システム(HPS)のテクニカル …...11‒2 第11章:SD/MMC コントローラ SD/MMCコントローラの特性 Cyclone Vデバイス・ハンドブック

11‒88 第 11 章 : SD/MMC コントローラ改訂履歴

Cyclone V デバイス・ハンドブック 2012年 11 月 Altera CorporationVolume 3: ハード・プロセッサ・システムのテクニカル・ リファランす・マニュアル