18. USB 2.0 OTG コントローラ 11? 2012? av_54018-1.2 av_54018-1.2 ハード・プロセッサ・システム(HPS)は、デバイスとホストの両方の機能をサポー トする USB On-The-Go (OTG)コントローラの 2 つのインスタンスを提供していま す。コントローラは、デバイスとホストの両方のモードですべての高速、全速およ び低速の転送をサポートしています。コントローラは、「On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification」に完全準拠しています。コント ローラは、USB プロトコルを介してデータ移動をサポートするためにデバイスとホ ストの両方の機能にプログラムされることができます。 コントローラは、互いに独立して動作しています。各 USB OTG コントローラは、 PHY に準拠する USB 2.0 Transceiver Macrocell Interface Plus (UTMI+) Low Pin Interface (ULPI) を介して接続され、単一の USB ポートをサポートします。USB OTG コントロー ラは、Synopsys® DesignWare® Cores USB 2.0 Hi-Speed On-The-Go (DWC_otg) コントロー ラのインスタンスです。 USB OTG コントローラは、次のアプリケーションやシステムに最適化されます。† ■ ポータブル電子装置 † ■ ポイント・ツー・ポイントのアプリケーション(ハブなしで HS、FS、または LS デバイスへの直接接続)† ■ デバイス(ハブとの分割サポート)へのマルチポイント・アプリケーション(エ ンベデッド USB ホストとして)† 2 つの USB OTG ポートのそれぞれは、「On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification」で説明したように、ホスト・モードとデバイス・モー ドの両方をサポートします。USB OTG ポートは、以下のペリフェラルなどの USB ペ リフェラルのすべての種類の接続をサポートしています。 ■ マウス ■ キーボード ■ デジタル・カメラ ■ ネットワーク・アダプタ ■ ハード・ドライブ ■ 汎用ハブ f 追加情報は、USB Implementers Forum のウェブサイト (www.usb.org)からダウン ロードできる「On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification」で得られます。 © 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. ISO 9001:2008 Registered †Paragraphs marked with the dagger (†) symbol are Synopsys Proprietary. Used with permission. Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Subscribe 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能 18–2 USB OTG コントローラの機能 USB OTG コントローラは、次の USB 固有の機能があります。 ■ 「On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification」のリ ビジョン 1.3 とリビジョン 2.0 の両方に準拠する。 ■ OTG 1.3 および OTG 2.0 の間の動作のソフトウェアで設定可能なモードをサポート する。 ■ すべての USB 2.0 の転送速度をサポートする。 ■ 高速(HS、480 Mbps) ■ 全速(FS、12 Mbps) ■ 低速(LS、1.5 Mbps) 1 ■ ホスト・モードでは、すべての速度がサポートされます。ただし、デバイ ス・モードでは、高速と全速のみをサポートします。 すべての USB トランザクション・タイプをサポートする。 ■ コントロール転送 ■ バルク転送 ■ アイソクロナス転送 ■ 割り込み ■ 自動 ping 機能をサポートする。 ■ セッション・リクエスト・プロトコル(SRP)とホスト・ネゴシエーション・プ ロトコル(HNP)をサポートする。 ■ 一時停止、再開、およびリモート・ウェイクをサポートする。 ■ 16 ホスト・チャネルまでサポートする。 1 ■ ホスト・モードでは、デバイスのエンドポイントの数がホスト・チャネル の数よりも大きい場合、ソフトウェアは、最大 127 デバイス(それぞれ 32 エンドポイント(IN + OUT)を持ち、最大 4064 エンドポイントまで)をサ ポートするためにチャネルを再プログラムできます。 コントロール・エンドポイント 0 を含む 16 の双方向エンドポイントまでサポート する。 1 7 つの定期的なデバイスの IN エンドポイントのみサポートされる。 ■ 汎用のルート・ハブをサポートする。 ■ ハードウェアでトランザクションのスケジューリングを実行する。 USB PHY 層で、USB OTG コントローラは、次の機能をサポートします。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能 18–3 ■ 各 OTG のインスタンスに接続された 1 つの USB ポート。 ■ オフチップ USB トランシーバへの ULPI 接続。 ■ デバッグを容易にするためのベンダ固有またはオプションの PHY レジスタ・アク セスをサポートするソフトウェア制御のアクセス。 ■ 唯一の外部(オフチップ)ADP コントローラを介して Attach Detection Protocol (ADP)の OTG 2.0 のサポート。 インテグレーション側では、USB OTG コントローラは、次の機能をサポートしてい ます。 ■ システムおよび PHY インタフェース用の異なるクロック。 ■ ダイレクト・メモリ・アクセス(DMA)モードにおける IN エンドポイントのデバ イスごとの専用 TX FIFO バッファ。 ■ パケット・ベース、小型の FIFO バッファによってエンドポイント用のダイナミッ ク FIFO メモリの割り当て、およびソフトウェアによって動的にサイズを変更する ことができ、RAM の柔軟かつ効率的な使用。 ■ 転送中に FIFO メモリ・サイズのエンドポイントを変更する機能。 ■ USB サスペンドおよびセッション・オフ・モード時のクロック・ゲーティング・ サポート。 ■ 1 ■ PHY のクロック・ゲーティング・サポート。 ■ システムのクロック・ゲーティング・サポート。 データ FIFO RAM のクロック・ゲーティング・サポート。 USB OTG コントローラは、次のプロトコルをサポートしていません。 ■ エンハンスト・ホスト・コントローラ・インタフェース(EHCI) ■ オープン・ホスト・コントローラ・インタフェース(OHCI) ■ ユニバーサル・ホスト・コントローラ・インタフェース(UHCI) サポートされる PHY 表 18–1 に、USB OTG と互換性のあるいくつかの PHY を示します。 表 18‒1. サポートされる PHY メーカー 2012 年 11 月 部品番号 TI TUSB1210 NXP ISP1504 Cypress CY7C68003 SMSC USB3300 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのブロック図とシステム・インテグレーション 18–4 USB OTG コントローラのブロック図とシステム・インテグレー ション 図 18–1 は、HPS で 1 つの USB OTG コントローラ・サブシステムを示すブロック図で す。2 つのサブシステムは、HPS に含まれています。 図 18‒1. USB OTG コントローラのシステム・インテグレーション L3 Interconnect Master Interface Slave Interface Bus Control System Manager ECC Control SPRAM USB OTG Controller IRQ Clock Reset ULPI PHY Interface External USB Transceiver USB OTG コントローラは、コントローラ内にコントロールおよびステータス・レジ スタ(CSR)にアクセスできるように、スレーブ・インタフェースを介してレベル 3 (L3)インタコネクトに接続されます。また、コントローラは、コントローラの DMA エンジンが外部メモリとコントローラとの間でデータを移動できるように、マスタ・ インタフェースを介して L3 インタコネクトに接続されます。 USB OTG コントローラに接続されるシングル・ポート RAM(SPRAM)は、ホスト・ モードとデバイス・モード用の両方の USB データ・パケットを格納するために使用 されます。これは、USB リンクでデータ・パケットを送受信するために FIFO バッ ファとして構成されます。 システム・マネージャでは、USB OTG コントローラは、SPRAM に誤り訂正コード (ECC)を使用してテストする制御があります。また、システム・マネージャでは、 USB OTG コントローラは L3 インターコネクトへのマスタ・インタフェースの動作を 制御できます。 f 詳細は、Arria V デバイス・ハンドブック の Volume 3 の System Manager の章を参照して ください。 USB OTG コントローラは、ULPI PHY インタフェースを介して外部 USB トランシーバ に接続します。また、このインタフェースは、HPS 内部のマルチプレクサ・ピンを 介して接続します。マルチプレクサ・ピンは、システム・マネージャによって制御 されます。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–5 USB OTG コントローラの追加の接続は、次のものがあります。 ■ クロック・マネージャから USB OTG コントローラへのクロック入力。 ■ リセット・マネージャから USB OTG コントローラへのリセット入力。 ■ USB OTG コントローラからマイクロプロセッサ・ユニット(MPU)のグローバル 割り込みコントローラ(GIC)への割り込みライン。 USB OTG コントローラの機能の説明 USB OTG コントローラのブロックの説明 図 18–2 は、USB OTG コントローラのブロック図です。以下の項では、USB OTG コン トローラを構成する各ユニットの詳細を提供します。 図 18‒2. USB OTG コントローラのブロック図 L3 Interconnect USB OTG Controller Master Interface Slave Interface Application Interface Unit SPRAM Packet FIFO Controller Media Access Controller Wakeup and PHY Controller PHY Interface ULPI PHY Interface External USB Transceiver マスタ・インタフェース マスタ・インタフェースは、ビルトイン DMA コントローラを内蔵しています。DMA コントローラは、外部メモリおよびメディア・アクセス・コントローラ(MAC)の 間でデータを移動します。 マスタ・インタフェースのプロパティは、システム・マネージャで USB L3 Master HPROT Register (l3master)を介して制御されます。これらのビットは、トランザク ションがキャッシュ可能であるかどうか、バッファ可能であるかどうか、または権 限があるかどうかを含めて、L3 インタコネクトへのアクセス情報を提供します。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–6 1 l3master レジスタ内のビットは、マスタ・インタフェースが非アクティブな状態に なることが保証される場合にのみ更新することができます。 スレーブ・インタフェース スレーブ・インタフェースによって、システム内に他のマスタが USB OTG コント ローラの CSR にアクセスすることができます。テスト目的であれば、他のマスタも SPRAM にアクセスすることができます。 スレーブ・インタフェース CSR ユニット スレーブ・インタフェースは、USB OTG コントローラ内にすべての CSR から読み出 すことおよび CSR に書き込むことが可能です。すべてのレジスタ・アクセスは 32 ビットです。 CSR は、次のレジスタのグループに分かれています。 ■ グローバル ■ ホスト ■ デバイス ■ パワーとクロック・ゲーティング コントローラが一度に 1 つのモードに入ることができるので、一部のレジスタは、 ホスト・モードとデバイス・モードの間で共有されています。コントローラは、ホ スト・モードでマスタがデバイス・レジスタへのアクセスを試みた場合、またはデ バイス・モードでマスタがホスト・レジスタへのアクセスを試みた場合、モードの 不一致割り込みを生成します。実装されていないレジスタへの書き込みは無視され ます。実装されていないレジスタから読み出すと、不定値が返されます。 アプリケーション・インタフェース・ユニット アプリケーション・インタフェース・ユニット(AIU)は、プログラマブル FIFO バッ ファのスレッショルドに基づいて、DMA 要求を生成します。AIU は、ホスト・デバイ ス・モードの両方のために GIC への割り込みを生成します。DMA のスケジューラは、 システム・メモリのパケットおよびそれぞれの USB エンドポイント間のデータ転送 を調停して制御するために AIU に含まれています。 パケット FIFO コントローラ パケット FIFO コントローラ(PFC)は、SPRAM 内にあるデータ FIFO バッファを介し て、MAC で AIU を接続します。デバイス・モードでは、単一の FIFO バッファが IN エ ンドポイントごとに実装されています。ホスト・モードでは、単一の FIFO バッファ は、すべての周期(アイソクロナスおよび割り込み)の OUT エンドポイントのため にデータを格納します。そして、単一の FIFO バッファは、非周期(コントロールお よびバルク)の OUT エンドポイントのために使用されます。ホスト・モードとデバ イス・モードは、単一の受信データ FIFO バッファを共有します。 SPRAM SPRAM は、ホスト・モードとデバイス・モードのデータ FIFO バッファを実装してい ます。FIFO バッファのサイズを動的にプログラムできます。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–7 SPRAM は ECC をサポートします。Management Register Group (eccgrp)で USB0 また は USB1 の RAM ECC イネーブル・レジスタ(usb0 または usb1)に RAM ECC イネーブ ル(en)ビットを設定することにより、ECC がシステム・マネージャを使用して有 効にすることができます。各 USB インスタンス内のシングル・ビットおよびダブ ル・ビットのエラーは、このレジスタを使用して注入することができます。 SPRAM は、シングル・ビットの訂正可能なエラーが検出されて訂正された時、ま た、ダブル・ビット(修正不能)エラーが検出された時、システム・マネージャに 通知するための出力を提供します。システム・マネージャは、ECC エラーが検出さ れた時に GIC への割り込みを生成します。 MAC MAC モジュールは、以下の機能を実装します。 ■ USB トランザクション・サポート ■ ホスト・プロトコル・サポート ■ デバイス・プロトコル・サポート ■ OTG プロトコル・サポート ■ リンク・パワー・マネージメント(LPM)ファンクション USB トランザクション デバイス・モードでは、MAC は、すべてのトークン・パケットの整合性をデコード し、チェックします。有効な OUT または SETUP トークンの場合、以下の DATA パ ケットもチェックされます。データ・パケットが有効な場合、MAC は、次の手順を 実行します。 1. 受信 FIFO バッファにデータを書き込む。 2. USB ホストに、必要なときに適切なハンドシェイクを送信する。 受信 FIFO バッファが使用不可能な場合、MAC は、ホストに NAK 応答を送信します。 また、MAC は ping プロトコルをサポートします。 IN トークンでは、データが送信 FIFO バッファで使用可能な場合、MAC は、次の手順 を実行します。 1. FIFO バッファからデータを読み出す。 2. データ・パケットを形成する。 3. ホストにパケットを送信する。 4. ホストから応答を受信する。 5. PFC に更新されたステータスを送信する。 ホスト・モードでは、MAC は、AIU からのトークンの要求を受信します。MAC は、次 の手順を実行します。 1. トークン・パケットを構築する。 2. デバイスにパケットを送信する。 OUT または SETUP トランザクションの場合、MAC は、次の手順を実行します。 1. 送信 FIFO バッファからデータを読み出す。 2. データ・パケットをアセンブルする。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–8 3. デバイスにパケットを送信する。 4. 応答を待機する。 デバイスからの応答により、MAC は AIU にステータスの更新を送信します。 IN または PING トランザクションの場合、MAC は、デバイスからのデータまたはハ ンドシェイク応答を待機します。データ応答については、MAC は、次の手順を実行 します。 1. データを検証する。 2. 受信 FIFO バッファにデータを書き込む。 3. AIU にステータス・アップデートを送信する。 4. 適切な場合には、デバイスへのハンドシェイクを送信する。 ホスト・プロトコル ホスト・モードでは、MAC は、次の機能を実行します。 ■ USB リンク上のイベントの接続、切断、およびリモート・ウェイクアップを検出。 ■ リセットを開始。 ■ 高速列挙プロセスを開始。 ■ フレーム開始(SOF)パケットを生成。 デバイス・プロトコル デバイス・モードでは、MAC は、次の機能を実行します。 ■ USB リセット・シーケンスを処理。 ■ 高速列挙を処理。 ■ USB リンク上の USB の中断および再開のアクティビティを検出。 ■ リモート・ウェイクアップを開始。 ■ SOF パケットをデコード。 OTG プロトコル MAC は、OTG 動作用の HNP と SRP を処理します。HNP は、ホストとデバイスの役割 を交換するためのメカニズムを提供します。SRP は、電力を節約するために VBUS を オフにするホスト用のメカニズム、および新しい USB セッションを要求するデバイ ス用のメカニズムを提供します。 LPM ファンクション USB OTG コントローラは、ホスト・モードとデバイス・モードの両方で LPM をサ ポートします。USB リンクで LPM トランザクションが成功した場合、この機能を使 用すると、USB OTG コントローラはスリープ状態に入ることができます。 ウェイクアップおよびパワー・コントロール USB OTG コントローラは、消費電力を低減するためにパワーダウン・モードをサ ポートします。パワーダウン・モードでは、コントローラと PHY は、クロックを シャットダウンすることができます。コントローラは、次のイベントの検出時に ウェイクアップをサポートします。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–9 ■ 再開 ■ リモート・ウェイクアップ ■ セッション・リクエスト・プロトコル ■ 新しいセッションの開始 PHY のインタフェース・ユニット USB OTG コントローラは、ULPI PHY に同期 SDR データ転送をサポートします。SDR モードでは、8 ビットのデータ・バスを実装します。 ULPI PHY インタフェース ULPI PHY インタフェースは、PHY から ulpi_clk 信号に同期しています。表 18–2 に、 ULPI PHY インタフェース名および関連情報を示します。 表 18‒2. ULPI PHY インタフェース ポート名 ビット 幅 入力 / 出力 1 入力 説明 ULPI クロック ulpi_clk 高速 ULPI PHY によって供給された 60 MHz クロックを受信します。す べての信号は、クロックのポジティブ・エッジに同期しています。 ULPI のデータ・バス・コントロール 1 ulpi_dir 入力 1—PHY は、USB OTG コントローラに転送するデータがあります。 0—PHY は、転送するデータがありません。 ULPI の次データ・コントロール 1 ulpi_nxt 入力 PHY は、USB OTG コントローラから現在のバイトを受け入れたことを 示しています。PHY が送信しているときに、この信号は、新しいバイ トがコントローラで使用可能であることを示します。 ULPI ストップ・データ・コントロール ulpi_stp 1 出力 ulpi_data[7:0] 8 双方向 コントローラは、データ・ストリームの終わりを示すためにこの信号 を High にドライブします。また、コントローラは、PHY からデータを 要求するために、この信号を High にドライブすることができます。 双方向データ・バスです。アイドル時にコントローラによって Low に ドライブされます。 クロック リセットが解除されたときに、すべてのクロックを動作する必要があります。クロッ クに特別な処理をする必要はありません。 表 18–3 に、USB OTG コントローラのクロック入力を示します。 表 18‒3. USB OTG コントローラのクロック入力 クロック信号 周波数 機能の使用 usb_mp_clk 60 ~ 200 MHz マスタとスレーブ・インタフェース、DMA コントローラ、および内 部 FIFO バッファを駆動。 usb0_ulpi_clk 60 MHz 外部 ULPI PHY I/O ピンから usb0 用の ULPI 基準クロック。 usb1_ulpi_clk 60 MHz 外部 ULPI PHY I/O ピンから usb1 用の ULPI 基準クロック。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–10 リセット USB OTG コントローラは、ハードウェアのリセット入力、またはソフトウェアのい ずれかを介してリセットすることができます。 リセット要件 コントローラがリセットから取り出される前に ulpi_clk クロックが最低 12 サイク ルがある必要があります。リセット時に、USB OTG コントローラは ulpi_stp 信号を アサートします。PHY は、ulpi_stp 信号がアサートされるとクロックを出力します。 しかし、ピンのマルチプレクサがプログラムされていない場合、PHY は ulpi_stp 信 号を表示しません。その結果、ulpi_clk クロック信号は、USB OTG コントローラに 到達しません。 ソフトウェアは、リセットが usb_mp_clk で最低 2 サイクルの間でアクティブである ことを確認する必要があります。最大のアサーション時間はありません。 ハードウェアのリセット USB OTG コントローラのそれぞれがリセット・マネージャからの 1 つのリセット入 力を備えています。リセット信号がコールドまたはウォームのリセット・イベント 中にアサートされます。リセット・マネージャは、ソフトウェアがリセットをリ リースするまで、コントローラをリセット状態に保持します。HPS リセット・マネー ジャでペリフェラル・モジュール・リセット・レジスタ(permodrst)における適切 な USB ビットをクリアすることにより、ソフトウェアはリセットをリリースします。 リセット入力は、次のブロックをリセットします。 ■ マスタおよびスレーブのインタフェース・ロジック ■ 統合された DMA コントローラ ■ 内部 FIFO バッファ ■ CSR リセット入力は、usb_mp_clk ドメインに同期されます。また、リセット入力は、 USB OTG コントローラ内に ULPI クロックに同期化され、ULPI PHY のドメイン・ロ ジックをリセットするために使用されます。 ソフトウェアのリセット ソフトウェアは、USB OTG コントローラのグローバル・レジスタ(globgrp)のグ ループにおけるリセット・レジスタ(grstctl)のコア・ソフト・リセット (csftrst)ビットを設定することにより、コントローラをリセットすることができ ます。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラの機能の説明 18–11 ソフトウェアのリセットは、次のような場合に有用です。 ■ PHY の選択ビットがソフトウェアによって変更される場合。USB OTGコントローラ のリセットは、PHY が新しいコンフィギュレーションまたはクロックと動作でき ることを確認するためのクリーンアップの一部です。 ■ ソフトウェア開発とデバッグ中の場合。 割り込み 各 USB OTG コントローラには、単一の割り込み出力があります。割り込みは、 表 18–4 に示す条件の時にアサートされます。 表 18‒4. USB OTG 割り込み条件 ( その 1 ) 条件 2012 年 11 月 モード デバイス開始のリモート・ウェイクアップが検出される。 ホスト・モード セッション・リクエストがデバイスから検出される。 ホスト・モード デバイスの切断が検出される。 ホスト・モード ホスト LPM エントリのリトライは期限が切れているまたは LPM ト ランザクション(s)が完了している。 ホスト・モード ホスト定期的な TX FIFO バッファは空である(半分空になったこと を示すために、さらなるプログラムが可能です)。 ホスト・モード ホスト・チャンネル割り込みが受信される。 ホスト・モード 不完全な定期的な転送がマイクロフレームの最後に保留されてい る。 ホスト・モード ホスト・ポート・ステータス割り込みが受信される。 ホスト・モード 外部ホストの再開開始が検出される。 デバイス・モード Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのプログラミング・モデル 18–12 表 18‒4. USB OTG 割り込み条件 ( その 2 ) 条件 モード LPM のハンドシェイクが送信される。 デバイス・モード 中断または通常モードでのリセットが検出される。 デバイス・モード USB サスペンド・モードが検出される。 デバイス・モード データ・フェッチが完全な TX FIFO バッファまたはフル・リクエス ト・キューのために中断される。 デバイス・モード 少なくとも 1 つのアイソクロナス OUT エンドポイントがマイクロ フレームの最後に保留される。 デバイス・モード 少なくとも 1 つのアイソクロナス IN エンドポイントがマイクロフ レームの最後に保留される。 デバイス・モード 少なくとも一つの IN または OUT のエンドポイント割り込みがマイ クロフレームの最後に保留される。 デバイス・モード 周期的なフレームの最後に達する。 デバイス・モード RX FIFO バッファにアイソクロナス OUT パケットの書き込みが失 敗。RX FIFO バッファは、アイソクロナス OUT エンドポイントの最 大パケット・サイズを収容するのに十分なスペースを持っていな い。 デバイス・モード 列挙が完了している。 デバイス・モード コネクタ ID を変更する。 コモン・モード モードのミスマッチ。ソフトウェア・アクセス・レジスタが誤っ たモードに属する。 コモン・モード 非周期 TX FIFO バッファが空になっている。 コモン・モード RX FIFO バッファが空ではない。 コモン・モード マイクロフレームの開始。 コモン・モード デバイス接続デバウンスはホスト・モードで完了している。 OTG 割り込み A デバイスは B デバイスの接続を待っている間にタイムアウトす る。 OTG 割り込み ホスト・ネゴシエーションが完了している。 OTG 割り込み セッション要求が完了している。 OTG 割り込み セッション終了がデバイス・モードで検出される。 OTG 割り込み USB OTG コントローラのプログラミング・モデル USB OTG コントローラの使用方法の詳細は、使用するオペレーティング・システム (OS)ドライバのマニュアルを参照してください。OS ベンダは、USB ホスト、デバイ ス、および OTG 動作を制御するためのアプリケーション・プログラミング・インタ フェース(API)を提供します。この項では、次のソフトウェア動作の簡単な概要を 提供しています。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのプログラミング・モデル ■ SPRAM ECC の有効 ■ ホスト動作 ■ デバイス動作 18–13 SPRAM ECC の有効 ECC エラーの失敗を回避するために、ECC を使用する前に、SPRAM に ECC ビットを 初期化する必要があります。ECC ビットを初期化するために、ソフトウェアは SPRAM のすべての位置にデータを書き込みます。 SPRAM へのアクセスを持つ L3 のインタコネクトは、USB OTG の L3 スレーブ・イン タフェースを介してアクセスできます。ソフトウェアは、USB OTG コントローラの アドレス空間の directfifo メモリ空間を介して SPRAM にアクセスします。 SPRAM は、8192(32 キロバイト)の位置が含まれています。L3 スレーブは、SPRAM に 32 ビットのアクセスを提供します。物理的に、SPRAM は、USB OTG コントローラ の内部使用のために予約されている上位 3 ビットを含む 35 ビット・メモリとして実 装されています。書き込みが L3 スレーブ・インタフェースを介して SPRAM に実行 されると、ECC ビットの初期化を可能にするために、内部データ・バスのビット 32 ~ 34 が 1 に固定されます。 directfifo メモリ空間は、コントローラ・アドレス・マップに記載されています。 18–17 ページの「USB OTG コントローラのアドレス・マップとレジスタ定義」を参照 してください。 1 ソフトウェアは、32 KB の範囲を超えた SPRAM にアクセスすることはできません。範 囲外のリード・トランザクションの場合、不確定なデータを返します。範囲外の書 き込みトランザクションは無視されます。 ホスト動作 ホストの初期化 電源投入後、USB ポートはデフォルトのモードになります。VBUS は USB ケーブルに は適用されません。次のプロセスでは、USB OTG コントローラを USB ホストとして 設定します。 1. USB ポートへのパワーをイネーブルするために、ソフトウェア・ドライバは、ホ スト・モード・レジスタ(hostgrp)のホスト・ポート・コントロールおよびス テータス・レジスタ(hprt)でポート・パワー(prtpwr)を 1 に設定します。こ れによって、VBUS 信号を USB リンク上で駆動します。 コントローラは、USB リンクで検出される接続を待機します。 2. USB デバイスが接続されると、割り込みが生成されます。hprt でのポート・コネ クト検出(PrtConnDet)ビットが 1 にセットされます。 3. ポートの接続を検出すると、ソフトウェア・ドライバは、hprt のポート・リセッ ト(prtrst)を 1 に設定することにより、ポートのリセットを開始します。 4. 速度の列挙が USB リンク上で完了できるように、ソフトウェア・ドライバは、 10 ms 間以上を待機する必要があります。 5. 10 ms 後に、ソフトウェア・ドライバは、ポート・リセットを解放するために 0 に戻して prtrst を設定します。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのプログラミング・モデル 18–14 6. USB OTG コントローラは割り込みを生成します。hprt でのポート・イネーブル・ ディセーブルの変更(prtenchng)およびポート・スピード(prtspd)ポートは、 添付されているデバイスの列挙された速度を反映するように設定されます。 この時点で、ポートは通信用にイネーブルになっています。キープ・アライブま たは SOF パケットがポートに送信されます。USB 2.0 対応のデバイスが正しく初期 化することに失敗した場合、USB 1.1 デバイスとして報告されます。 ホスト・フレーム・インタバール・レジスタ(hfir)は、対応する PHY のクロッ ク設定で更新されます。SOF パケットを送信するための hfir は、ホスト・モー ド・レジスタ (hostgrp)グループに属しています。 7. ソフトウェア・ドライバは、グローバル・レジスタ(globgrp)グループ内の次 のレジスタを下にリストされている順序でプログラムする必要があります。 a. Receive FIFO Size Register (grxfsiz)— 受信 FIFO バッファのサイズを選択。 b. Non-periodic Transmit FIFO Size Register (gnptxfsiz)— 非周期的なトランザク ション用の非周期的な送信 FIFO バッファのサイズと開始アドレスを選択。 c. Host Periodic Transmit FIFO Size Register (hptxfsiz)— 定期的なトランザク ション用の定期的な送信 FIFO バッファのサイズと開始アドレスを選択。 8. システム・ソフトウェアは、USB デバイスと通信するために少なくとも 1 つの チャネルを初期化して、有効にします。 ホスト・トランザクション ホストとして構成されると、USB OTG コントローラは 2 つのリクエスト・キュー (定期トランザクションのためのものと非周期的なトランザクションのためのもの) の 1 つを介して、USB トランザクションをパイプします。リクエスト・キューの各 エントリには、USB リンク上でトランザクションを実行するために必要な他の情報 と一緒に SETUP、IN または OUT のチャンネル番号を保持します。リクエストが キューに書き込まれる順序は、USB リンク上のトランザクションの順序を決定しま す。 ホストは、各フレームまたはマイクロフレームの先頭に、次の順序でリクエストを 処理します。 1. アイソクロナスおよび割り込みトランザクションを含む定期的なリクエスト・ キュー 2. 非周期的リクエスト・キュー(バルクまたはコントロール転送) ホストは、ラウンドロビン方式でイネーブルされた各チャネルにトランザクション をスケジュールします。ホスト・コントローラがチャネルの転送を完了すると、コ ントローラは、システム・メモリの DMA ディスクリプタのステータスを更新しま す。 OUT トランザクションの場合、ホスト・コントローラは、送信されるパケットのペ イロードを保持する上で 2 つの送信 FIFO バッファを使用します。1 つの送信 FIFO バッファは、すべての非周期の OUT トランザクション用に使用され、もう 1 つは、 すべての周期の OUT トランザクション用に使用されます。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのプログラミング・モデル 18–15 IN トランザクションの場合、USB ホスト・コントローラは、すべての周期と非周期 的なトランザクション用として 1 つの受信 FIFO バッファを使用します。パケットが システム・メモリに転送されるまで、コントローラは、受信 FIFO バッファで USB デ バイスからパケットのペイロードを保持します。また、受信 FIFO バッファは、受信 した各パケットのステータスも保持します。ステータス・エントリは、受信された バイト数と有効性ステータスを含む他の情報と一緒に IN のチャンネル番号を保持し ます。 汎用的なハブの動作の場合、USB OTG コントローラは、ハブの低速デバイス・ダウ ンストリームと通信するために SPLIT 転送を使用します。これらの転送の場合、ト ランザクションの蓄積やバッファリングは、汎用的なハブで行われ、それに応じて スケジュールされます。USB OTG コントローラは、ダウンストリーム・トランザク ションが完了したときや蓄積されたデータがアップストリームに送信する準備がで きたときに、送信バッファと受信バッファが十分に割り当てられていることを保証 します。 デバイス動作 デバイスの初期化 次のプロセスでは、USB OTG コントローラを USB デバイスとして設定します。 1. 電源投入後、デバイス・モード・レジスタ (devgrp)グループ内のデバイス・コ ンフィギュレーション・レジスタ(dcfg)のデバイス・スピード (devspd) ビットに書き込むことによって、USB OTG コントローラを目的のデバイス・ス ピードに設定する必要があります。デバイス・スピードが設定された後、コント ローラは、USB ポートをデバイス・ポートとして検出するための USB ホストを待 機します。 2. 外部ホストが USB ポートを検出すると、ホストは、ポートのリセットを実行し て、USB デバイス・ソフトウェアに割り込みを生成します。グローバル・レジス タ(globgrp)グループ内に、割り込み (port reset)レジスタの USB リセット (usbrst)ビットが設定されます。次に、デバイス・ソフトウェアは、外部ホス トから SETUP パケットを受信するために、データ FIFO バッファを設定します。 エンドポイント 0 は、まだイネーブルになっていません。 3. ポート・リセットが完了すると、外部ホストが必要とする動作速度が分かってい ます。ソフトウェアは、デバイス・スピードの状態を読み出して、コントロー ル・エンドポイント 0 をイネーブルするために、残りのすべての必要なトランザ クション・フィールドを設定します。 この処理が完了すると、デバイスは SOF パケットを受信していて、USB ホストがデ バイスのコントロール・エンドポイントを設定する準備ができています。 デバイス・トランザクション デバイスとして構成される場合、USB OTG コントローラは、すべての OUT エンドポ イント用のデータを受信するために、単一の FIFO バッファを使用します。受信 FIFO バッファは、バイト・カウント、データ・パケット ID(PID)、および受信したデー タの妥当性を含め、受信したデータ・パケットの状態を保持します。DMA コント ローラは、FIFO バッファからのデータを受信されたデータとして読み出します。FIFO バッファのオーバーフロー状態が発生する場合、コントローラは、NAK を使用して OUT パケットに応答し、ポインタを内部的にリワインドします。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのプログラミング・モデル 18–16 IN エンドポイントの場合、コントローラは、エンドポイントごとに専用の送信バッ ファを使用します。アプリケーションは、USB ホストが非周期的エンドポイントに アクセスする順序を予測する必要はありません。FIFO バッファのアンダーラン状態が 送信中に発生した場合、コントローラは、USB リンク上での破壊としてパケットを マークするために CRC(Cyclic Redundancy Code)を反転させます。 アプリケーションは、トランザクション・レベルの動作でエンドポイントごとに一 度に 1 つのデータ・パケットを処理します。ソフトウェアは、各パケットの完了に 対する割り込みを受信します。アプリケーションは、USB リンク上で受信されたハン ドシェイク応答に基づいて、転送のすべてのパケットが完了するまで、トランザク ションを再試行するか、または次のトランザクションを続行するかどうかを決定し ます。 IN トランザクション IN トランザクションの場合、アプリケーションは、次の手順を実行します。 1. エンドポイントをイネーブルします。 2. 対応する送信 FIFO バッファに関連付けられたデータ・パケットを書き込むために DMA エンジンをトリガします。 3. コントローラからのパケット完了の割り込みを待機します。 関連付けられた送信 FIFO バッファに十分なデータが含まれておらず、IN トークンが エンドポイントで受信される場合、コントローラは、次の手順を実行します。 1. 割り込みを生成します。 2. USB ホストに NAK ハンドシェークを返します。 十分なデータが使用可能な場合、コントローラは、USB ホストにデータを送信しま す。 OUT トランザクション OUT トランザクションの場合、アプリケーションは次の手順を実行します。 1. エンドポイントをイネーブルします。 2. USB OTG コントローラからのパケット受信の割り込みを待機します。 3. 受信 FIFO バッファからパケットを取得します。 受信 FIFO バッファが十分なスペースを持っていないエンドポイントで OUT トークン または PING トークンが受信されると、コントローラは次の手順を実行します。 1. 割り込みを生成します。 2. USB ホストに NAK ハンドシェークを返します。 十分なスペースがある場合、コントローラは、受信 FIFO バッファにデータを格納し、 USB リンクに ACK ハンドシェークを返します。 コントロール転送 コントロール転送の場合、アプリケーションは次の手順を実行します 1. コントローラからのパケット受信の割り込みを待機します。 2. 受信バッファからのパケットを取得します。 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 2012 年 11 月 Altera Corporation 第 18 章 : USB 2.0 OTG コントローラ USB OTG コントローラのアドレス・マップとレジスタ定義 18–17 コントロール転送が USB プロトコルによって制御されているので、コントローラは、 常に ACK ハンドシェイクで応答します。 USB OTG コントローラのアドレス・マップとレジスタ定義 f アドレス・マップとレジスタ定義は、このハンドブックのボリュームに付属 hps.html ファイルにあります。ファイルを開くにはリンクをクリックします。 モジュールの説明とベース・アドレスを表示するには、以下のモジュールのインス タンスのいずれかをスクロールして、リンクをクリックします。 ■ usb0 ■ usb1 次に、レジスタとフィールドの説明を表示するには、レジスタ名をスクロールして、 クリックします。レジスタのアドレスは、各モジュール・インスタンスのベース・ アドレスからの相対的なオフセットです。 f すべてのモジュールのベース・アドレスは、サイクロン V デバイス・ハンドブック Volume 3 の Introduction to the Hard Processor System の章に記載されています。 改訂履歴 表 18–5 に、このドキュメントの改訂履歴を示します。 表 18‒5. 改訂履歴 バー ジョン 日付 2012 年 11 月 1.2 変更内容 ■ 割り込みの生成を説明。 ■ ホストとデバイスのモードでソフトウェアの初期化を説明。 ■ ホストとデバイスのモードでソフトウェア動作を説明。 ■ 機能リストを簡素化。 ■ ハードウェア記述を簡素化。 2012 年 6 月 1.1 ECC に関する情報を追加。 2012 年 1 月 1.0 最初のリリース。 2012 年 11 月 Altera Corporation Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 18–18 Arria V デバイス・ハンドブック Volume 3: ハード・プロセッサ・システムのテクニカル・リファレンス・マニュアル 第 18 章 : USB 2.0 OTG コントローラ 改訂履歴 2012 年 11 月 Altera Corporation