#21 USBの設計とはーUSBチップ理解編

サマリ

想定読者:回路設計に興味がある方 / 想定時間:30分~35分程度
 第21回目のテーマは、USBの設計ー特にUSBチップ自体の特性やスペックについて取り上げます。(※執筆していたらボリューミーになってしまったため、推奨回路を元にした内容は次回で取り上げます)
 前回の記事からの続きになっていますので、もしUSBとは?と詰まった方は事前に参照ください。


#1 基本的には一般化されたプロセスに従うべし

 突然ですが、全て一から回路設計が必要になることはまずありません。近年は求められる機能について、ほとんど何かの規格に基づいているため、チップ自体も、推奨回路自体も多数存在します。
 USBも例に漏れず、一般的が故に、既に機能が構築されているチップも多く流通しています。せっかく情報があるので活用しつつ、状況にあった最適化(チューニング)する方が効率的です。

 そもそものUSBに限らず、設計の流れとしては、チップのデータシートをベースに回路設計~パターン設計~レジスタ設定~テストの流れで進行します。本記事ではデータシートを元に、まずはチップを理解する部分を中心に取り上げたいと思います。

#2 まずはチップの特性を理解する

 どのようなチップでも問題ありませんが、たまたま目についた、TEXAS INSTRUMENTSのTUSB8044Aというチップを取り上げ、実際に中身をみていきたいと思います。(リンク先:https://www.ti.com/product/ja-jp/TUSB8044A#params

 なお、サイトとしては、以下の図のようなイメージになっています。また、このサイトをスクロールすると、下の方に”設計ツールおよびシミュレーション”という項目があります。
 回路設計する際には、チップ自体の電気特性も気になりますよね。その際に活用するのがシミュレーションツールとなります。TIはPSPICE(ピースパイス)という自社ツールを公開してくれており、このソフトを元に参照回路の電気特性(波形など)が確認できます。もちろんシミュレーションなので鵜吞みにすることは危険ですが、認識齟齬を防ぐことや対策を事前に打つための参考情報として大変有益ですので活用してみてください。

図 今回参考にしたチップ(TEXAS INSTRUMENTS TUSB8044A)

図 今回参考にしたチップのシミュレーション系の情報(TEXAS INSTRUMENTS TUSB8044A)



 さて、まず初めに1ページ目のサマリを読んでチップの全体仕様を把握します。下に示しているのがTIのデータシートならば1ページ目に必ず書かれているサマリページになります。こちらにはどんな機能を有しているのか、パッケージはどれが用意されているかなどが1枚にギュッとまとまっています。

 例えば、まず本チップはUSBのハブになります。また、一番左上には、USB3.2が4ポート制御できるICだと記載があります。ここから、自分が設計している回路が4ポート必要ならば適切なチップですが、例えば2ポートで問題ないなら過剰なチップと判断するような形です。
 その下にUSB2.0のハブ機能や、バッテリ充電のサポート機能と記載があります。USB2.0ならばリピータの機能があることを指し、また、各充電モードにも対応していると記載があります。このような機能が必要かどうか十分に検討し、コストとの兼ね合いからチップを選定していきます。
 なお、本記事ではこのチップを採用したと仮定して今後も進みます。

1ページ目(サマリページ)



 次に見るべきは機能ブロック図です。機能ブロック図を元に全体の概要を掴みましょう。

図 TUSB8044Aの機能ブロック図


 まずは左上から順に下っていきましょう。”Power Distribution”は本チップを動作するための電源機能になります。ここに記載しているVDD33 (3.3V)/VDD(1.1V ※後述します)/VSS(0V ※後述します)が必要なチップなんだなと認識します。
 ”Oscilator”は本チップを動作させるためのクロックを生み出す機能で、外付けに水晶発振器を接続する箇所になります。
 その下の”Clock and Reset Distribution”は、全体の電源ON/OFFステータスを管理する機能です。適切なタイミングでON/OFFの電圧を入れることで、チップ自体の状態を管理することが出来ます。
 ”GPIO/I2C/SMBUS”は本チップと通信するための汎用IFが詰まった機能群になります。このチップはかなり高機能ですので、どの設定を有効にするかなどを選択する必要があります。そのための外部からの通信をこちらで取り纏めています。(こちらの通信の紹介をしていないので、ここではそんなものがあるのか程度でOKです。また別の記事でご紹介します)

 ここまでが左側の機能でした。ここから大きく分けて右側に移ります。機能自体の塊も明確に分かれていることから、図としても意図して左右に配置されていることがわかります。
 上記で通信して設定した内容を毎回送るのは手間ですよね? 実際にもそうならないように、メモリに書き込み、起動時に自動で読み込まれます。また、その設定を元にUSBを動作させるわけですが、それが右下の部分に記載されています。
 ”Control Registers”は設定された内容を解釈してUSBの制御を行う機能であり、余談ですが外部からは接続できないとも読めます。
 また、”OTP ROM”が上記メモリに該当します。これらが上段にあるUSB機能を動作させるわけですね。

 上段に移ると、前回の記事でもご紹介したように、USB3.2はUSB2.0と別にSuperSpeedHubが備わっています。そのまま機能ブロックとして表現されていることがわかりますね。図の上部に記載がある線はアップストリーム側で、イメージだとケーブル側です。逆に箱の下側はダウンストリーム側で、イメージだとコネクタ側になります。USB2.0は半二重(ケーブル線1本に対してアップ/ダウン同時に行う)により、図内も双方向の矢印線になっていますね。一方、USB3.2は独立していることから、全て単方向の矢印線になっていますね。こういった部分も機能ブロック図から解釈できる内容になります。 
 最後に”VBUS Detect”ですが、皆さんも街角で900mA対応!とか1500mA対応!とか同じ電源ケーブルでも違う容量を謳っているのを見たことがあると思います。まさにこの例のように、どこまでの電源供給に対応できるかなども含めた仕様を受け取るための機能になります。

#3 スペックを理解する

 それでは、上記がどのような仕様で動作するかの電気特性を把握しましょう。
 データシートには、故障の可能性があるため絶対には超えてならない基準(Absolute Maximum Ratings)と、正常に動作させるための基準(Recommended Operating Conditions)の2種類があります。もし何かのトラブルがあった際に、推奨から一瞬枠を超えても壊れはしませんが、その際でもAbsoluteまでは到達しないように保護回路の設計をする形となります。
 これ以外にも、データシートには静電気に対する耐性(ESD Ratings)や、温度特性(Thermal Information)、通常の電気特性(Electrical Characteristics)の記載があります。それぞれ簡単に実物を見ていきましょう。



 まず初めにAbsolute Maximum RatingsとESD Ratingsが記載されています。ともかく壊さないためにはこれを守ってほしいという記載ですので、最初に来ていると推察しています。
 例えば、Absolute Maximum Ratingsの最初はVDDに関する仕様が書かれています。MIN -0.3V/MAX 1.4Vということは、当たり前ですが、ひょんなことから 1.45Vを入れてしまったら壊れます。ここから、このVDDに供給する電源回路(チップ)は少なくとも1.3V程度を上限としてリミッターが働く機能が必要だなと考えます。
 ESD Ratingsは、読んで字のごとく人間の静電気に対する耐性を表しています。大抵のチップは記載のあるHBMなどに準拠しているため、基本的にこの数値はどのチップでも同様です。通常は、人間の手が一番触れるであろうコネクタ周りに保護回路を設置するため、このチップに直接静電気がいかないような対策を施します。よって、よほどのことが無い限り、通常操作する上で壊れることはほぼありません。では何を気を付けるべきでしょうか… 実は、冬の乾燥した環境で、金属に触れた際にバチッとなると思いますが、あれでチップは壊れます。そう、基板テスト中に不意に飲み物休憩などで離席し、そのまま基板やチップに触れると壊れる危険性があるのです。そのため、テストを担当する方は、最新の注意を払って自分の電荷が0になったことを確認してから作業をしています。(GNDに触る=鉄板に触ってから作業するなどです) ※余談ですが、触った後に全然関係ない不具合がちょうど見つかるなどタイミングが悪いと、もしかして静電気で壊してしまった!?と焦ったことが何度もあります。大丈夫だと思っていても目に見えない事象のため、常に不安には感じていましたね…


 次にRecommended Operating ConditionsとThermal Informationが書かれていますね。メーカが保証する動作範囲を定義しています。例えば、VDDにはMAX1.26Vと書かれている中で、1.3Vが不意に入力された際に動作不良を起こしてもメーカは責任を取らないという責任分界点になるわけです。(なお、壊れるわけではありません)。こういった部分も品質に関わるため、回路設計時に注意しています。
 Thermal Informationは主に熱設計時に用います。どうしても高機能なチップは発熱しますので、ヒートシンクを用いるべきか、基板の場所として風の当たる場所の優先権を与えるべきかなどの検討で使用します。



 最後に、Electrical Characteristicsですね。各端子がどの程度のIN/OUT性能を持つかがまとまっています。例えば、IDD_PWRONは大体30mA程度消費しますよ(30mA程度流されたらONになるよと保証している)と読めます。Input側はこのチップがどの程度電力を消費するのかの試算に使え、Output側はこのチップがどの程度の出力能力があるかの試算に使えます。特にOutputの数値は、通信の途中にドライバを挟むか否かの検討(確認)に良く用います。



 こちらは少し毛色が変わりますが、チップに応じた電源の投入タイミングの仕様があります。下図は電源投入時の仕様であり、それぞれどのような順に投入すべきか、また、”t”で示されているものは、どのような時間を保証する必要があるのかも合わせて記載されています。
 例えば、VDD→VDD33→GRSTzは順に投入すべしと定義されており、”t”にその最速投入可能時間が書かれています。一気に投入するなど、あまりに早すぎてもダメというわけです。(スペック表に別途詳細が記載されています)。
 また、MISC_IOの部分は両端に”t”が書かれています。前方は信号が立ち上がってからの最速投入可能時間を表し、後方はその状態を維持するべき時間が書かれています。何も考えなければ図のように真ん中に設定すればよいのですが、通信速度が上がるほどこの幅が小さくなり、数ms/数us/数ns/数psと設計難易度が上がってきますので、注意すべき部分になります。(なお、このようなタイミング仕様が守れなくなると通信エラーが頻発したり予期せぬ設定が書き込まれるバグにつながります。ソフトウェアでの対策も難しく、改善するためには回路・パターン設計自体を見直す必要になるケースが多いです。作ってしまった後の基板での対策がなかなか厳しいこともあり、作り直しの損害を防ぐためにも、回路設計屋はかなり厳密にこの仕様をチェックしています)



 ここまでチップの特性や仕様を見てきましたので、次回はこれらを元に回路設計に進んでいきます。