本連載では、USB3.0インタフェースを比較的容易に、短期間で実現できる手法の1つとして、アルテラの低コストFPGA「Cyclone III」を用いたUSB3.0ソリューションについて分かりやすく紹介してきた。ステップ4では、そのソリューションの核となるアルティマ製の「Cyclone III USB3.0 Board」と、市販されているホストボードおよびマザーボードを使って接続確認を行うとともに、その実例に基づいて接続不具合が生じた際の検証項目や原因解明の手法などについて解説する。

写真1:アルティマが開発した「Cyclone III USB3.0 Board」の外観
写真1:アルティマが開発した「Cyclone III USB3.0 Board」の外観
[画像のクリックで拡大表示]

 アルティマは、Cyclone III USB3.0 Board(写真1)と、市販されている2社のUSB3.0ホストボードおよび3社のマザーボードをそれぞれ組み合わせて、リンクの検証を行った。リンクの検証にはEllisys社製のプロトコルアナライザ「EX280」、Tektronix社製のロジックアナライザ「TLA5203B」、同ストレージオシロスコープ「DAS72004」などを使った。いくつかの組み合わせでUSB3.0インタフェースの接続試験を行ったところ、このうち1社のマザーボードを使った時に、ホスト側とリンクできない現象が生じた。

 この原因を探るため、アルティマは「電源の検証」や「ホスト側とマザーボードとのリンク検証」、ロジックアナライザによるFPGAとPHYチップ側の「PIPE IIIの検証」、プロトコルアナライザによるPHYチップとホストボード間の「USB3.0ラインの検証」、およびストレージオシロスコープによる「USB3.0コンプライアンスの検証」(マザーボードから供給されるPCIe用リファレンス・クロック)などを試みた。

 検証作業ではまず、電源に注目して、電源ケーブルやアドインコネクタに関する電源の適合性を検証した。その結果、PCIe(3.3V±9%)、SATA電源コネクタ(5.0V±8%)、SATA電源コネクタとPCIe(12V±8%)のいずれの電圧にも問題はないことがわかった。

 次に、Cyclone III USB3.0 Boardやホストボードを接続して、マザーボードとのリンク検証を行った。この結果、3社のマザーボードのうち1社の製品のみがリンクすることができなかった。さらに、2組のシステムについてFPGAとPHYチップ間の動作を確認するため、PIPE III 信号をロジックアナライザで検証した。その結果、図1に示す通り、リンクすることができなかったマザーボードを使用したシステムについては、PIPE IIIの信号「RX_STATUS」でエラーが検出された(デバイス側)。測定したデータから30μs周期でエラーと正常動作を繰り返していることが分かった。その原因としてローカルクロック(送信側)がリカバリクロック(受信側)より速い周波数で動作している可能性が高いと推定される。

図1:ロジックアナライザでPIPE III 信号を検証
図1:ロジックアナライザでPIPE III 信号を検証
[画像のクリックで拡大表示]
図2:プロトコルアナライザでの測定結果
図2:プロトコルアナライザでの測定結果
[画像のクリックで拡大表示]

 続いて、プロトコルアナライザを用いて、Cyclone III USB3.0 Boardやホストボード、マザーボードを接続した状態で、USB3.0 ラインの通信状況をプロトコル単位で確認した。リンクできなかったマザーボードは、トレーニングシーケンス(TSEQ)でIN(ホストのRX)信号は正常に動作していたものの、OUT(ホストのTX)信号にエラーが多発し、連続してデータが送られていないことが判明した(図2)。

PCIe用リファレンス・クロックが原因

 この原因を追究するため、ストレージオシロスコープを使って、リンクできなかったマザーボードと正常なホストボードを接続した状態でUSB3.0インタフェースのSSモードでのOUT信号を測定してみた。そうしたところ、PCIe規格で定められているリファレンス・クロック(100MHz+300??5300ppm)を超える規格外の信号が出力されていた。これが原因でリンクできないことが分かった(図3)。なお、ここで「Fail or Pass」判定を行った値は「Universal Serial Bus3.0 Specification Rev1.0」に記載されている数値を参考にした。

図3:USB3.0インタフェース・SSモードでのOUT信号の測定結果
図3:USB3.0インタフェース・SSモードでのOUT信号の測定結果
[画像のクリックで拡大表示]

 以上のような測定結果から、Cyclone III USB3.0 Boardとホスト(PC)側リンクが安定しない原因として、ホスト側から送信される信号が、USB3.0インタフェース規格に準拠していない可能性が考えられる。つまり、ホストボードに搭載されているUSB3.0 to PCIeブリッジチップが、マザーボードから供給されるPCIe用リファレンス・クロックに追従して、USB3.0インタフェース用のリファレンス・クロックを生成している可能性が高い。したがって、マザーボードより供給されるPCIe用リファレンス・クロックがPCIeの規格に準拠していることが必要である。

 本連載では低コストFPGAを有効活用してもらうために、USB3.0インタフェースへの応用を紹介してきた。USBインタフェースは、もともとパソコンと周辺機器を接続するインタフェースとして広く普及してきた。次世代インタフェースとして注目されているUSB3.0は、伝送速度が高速で高精細な動画像の伝送にも適していることから、その用途はさらに拡大すると見られている。

 一方で、USB3.0に対応するASSP/ASICの開発は機器設計者にとって大きな負担となっている。USB3.0インタフェースを実現する手段はいくつかある。その1つとして、低コストのFPGAとPHYチップを組み合わせ、サードパーティのハードウエア/ソフトウエアIPを活用する方法がある。開発リスクを抑えられ、開発期間も短縮することが可能なこのUSB3.0ソリューションを、積極的に活用してみる価値は十分にありそうだ。

この記事は、アイティメディア社『FPGA Insights』に掲載されていたコンテンツを、アイティメディア/EDN Japanの許可を得て転載しています。

目次