#25 USBの設計とはーテスト編

サマリ

想定読者:USB回路のテストに興味がある方 / 想定時間:20分~25分程度
 第25回目のテーマは、USB回路のテストについて取り上げます。ここまでの記事で回路設計やレジスタ設定まで実施しました。実際はレジスタ設定前後にもテストが入るのですが、そんなテストについてフォーカスを当てたいと思います。



#1 周辺回路チェック

 まずはUSBチップの基本動作に必要な周辺回路です。作業としては、周辺を構成している回路をテスターやオシロスコープを用いてチェックします。今回の周辺とは、電源、クロック、EEPROM(I2C)、状態を設定するためにピンに供給しているプルアップ/プルダウン部分です。
 
 まず簡易的にすぐにテストできるテスターを使います。電源が定格通りに来ているか、設定のレジスタが設計通りプルアップ/プルダウンできているか(+電位が安定しているか)などをチェックします。
 次に、電源周りが正常であれば、クロック回路が動作しているはずです。今回参考にしているTUSB8044Aのクロックは24MHzなので、オシロスコープを元に24MHzが正常に出ているか、また波形品質に問題ないかをチェックします。
 ここまで問題なければ、I2C経由でチップに設定を書き込める状態になっているはずです。I2Cのマスタ側のチップ(たとえばマイコンなど)のハンドシェイク含めたI2Cの波形をチェックし、通信ができていることを確認次第、本チップに設定を書き込みます。書き込む際のデータは前回の記事を参照ください。

 周辺回路のチェック~設定の書き込みまでは、特に問題なければ1日程度でこなす作業になります。

#2 基本動作チェック

 設定が書き込めると、ついにUSBの通信波形と対面することが出来ます。これ以降からテストの本番になります。通信の基本となる動作をチェックするために、通信疎通チェック、波形チェックステートチェックがあります。基本的には物理層から正常かを確認し、徐々にソフト(制御)領域に移っていきます。

 通信疎通チェックは、兎にも角にもUSBが通信してそうかをチェックします。例えばLINKが取れていそうか、Host/Device間でなんとなく波形のやり取りをしていそうかをオシロスコープを元にチェックします。何も波形が出ていないことや、片側からの応答が無い場合には、道中のハードウェアに問題がありますので(例えばコネクタピン配置ミスなど)可能性の目を最初に潰しておきます。(※USBの場合そもそもCCの回路設計が間違えている場合には、Host側が予期せぬ動作をすることもありますので、注意して波形を観測します)

 問題なく何か通信していることを確認できたら、次に見るのはその波形自体の品質です。ここもハードウェア担当者のみでテスト可能な範囲であり、また、不具合があればハードウェア側なので、ソフト担当の方と協力してデバッグする前段階で品質を確認しておきます。
 通常はデジタル信号ですので、”0″と”1″の2値しかありません。そんな中で何を見るの?とピンとこない方もいらっしゃるかもしれません。実は教科書で習うような矩形波は理想の状態であり、実際にはもっと歪んだ状態の波形で通信しているため、しっかりとチェックしておかないと問題になることが多いのです。
 わかりやすくまとまった図があったので引用します。通信としてやり取りしているため、”0”と”1”が変化するタイミングが問題になります。例えば、立ち上がり/立下りの時間はどうか、ジッタ―(遅延差)が許容できるか、オーバーシュート/アンダーシュートが定格を超えていないか、、、など下図のようにつぶさに確認すべき項目がありますのでオシロスコープを元に設計通りかをチェックしていきます。

参考:エイム電子株式会社, “アイパターンとは?”より引用(https://www.aim-ele.co.jp/tech/optical-tech3/

 また、上図の中央に”EYE”という単語が散らばっていると思います。波形の品質が良ければ、立ち上がりや立下りが急峻であり、ふらふらしていないことは想像できると思います。すると何が起きるかというと、この状態で複数の波形を1枚の図に重ねてプロットすると、0と1の通信の間に開口部ができることになります。これを”アイ”と呼びます。たまたまうまくいった1枚で判定しても全体の品質は担保されません。ですので、波形品質を確認する際にはこのアイを利用した”アイパターン”を用いることが一般的です。

 例に漏れず、USBにも厳格にアイパターンの規格が決まっています。まずは、TUSB8044Aに記載のチップの性能を示すアイパターンを見てみましょう。下図に示すのが、速度を変えた際のアイパターン二種になります。どの波形も中央にひし形があります。こちらに干渉するとチップが誤判定する(例:”0”なのに”1”と判定してしまう可能性がある)エリアのため、規格で厳格に触れてはならないと規定されたエリアになります。下図を見てもきれいにアイパターンが出ていることがわかりますね。
 手元の環境で観測しているため参照値とはなりますが、それでも同様の計測をハードウェア担当として実施します。そこでアイパターンがしっかりあれば、波形品質にはひとまず問題ないことが確認できますので、ソフト側に渡して制御などの確認をしてもらう流れになります。なお、ここで問題があった際にはダンピング抵抗(終端抵抗)や道中にもし絶縁デバイスがあればその品質など、トラブルシューティングを実施します。それでも治らない場合は設計不良によりパターンに問題がありますので作り直す必要が出てしまいます。(※だから設計の記事で書いたように、不安ならばしっかりとシミュレーションしておくことが重要になります)


 通信波形自体に問題が無いことが確認できれば、ようやくステートのチェックに移れます。下図に2枚、LINKにおけるステートマシン図と今回のチップのようにHUBだった場合のステートマシン図を載せます。(USB3.2の規格文書から引用)
 これらを波形から追うのは限界がありますので(0と1の信号しかないので、、、)、ソフトウェア担当の方にお願いして正しく状態遷移しているかの確認を依頼します。本チップの場合は、基本的にはチップに内蔵されている機能で問題なく動くとは思います。ただ、もし問題が起きるとなぜそこに遷移しないのか、レジスタの状態を確認しつつ、波形などを使って設定ミスがないかなども一緒に確認しますので、決して他人ごとではなくチームで対応していきます。(※ゆえにマイコンやFPGAなど制御を自身で設計して書き込むタイプのトラブルシューティングの場合には、ハードウェア/ソフトウェアの両担当がかなりの時間をかけてデバッグを実施しますので、タスク設計上もバッファを持って引いておいたほうが無難です。)


#3 認証チェック

 ここまでのチェックで全て問題なかったことを確認できれば、最後には必要に応じて認証の取得のためのテストに移ります。手順としては、社内で規格に準拠しているかのチェックを実施し、問題なさそうであれば認証機関が認定しているテスト場で最終チェックをしてもらい、そこでも問題が無ければ晴れてロゴを使えるようになります。

 社内の環境でもチェックできるよう、認証用のキットが販売されています。それを用いて、認証取得できる品質かをチェックします。
 規格から引用した図を3枚以下に示します。中央と右側に円盤みたいな写真が載っていると思いますが、こちらが認証キットになります。また、図にはいませんがオシロスコープにも認証対応の有無があり、認証対応の型式にはUSB検査のためのアプリケーションが搭載されています。下図はあくまで規格の中の一つの試験ですが、このような形でキット、オシロ、製品をテストに合わせて接続し、オシロでそのアプリケーションを起動することで自動で波形を測定してくれます(楽ですが、対応しているオシロは高いです)
 基本的にはアイパターンの確認になります。オシロが状態を変えながら規定の波形を出し、その結果を計測し、1枚の規格チェック書としてPDFをアウトプットしてくれます。余談ですが、うまくいった場合には何も負担はないのですが、この試験で髭のように1~2本だけアイパターンに引っ掛かっていた際のトラブルシューティングの苦労を今でも思い出します…

 これらの試験が全て完了すれば、品質的には問題ないはずですので、認証機関に持っていき、テストしてもらいます。基本的にこちらが触ることはないので、子どもの合格発表を祈るような気持ちで待っています。無事合格すると、ロゴを取得でき、晴れてUSB回路の検証が完了します。




 以上になります。ここまで複数回に亘りUSBの設計からテストまで記載してきました。書ききれなかった部分もあるので、もし興味があれば自身でデータシートや規格を見て頂くと、さらに深い理解ができると思いますのでお勧めいたします。