FPGAを有効に活用してもらうための事例の一つとして、本連載では低コストFPGAを使ったUSB3.0ソリューションを紹介している。前回のステップ1ではUSB3.0の概要を取り上げた。本稿では、ステップ2として、低コストFPGAとUSB3.0対応のPHYチップを実装したUSB3.0インタフェースの基板設計におけるガイドラインをわかりやすく解説する。

 USB3.0インタフェースに対応する回路設計において、「SuperSpeed (SS) ライン」と「PIPE III(PHY Interface for PCI Express III)ライン」の2つの信号ラインを設計する際には、特に注意する必要がある。SSラインは、PHYチップとコネクタを接続するための配線で、USB3.0用コネクタで新たに追加された5ピンの部分である。USB2.0で対応しているHigh Speed (HS)ラインの転送レートは480Mビット/秒である。これに対して、SSラインの転送レートは5Gビット/秒と10倍速い。

SuperSpreedライン

 SSラインは、転送レートが5Gビット/秒のPCI Express rev.2.0と類似点が多く、差動パターンやGNDパターン、ビア、スルーホールなど配置・配線の制約に関しては、PCI Expressにおける設計情報やノウハウを参考にすることができる。

 SSラインの設計に関して、配線長の制約条件などについてはUSB Implementers Forumの資料に詳細な指示が記載されているので参照していただきたい。例えば、デバイス側のPHYチップとコネクタの配線長は2.54cm?15.24cmと明記されている。また、テキサス・インスツルメンツ(TI)のデータシートには、配線インピーダンスや線長誤差の許容範囲、TXラインのACカップリングに使うキャパシタの仕様などが記載されており、設計時の参考となるであろう。

 デバイス側には一般的に「Standard-B」コネクタが用いられる。PHYチップとStandard-Bコネクタを接続する場合は、ピン配置を考慮して5Gビット/秒のSSラインを優先して配線の設計を行ったほうがいい。そのあとでUSB2.0用のデータ線を配線すれば、クロストークを削減することができる。

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

 PHYチップと「Standard-A」コネクタを使用する場合は工夫が必要である。アルティマはUSB3.0 Board(写真1)を設計する際に、コネクタのSSTXp(9ピン)端子をPHYチップのSSTXn端子に、コネクタのSSTXn(8ピン)端子をPHYチップのSSTXp端子に、それぞれ接続している(図1)。PIPE III(USB3.0)では極性反転をサポートしており、この機能を使うことで、プリント基板上において差動信号をクロスさせる必要がなくなるからだ。

 また、USB3.0規格に対応したコネクタは、プリント基板に実装すると基板の裏面から端子(足)がはみ出してしまう。裏面からはみ出した余分な部分は基板実装後に切断してスタブを除去する。コネクタとPHYチップの配線はボトム層で行う。USB3.0 Boardでは、GNDでシールドした。さらに、D+/?(HS/FS/LSライン)はコネクタ端子の周りを回避するように配線している。

図1: PHYチップとStandard-Aコネクタの接続例
図1: PHYチップとStandard-Aコネクタの接続例
[画像のクリックで拡大表示]

PIPE IIIライン

 USB3.0対応PHYチップとFPGA間のインタフェースには、PIPE IIIとULPIが用いられる。PIPE IIIでは、125MHz・SDR×32ビット構成、250MHz・SDR×16ビット構成、500MHz・SDR×8ビット構成のいずれかをとることができる。USB3.0 Boardでは、使用したPHYチップの仕様に合わせて250MHz・SDR×16ビット構成とした。一方、HS/FS/LS用のインタフェースであるULPIは、60MHz・SDR×8ビット構成である。特にPIPE IIIインタフェースは転送速度が250MHzと高速なため、設計には十分に注意を払うことが必要だ。

伝送シミュレータで事前検証

 PIPE III インタフェースの設計にあたり、アルティマではまず、トポロジーの検証を行った。PIPE IIIのトポロジーを検証する方法としては、全ての信号線にダンピング抵抗を挿入して検証する方法などがあるが、そのためには、FPGAとUSB3.0対応PHYチップを接続するための「PCLK」や「TX_DATA」、「TX_DATAK」、「RX_DATA」、「RX_DATAK」などの信号線に挿入する抵抗値や検証方法などについての十分な知識が必要となる。アルティマでは、USB3.0 Boardを設計するときに、FPGAの内部抵抗を利用するとともに、伝送線路シミュレータを利用して検証を行った。

 PIPE IIIを設計する際、技術者によっては、これまで行ってきた回路設計の経験則だけでは対応が難しいかもしれない。このようなケースでは、伝送線路シミュレータで事前に検証することが問題を解決する近道となることが多い。アルティマではUSB3.0 Boardを設計するにあたって、Mentor Graphicsの「HyperLynx SI」を使って検証した。シミュレータを適用したのは、設計フローの中で2か所ある。まず、FPGA設計でピン配置が終わり、回路図設計を行う際に伝送線路のシミュレーションを実施した。そして、レイアウト作業が完了した時点で最終チェックのためにシミュレータで確認している。2か所で検証することによって、設計フローの後工程における手戻しを出来る限り少なくできるからだ。

 伝送線路シミュレータを活用する利点は大きく2つある。その1つは抵抗値やコンデンサの容量、配線長を事前に見積もることが可能である。このため、それぞれの数値をその場で変更して検証することができる。その際、FPGAは最終的に設計データをチップに実装するためにコンパイル作業を行わなければならないが、コンパイル作業は比較的時間を要することもあるので、出来る限りコンパイル前にシミュレーションを行ったほうがいい。

 2つ目は、伝送路の任意の場所にプロービングして信号の波形を観測することができることだ。実機の場合、BGAなどパッケージの形状によっては物理的にプロービングができないこともある。また、プローブ自体が信号品質に影響を与える可能性もある。シミュレーションではこういった実機での問題を心配する必要がない。

開発ツールからIBISモデルを自動生成

 シミュレーションを行うには、そのためのモデルが必要となる。代表的なシミュレーション・モデルとしてはIBIS(Input/Output Buffer Information Specification)やSPICE(Simulation program Integrated circuit emphasis)がある。一般的にIBISはクロック周波数が1GHz未満のシミュレーション用に適している。SPICEは高い精度が要求される場合や1GHz以上のシミュレーション用として利用されることが多い。USB3.0 Boardの設計においては、クロック周波数が250MHzであったためIBISモデルを使ってシミュレーションを行った。なお、シミュレーションに必要なモデルは、主要なチップベンダーのウェブサイトからダウンロードして入手することができる(参考1参考2)。今回のUSB3.0 Board設計においては、HyperLynx用のIBISモデルをアルテラの開発ツール「Quartus II 」から自動生成した。これによって生成されたIBISモデルであれば、制約条件などを新たに設定する必要がない。

 HyperLynx SIを用いてPIPE IIIインタフェースの伝送線路を検証した(図2)。上述の通り、Quartus IIから自動生成されたIBISモデルには、ピン名や制約条件がすでに反映されている。シミュレーションの操作も簡単である。画面上に表示されたピンをダブルクリックして、IBISモデルを選択する。次に伝送線路にダンピング抵抗を挿入するか否かを設定する。USB3.0 Boardの設計ではFPGAの内部抵抗を用いている。

図2:HyperLynx SIを使用してPIPE III インタフェースの伝送線路を検証
図2:HyperLynx SIを使用してPIPE III インタフェースの伝送線路を検証

 今回はSSラインとPIPE IIIラインの2つの信号ライン設計について述べた。次回はUSB3.0 Boardのベンチマーク測定について分かりやすく解説する。

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

目次