USBのフルスピードとハイスピードの切り替えをオシロで確認してみた

インターフェース

USBのフルスピード(12Mbps)とハイスピード(480Mbps)の切り替え信号を確認しました。

オシロスコープでChirp信号の波形測定をしています。

USB2.0の回路構成・プロトコルの基礎を実際の波形含めて分かりやすく紹介します。

 

スポンサーリンク

USBのフルスピードとハイスピードの切り替えをオシロで確認してみた

USB2.0のフルスピードとハイスピードの切り替えをオシロスコープで測定しました。

ラズベリーパイからUSBをリセットさせることで、切り替え時の波形を確認しています。

 

USB2.0は最初にフルスピード(12Mbps)で接続して、その後ハイスピード(480Mbps)になります。

 

実際にフルスピードとハイスピードの切り替わるUSB2.0動作の波形を確認できています。

 

時間軸を拡大すると、切り替え信号であるChirp信号も確認することができました。

 

USB2.0の測定は専用のオシロスコープ・差動プローブが必要

本来USB2.0を測定するにはハイスピード(480Mbps)に対応できる専用オシロ・プローブが必要です。

数百万円単位の測定器のため、個人ではとても手が出せません。

 

USB2.0の測定が周波数特性の視点で難しい理由を下記記事で紹介しました。

よろしければご覧ください。。(リンク先はこちらから)

オシロスコープの周波数帯域を超えての測定はNG?実際に確認してみた
オシロスコープを使用する上で注意点として周波数帯域・特性があります。 もし周波数帯域を守らない場合、測定波形にどれほど影響あるのか調査してみました。 シミュレーション・実際の波形を踏まえて分かりやすく紹介します。

 

もし仮に数万円レベルのオシロで確認しても480Mbpsの正常波形の測定は難しいです。

高速域の帯域が足りない,インピーダンスが合わない、など多くの懸念点があります。

 

インピーダンス不整合による波形への影響に関しては下記記事でも紹介しています。

インピーダンス不整合と反射の影響をオシロとシミュレーションで確認
インピーダンス不整合と反射の影響を調査してみました。 シミュレーションに加えて、実際のオシロスコープでも確認をしています。 実際に反射が起きてしまった場合の波形への影響具合を分かりやすく紹介します。

 

そのため個人のオシロスコープ・プローブでも何とかUSB2.0で測定出来る箇所を確認しました。

USB2.0のハイスピード(480Mbps)が本格的に動き出す前をメインに調査しています。

 

測定方法、またUSBのフルスピードとハイスピードの確認方法含めて紹介していきます。

 

また今回使用したオシロスコープに関しては下記記事で紹介しています。

よろしければご覧ください。(リンク先はこちらから)

オシロスコープはおすすめ!電子工作のために購入してみた
オシロスコープを個人で購入してみました。 オシロがあれば電子工作の測定、電子回路の勉強などに使えて非常に役立ちます。 現役のエンジニアが自宅でオシロを使うメリット・デメリットを説明します。 また実際に通販で購入して、使い始めるまでの一連の流れも紹介します。

 

USBのハイスピードとフルスピードとロースピード

USBには複数のスピードのモードがあり、用途によって通信速度が異なります。

今回は下記の3種類をオシロスコープで確認しました。

  • USBメモリ(ハイスピード)
  • USB-RS232C変換ケーブル(フルスピード)
  • USBマウス(ロースピード)

 

USB3.0以降だとSuperSpeed_5.0Gbps等の更に高速なモードもあります。

但し、個人の環境では測定できないため今回の記事では省略します。

 

USBのハイスピードとフルスピードの違い

USBのハイスピードとフルスピード(またロースピード)では通信速度と回路構成が大きく違います。

各スピードの違いを紹介します。

 

USBのハイスピードの速度は480Mbps

USBのハイスピード(High-Speed)はUSBメモリ含めて多くの場所で使われています。

通信速度は480Mbpsです。

 

ハイスピードのD+とD-はプルダウンされている

USBハイスピードの回路図としては下記形になります。

ホスト側・デバイス側のD+とD-の両方で45Ωでプルダウンされます。

 

PD(プルダウン)されているためオシロで波形測定すると通常Low(0)でアクティブHi(1)となります。

※フルスピードで正確な波形は取れませんが、通常がLow/Hiのどちらか程度は分かります。

 

USBのフルスピードの速度は12Mbps

USBのフルスピード(Full-Speed)はプリンター・変換ケーブルなどに使われています。

大容量のデータ転送はしなくとも、ある程度の通信速度が必要な箇所で使用されています。

通信速度はハイスピード(480Mbps)と比べると遅く、12Mbpsとなります

 

12Mbps程度ならばUSB・シリアル通信含めて個人的なオシロスコープでも測定可能です。

以前にUARTで最大通信速度を12Mbpsで測定しました。

よろしければご覧ください。(リンク先はこちらから)

USBシリアル通信のボーレートの最大は?通信速度(bps)をオシロで確認
シリアル通信の速度をオシロスコープで確認してみました。 USBシリアル変換ケーブルのICを調べて、最大のボーレートまで試しています。 シリアル通信のボーレートの設定で通信速度(bps)がどのように変化するか紹介します。

 

フルスピードのD+は1.5kΩでプルアップ

USBフルスピードの回路図としては下記形になります。

ホスト側はD±の両方が15kΩでプルダウンされ、デバイス側はD+のみ1.5kΩでプルアップしてます。

 

D+のみがプルアップされているため「D+が通常Hi(1)」「D-が通常Low(0)」となります。

 

USBのロースピードの速度は1.5Mbps

USBのロースピード(Low-Speed)はUSBマウス・キーボードなどに使われています。

通信速度は遅くとも問題ない箇所のため、1.5Mbpsとなります

 

ロースピードに関しては以前アナライザで測定しました。下記記事で紹介しています。

USBの基礎的なプロトコルも紹介していますので是非ご覧ください。(リンク先はこちらから)

USBの波形を測定!D+とD-をロジックアナライザで解析してみた
USBの波形をロジアナで解析してみました。D±の波形、また測定動画含めて紹介します。 USB2.0や3.0の高速信号の測定では差動プローブ・専用機器が必要ですが、Low-speed(1.5Mbps)ならば個人の環境で対応可能でした。 ...

 

ロースピードのD-は1.5kΩでプルアップ

USBロースピードの回路図としては下記形になります。

ホスト側はD±の両方が15kΩでプルダウンされ、デバイス側はD-のみ1.5kΩでプルアップしてます。

 

D-のみがプルアップされているため「D+が通常Low(0)」「D-が通常Hi(1)」となります。

フルスピードとはD±が逆の形になります。

 

USBのハイスピードとフルスピードの確認方法

大抵身近にあるUSB2.0のデバイスはハイスピード(480Mbps)が多いです。

その中でフルスピード(12Mbps)をどのようにして判別するのか紹介します。

 

ラズベリーパイ(raspberry pi)もしくはLinuxのPCであれば簡単にUSBのスピードが確認できます。

 

Linuxはlsusbで確認できる

一番簡単なのはラズパイ(Linux)にUSBを接続して下記コマンドのlsusbを打つことです。

USBのスピード(480M,12M,1.5M)が表示されます。

lsusb -t

 

一応実施例のログを下記に貼り付けておきます。

 

Linuxはdmesgで詳細を確認可能

詳細に確認したい場合はdmesgをおすすめします。下記コマンドで簡単に調査可能です。

USBデバイスのメーカ名・製品名まで分かります。

dmesg | grep -i usb

 

High-Speed(480Mbps)のdmesg

参考までにハイスピード(480Mbps)対応のUSBメモリのdmesg箇所を貼り付けておきます。

2行目に「high-speed」と表記されています

 

Full-Speed(12Mbps)のdmesg

参考までにフルスピード(12Mbps)のUSB変換ケーブルのdmesg箇所を貼り付けておきます。

2行目に「full-speed」と表記されています

 

Low-Speed(1.5Mbps)のdmesg

参考までにロースピード(1.5Mbps)のUSBマウスのdmesg箇所を貼り付けておきます。

2行目に「low-speed」と表記されています

 

Windowsはデバイスマネージャーから確認可能?

最初Windowsは「デバイスマネージャー」からUSBのスピードが確認できると考えていました。

しかし(筆者の)最新のPCだと内部のUSB3.0ハブ経由になるのかスピードが分からず…

 

WindowsではUSB Device Tree Viewerで判別可能

(筆者の力量では)デバイスマネージャーで確認できませんでした。

しかしWindowsのPCではフリーソフトでUSBのスピードを確認できました。

「USB Device Tree Viewer」という海外の無料ソフトです。(英語ですがダウンロード先はこちら)

 

USBの詳細情報を表示できるツールで「Device Bus Speed」の箇所でスピードを判別できます。

フルスピード(12Mbps)だと「0x01」で、ハイスピード(480Mbps)だと「0x02」でした。

 

USBハイスピードの波形を確認する

ハイスピードの波形確認するために準備します。

USB2.0では最初はフルスピード(12Mbps)で接続され、その後ハイスピード(480Mbps)になります。

 

USB2.0動作の最初のモード切り替わりを確認するため測定準備を行います

 

USB信号を電圧測定できるように取り出す

今回はデバッグ測定のため、USBの延長ケーブルを使ってUSBの信号D+とD-を取り出します。

 

ワイヤーストリッパーでシースを剥いて信号線をプローブで掴めるようにしました。

 

以前にホーザン製とベッセル製のワイヤーストリッパーを比較した記事も作成しました。

よろしければご覧ください。(リンク先はこちらから)

ホーザン,ベッセル製ワイヤーストリッパーのおすすめを使い比べた
今回は筆者が持っている「実用的」かつ「使える」おすすめ工具の紹介でホーザンとベッセルのワイヤーストリッパーを使い比べてみた記事を紹介します。両者ともどちらも特徴が有り、おすすめのポイントが有りました。 ホーザン製とベッセル製ワイヤ...

 

これでUSBのD±の電圧測定できるようになりました。

 

但し、本来の測定ではNGです。(今回は趣味のデバッグの測定ということで楽をします)

ケーブル中間地点ではなく測定したい(ドライバ・レシーバ)箇所で波形確認する必要があります。

 

USBのリセットをLinuxのコマンドで実施する

フルスピードとハイスピードの切り替わり信号を測定するためには、USBをリセットさせます。

USB2.0であるUSBメモリをリセットさせます

 

ラズベリーパイ(Linux)でUSBをリセットする方法は簡単です。

下記の2つの(unbind,bind)コマンドを実行します。

sudo sh -c "echo -n 1-1 >/sys/bus/usb/drivers/usb/unbind"
sudo sh -c "echo -n 1-1 >/sys/bus/usb/drivers/usb/bind"

 

上記コマンドにより一度USBを抜いて挿したリセット状態が作れます。

(手でUSB抜き差しすると挿入時のノイズにより狙ったトリガーで測定できないことを配慮しました)

 

 

ロースピード(1.5Mbps)とフルスピード(12Mbps)のリセット時の波形

今回はUSB2.0のハイスピードのリセットがメインですが、他のスピードでも確認しました。

Full-Speed(12Mbps)のリセット時(Unbind→bind)の波形は下記になります。

リセット後からD+のプルアップが維持される形になります。

 

Low-Speed(1.5Mbps)のリセット時(Unbind→bind)の波形は下記になります。

リセット後からD-プルアップが維持される形になります。

 

USBハイスピードとフルスピードの判定

USBの測定環境も整いましたので切り替わりの判定となるChirp信号を確認します

 

USB2.0の規格書はダウンロード可能

Chirp信号含めてUSBの詳細に関しては規格書を参考ください。

USBは特に登録不要で、USB規格団体のHPから誰でもダウンロードすることができます。

(英語ですがリンク先はこちらから)

 

Reset(Chirp)プロトコルを確認する上で参考になったサイト

今回USB2.0のReset(Chirp)プロトコルを学ぶ上で非常に参考になったのは下記2記事です。

下記サイトの管理者様・運営者様にはこの場を借りて御礼申し上げます。

Hi-Speed CHIRP テスト

Wave1 USB信号の波形(1) リセットChirp信号(EZ-USB/FX2)

 

Chirpはハイスピード通信前のハンドシェイク

Chirp信号には細かいフロー・仕様があるのですが、概略だけ紹介します。

切り替わりのタイミングは一瞬ですので拡大して確認して確認していきます

 

ホスト・デバイス間でChirp信号をお互いに確認した後にハイスピード(480Mbps)で通信します。

Chirp信号確認後に、D±がハイスピードの45Ωのプルダウンに切り替わります。

(フルスピード(12Mbps)のD+の1.5kΩも切り離しています)

 

まとめ

今回の記事をまとめますと下記になります。

個人のオシロスコープでもフルスピードとハイスピードの切り替わりを確認できた
LinuxでもWindowsでもフルスピードとハイスピードの確認方法はあります
ホスト-デバイス間のChirp信号確認後にハイスピード(480Mbps)になる

 

趣味レベルのオシロのRIGOL DS1054ZでもUSB通信の確認・勉強が可能です

よろしければ皆さまもオシロスコープを触ってみてください

コメント