要約
PCとの接続も行うデバイスを絶縁する必要がある場合、USBインタフェースが自然な選択肢の1つになります。広範な業界サポートとシンプルな構造(USBケーブル中のワイヤはわずか4本)を持つUSBは、PCインタフェースとして広く普及しています。SPIインタフェースを使用して組込みシステムに付加するUSBコントローラは、容易に電気的絶縁を行うことができます。SPIインタフェースは任意の速度で動作可能であり、単純な単方向の信号で構成されます。
はじめに
Universal Serial Bus (USB)は、パーソナルコンピュータに周辺機器を接続するための標準的な方法になっています。PCに接続されるデバイスを電気的に絶縁する必要がある場合、その広範な業界サポートゆえにUSBが自然な接続インタフェースの1つになります。明らかに絶縁が必要になる2つのアプリケーションとして、PCベースの機器が患者に接続される医療アプリケーションと、大きなサプライレールオフセットの発生が考えられる産業アプリケーションがあります。
USB通信の基礎
USBは、3種類の速度で動作します。
- ロースピード、1.5Mbps
- フルスピード、12Mbps
- ハイスピード、480Mbps
本稿では、フルスピード(12Mbps) USB接続の光学絶縁について説明します。12Mbpsデバイスは、実用的なデータ伝送を行うのに十分な帯域幅を持つとともに、安価なフォトカプラを使用する設計でも容易に扱えるデータ速度が採用されています。
USBコネクタには、2本の給電用(VBUSおよびGND)ワイヤと、2本のUSBデータ(D+およびD-)伝送用ワイヤの、4本のワイヤが収容されています。VBUSワイヤは、最大500mAの5V電力を供給します。D+およびD-信号は双方向であり、信号速度12Mbps (ビットセル当り83ns)で動作します。D+とD-の信号電圧は3.3Vです。
USBの絶縁に関する問題
図1. USB周辺装置を絶縁できるインタフェースには、(位置1) USBバス自体、(位置2)トランシーバインタフェース、および(位置3)アプリケーションインタフェースの3つがある。最近のほとんどの設計ではSIEとトランシーバが集積化されているため、(位置2)のインタフェースは利用できない。
USB周辺装置は、図1に示すブロック図を使って構築されています。図を右から左に向かって見ていくと、まずUSBトランシーバがD+およびD-ラインに接続されており、OE (Output Enable)制御ピンの制御にしたがってデータの駆動または受信を行います。中央のブロック、すなわちUSBシリアルインタフェースエンジン(SIE)は、バス信号(トランシーバが送受信するもの)を、USB周辺装置を実装するアプリケーションが使用するデータバイトとUSB信号に変換します。左端のブロックはアプリケーション回路であり、マイクロプロセッサ、ASIC、またはディジタル信号プロセッサ(DSP)の場合があります。
1、2、3と書かれたグレーの長方形が、USBデバイスをホストコンピュータから電気的に絶縁するためのフォトカプラを配置することができる3つの位置を示しています。
図2. このオシロスコープのトレースは、パケット先頭部のUSB D+およびD-信号(図1の位置1)を示している。83nsというビット時間および立上り/立下り時間の正確な整合という条件のため、光アイソレータの前後で信号の忠実度を維持するのが難しい。D+とD-は双方向であり、絶縁をさらに複雑にしている。
位置1
図2に示すように、光学絶縁をUSBバスワイヤ上で行うのは、いくつかの理由から現実的ではありません。
- 信号速度が12MHzであり、低コストのアイソレータにとって高速すぎます。
- D+およびD-信号の伝搬遅延とスキューを慎重に整合する必要がありますが、光アイソレータでこの整合性を達成するのは困難です。
- バスが双方向であるのに対し、アイソレータが単方向であることが、状況をさらに複雑化しています。さらに、内蔵トランシーバを使用する周辺装置の場合は、(方向を示す) OE信号にアクセスできません。
位置2
外付けトランシーバを使用するUSB周辺装置の場合は、トランシーバインタフェースが外部に公開されています。したがって、これらの単方向信号を光学絶縁の対象とすることが考えられます。しかしこの位置にも、データ速度が高すぎるという、位置1と同じ問題が存在します。しかも実際には、より多くの12MHz動作の信号を絶縁する必要があります。VPO、VMO、RCV、VPI、およびVMIのすべてが12MHzの速度で動作しており、遅延とスキューを慎重に整合させる必要があるのです。さらに、最近のUSBの設計ではSIEとトランシーバが同一チップに組み込まれる場合が多く、このインタフェースにアクセスできることはほとんどありません。
位置3
絶縁を行う位置としては、ここが最も有力です。このインタフェースはUSBデータおよびライン速度よりも低速で動作可能であり、かつ完全に単方向信号だけでインタフェースを構成することができます。実際、理想的なインタフェースは、12MHzというUSBの信号速度よりもずっと低いデータ速度で動作する、少数の単方向信号を使用するものです。
これらの要件を満たす理想的なインタフェースの1つが、元々はMotorolaによって定義され、現在は数多くの半導体タイプで広く利用可能な、SPI (Serial Peripheral Interface)です。SPIは、そのシンプルさと性能ゆえに、非常に人気の高いインタフェースになっています。
SPI通信の基礎
SPI Signal | Description | Comments |
SS# | Slave Select | Selects the chip for data transmission, supplied by the master |
MOSI | Master Out Slave In | Unidirectional data pin |
MISO | Master In Slave Out | Unidirectional data pin |
SCLK | Serial Clock | Serial clock, supplied by the master |
表1に、SPIインタフェースの4つの信号を示します。SPIはマスタ/スレーブ型インタフェースであり、マスタが単一のスレーブとの転送を開始して管理を行います。マスタは、スレーブ選択(SS#)信号とシリアルクロック(SCLK)を供給して、データ転送の同期を取ります。SPIインタフェースには4種類のクロックモードがあり、その選択に反映されるのが、CPOL (clock polarity:クロック極性)とCPHA (clock phase:クロック位相)と呼ばれる2つのモード信号です。これらの信号は、(CPOL, CPHA)の形で表されます。
図3に、マイクロプロセッサとSPIスレーブデバイスの間における、SPIのデータ転送の様子を示します。図3では、最も一般的なSPIモード(0,0)を使用しています。モード(0,0)では、インアクティブ状態でクロックがローであり、SPIマスタは最初のSCLKの立上りエッジの前にMOSIデータを利用可能にします。マスタ/スレーブデバイスとも、SPIデータはSCLKの立下りエッジで変化し、立上りエッジでサンプリングされます。
図3. モード(0,0)で動作するSPIインタフェース。SCLK信号をアクティブロー(静止状態がハイ)にすると、同じインタフェースをモード(1,1)で動作させることができる。これらの低周波数信号は、光学絶縁が容易である。
SPIインタフェースは、ハードウェアSPIユニットを内蔵していないものも含めて、あらゆるマイクロプロセッサで容易に実装することができます。必要なのは、図3の信号を構成する4つの汎用入出力(GPIO)端子と、各IO端子を直接トグルしてバイトの読み書きを行うサブルーチンだけです。
図4に、USB周辺コントローラがSPIインタフェースを使用している場合の、SPIとUSBのデータ速度の違いを示します。この図で、制御側のマイクロプロセッサはUSBキーボードとして機能しており、周期的にLEDを点滅させます。図5のSPIトラフィックが、1回のLEDブリンク(出力ビットのトグル)を表しています。このUSBトラフィックは、USBホストがキーボードデータを要求するというものです。
これら2つのバスの間におけるデータ速度の違いは劇的です。明らかに、より周波数の低い単方向のSPI信号の方が、12MHz双方向のUSBバス信号よりも絶縁が容易です。SPI信号の場合は絶縁ソリューションが非常にシンプルになり、光アイソレータの特性に応じて任意の周波数で動作するよう調整することができます。
図4. SPIのデータ速度とUSBの信号速度の比較。SPIの信号はフォトカプラを通して容易に伝送することができる。
図4を生成したシステムでは、USBコントローラを操作するSPIバスとUSB信号速度の間に存在する大きなデータ速度の差を、どのように整合させているのでしょうか。USBのメリットの1つは、組込みのフロー制御によって「自己調速」が行われる点です。このデータフロー制御は、「NAK」(Negative Acknowledge:否定応答)と呼ばれるハンドシェイクを使って実現されています。これは、周辺装置からデータを要求しているホストに対して、まだそのデータが用意できていないので後で再試行せよと伝えるものです。
SPIのデータ速度とUSBのNAK
図5. データを要求するホストからのINリクエストに、低速な周辺装置が応答する様子を示したUSBバスのトレース。ホストはパケット362~364でデータを要求している。周辺装置はパケット420でデータの準備を終えている。その間のIN-NAKパケットが、USBのフロー制御を示すものである。周辺装置は、データの準備が整うまでNAKで応答している。
図5は、USBのフロー制御メカニズムが機能する様子を示しています。パケット362から始まるシーケンスで、ホストはGet_Descriptor-Configuration
リクエストを発行しています。パケット363の末尾から2バイト目の09は、ホストが周辺装置から9バイトのデータを要求していることを示しています。周辺装置はパケット364でリクエストの受信を通知し、次にリクエストのデコードと、要求されたデータをエンドポイント0のデータFIFOにロードする作業に入ります。低速な周辺装置ではこのリクエストに答えるのに多少時間がかかる上に、比較的低速なSPIバスの速度によって応答時間がさらに長くなります。
988.667マイクロ秒(パケット364から)経過後、ホストはリクエストしたデータの要求をパケット366で開始します。周辺装置はまだデータの用意ができていないため、USBハードウェアが自動的にNAKハンドシェイクで応答し、「ただ今ビジー状態、後ほど再試行を」という旨を伝えます。ホストはパケット368で再試行を行い、また同じNAK応答を周辺装置から受け取ります。このIN-NAKのプロセスがパケット419まで続き、そこでようやく周辺装置がリクエストされたデータのロードを終え、エンドポイント0のデータ転送準備が完了します。今回は、周辺装置はNAKの代わりに9バイトのデータパケットをパケット420に入れて応答します。これに対してホストは、パケット421でアクノリッジを返しています。
IN-NAKのペア(図5で、破線の長方形で示した部分)は、何度でも繰り返すことが可能であり、すなわちSPIインタフェースが動作可能な速度に下限は存在しないことになります。これによって、フォトカプラの選択に合わせて設計者がSPIのデータ速度を微調整することができ、実用的でコスト効率に優れた設計が可能になります。
絶縁されたUSBの設計例
図6. 絶縁USB設計の回路図。左半分はUSBバス自体によって給電され、右半分は絶縁された電源を使用する。SPIインタフェースで絶縁を提供することによって、設計がシンプルになり、厳格なUSBバスのタイミングとは独立したものにすることができる。
図6は、低価格マイクロプロセッサAtmel® AtTiny13 (U6)、HCPL-2531フォトカプラ(U3-5)、およびレジスタセットに対するSPIインタフェースを備えたUSB周辺コントローラMAX3420E (U1)を中心に構成された回路です。U6がハードウェアSPIユニットを内蔵していないにもかかわらず、いくつかのGPIO端子の「ビットバンギング」によって、SPIインタフェースを容易に管理することができます。U1は、SPIインタフェースの実装用として、U6で使用している端子の代わりに(さらに追加する形で) 4つの汎用入力端子と4つの汎用出力端子を備えています。この設計では、2つの出力端子を使用してLEDインジケータD1およびD2を駆動し、1つの入力端子をプッシュボタンPB1の接続に使用しています。U1はSPIインタフェースによって制御される独自の入出力端子を備えているため、これらの入出力は元々U6から絶縁されており、個別の絶縁を必要としません。
図7. 絶縁されたインタフェース両側におけるSPIのSCLK信号。上:ISOVCC = 8.3V、ISOGND = 5V。下(USB給電):VCC = 3.3V、GND = 0V。
図7は、絶縁されたインタフェースの両側におけるSCLK信号のオシロスコープによるトレースを示しています。いずれのトレースも、スクリーン下端にベースラインが設定されています。上のトレースはU6によって生成されるSCLK信号を示していますが、5Vのオフセットがかかっています。
図8. 絶縁位置(上)とMAX342Eの位置(下)におけるSCK信号を、拡大スケールで表示したもの。
図8は図7のスケールを拡大したものであり、フォトカプラの性能が表れています。これらのフォトカプラは、この設計において選択した抵抗値のときに、スループット遅延がおよそ0.5µsになります。中央の短いSCLKパルスは、SCLK入出力端子を駆動するU6のコードの一部によって作られます。U6のコードの該当部分を図9に示します。
図9. MAX3420Eのレジスタを読み取るためのAtTiny13のアセンブラコード。ここでSPIインタフェースのタイミングを微調整して、フォトカプラの価格対性能に関するトレードオフを提供することができる。
r4
というラベルの直前でSCK信号がローに駆動され、すぐハイに戻されています(SCLK_LO
とSCLK_HI
は、コードを変更せずに特定の回路基板レイアウトの入出力端子を容易に割当てられるようにするためのアセンブラマクロです)。
この2つのステートメントの間にNOP命令を挿入することで、図8に示した狭いパルスを広げることができ、それによって、より低速な(すなわち、より低コストな)フォトカプラの使用が可能になります。このプロセスは、SPIインタフェースが光学絶縁アプリケーションにもたらす柔軟性を良く表しています。
結論
USBデータ信号の高速性、双方向性、そして厳密な整合要件ゆえに、これまでUSBの電気的絶縁は困難な作業でした。USBコントローラとアプリケーションプロセッサの間のインタフェース(図1の位置3)は、任意の速度での動作が可能であるため、このインタフェースを絶縁すれば、絶縁の問題をよりシンプルにすることができます。より低い信号速度を持つ位置3は、低コストなフォトカプラによるソリューションに最適です。どのような絶縁設計でも同様ですが、絶縁を要するラインが少ないほどコストの節約に好都合です。わずか4本の、低速かつ単方向の信号のみを使用するSPIインタフェースは、絶縁にとって理想的な候補の1つです。MAX3420Eは、シンプルなSPIインタフェースを使用して任意のコントローラに接続することができ、しかもシンプルな絶縁ソリューションを提供するというメリットも備えているため、組込みシステムにUSBの機能を追加するための理想的な方法と言えます。絶縁されたUSBホストアプリケーションは、MAX3420Eと同一のSPIインタフェースを使用し、周辺装置またはホストいずれかとして機能するMAX3421Eでも実現可能です。
同様の記事がEDNの2006年7月版に掲載されています。
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}