はじめに
USBをベースとしたシステムは身の回りに数多くあり、製品内の内部接続で使用される組込みシステムや、コンピュータと周辺機器を接続するための一般的な外部接続があります。USBインタフェースの大きな利点は、ホスト・デバイスから周辺デバイスに電源を供給できることです。
Universal Serial Bus(USB)は今日のパーソナル・コンピュータ(PC)の主流なインタフェースになっており、それまでの外部シリアル/パラレル・バスと置き換わっています。1995年に登場して以来、USBは元々のPC用途以外にも使用されるようになり、さまざまな種類の電気デバイスで数多く使用されるようになりました。
USBは、システム間通信だけの拡張にとどまりません。例えば、チップ間通信ではIC_USB(Inter-Chip USB)とHSIC(High-Speed Inter-Chip)が使われます。
USB 2.0は成熟した規格であり、ビルディング・ブロックの多くは強固です。しかし、このバスはノイズ、基板レイアウト、終端などの要素によって影響を受けることがあります。通信障害が発生した場合、まずオシロスコープを使用してタイミングと振幅の情報を調べ、デコード機能がある場合はプロトコル診断のための情報を調べます。
USBバスが正しく動作している場合でも、特定の条件でシステムに問題が発生することがあります。このような場合、特定のUSBバスの値でトリガすることで重要な時間基準が得られ、システムレベルのバグのトラブルシュートに役立ちます。
本アプリケーション・ノートの概要
- USB 2.0の物理レイヤとパケット構造の概要から、トラブルシュートに役立つ詳細な情報を説明します。
- USB 2.0のデコード機能を装備したオシロスコープのデコード設定方法を説明します。
- USB 2.0のデコード機能を装備したオシロスコープのシリアル・バス・データの読み方を説明します。
- USB 2.0のデコード機能を装備したオシロスコープで可能なトリガ、検索について説明します。
テクトロニクスのオシロスコープにシリアル・トリガ/解析のオプション機能を装備すると、USB 2.0バスに携わる組込みシステム・エンジニアのための強力なツールになります。このアプリケーション・ノートでは、5シリーズMSOを使用してUSBシリアル・バスのデコードとトリガを説明します。
サポート可能なシリアル・バス規格は、オシロスコープによって異なります。オシロスコープでサポートされるバスの詳細については、付録Aまたは当社ウェブ・サイト(jp.tektronix.com)をご覧ください。
USB 2.0
概要
2000年に発表されたUSB 2.0の仕様は、今日使われているほとんどのUSBデバイスに対応しています。USB 1.1仕様から進化したUSB 2.0仕様では、USB 1.1仕様でサポートされたロースピードとフルスピード・インタフェースに、新たにハイスピード・インタフェースが追加されました。USB 2.0仕様の補則では、IC_USB、HSIC、その他の機能強化が図られています。
USB 3.0仕様は、2008年に発表されました。USB 3.0はSuperSpeed USBとも呼ばれ、 転送速度はUSB 2.0の10倍になっています。SuperSpeed USBは、USB 2.0デバイスの 下位互換性をとっています。2013年には、USB 3.0仕様に10Gbpsを加えたUSB 3.1仕 様が発表されました。5GbpsをGen 1、10GbpsをGen 2としています。USB 3.0/3.1 はUSB 2.0に加えられる仕様であり、USB 2.0と置き換わるものではありません。 SuperSpeed USBのデバイスは、USB 2.0デバイスのフレームワーク・コマンドとディ スクリプションを満足する必要があります。
USB-IF(USB Implementers Forum)がUSBの規格と技術を管理、運営しています。USBの仕様は、USB-IFのウェブ・サイト(www.usb.org)で確認することができます。
動作原理
USBの速度 | ビット・レート | ビット周期 |
Low-Speed USB 2.0 | 1.5Mbps | 667ns |
Full-Speed USB 2.0 | 12Mbps | 83.3ns |
High-Speed USB 2.0 | 480Mbps | 2.08ns |
SuperSpeed USB 5Gbps(USB 3.0/USB 3.1 Gen 1) | 5Gbps | 200ps |
SuperSpeed USB 10Gbps(USB 3.1 Gen 2) | 10Gbps | 100ps |
USBには4種類の速度があります。ハイスピード・デバイスはフルスピードで開始し、その後ハイスピードに移行します。USB 2.0では、ホスト・コントローラに接続されている最も遅いデバイスによって転送速度は制限されます。
SuperSpeed USBでは2種類のホスト・コントローラが使用され、1つはSuperSpeedUSBデバイス用に、もう1つはUSB 2.0デバイスで使用されます。USB 2.0のシステムと同様、USB 3.0/3.1デバイスの速度は最も遅いデバイスによって制限されます。
テクトロニクスのオシロスコープには、USBのシリアル・トリガ/解析機能を持ったものがあります(付録Aを参照)。すべてのオシロスコープ・モデルで、ロースピードおよびフルスピードUSBのトリガ、デコード、サーチが実行できます。ハイスピードUSB信号は、1GHz以上の帯域を持ったオシロスコープが必要です。
USBのネットワークは、1台のホスト・コントローラと1~127台のデバイスで構成されます。USBはツリー型トポロジであり、オプションのハブでさらに拡張することができます。ホストのみがマスタとなり、すべてのバス・トラフィックを制御します。ホストはすべての通信とデバイスを初期化し、デバイスはホストに対して割り込むことはできません。
各デバイスは、最大16のデータ・エンドポイントを持つことができます。デバイス・エンドポイントは論理的な通信経路で、データを送信するデータ・ソースになったり、データを受信するデータ・シンクになったりします。エンドポイント0は必須であり、ホストがデバイスと通信するために使用されます。パイプは、デバイスのエンドポイントとホストのアプリケーション・ソフトウェア間を結ぶ論理的な接続のことです。
USBネットワークの接続は、電源投入時またはデバイスがホットプラグされる際に発生するコンフィグレーション・プロセスであるエニュメレーション時に動的に設定されます。以下のようなシーケンスになります。
- ホストがUSBバス上にデバイスを認識する。
- アドレス0、エンドポイント0のSETUPトークン(パケット)でデバイスをポーリングする。
- デバイスをユニークなアドレス1~127にアサインする。
- ホストはデバイスの速度とデータ転送タイプを識別する。
- デバイス・クラスを決定する。デバイス・クラスでは、プリンタ、マス・ストレージ、ビデオ、オーディオ、ヒューマン・インタフェースなどのデバイスの機能が定義される。
電気的構成
ホストは、アップストリームでAコネクタを、デバイスはダウンストリームでBコネ クタを使用します。それぞれのコネクタには、標準、ミニ、マイクロという3種類 の形状があります。2014年に発表されたタイプCではどちらも同じCコネクタを使 用します。USB 2.0のケーブルは4線で構成され、2本は、ホストからの電源(5V(赤) とグランド(黒))を供給します。コネクタは、電源とグランドのピンがデータ・ピン より先に接続するように設計されています。ホストは、パワー・マネージメントによっ て100mAから500mAまでの電流を供給します。例えば、デバイスへの電力はホス トまたはハブでモニタされており、過電流になると電力は切り離されます(なお、 タイプCでは標準で3Aまでの電流を給電可能、さらに2012年に発表されたUSB PD では最大100Wの電力を給電可能な他、受給電の向きを反転させることもできます)。
Data +(D+緑)とData -(D-白)のツイスト差動ペア線はホストによって制御され、半二重差動シグナリングにより双方向通信で使用されます。オシロスコープは、受動プローブまたはアクティブ・アナログ・プローブ、またはデジタル・ロジック・プローブでそれぞれの信号を取込むことができます。
シグナリング
USBの速度 | ロー・ステート | ハイ・ステート |
Low-Speed | <0.3V | >2.8V |
Full-Speed | <0.3V | >2.8V |
High-Speed | 0V±10mV | 400mV±10% |
ロースピードとフルスピードのデバイスでは、電圧レ ベルは名目上等価ですが、ハイスピード・デバイスで は非常に低くなっています。デバイスが接続されてい ない場合は、ホストはD+とD-の両方をプルダウンし ます。これを、シングルエンドゼロ(SE0)ステートと 呼びます。デバイスがバスに接続されると、プルアッ プ抵抗がデバイスの初期速度を示します。
データ・ステート | 差動電圧 |
Jステート | ロースピード・デバイス: D-をプルアップし、負の差動電圧になる |
ハイ/フルスピード・デバイス: D+をプルアップし、正の差動電圧になる |
|
Kステート | ロースピード・デバイス: D+をプルアップし、正の差動電圧になる |
ハイ/フルスピード・デバイス: D-をプルアップし、正の差動電圧になる |
データ伝送では、NRZI(Non Return Zero Inverted)符 号化方式と、J、Kと呼ばれる2種類のデータ・ステート を使用します。Jステート、Kステートを表す差動電圧は、 ロースピードとフルスピードのデバイスで正負が逆転 します。ステートが変化しない期間を制限するトラン ジション数を少なくするため、規格ではビット・スタッ フィングが必要になります。LSB(Least Significant Bit) が最初に送られ、MSB(Most Significant Bit)が最後に 送られます。
パケット
パケットは、USB通信の基本単位です。パケットは、SYNCフィールド(SYNC)で始まり、パケット識別子(PID)が続きます。PIDに続くフィールドは、パケットの種類(フレーム開始パケット、トークン・パケット、データ・パケット等)によって異なります(ハンドシェイク・パケットの場合はフィールドがありません)。エンドオブパケット(EOP)でパケットを終了します。
Jのアイドル・ステートに続いて、ロースピードとフルスピードではパケットは8ビットのSYNCフィールドが始まります。SYNCは3つのKJペアであり、その後に2つのKが続きます。
ハイスピードのSYNCフィールドでは15のKJペアの後に2つのKが続きます。ハブではSYNCフィールドを減らすことが許されており、最小で5つのKJペアと2つのKになることがあります。
PIDは2番目のパケット・バイトであり、4ビットのPIDと、エラー・チェックのための反転した4ビットPIDからなります。PIDの4ビット・パターンにより、17種類のパケットを区分します。パケットは、トークン、データ、ハンドシェイク、スペシャルの4つのグループに分けられます。
最初のPIDの4ビットが後の反転した4ビットと一致しない場合、PIDの符号化エラーとなります。LSBが最初に、MSBが最後にバス上に送られます。
EOP(End Of Packet)は3ビットからなり、2ビットのSE0と1ビットのJステートで構成されています。
USBパケットのタイプ | パケット | バイナリ値 |
トークン | OUT IN SOF SETUP |
0001 1001 0101 1101 |
データ | DATA0 DATA1 DATA2 MDATA |
0011 1011 0111 1111 |
ハンドシェイク | ACK NAK STALL NYET |
0010 1010 1110 0110 |
スペシャル | PRE ERR SPLIT PING Reserved |
1100 1100 1000 0100 0000 |
ハンドシェイク・パケット
データ・パケットが正常に受信されたときに送られるACKや、データ・パケットを受信できないときに送られるNAKなどのハンドシェイク・パケットは、シンク・バイト、PIDバイト、EOPで構成されます。
トークン・パケット
常にホストに送られるトークン・パケットは、SYNC、PID、および11ビットのアドレス、5ビットのCRC(Cyclic Redundancy Check)からなる2バイトとEOPで構成されます。
OUT、IN、SETUPトークンの11ビット・アドレスは、7ビットのデバイス・アドレスと4ビットのエンドポイント識別子に分かれています。
アドレス0は特殊な用途であり、ホストがデバイスにアドレスを指定するエニュメレーション・プロセスの始めではデバイスのアドレスは割り当てられていません。エニュメレーション・プロセスの後半において、ホストはデバイスにゼロでないアドレスを割り当てます。
すべてのデバイスはエンドポイント0を持っています。エンドポイント0はデバイスの制御とステータスで使用されます。他のエンドポイントは、データを転送するデータ・ソース、データを受信するデータ・シンクで使用されます。
ホスト送信の場合は、デバイスに対してまずOUTトークンを送り、データ・パケットを送ります。受信の場合、ホストがデバイスにINトークンを送り、それに反応したデバイスからのデータ・パケットまたはNAKなどのハンドシェイク・パケットを受け取ります。
データ・パケット
データ・パケットは、PIDバイト、データ・バイト、16ビットのCRCとEOPで構成されます。
DATA0とDATA1というパケットがあり、それぞれ1と0にトグルできる1ビットのシーケンスの番号を持っています。シーケンス番号は、停止や再送信の自動要求待ちに使用されます。パケットDATA0とパケットDATA1は、転送が正常に行われると交互に切り替わります。転送エラーが発生すると、データ・パケットは同じシーケンス番号で再送されます。
正常なデータ転送においては、ホストがデバイスにDATA0パケットを送り、デバイスがハンドシェイクACKパケットを返し、続いてホストがDATA1パケットを送ることになります。
ホストがデバイスからのハンドシェイクACKパケットを受信しないか、またはNAKパケットを受信した場合、ホストはDATA0パケットを再送します。デバイスがACKパケットを送り、ホストの使ったシーケンス番号と同じシーケンス番号でデバイスがデータ・パケットを受信した場合、デバイスはデータ・パケットを認識し、古いデータは無視します。
SOF(Start Of Frame)
SOFは非同期データと同期をとるために使用されます。11ビットのフレーム番号は、SOFパケットが送信されるたびに1ずつ増えます。
USB 2.0のデコード設定
Add New Busボタンをタップするか、前面パネルのBusボタンを押すと、USBバスが設定できます。信号速度、入力チャンネル、信号の種類、電圧スレッショルドなどの基本パラメータを設定します。
USB 2.0の信号は、差動ペアで伝送されます。それぞれの信号は、受動プローブ、アクティブ・アナログ・プローブ、デジタル・ロジック・プローブで取込むことができます。左に示す設定メニューでは、2つのシングルエンド・アナログ入力が設定され、PCとマウス間のロースピードUSB 2.0トラフィックを取込みます。
USB 2.0バスの読み方
オシロスコープは、ホストとロースピードUSBマウス間の通信を表示しています。USBホストはINトークンを送り、データを要求します。マウスは動いていないため、NAKを返します。
マウスが動くと、位置の変化を示すデータ・バイトをホストに返します。
この例は、PCとUSBドライブ間のフルスピードUSB 2.0のトラフィックを示しています。FlexChannel®入力にロジック・プローブを接続して信号を取込みます。シングルエンド・プローブでロースピードUSBバスを取込み、デコードすることもできますが、差動プローブを使用すると、信号忠実度が増し、ノイズ耐性が上がります。ハイスピードUSB信号では、差動プローブが必要になります。
ファームウェアを担当するエンジニアにとっては、Result Tableの形式の方が便利かもしれません。バスの動きがタイムスタンプとともに表示されるため、ソフトウェアのリストとの比較が容易で、実行速度が簡単に計算できます。
Results Tableは、波形表示とリンクしています。表の行をタップすると、オシロスコープは対応するバス信号、デコードされたバス波形を自動的にズームして、ディスプレイ下部に表示します。
USB 2.0バスのトリガ
次の手順では、設計のデバッグ、検証時に特定のバス・イベントを検出し、取込み、表示するようにオシロスコープを設定します。
この例では、差動プローブを使ってPCとハイスピードUSBメモリ・デバイス間のUSB延長ケーブルを調べます。オシロスコープは、12 01の16進値で始まるデータ・パケットにトリガします。
オシロスコープは、次のUSBバス要素にトリガできます。
トリガ対象 | 概要 |
Sync | 同期フィールド |
Handshake Packet | タイプを指定:Any、ACK、NAK、STALL、NYET |
Special Packet | タイプを指定:Any、ERR、SPLIT、PING、RESERVED |
Error | タイプを指定:PID Check Bits、Token CRC5、Data CRC16またはBit stuffing |
Token (Address) Packet | タイプを指定:Any、SOF、OUT、IN、SETUP |
Data Packet | タイプを指定:Any、DATA0、DATA1、DATA2、MDATA、16バイトまでのデータ・パターン |
Reset | |
Suspend | |
Resume | |
End of Packet (EOP) |
USB 2.0バスの検索
テクトロニクスのオシロスコープにはWave Inspectorの機能を備えているものもあり、トリガ設定と同じイベントを自動的に検索し、マークを付けることができます。例えば、すべての取込みから、アドレス00 hexのSETUPトークン・パケットすべてを検索できます。この例では、特定のバス・イベントを2つ検出しています。マークの付いたそれぞれのイベントは、前面パネルのWave Inspector操作ボタンを押すことでイベント間を簡単に移動できます。
付録 A
テクトロニクスは豊富な機種を取り揃えており、最適な一台をお選びいただけます。
MSO/DPO70000シリーズ | DPO7000Cシリーズ | 5シリーズMSO | MSO/DPO5000シリーズ | MDO4000Cシリーズ | MDO3000シリーズ | MSO/DPO2000シリーズ | |
周波数帯域 | 33GHz、25GHz、23GHz、20GHz、16GHz、12.5GHz、8GHz、6GHz、4GHz | 3.5GHz、2.5GHz、1GHz、500MHz | 2GHz、1GHz、500MHz、350MHz | 2GHz、1GHz、500MHz、350MHz | 1GHz、500MHz、350MHz、200MHz | 1GHz、500MHz、350MHz、200MHz、100MHz | 200MHz、100MHz、70MHz |
アナログ・チャンネル数 | 4 | 4 | 4、6、8 | 4 | 4 | 2または4 | 2または4 |
デジタル・チャンネル数 | 16(MSO) | - | 8~64(オプション) | 16(MSO) | 16(オプション) | 16(オプション) 1 | 16(MSO) |
スペクトラム・アナライザ・チャンネル数 | - | - | - | - | 1(オプション) | 1 | - |
レコード長(全チャンネル、ポイント) | 最大62.5M(標準)最大250M(オプション) | 25M(標準)最大125M(オプション) | 62.5M(標準)125M(オプション) | 25M(標準)最大125M(オプション) | 20M | 10M | 1M |
サンプル・レート(アナログ) | 最高100GS/s | 最高40GS/s | 最高6.25GS/s | 最高10GS/s | 最高5GS/s | 最高5GS/s | 1GS/s |
カラー・ディスプレイ | 12.1型XGA | 12.1型XGA | 15.6型HD | 10.4型XGA | 10.4型XGA | 9型WVGA | 7型WQVGA |
シリアル・バス・トリガ/解析 | I2C SPI RS-232/422/485/UART CAN LIN FlexRay USB 2.0/3.1 Gen1 HSIC 10/100BASE-T Ethernet MIL-STD-1553 8B/10Bデコード D-PHY MIPI デコード PCI Express デコード |
I2C SPI RS-232/422/485/UART CAN LIN FlexRay USB 2.0 HSIC 10/100BASE-T Ethernet MIL-STD-1553 8B/10Bデコード D-PHY MIPI デコード PCI Express デコード |
I2C SPI RS-232/422/485/UART CAN LIN FlexRay USB 2.0 10/100BASE-T Ethernet I2S/LJ/RJ/TDM |
I2C SPI RS-232/422/485/UART CAN LIN FlexRay USB 2.0 HSIC 10/100BASE-T Ethernet MIL-STD-1553 8B/10Bデコード D-PHY MIPI デコード PCI Express デコード |
I2C SPI RS-232/422/485/UART CAN CAN FD LIN FlexRay USB 2.0 I2S/LJ/RJ/TDM MIL-STD-1553 |
I2C SPI RS-232/422/485/UART CAN CAN FD LIN FlexRay USB 2.0 I2S/LJ/RJ/TDM MIL-STD-1553 |
I2C SPI RS-232/422/485/UART CAN LIN |
同時に表示可能なシリアル・バス数 | 16 | 16 | 原則、無制限 | 16 | 3 | 2 | 2 |