アプリケーションノート 3803

役に立つUSB用語集


要約: USBが初めての方は、いくつかのUSB用語を理解してからマキシムのUSBのアプリケーションノートに取り組むようにすれば効率的です。このアプリケーションノートでは、基本的なUSB用語、特にMAX3420E USBコントローラとMAX3421E USBペリフェラル/ホストコントローラに関連する用語について説明します。

ホスト
ファンクション
スピード
IN-OUT方向
エンドポイント
ハブ
エニュメレーション
第9章 (エニュメレーションの詳細)
SIE
データトグル
CONTROL転送、BULK転送、INTERRUPT転送、ISOCHRONOUS転送
バスリセット
USBクラスドライバ

ホスト

USBは、正確には1つのマスタと複数のスレーブで構成される「マスタ-スレーブ」バスです。スレーブは、ペリフェラル(USB用語ではファンクション)と呼ばれます。マスタはホストと呼ばれます。ホストのみがUSB転送を開始することができます。ペリフェラルは常に応答し、転送を開始することはありません。PCが最も一般的なホストです。ホストは、USB Aコネクタを使用して、ダウンストリームのデバイスに接続されます。組込み型ホストはPCを必要とせず、代わりにマイクロコントローラを使用して、専用ホストを実現し、おそらくUSBデバイスの1クラスとだけ通信します。


MAX3421Eはコントローラに接続されて組込み型ホストを実現します。


ファンクション

ファンクションとはUSBデバイスのことであり、USBペリフェラルとも呼ばれます。USBペリフェラルは、ホストの「ダウンストリーム(下流側)」にあり、USB Bコネクタを使用します。
  • MAX3420Eは、ペリフェラルコントローラです。
  • MAX3421Eは、USBホストとしても、ペリフェラルコントローラとしても動作することができます。



スピード

USB 2.0の仕様では、以下の3つのスピードが定義されています。
  1. ロースピードは1.5Mbpsで、主にキーボードおよびマウスで使用されます。
  2. フルスピードは12Mbpsです。
  3. ハイスピードは480Mbpsです。


市場では、「USB 2.0準拠」という謳い文句に関して少し混乱が生じています。その混乱の原因は、USB仕様のバージョンの経過に由来しています。最初にUSB仕様1.0が作成され、その後まもなくして1.0の仕様を具体化したバージョン1.1が発行されました。バージョン1.Xには、ロースピードとフルスピードの、2つのUSBバススピードが含まれていました。バージョン2.0では、ハイスピードが追加され、全面的に1.1の仕様を差し替えました。したがって、フルスピードデバイス(12Mbps)を製作した場合、多くの人々はハイスピード(480Mbps)の動作のみがUSB 2.0と関連があると考えているようですが、間違いなく、フルスピードもUSB仕様バージョン2.0準拠と謳うことができます。
  • MAX3420Eは、フルスピードのペリフェラルデバイスとして動作します。
  • MAX3421Eは、フルスピードのペリフェラルデバイスまたはフル/ロースピードのホストとして動作します。



IN-OUT方向

USBシステムはホストを中心としたシステムです。このため、USBの用語は、ホストを中心に説明する事を想定しています。したがって、IN転送とは、ホストから見た方向であり、ペリフェラルからホストへの転送になります。同様に、OUT転送は、ホストからペリフェラルに移動することになります。

MAX3420Eのコードを記述するとき、チップから送信されるデータを"INFIFO"にロードすることはやや奇妙に思われるかもしれません。しかし、ホストがマスタであることを思い出せば、このことを理解することができます。

エンドポイント

エンドポイントは、USBペリフェラル内部のデータのソースまたはシンクであり、アドレス指定の可能なFIFOです。USBペリフェラルは一意のアドレスを持ち、最大16のエンドポイントを装備することができます。ホストは、あらゆるデータ転送にデバイスアドレスとエンドポイント番号を含めることによって、特定のエンドポイント(FIFO)にデータを送信します。

各エンドポイントには、0~15のアドレスと1つの方向が備わっています。したがって、エンドポイント2-INは、エンドポイント2-OUTとは完全に別のものです。あらゆるデバイスには、双方向のデフォルトCONTROLエンドポイント0があるため、個別にエンドポイント0-INとエンドポイント0-OUTはありません。

エンドポイントの番号は、ペリフェラルデバイス内では自由に設定することができます。ペリフェラルは、エニュメレーション中にエンドポイントの番号と特性をホストに報告します。


MAX3420Eには、以下のエンドポイントが用意されています。
  • EP0 - デフォルトCONTROLエンドポイント
  • EP1-OUT
  • EP2-IN
  • EP3-IN


MAX3421Eは、ペリフェラルとして動作するときには、MAX3420Eと同じエンドポイントを提供します。ただし、ホストとして動作するときには、SNDFIFOとRCVFIFOを使用することで、任意のペリフェラルアドレスとエンドポイントにデータを転送します。MAX3421Eのファームウェアは、ファンクションアドレスと所望のエンドポイント番号をレジスタにロードしてから、パケットを送信します。


ハブ

ハブは、USBホストが通信することができるデバイスの数を拡張するものです。PCにはUSBコントローラに内蔵のルートハブがあり、デバイスの接続や接続解除の検出など、低水準のUSB作業を行います。ハブは上流(PC)とフルスピードまたはハイスピードで通信し、下流のペリフェラルとは3つのすべてのスピードで通信します。PCのルートハブは、Aコネクタ当り5V 、500mAの電力を供給することができます。バス給電の外付けハブ(ACアダプタなし)は、ポート当り100mAを供給することができます。USBは外付けのハブ回路に100mAを割り当てるため、バス給電のハブが対応可能な最大ダウンストリームポートは4つです。ハブに専用の電源がある場合(自己給電)、各ダウンストリームポートは最大500mAを供給することができます。


  • MAX3420Eのファームウェアは、接続されるハブレベルの数を考慮する必要がありません。
  • MAX3421Eは、ハブに接続されているロースピードペリフェラルと通信するための特殊モードを備えています。



エニュメレーション

USBデバイスを接続すると、ホストは接続通知を受け取り、接続されたデバイスの確認を行おうとします。ホストは一連の記述子(テーブルデータ)を要求し、デバイスは、その記述子の返送をすべてデフォルトCONTROLエンドポイント0を使って行います。。ホストがデバイスから受信したデータに満足した場合、ホストはこのデバイスを使用することができるように構成します。ホストがデバイスのデータに満足しない場合(たとえば、記述子データのいずれかが矛盾している、または仕様から逸脱している場合)、そのデバイスを無視します。小さなポップアップウィンドウが表示され、このUSBデバイスに問題があることを示します。

第9章 (エニュメレーションの詳細)

USB仕様の第9章は、エニュメレーション中にホストがペリフェラルに送信するすべての要求について、およびペリフェラルが応答するためのデータフォーマットについて定義します。公式のUSBウェブサイトを閲覧すると、「Chapter 9 Tests」という項が含まれたUSBCV (USB Command Verifier)というソフトウェアツールが見つかります。これらのテストは、ユーザのエニュメレーションコードが正しいことを検証します。USBCVは、USB認定テストラボが使用するものと同じテストです。このため、ユーザのラボでこの部分のUSB認証に合格すれば、テストラボでも同じ部分に合格します。


マキシムは、USBCVテストに合格するエニュメレーションのサンプルコードを記載したMAX3420Eのアプリケーションノートを提供しています。


SIE

SIEは、Serial Interface Engine(シリアルインタフェースエンジン)という意味で、すべてのUSBコントローラ内部の機構です。SIEは、ビットスタッフィング、CRC生成とチェック、およびエラー報告など低水準の細部の作業を実施します。SIEの主な役割は、低水準の送出信号を付属コントローラが使用可能なバイトに変換することです。他に比べて処理を巧妙に行うSIEもあります。SIEが処理する低水準の細部の作業が多くなるほど、制御ファームウェアを単純にすることができます。たとえば、エンドポイントのデータトグル(以下の項を参照)の結果のみを報告し、その処理方法の判断をファームウェアに委ねるSIEもあります。MAX3420/MAX3421は、SIE内部でデータトグルを処理します。

データトグル

USBパケットはPID、すなわちPacket IDで始まります。データ転送は、DATA0およびDATA1という2つのPIDを利用します。ホストとペリフェラルの両方に、エンドポイントごとに1つのデータトグルビットが備わっています。トグルビットは、これらのデータPIDのいずれをデータ転送に使用すべきかを決定します。ペリフェラルがリセットから復帰すると、ホストとペリフェラルの両方が内部のデータトグルビットを0にリセットします。したがって、最初のデータパケットは、DATA0のPIDを使用して送信されます。

データパケットがエラーなく転送されると(送信側がACKのPIDを受信することによって判定される)、両方がデータトグルビットを反転します。その後、エンドポイントの2番目のデータパケットは、DATA1のPIDを使用して送信されます。転送が正常に行われると、データパケットはDATA0とDATA1のPIDを交互に(切り換えて)使用します。USBは、誤り訂正の一部としてこの機構を利用します。


  • MAX3420Eは、データトグルを自動的に維持管理します。デバイスが再構成されるとき、あるいはホストがClear_Feature (エンドポイントの停止)要求を送信するときにのみファームウェアが関わることになります。MAX3420Eには、各エンドポイントのトグルビットをクリアするためのレジスタビットがあります。
  • MAX3421Eは、ホストとして動作するとき、トグル値がエンドポイントに対して正しく設定されると、そのデータトグル値を維持管理します。ファームウェアは通常、特定のエンドポイントへの転送を完了した後にトグル値を保存します。その後、ファームウェアは同じエンドポイントにデータを送信する前に、保存していたトグル値をもどしてトグル値とします。同じエンドポイントへのマルチパケットの転送中、SIEはデータトグル値を維持管理します。



CONTROL転送、BULK転送、INTERRUPT転送、ISOCHRONOUS転送

USBには、上記の4つの転送タイプがあります。エニュメレーション時に、ペリフェラルは、各エンドポイントがサポートする転送タイプをホストに通知します。

ホストのみがCONTROL転送を送信します。この転送は、2~3つのステージで構成されます。SETUPパケットが、8バイトのデータパケットを使用して、特定のホスト要求を送信します。オプションのデータパケットが、記述子テーブルなどのデータを移動します。最後に、ハンドシェイク(ステータス)パケットがCONTROL転送を終了します。CONTROL転送は「必須」の転送であるため、バスの優先度が高く、最も包括的な誤り検査を行います。あらゆるUSBペリフェラルには、デフォルトCONTROLエンドポイント0が必要です。

BULK転送は、フロー制御および誤り検査を使用してデータを移動します。BULK転送は非同期であるため、予定される転送時間は一定ではなく、保証されません。ホストはBULK転送のスケジュールを最も低い優先度で設定します。このことは、BULK転送が遅いという意味ではありません。バスにかかる負荷が軽ければ、利用可能なすべての帯域幅を使用するようBULK転送のスケジュールが設定されます。

INTERRUPT転送は、実質的に、BULK転送と区別することはできません。INTERRUPT転送とBULK転送の唯一の違いは、INTERRUPTエンドポイントにはポーリング間隔値があるということです。この値は、エンドポイントに「ping」を実行する頻度をホストに通知します。したがって、BULK転送とINTERRUPT転送との唯一の実際的な違いは、ホストが転送のスケジュールを設定する頻度になります。

ISOCHRONOUS (ISO)転送は、オーディオまたはビデオなどのデータを流すことを目的としたもので、オーディオやビデオが中断されないよう、遅れずにデータを到着させる必要があります。デバイスがエニュメレートするとき、ISOエンドポイントが必要とする帯域幅の量をホストに通知します。帯域幅が利用可能な場合、ホストは、1msのあらゆるUSBフレームに、デバイスへの、またはデバイスからのISOデータパケットが含まれることを保証します。ISOはハンドシェイク(ACK/NAK)またはバスの再試行を使用しません。ISOCHRONOUS転送は、フルスピードとハイスピードの転送の場合にのみ定義されます。


  • MAX3420E (または、ペリフェラルモードのMAX3421E)にはデフォルトCONTROLエンドポイント0、および他の3つのエンドポイント(BULKまたはINTERRUPTのエンドポイントとして使用可能)があります。
  • MAX3421E (ホスト)は、4つのすべてのエンドポイントタイプへの転送を生成します。



バスリセット

ホストは、バスリセットをアサートすることによって、USBペリフェラルをリセットします。フルスピードとロースピードのUSBは、D+とD-のワイヤ上で主として差動信号送出を使用します。差動信号送出の例外はバスリセット信号とEOP (パケットの最後)信号です。これらの信号はD+とD-の両方がローであるシングルエンド0を使用します。


  • MAX3420Eは、バスリセットを検出し、割込みをアサートします。
  • MAX3421E (ホスト)は、接続されたマイクロコントローラがレジスタビットをセットすると、バスリセットを生成し、次に割込みの完了を待ちます。



USBクラスドライバ

Windows®は、さまざまなUSBのデバイスクラスをサポートするドライバを内蔵しています。これらのクラスの仕様の1つに適合するファームウェアを記述する場合、USB製品とともにカスタムのドライバを供給する必要はありません(実際にWindowsドライバを記述したい人はいません)。2つの一般的なUSBクラスドライバは、HID (ヒューマンインタフェースデバイス)とマスストレージ(ディスクドライブ、CDROM、メモリスティック)です。


マキシムは、HIDクラスに準拠したコードの記述方法を示したアプリケーションノートを提供しています。


次のステップ
EE-Mail EE-Mail配信の登録申し込みをして、興味のある分野の最新ドキュメントに関する自動通知を受け取る。
© , Maxim Integrated Products, Inc.
このウェブサイトのコンテンツは米国および各国の著作権法によって保護されています。コンテンツの複製を希望される場合は お問い合わせください。.
APP 3803:
アプリケーションノート 3803,AN3803, AN 3803, APP3803, Appnote3803, Appnote 3803