第3回:USB 3.0 の設計・検証

≪目次≫

USB 3.0 インタフェースの設計
PIPE III インタフェースの設計


≪USB 3.0 インタフェースの設計

 USB 3.0 インタフェースは、SupreSpeed モードで使用するラインと、Legacy Speed モードで使用するラインと二つに分かれています。Legacy Speed モードでは、最大 480 Mbps で通信を行い、SupreSpeed モードでは、5Gbps で動作します。そこで、このSS モードで使用するラインの設計がボトルネックに感じられますが、実はこの部分はそこまでボトルネックの部分ではありませんでした。

 

Fig.1
Fig.2

まず、5Gbps で通信を行う SS Line は PCI-Express Gen 2 と帯域幅だけではなく、プロトコルも非常に似ているため、基本的な差動パターン、GND パターン、ビア、スルー・ホールなどの配置・配線制約などは以下の本を参考にさせて頂きました。

 

Fig.3

その他配線長などは、USB I/F よりリファレンス・デザインが公表されており、PHY ⇔ コネクタ間の線長は FR4 で、1~6 インチ(デバイス側)、配線インピーダンス 90Ω などの記載があり、また、TI のデータシートには各差動信号の配線誤差が 2.5mil 以内・AC カップリングで使用する推奨コンデンサまで記載されているので SS Line の設計は上記で述べたとおり簡単に行えます。

  
以下の図は弊社で開発した、Cyclone® III USB 3.0 Board の USB 3.0 Line のレイアウト図です。

 

Fig.4

また、Cyclone III USB 3.0 Board では、ホスト・デバイス両側が検証できるように、Standard-A コネクタを使用しております。そこでお気づきの方もいらっしゃると思いますが、SSRX の極性が逆に接続しています。これは、USB 3.0 クロストークを避けるためわざと逆に接続しているのですが、USB 3.0 は極性転換をサポートしているため問題はありません。
また、Standard-B コネクタ を使用している場合の接続は以下の図をご参照下さい。

 

Fig.5

このように、PHY ⇔ コネクタ間の設計は、リファレンス・デザインがある上、細かなところまで、規格で決められているため比較的簡単に出来ます。


≪PIPE III インタフェースの設計≫

実は、Cyclone III USB 3.0 Board では、PHY ⇔ コネクタ間の設計よりも、FPGA ⇔ PHY 間の設計の方が苦労しました。FPGA ⇔ PHY 間は PIPE III インタフェースと ULPI インタフェースで接続されており、PIPE III (SS モード用) インタフェースは、125 MHz SDR x32 bit と250 MHz SDR x16 bit と 500 MHz SDR x8 bit と種類があり、PHY の仕様で今回は250 MHz SDR x16 bit のインタフェースになりました。ULPI インタフェース(HS, FS, LS モード)は、60 MHz SDR x8 bit なので、比較的設計は楽なのですが、上記の 250Mz のSDR の上、パラレル・バスですし、さらにボード・デザインが規格で細かく決まっていないという今回最大の難関であり、もちろん PIPE III の設計は今回が初めてなので慎重に設計を進めて行きました。

Fig.6

まず、PIPE III のトポロジー検証を行います。TI のデータシートより、TX_DATA、TX_DATAK、RX_DATA、RX_DATAK、PCLK は 250MHz の SDR 信号になり、PIPE III で最も注意しなければならないラインになります。実績がない状態での設計で頼りになるのは、前回もお話させていただきましたが、やはり伝送シミュレーションになります。今回も HyperLynx® を使用して、IBIS シミュレーションを行い PIPE III のトポロジーを決定していきました。

  
そこで、今回は PIPE III インタフェースの TX_DATA、TX_DATAK を弊社の方でどのように検証を行ったのかをご紹介いたします。また、上記の信号は FPGA から PHY への出力信号になります。

  
まず、FPGA ⇔ PHY 間にダンピング抵抗を入れないトポロジーで検証したところ、信号品質的にスレッショルド付近でリンギングが見られるので、不安が残る結果になりました。

Fig.7
Fig.8

等長配線となると基板設計がかなり複雑化してしまいます。

 

Fig.9
Fig.10

次に検証したのが、TX_DATA、TX_DATAK のラインに FPGA 内部抵抗を使用するパターンです。信号品質は外付け抵抗を設置したときよりもより立ち上がりよく、信号に割れが見つかったものの、スレッショルドにはある程度マージンがあるので、比較的申し分ない波形になりました。基板設計も考慮し、弊社では内部抵抗を使用するトポロジーに決定しました。

 

Fig.11
Fig.12

このようにして基板設計を進めていき実際に基板を作りなおすことなく1回で、動作確認が取れました!!
実際にどのような環境で動作検証を行っているかと言うと、USB 3.0 インタフェースで、PC に接続し、Cyclone III USB 3.0 Board に搭載している DDR2 メモリを、RAM ディスクとして PC に認識させ、ベンチマークを測定するという方法です。(端的に申し上げますと、USB 3.0 マスストレージ・クラスとして使用し、ベンチマーク測定をする)
ベンチマーク測定に使用するツールは『CrystalDiskMark』と言うツールを使用し測定を行っております。現状 Read で 約 210MB/s、Write で約 180MB/s (2010年8月30日現在)で動作しており。USB 3.0 マスストレージ・クラスとしては、上々の結果です。(ドライバは 特殊な物ではなくWindows のデフォルト・ドライバを使用しております!!)
ぜひ上記のマスストレージ・クラスのデモを見たい!!と言う方はお気軽にお問い合わせ下さい。

   

  三回に渡り本記事をご覧頂き誠にありがとうございました。少しでも皆様の設計にお役立て頂ければ幸いです。

 

第1回:FPGA を使用して USB 3.0 インタフェースの実現
第2回:DDR 2 をどうやって設計検証するの?