要約
USB On-the-Go(USB OTG。以下、OTG)は、PC を介すことなく 2 つのデバイス間の通信を実現するための規格です。つまり、同規格に対応した 2 つのデバイスは、PC のサービスを使用することなく互いに通信を行うことができます。一見すると、USB にピア to ピアの接続機能が追加されたようにも思えますが、そうではありません。OTG は、1 つのホストが USB 対応のペリフェラルと通信する場合に使われる標準的なホスト/ペリフェラル・モデルに準じています。ただ、OTG には、ホストとペリフェラルのどちらとしても機能することが可能なデュアルロール・デバイス(DRD:Dual-role Device)という概念が導入されています。OTG の特徴の 1 つは、ホストとペリフェラルが必要に応じて役割(ロール)を交換できることにあります。
はじめに
OTG が策定される以前、USB の世界では組み込みホストという概念が確立されていました。PC に組み込まれている USB コントローラとドライバは UHCI(Universal Host Controller Interface)/OHCI(Open Host Controller Interface)に準拠しています。組み込みホストとして使われる IC の大半は、それらの機能を完全にサポートするのではなく、ホストとしての限定的な機能を提供します。この考え方は、組み込み環境に適したものだと言えます。組み込みシステムでは、PC とは異なり、ドライバ/アプリケーション・ソフトウェア向けの膨大なリソースや無限とも言える能力を提供できるわけではないからです。
それに対し、OTG は DRD に対応しています。つまり、ホストとペリフェラルの役割を必要に応じて交換することができます。ただ、実際には、OTG に対応しているとうたうデバイスの中にも、ホストとして機能できるものとできないものがあります。とはいえ、ほとんどの OTG デバイスは DRD として実現されているはずです。
USB のペリフェラル
図 1 に示したのは、USB のペリフェラルの基本的な回路です。これが OTG の基盤になります。本稿では、USB ペリフェラルとして USB 1.1 に対応するデバイスを例にとることにします。USB 1.1 は、LS(Low Speed)モードと FS(Full Speed)モードに対応する規格として知られています。なお、USB 2.0 では、LS モードと FS モードに加えて HS(High Speed)モードも提供されるようになりました。
図 1 のコントローラの実現形態は何種類か考えられます。1 つは、マイクロプロセッサに USB SIE(Serial Interface Engine)の機能を加えたものです。もう 1 つは、マイクロプロセッサに USB 機能を集積した IC です。更に、USB トランシーバーに接続された ASIC として実現される可能性もあります。電源バス(VBUS)からの給電を受けるペリフェラルには、3.3V出力のレギュレータが必要です。それによって、コントローラのロジック回路に給電します。併せて、USB の D+ピンまたは D-ピンに接続された 1500Ω のプルアップ抵抗に適切な電圧を供給します。このプルアップ抵抗は、デバイスが接続されたことをホストに通知すると共に、デバイスの動作速度を示す役割を果たします。D+ピンがプルアップされていれば FS モード、D-ピンがプルアップされていれば LS モードです。D+/D-ピンの他端(接続先のホストまたはハブ)には、このプルアップ抵抗を検出できるように 15kΩ のプルダウン抵抗が接続されています。また、D+ピン、D-ピン、VBUS ピンには、ESD 保護用の回路を追加することが推奨されます。USB の規格では、ホットプラグを可能にすると定められているからです。
ホストとして機能させる方法
図 1 の回路は、USB のペリフェラルとしての機能しか提供しません。OTG の DRD 機能を追加するには、ホストとペリフェラルのどちらとしても機能させられるようにトランシーバーを拡張する必要があります。以下の要素を追加することで、図 1 の回路はホストとしても機能できるようになります。
- D+ピンと D-ピンに接続された 15kΩ のプルダウン抵抗
- VBUSの電力を消費するだけでなく、供給も行えるようにする手段
ASIC またはコントローラには、USB のホストとして機能させるためのロジック回路も実装しなければなりません。ペリフェラルにはないホスト用の機能としては、以下のようなものがあります。
- SOF(Start of Frame)のパケットを送信する機能
- SETUP/IN/OUT のパケットを送信する機能
- USB の 1 ミリ秒のフレーム内に転送処理をスケジュールする機能
- USB のリセットを通知する機能
- USB の電力管理を行う機能
OTG を利用するには、DRD に対応する USB コントローラに加えて、HNP(Host Negotiation Protocol)と SRP(Session Request Protocol)という 2 つのプロトコルをサポートするための回路を追加する必要があります。
HNP の役割
先述したように、OTG では、ホストとペリフェラルのどちらとしても動作することが可能な DRD という概念が導入されました。OTG の用語では、初期にホストとして機能するものを A デバイス、初期にペリフェラルとして機能するものを B デバイスと呼びます。この「初期に」という点が重要です。OTGに対応する DRD は、接続が完了した後、HNP を使用することによって役割を交換することができます。HNP については 2 つの疑問を感じる方もいるでしょう。1 つは、どのようにして最初の役割を決定するのかというものです。もう 1 つは、なぜ役割の交換が必要なのかという疑問です。
DRD の最初の役割は、ケーブルの向きによって決まります(図 2)。DRD では、Mini-AB というレセプタブル(コネクタ)を使用します。Mini-A プラグ、Mini-B プラグ、Mini-AB レセプタブルによって 5つ目のピン(ID)が追加され、ケーブルの端子に対して異なる電気的な ID が与えられます。この ID ピンは、Mini-A プラグの内部ではグラウンドに接続されています。一方、Mini-B プラグの内部ではフロート状態のままになっています。ID ピンがグラウンドに接続されている OTG 対応デバイスは、デフォルトの A デバイス(ホスト)になります。一方、ID ピンがフロート状態のままのデバイスはデフォルトの B デバイス(ペリフェラル)として扱われます。
図 3 は、なぜホストとペリフェラルの役割の交換が必要なのか説明するためのものです。図 3 には、PDA とプリンタという 2 つの DRD が描かれています。ここで、PDA はプリンタ用のドライバを内蔵しています。また、2 つの機器は OTG 用のケーブルによって図のとおりに接続されています。そのため、プリンタがデフォルトのホスト(A デバイス)、PDA がデフォルトのペリフェラル(B デバイス)になります。しかし、この設定は不適切です。実際には、プリンタ用のドライバを内蔵する PDA が、ドライバを持たないプリンタに対する USB ホストとして動作しなければなりません。ここで HNP を使用すれば、ケーブルを逆向きに接続し直すことなく、2 つのデバイスの役割を自動的に逆にすることができます。
SRP の役割
先述したように、OTG の仕様には、SRP というプロトコルが追加されています。これは、B デバイスがA デバイスに対し、VBUS の電力をオンにしてセッションを開始することを要求できるようにするというものです。
OTG におけるセッションは、A デバイスが VBUS の電力をオンにしている時間として定義されます(Aデバイスは、HNP によってペリフェラルとして機能している場合を含めて、常に VBUS の電力を供給します)。ここで、A デバイスは、消費電力を削減するために VBUS をオフにしてセッションを終了できるようになっています。これは、携帯電話機など、バッテリ駆動のデバイスにおいては非常に重要な機能です。
図 4 に示したのは一般的な OTG アプリケーションの例です。2 つの携帯電話機を互いに接続し、情報をやり取りする様子を表しています。右側の携帯電話機にはケーブルの Mini-A 端子が接続されています。したがって、こちらが A デバイスであり、デフォルトでホストになります。一方、左側の携帯電話機は B デバイスであり、デフォルトではペリフェラルになります。この場合、USB を介して通信する必要がなくなったら、A デバイスは VBUS のラインをオフにすることができます。B デバイスはそれを検出し、自らも低消費電力のモードに移行することが可能です。
ここで、左側の携帯電話機においてアドレス帳の同期のボタンが押されるなど、USB のセッションを必要とする何らかの動作が発生したとします。すると、左側の携帯電話機の SRP パルスのブロックから、最初に D+のライン、続いて VBUS のラインにパルスが送出されます。それにより、A デバイスをウェイクアップするということです(A デバイスは、D+または VBUSのパルスに応答できます)。このパルスを検出した A デバイスは、VBUSをオンにしてセッションを開始します。
SRP を使用する場合の動作は、図 4 のように単純なものではありません。例えば、B デバイスは最初にVBUS の電圧を測定し、セッションが進行中でないことを確認する必要があります。また、ケーブルの他端にあるのが従来型の PC なのか、それとも OTG 対応のデバイスなのか区別しなければなりません。そのためには、一定の量の電流を VBUS のラインに供給することによって、得られる電圧の値を確認します。
なお、一旦セッションが開始された後は、デバイスは HNP を使用できる場合とできない場合があります。
OTG 対応のトランシーバーに求められる要件
続いて、OTG 対応のトランシーバーに求められる要件について説明します。図 5 に OTG トランシーバーの回路例を示しました。
図 5 の回路は、図 1 の回路を拡張したものです。ASIC として示したブロックは、USB の機能を備えたマイクロプロセッサや DSP でも構いません。以下の 3 つの要素を追加することによって、トランシーバーを OTG 対応にすることができます。
- スイッチで制御可能なプルアップ抵抗とプルダウン抵抗を D+/D-ピンに付加します。それにより、このデバイスをペリフェラルまたはホストとして機能させることができます。
- A デバイスとして VBUSの監視と 5V の給電を行うと共に、SRP を開始する B デバイスとしてVBUSの監視とパルスの送出を担う回路を追加します。
- 入力用の ID ピンを追加します。これは、ASIC に対して信号を伝達するために利用できます。。
このシステムが OTG 対応の DRD として動作するには、2 つの要件を満たす必要があります。1 つは、トランシーバーに接続されているデバイス(ASIC や DSP など)が、ペリフェラルまたはホストとして機能できることです。もう 1 つは、HNP を使用することにより、オンザフライで役割を交換できることです。
トランシーバーに追加する回路の大部分は、ホストとして VBUSピンを管理するためのものと(VBUSピンは、このシステムにおいて 5V/8mA の電力を供給する必要があります)、ペリフェラルとして VBUSにパルスを送出するためのものです。アナログ・スイッチを制御することにより、様々な役割に応じてトランシーバーの設定が行われます。
この記事に関して
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
- {{newProjectText}} {{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}