低コストFPGAの登場により、さまざまな用途でFPGAの採用が広がっている。本連載では、FPGAを有効活用してもらうために低コストFPGAに注目し、基本的な「設計開発フロー」や「DDR2 SDRAMの実装手法」を解説してきた。その上で、「産業用イーサネット」への応用や「産業機器におけるTCO」といったテーマについても取り挙げてきた。今回より、低コストFPGAを使い、低リスクで容易に実現することができるUSB3.0インタフェース・ソリューションについて、4つのステップに分けてわかりやすく解説する。

 パソコン本体と周辺機器やUSBメモリなどを接続するためにUSBインタフェースが一般的に用いられている。パソコンの高性能化とともに、取り扱うデータの量も膨大となり、このUSBインタフェースも大量のデータを高速に伝送するニーズが高まり、さまざまな通信速度のモードが規格化されている。

 現在、通信速度が1.5Mビット/秒の「Low Speed(LS)モード」(USB1.0)、12Mビット/秒の「Full Speed(FS)モード」(USB1.1)、480Mビット/秒の「High Speed(HS)モード」(USB2.0)が広く普及している。さらに、USB3.0として通信速度が5Gビット/秒の「SuperSpeed(SS)モード」仕様が2008年12月に規格化された。コンプライアンス的にいえばUSB3.0規格に対してホスト側は、すべての通信速度のモードに対応しておく必要がある。これに対してデバイス側は、SSモードとFSモードをサポートしておけばいい。USB3.0はUSB2.0に比べて通信速度が約10倍と高速化した以外でも、仕様の違いがある(表1)。

表1 USB3.0とUSB2.0の主な仕様比較
表1 USB3.0とUSB2.0の主な仕様比較
[画像のクリックで拡大表示]

 また、USB3.0はUSB2.0と信号ラインを共有することができないため、デュアルバスアーキテクチャの構成を取っている。このため、USB3.0対応のシステム上ではUSB3.0とUSB2.0のインタフェースは独立して動作する。また、パケットの配信方式も、USB2.0がホスト支配下の全デバイスにパケットを配信するマルチキャスト方式をとっているのに対して、USB3.0はホスト支配下にある特定のデバイスにのみパケット配信を行うユニキャスト方式となっている。

 さらに、USB3.0では、Burst転送が新たに追加された。この転送方式はハンドシェイクを待たずにバルク転送を連続的に行うことができるため、大容量/高解像度の画像データを高速に伝送しなければならない用途などに適している。電源管理についても仕様が変更された。それは、ホスト側からの指示に加えて、デバイス側からも省電力モードへの移行を可能としたことである。例えば、トランスミッタ/レシーバをアイドル状態にしたり、PHYの内部クロックを停止したり、パラレルインタフェースのクロックを停止したりすることもデバイス側で行うことができる。

低コストFPGA+PHYチップで実現

 USB3.0インタフェースを実現するためには、前述した仕様を満たすハードウエアやソフトウエアを用意する必要がある。まず、ハードウエア的に実現する方法として主に4つある。その1つはブリッジASSPをワンチップで実現することである。すでに、PCI Express Rev.2.0やSATA(Serial Advanced Technology Attachment)とUSB3.0をブリッジするICが商品化されている。

 2つ目が低コストFPGAと外付けのUSB3.0/USB2.0対応PHYチップを組み合せる方法である。3つ目はトランシーバ内蔵の高性能FPGAとUSB2.0対応PHYチップの組み合わせである。4つ目はASICで必要なすべての機能をワンチップで実現する方法である。

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

 本稿では、USB3.0インタフェースの開発/検証を行うための一例として、アルティマが開発した「USB3.0 Board」(写真1)を使った事例を紹介する。このボードは前述した2つ目の方法で実現している。基板上にはインベンチェアの「Z-Core USB3.0コントローラIP」を組み込んだアルテラ社のFPGA「Cyclone III 」や、TI社のUSB3.0 PHYチップ「TUSB 1310」、NECエンジニアリングの「デバイス・ドライバ/アプリケーション・ソフトウエア」などが実装されている。

 このボードの特徴は、上位層とPHY層の部分を2つに分けることで、低コストのFPGAを利用することができる点だ。このボードを利用することで、ホスト側、デバイス側の両方のUSB3.0インタフェースを検証することができる。

 FPGAとPHYチップ間は、SSモード用の「PIPE III 」インタフェースとHS/FS/LSモード用の「ULPI 」インタフェースで接続される。PIPE III は周波数が250MHz・SDRで16ビット/32ビット構成、ULPIは60MHz・SDRで8ビット構成である。特に、PIPE III は周波数が高いため、信号品質を十分に確保するための回路設計に注意することが必要だ。設計経験の浅いエンジニアには伝送シミュレーションの利用をお勧めする。例えば、シミュレータとしては、メンターグラフィックス社の「HyperLynx」などがある。

 USB3.0 Board(写真1参照)の中央部に実装されているのがCyclone IIIである。その左側にUSB3.0 PHYチップが、さらにその左側にUSB3.0のコネクタ(Standard A)がそれぞれ配置されている。また、FPGAの上部にはイーサネットやDVIなどのインタフェースボードを拡張できるメザニンカード用のコネクタ(HSMC)も用意されている。その回路ブロックを図1に示す。

図1:「Cyclone III USB3.0 Board」のブロック図
図1:「Cyclone III USB3.0 Board」のブロック図
[画像のクリックで拡大表示]

 Cyclone IIIをベースとしたUSB3.0 Boardを、USB3.0インタフェースの開発/検証に活用するメリットは以下のとおりである。

  • USB3.0 PHYチップを外付けで使うことにより、低コストFPGAでもUSB3.0インタフェースの検証が可能となる。
  • このボードを使用して、回路基板の作成とIPの評価、ソフトウエアの開発を並行して同時に行える。
  • HSMCコネクタが用意されているため、アルテラから供給されているDVIやHDMI、SD/HDなどのドータ・カードによる拡張が容易に行える。
  • ホスト側とデバイス側の両方のソリューションを検証することができる。

 さらにアルティマでは、独自のA to Aケーブルをホシデンと共同開発し供給している(図2)。これによって、USB3.0とUSB2.0の2つのインタフェースを1本のケーブルで対応することができる。電源供給はジャンパーピンで切り替えを行う。例えばホスト側を検証するには、ジャンパーピンでつなぎ、デバイス側を検証する場合にはジャンパーピンを外すだけで済む。

図2:独自のA to Aケーブルの仕様
図2:独自のA to Aケーブルの仕様
[画像のクリックで拡大表示]

 ステップ1では、USB3.0とUSB3.0 Boardの概要について述べた。次回のステップ2では、USB3.0インタフェースを開発する際の、プリント基板の回路設計とパターン設計のガイドラインについて、わかりやすく解説する。

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

目次