要約
このアプリケーションノートでは、通常マイコンのような2つ以上の周辺機器とインターフェースする、元々メモリーマップされデータとアドレスバスに接続された、現代の高度なエレクトロニクスのコアを取り上げます。しかし、ピン数が増え、パッケージサイズ、および全体のコストが大きくなったため、他の接続/通信方式であるシリアルインタフェースが主要な選択になりました。このアプリケーションノートでは、1-Wire®、SPI、I²C、USBなどのシリアルインタフェースを、ネットワークサイズ、ネットワークドライバ、電源、データ速度、ネットワークインベントリ、および機能選択について比較し、シリアルインタフェースを選ぶエンジニアにとって、いかに1-Wireシリアルインタフェースに競争力があり革新的であるかを示します。
このアーティクルはマキシムの「エンジニアリングジャーナルvol. 59」(PDF, 780kB)にも掲載されています。
最先端のエレクトロニクス製品の中心にはマイクロコントローラ(µC)があり、周辺機器デバイスと通信を行っています。昔のµCでは、周辺機器がメモリにマッピングされ、データとアドレスバスに接続されていました。この場合、各コンポーネントの位置は、アドレスラインからデコードしたチップセレクト信号により、限られたアドレス範囲における一意の位置として決定されます。このようなインタフェースとすると、最小限必要なピン数は、電源とグランド以外に、8 (データ) + 1 (R/アクティブローW)+ 1 (CアクティブローS) + n (アドレスライン数)[n = log2(内部レジスタ数あるいはメモリバイト数)]となります。16バイトのデバイスでは、8 + 1 + 1 + 4 = 14ピンが通信用として必要になります。アクセスが速いというメリットはありますが、ピン数が多いとパッケージサイズと全体的なコストが上昇するというデメリットもあります。コストとパッケージサイズを縮小したいなら、シリアルインタフェースの採用が真っ先に浮かぶでしょう。
シリアルバスを選ぶのは簡単なことではありません。データレートとビットシーケンス(最初に来るのが最上位ビットか最下位ビットか)、電圧だけでなく、以下の点も考慮する必要があります。
- 周辺機器の選択方法(ハードウェアがチップセレクト入力経由で選ぶのか、ソフトウェアプロトコルで選ぶのか)
- 周辺機器とµCとの同期方法(ハードウェアクロックラインを使うのか、データストリームにクロック情報を組み込むのか)
- データ伝送はシングルラインとするのか(「ハイ」と「ロー」をスイッチングする)、2線の差動接続とするのか(2線が同時、逆向きに電圧を変化させる)
- 通信ラインの両端ともインピーダンスマッチングを取り、終端処理されている状態か(差動信号でよく使われる形式)、あるいは、両端とも終端処理されていないか、一端のみ終端処理されている状態か(シングルエンドバスでよく使われる形式)
このようなパラメータ以外に、アプリケーション側の要件として、電力の供給や絶縁、ノイズ耐性、µC (マスタ)と周辺機器(スレーブ)間の最大距離、ケーブルの構造(リニア、スター、ワイヤ逆接の影響を受けない)などの条件が加わる場合があります。ビルオートメーションや工業用制御、ユーティリティメータの読取りなどは、このような条件をすべて勘案して、それぞれに適した規格が策定されています。1、2
表1. シリアルバスシステムの概要
回路基盤からバックプレーンまでのアプリケーションの要件
周辺機器機能を実現するシリアルバスは、システム全体にとって負担となるものであってはなりません。特に、以下の点に注意が必要です。
- ルーティングが容易な接続であること(信号数が少ない方が良い)。
- ソフトウェアで実装しやすいプロトコルであること(あるいは、使用するµC/µPがネイティブでサポートしているプロトコルとする)。
- デバイス機能を適切に選択できること。
- 拡張が容易なバスであること。
必要な信号数が最も少ないのは、シングルエンド、セルフクロッキングのシステムでアドレッシングをソフトウェアプロトコルで行う場合です。このような条件を満たすのは、表1に示す1-WireとLINバス、SensorPathです。ただし、このような形式では、他にも検討しなければならない点があります(表2参照)。
表2. 1-Wire、LINバス、SensorPathの詳細比較
1-Wire3 | LIN Bus4 | SensorPath5 | |
物理的なネットワークサイズ | ボードやバックプレーンは最大300mまで拡張可能 | 最大40m | ボード |
ネットワークドライバ(ハードウェア) | RS-232、I²C、USB、汎用µPポートピン6、7用のドライバがある | µPポートピン用のドライバがある | Super-I/Oチップ、µPポートピン |
ネットワークドライバ(ソフトウェア) | µC用を含め、さまざまなプラットフォームで無償ドライバが存在する8 | Freescale µC用の無償ドライバが存在する | なし |
電源 | データライン経由(一般的なケース)、ローカルVCC (一部デバイス) | データライン経由 | ローカルVCC |
データレート | 最大15kbps (標準)あるいは最大125kbps (オーバードライブ)9 | 最大20kbps | データによる。最大20kbps |
ネットワークインベントリ | 「サーチROM」ネットワーク機能による | なし。メッセージベースのアドレッシングを行う | サポートなし |
利用できるデバイス機能 | シリアル番号、計測、セキュアメモリなど、さまざまなデバイス機能が利用可能 | 自動車アプリケーションで必要とされる機能に限られる | 温度センサと電圧ADCのみ |
物理的なネットワークサイズ
アプリケーションがボードサイズに限られるのはSensorPathだけです。1-Wireバスは、適切なハードウェアとソフトウェアネットワークドライバを採用し、条件がよければ、かなりの長距離にも対応することができます。
ネットワークドライバ
プロトコルを使用するネットワークでは、通信波形を生成する(リンク層)、ネットワークにおけるスレーブ/ノードを個別に特定し、アドレスする(ネットワーク層)、デバイスとデータの送信/受信を行う(トランスポート層)ソフトウェアドライバが必要です。ソフトウェアドライバは、オペレーティングシステムと通信ポートに適したものが必要となります。1-Wireの場合は、ハードウェアドライバチップ(マスタ)とCOM、LPT、USB、I²Cといったポート用のアダプタがあります。終端処理がされていない大規模ネットワークでは、ケーブル端やコネクタ、スタブからの反射によって性能が低下する場合があります。
電源
ネットワークに接続されたデバイスは、電源を与えてやらないと動作することができません。費用対効果が最も高い方法は、データラインを通じて電源を供給する方法です。「寄生電源」と呼ばれるこの方法では、(パワーダウンモードなどでも)システム診断情報を読むことができます。実例は、図3およびアプリケーションノート178 「1-Wire製品によるプリント回路基板の識別」10をご覧ください。なお、寄生電源とすると、電力供給用の時間をとる必要があり、最大データレートが下がります。
データレート
一般に、データレートを高めるためには、ネットワークサイズを小さくする必要があり、逆も同様です。1-Wireシステムでは、電源供給をする関係から、ネットワークに接続されているスレーブデバイスの数とケーブルの総延長(静電容量)によって最大データレートが変化します。
ネットワークインベントリ
この機能は、ネットワークに接続されたスレーブデバイスの数と種類、アドレスをマスタが確認するものです。構成がダイナミックに変化するネットワークでは、この機能が必要になります。実例は、「ダラス・エンジニアリングジャーナル」(vol. 2)11の22ページをご覧ください。
利用できるデバイス機能
アプリケーションが必要とする機能が利用できなければ、インタフェースがベストであっても意味がありません。LINバスやSensorPathに比べると、1-Wireは、利用できるデバイス機能が豊富に存在します。
I²C/SMBus対1-Wire
クロックラインがサポート可能なアプリケーションでは、I²C12とSMBus13もデバイスとして選ぶことができます。初期のSMBusは、100kbpsのI²Cバス仕様にタイムアウト機能を追加したと言ってよい仕様となっていました。このタイムアウト機能があると、バスドライバとの同期をノードが失っても、バスが作動不能とならずにすみます。I²Cシステムでは、このような状況から回復するためには、パワーオンリセットを行う必要があります。1-Wireシステムでは、リセット/プレゼンス−ディテクトサイクルで通信インタフェースをリセットし、スタート状態とします。
I²C/SMBusは、クロックラインを持つ以外に、バスでやりとりされるバイトごとに確認応答ビットの発生があります。このため、データレートが実質12%低下します。トランザクションは、まず、スタート状態から始まり、デバイスアドレスとデータ方向ビット(読み出しか書き込みか)と続いて、ストップ状態で終わります。1-Wireシステムでは、まず、ネットワーク層の要件が満足される必要があります(つまり、特定デバイスの選択、サーチROM、またはブロードキャスト)。その後、デバイス固有のコマンドコードで通信が始まります。なお、コマンドコードによっても、データ方向(読出しか書込みか)が影響を受けます。
オリジナルとなったI²CにもSMBusにも、アドレス空間が7ビットに制限されているという大きな問題があります。これに対してデバイスの種類は127を超えているため、スレーブアドレスからデバイス機能を得ることはできません。さらに、I²Cデバイスの多くは、1本のバスに同種類のデバイスを複数、接続できるように、ユーザがアドレスビットの一部を任意に設定することができるようになっています。この特長で、利用できるアドレス空間はさらに狭くなります。このため、一般には、バスを複数のセグメントに分割し、ソフトウェアによってアクティブなセグメントを切り替えることによって、アドレスの衝突を回避します。このセグメンテーションには、必要なハードウェアが増えるという問題と、アプリケーションファームウェアが複雑になるという問題があります。また、I²Cにはデバイスを列挙するインベントリ機能がなく、動的に変化するシステムの取り扱いが難しいという問題もあります。この問題は、SMBus Specification Version 2.013で導入されたAddress Resolution Protocolによって解決済みですが、この機能をサポートしたSMBusデバイスはわずかに出回っているのみです。
SPIとMICROWIRE
SPI14とそのサブセットであるMICROWIRE15は、デバイスごとに1本ずつ、チップセレクトラインを必要とします。このチップセレクト信号があるため、SPIプロトコルでは、メモリアドレスやステータスレジスタの読出しや書込みのコマンドだけが定義されています。確認応答機能もありません。SPIデバイスは、普通、データ入力とデータ出力に異なるピンが割り当てられています。読出し以外ではデータ出力がトライステートとなるため(ディセーブルがある)、2本のデータピンを接続して1本の双方向データラインとすることができます。SPIが選ばれるのは、他のバスシステムでは利用できない機能を使いたい場合か、2Mbps以上に達する比較的高いSPIのデータレートを利用したい場合です。SPIとMICROWIREの欠点は、各チップにアドレスする際にアクティブローCS信号を生成するデコーダが必要なことです。しかし、アドレスの衝突はおきません。I²Cと同じでインベントリ機能はありません。マスタが論理アドレスからデバイス機能を削除することはできないため、動的に変化するネットワークの管理は困難です。
RS-485、LVDS、CAN、USB 2.0、およびFireWire
これらの規格は、差動信号の例として取りあげます。このうち、もっともスピードが速い2つの規格、FireWire16とUSB 2.017は、電気的にはポイントトゥポイント接続となります。ハブと呼ばれる高度なノードによってツリー型トポロジの仮想バスを実装することで、ソースからエンドポイント(USB)へ、あるいはピアトゥピア(FireWire)に、480Mbps (USB 2.0)あるいは1600Mbps (FireWire)という最大バーストデータレートでデータパケットを転送することができます。パケットサイズが限られていること、また、受信/バッファリング/再送信という通信コンセプトであることから待ち時間が発生し、実際に実現できるデータスループットは低くなることがあります。トポロジとプロトコルから許容される限界としては、ノード数がUSBは126、FireWireは63で、ノード間距離は、パッシブケーブルを使った場合で最大4.5mとなります。PC周辺機器やマルチメディア機器、工業用制御、航空機(FireWireのみ)などのアプリケーション用として設計された規格であり、USBデバイスやFireWireデバイスは、システム(ホットスワップ)の電源を落とさなくても接続できるようになっています。このため、ネットワークの構成を動的に変化させることができます。
LVDS18、RS-48519、CAN20は、マスタとスレーブを持つ、あるいは複数のマスタを持つ真にリニアなバス構造とすることができます。この中で最速の規格、LVDS (低電圧作動信号)は、バス延長が10m以内のとき、100Mbpsで動作することができます。実際に実現できるデータレートとスループットは、ネットワークのサイズによって上下します。LVDSはバックプレーンアプリケーション用の電気的規格として策定されており、ホットスワッピングに対応するとともに、プロトコルが規定されていません。
RS-485も、電気的なパラメータだけが規定されています。RS-485では、ノードではなく負荷とバスあたりの最大負荷数(32)が規定されています。ひとつの電気的ノードが持つ負荷は1未満です。データレートは、通常、ネットワークサイズが12mで35Mbps以下、1200mで100kbps以下で、データ収集や制御のアプリケーションに適した値となっています。RS-485機器では、もともとRS-232用に設計されたコンポーネントをベースとしたプロトコルがよく用いられます。
これに対し、CAN (コントローラエリアネットワーク)は、自動車アプリケーションや工業用オートメーションを対象として、非常に高いレベルのセキュリティが実現できる分散型リアルタイム制御のシリアル通信プロトコルが定義されています。データレートはネットワークサイズにより、40mで1Mbpsから1000mで50kbpsという範囲になります。アドレッシングはメッセージベースであり、プロトコルの仕様によるノード数の制限はありません。CANノードはホットスワップが可能で、ネットワーク構成を動的に変化させることができます。
まとめ
シンプルな低コストのバスシステムの中では、LINバスやSensorPathよりも1-Wireのほうがデバイス機能の選択肢が広く、ネットワークドライバも豊富にあります。I²CとSMBusはデータとグランドリファレンス以外にクロックラインとVCC電力が必要になりますが、デバイス機能という面では選択肢が非常に豊富です。SPIとMICROWIREはチップセレクトラインが追加で必要になりますが、データレートが非常に高いという特長を持ちます。 1-Wireのインタフェースとプロトコルは寄生電源とネットワークインベントリの機能を持ち、ホットスワッピングをサポートしていますが、このような特長を持つのは、この他、差動信号を使用する高速システムかSMBus 2.0 対応製品しかありません。ホットスワップ対応の1-Wireデバイスとして最も広く知られているiButton®では、ホットスワッピングが通常の使用方法となっています。1-Wireデバイスは、グローバル識別21や回路基盤/アクセサリ識別、認証10、温度検出、アクチュエーションといった機能において高い効率を発揮することが実証されています。この他、成功例としては、セキュアメモリとチャレンジアンドレスポンス機能を持ち、双方向認証によって最小限のコストで知的財産を守ることができる1-Wireデバイスがあります。22、23
Electronic Productsの2006年9月号にも、同様のアーティクルが掲載されています。
参考文献
- Interbus Club. www.interbusclub.com/ (工業オートメーション) (英文のみ)
- The valid M-Bus standard. www.m-bus.com/ (メータ読取り) (英文のみ)
- 「Overview of 1-Wire Technology and Its Use.」japan.maximintegrated.com/AN1796 (1-Wireの基本) (英文のみ)
- LIN Local Interconnect Network. www.lin-subbus.org/ (LIN規格) (英文のみ)
- National Semiconductor. 「Cost Effective Partitioning of IO and Management Functions in PCs - Introduction of SensorPat Technology. www.national.com/nationaledge/jan04/article.html (SensorPath) (英文のみ)
- 「高度1-Wireネットワークドライバ」japan.maximic.com/AN244 (ハードウェアドライバ)
- 「高信頼性長距離配線1-Wire®ネットワークのガイドライン」japan.maximintegrated.com/AN148 (1-Wireネットワーク)
- 「1-Wire®ソフトウェアリソースガイドデバイス解説」japan.maximintegrated.com/AN155 (ソフトウェアドライバ)
- 「複数スレーブを備える1-Wireネットワークの回復時間の算出」japan.maximintegrated.com/AN3829 (回復時間)
- 「1-Wire製品によるプリント回路基板の識別」japan.maximintegrated.com/AN178 (ボード識別)
- 「ダラス・エンジニアリングジャーナル」vol. 2. pdfserv.maximintegrated.com/jp/ej/DallasEJ2.pdf (ダイナミックネットワーク)
- 「The I²C-Bus Specification, Version 2.1, January2000. 」www.nxp.com/acrobat_download/literature/9398/39340011.pdf (I²C) (英文のみ)
- 「USB specification」www.smbus.org/specs/ (SMBus) (英文のみ)
- 「M68HC11E Family. 」www.freescale.com/files/microcontrollers/doc/data_sheet/ M68HC11E.pdf (SPI) (英文のみ)
- 「MICROWIRE Serial Interface. 」www.national.com/an/AN/AN-452.pdf (MICROWIRE) (英文のみ)
- The Air Power Australia Website. 「Firewire. 」www.ausairpower.net/OSR-0201.html (FireWire) (英文のみ)
- 「USB 2.0 Specification. 」www.usb.org/developers/docs (USB規格) (英文のみ)
- National Semiconductor. 「LVDS Owner’s Manual:Low-Voltage Differential Signaling. 」 www.national.com/appinfo/lvds/files/ownersmanual.pdf (LVDS) (英文のみ)
- Lammert Bies’ Website. 「RS485 serial information. 」www.lammertbies.nl/comm/info/RS-485.html (RS-485) (英文のみ)
- Robert Bosch GmbH. 「CAN Specification, Version2.0. 」http://www.academia.edu/33475371/BOSCH_CAN_Specification (CAN規格パートA) (英文のみ)
CAN in Automation (CiA). 「CAN Specification 2.0,Part B. 」www.can-cia.org/index.php?id=440 (CAN規格パートB) (英文のみ) - 「1-Wireデバイスによるグローバル識別番号の作成」japan.maximintegrated.com/AN186 (グローバル識別番号)
- 「研究開発の投資の保護—双方向の認証とセキュアなソフトによる機能の設定」japan.maximintegrated.com/AN3675 (双方向認証)
- 「1-Wire SHA-1セキュアメモリによるXilinx® FPGAのIFFコピー防止」japan.maximintegrated.com/AN3826 (FPGA保護)
参考資料
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
- {{newProjectText}} {{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}