なぜUSB規格は難しい? 歴史から読み解く種類やコネクターの違い:必須技術を基礎から解説(3/5 ページ)
今回はUSB規格の歴史や種類、機能、組み込み開発における基礎知識などを解説します。
4. 組み込み向けUSBの基礎知識
組み込み開発者向けにUSB開発のための基礎知識をまとめました。少々長いですが、USBの中身はこんなものだと感じる程度の気持ちでお気軽にお読みください。
USBのシステム構成
USBはバスシステム全体をひとつのホストで管理します。ホストの下に複数のペリフェラルデバイスが接続されます。ホストはシステム内でユニークなアドレスをペリフェラルデバイスに割り当て、通信全体を管理し、ペリフェラルデバイスに対して指令を出します。ポート拡張はハブを介して行い、多数のペリフェラルデバイスを接続することができます。ハブはカスケード接続が可能で、最大5段まで接続できます。接続可能なターゲットの台数はハブを含めて最大127台までとなっています。
組み込み機器では、PCがホスト、組み込み機器がペリフェラルデバイスとして動作することが一般的です。組み込み機器はホストからの指令に従い、データ送信や受信などの処理を実行します。デバイスは複雑なバス管理を行う必要がないため、回路が簡易でコストを抑えられます。
USBの通信は常にホスト側から開始される「マスタースレーブ方式」であり、ペリフェラルデバイス同士が直接通信することはできません(OTGを除く)。ちなみに、最新のUSB4では従来のUSBのティアードスター型トポロジーに基づきつつ、デイジーチェーン接続もサポートする柔軟な構造になっています。
USBの転送方式
USBはシリアル通信です。データはビット列の塊を最小単位としたパケットでやりとりします。複数のパケットからなるデータのやりとりをトランザクションと呼びます。全てのUSBデバイスは制御用にコントロール転送を持ち、必要に応じてインタラプト転送、バルク転送およびアイソクロナス転送のエンドポイントを持つことができます。
1. コントロール転送(Control Transfer)
デバイスの設定や制御情報のやりとりに使われます。全てのUSBデバイスに必須の
転送モードです。デバイスの初期設定(USBエニュメレーション)や、ベンダーID、
プロダクトIDなどのデバイス情報をホストが取得する際に使用されます。転送プロト
コルのオーバーヘッドは大きいですが、高い信頼性が必要です。
2. インタラプト転送(Interrupt Transfer)
周期的に少量のデータを即時転送するために使用されます。キーボードやマウス
などのヒューマンインタフェースデバイス(HID)で主に用いられます。ホストから
の定期的なポーリング(問い合わせ)に対してデバイスが応答する形でデータが転送
されます。
3. バルク転送(Bulk Transfer)
大容量のデータを信頼性高く転送するために使用されます。データ欠損が許され
ない用途に適しています。プリンタ、スキャナー、USBメモリなどのストレージ
デバイスで主に用いられます。他の転送方式の空き時間を全て使用するため、遅延が
発生する可能性がありますが、確実にデータを転送できます。組み込み分野では、
時間制約が厳しくないデータ転送によく使われます。
4. アイソクロナス転送(Isochronous Transfer)
リアルタイム性が必要なストリーミングデータ(音声、映像など)を連続的に転送
するために使用されます。データ欠損が発生しても再送は行われませんが、一定時間
内に一定量のデータを転送することが保証されます。ビデオカメラやオーディオ機器
などで用いられます。なお、Low-Speedモードではアイソクロナス転送はサポート
されていません。
USBのエンドポイントとは
エンドポイントはUSBデバイス内に置かれたバッファーレジスタです。ホストとUSBデバイスの間は2線式の撚り対線ケーブルが1対しかありません。ホスト側は、論理的にはデバイスに対してパイプと呼ばれる複数の通信経路を経て、エンドポイントとデータの送受信を行います。
エンドポイントには、用途によってコントロールエンドポイント、デバイスエンドポイントなどのいくつかの名称があります。ホストからデバイス方向(デバイス受信)をOUTエンドポイント、デバイスからホスト方向(デバイス送信)をINエンドポイントと呼びます。特に、初期設定や制御に使われるエンドポイント0(デフォルトパイプ)は双方向で、その他のデータ転送用エンドポイントは片方向(インタラプト、バルク、アイソクロナス)があり、それぞれFIFO(先入れ先出し)やRAMのような構造を持ち、用途に応じて使い分けられます。
Copyright © Ryoyo Ryosan, Inc. All rights reserved.


