組み込み入門8~入出力デバイスのインターフェイス~

組み込み入門第8段では、入出力デバイスのインターフェイスについて解説していきます。

前回説明したシステムバスが中枢神経だとすると、今回紹介する入出力デバイスのインターフェイスは末端神経のような役割となります。接続先やCPU、バスのスペック、使いたい状況に合わせて適切なインターフェイスを選択していくことが大切です。

本記事では、様々なインターフェイスを体系的にまとめていきます。

入出力デバイスのIF

有名な入出力デバイスの名前をざざざっと上げてみます。

  • SCSI
  • IrDA
  • SMBus
  • 1-Wire
  • I2C
  • SATA
  • Bluetooth
  • CAN
  • RS-232C
  • SPI
  • FlexRay
  • PCI
  • RFID
  • RS-422
  • USB
  • ZigBee
  • LVDS
  • MicoWave
  • NFC
  • IDE
  • IEEE1284

はい。たくさんありますね。こんなん把握しきれないよ。。。。という感じだと思いますが、体系的に分けていけば共通点と特徴が見えてきます。分類していきましょう

インターフェイスの分類

有線通信と無線通信

これは知っているよだと思いますが、まずは「有線通信」と「無線通信」に分けることができますね。デバイス同士を導線でつないでいるか、そうでないかですね。

有線通信の場合は、線の本数や役割はどうなっているのか?データの区切れめなどのタイミングはどう撮っているのか?電圧レベルはどれくらいか?などが焦点になってきます。

無線通信の場合は、データを媒介するものはなにか?光なのか電波なのかはたまた音なのか?そしてどんな規則でデータを送るのか(プロトコル)が焦点になってきます。

シリアル通信とパラレル通信

有線通信の中でも次の分類は「シリアル通信」か「パラレル通信」かになります。

データの伝達をする線の数です。違いは1度に伝達するデータが1ビットであるか複数ビットであるかです。

シリアル通信では、1本の動線上に「11010101」 などというように連続でデータを送る方法です。配線がシンプルです。当初は、後述するパラレル通信に比べて低速とされていましたが、近年ではパラレル通信を超える速度を実現できるようになっています。

パラレル通信では複数のデータを同時に送る方法です。当初は、シリアル通信に比べて高速に送れるとされていましたが、近年ではシリアル通信の方が高速のため活躍の場が減ってきています。

信号の同期

シリアル通信をさらに分解していく上でポイントとなるのが信号の同期方法です。信号の同期とはビットの境目を明確にすることで。上図に示した信号はどんなデータを示しているでしょうか?

「110111001011」でしょうか?それとも「1110011111100001100111」でしょうか?

1ビット毎の区切れが書いてあるとはっきりとしますが、どのように伝えるのでしょうか?というのが同期方法です。

クロック同期と調歩同期

代表的な同期方法として「調歩同期」と「クロック同期」があります。

調歩同期では、「信号内でスタートとストップの合図」送り、その間に予め決めたサイズ(何Bit)のデータを送ります。1秒間に何ビットのデータを送るか(ボーレート)も予め示し合わせておきます。

例えば、スタートビットが0、ストップビットが 1だとすると、データを送信しないときはストップビット1の状態を保ち、データを送るときに0を1つ挟んで実際のデータを送付し、送り終わったら1に戻します。

続けて、クロック同期では、クロック発生機の出力をデバイス間で共有し、そのクロック感覚に合わせて信号のやり取りを行います。この方法では、ビットの区切れはわかりますが、ワード(ひとかたまりのデータ)の区切れはわからないので、別途データの前後にワードの区切れを示す制御ビットを付けます。タイミングが外部から取り込めるため通信制御回路が簡単にできる一方で、後述する高速化には不向きとなっています。

インターフェイス毎の分類

鳥瞰図

これまでの特徴にもとづいて、冒頭で羅列した通信方式を整理してみると上図のようになります。だいぶ見通しが良くなってきたのではないでしょうか?

有線通信のIF

パラレル通信のIF

上図がパラレル通信の規格を比較したものになります。数百MBpsの速度が出るためそれなりに早いですね。用途はPCと周辺機器やHDDとの転送、拡張バスなどに使われていました。

しかし、いずれも現在は段々と活躍の場を減らしていて、シリアル通信化した後継の規格を使っています。IEEE1284 は 直結の後継ではありませんが、今はUSBに。SCSIはSASに。IDE=ATAはS-ATAに。PCIはPCI-Expressになっています。

非同期型シリアルのIF

続けて非同期型のシリアルIFを示します。こちらはRS232CやRS422、RS485といった進化の歴史をたどっています。いずれも信号伝達にはDサブ9ピンやDサブ25ピンと呼ばれるケーブルを使います。使用されたことがある方も多いのではないでしょうか?転送速度はパラレル通信に劣り、10Mbps (=1.25 Bps)程度です。産業機器間の接続に今でも使われています。

クロック同期型のシリアルIF

続けて、クロック同期型のシリアルIFをを紹介します。

特徴的なのは、信号本数も速度も用途も多種多様ということですね。

スタンダードなのはI2Cの2本式のものですね。先に紹介したようにクロックとデータ入出力の2本の線を使います。用途はEEPROMやセンサとの接続などです。

そして、MicroWireやSPIのようにデータの入力の先と出力の線を分けたり、チップセレクト用の信号がついたものもあります。

チップセレクトは、デバイスA-デバイスB-デバイスCと複数つながったときに、どのデバイスにデータをを送信しているのかを示すための線です。チップセレクトがない場合は送信データ自体に宛先を含めて、全デバイスが受信し自分宛ての内容かどうかをチェックするような作りになります。

そして、1-WireやCAN、FlexRayで特徴的なのはクロック信号線がないこと。

えっ。じゃあクロック同期型じゃないじゃん。と思いますよね。私も思いました。

実はクロック信号をデータ線に埋め込むことで、クロック同期を実現しています。こちらは、後述する「エンベデッドクロック」で詳しく解説していきます。

シリアル通信の高速化

パラレル通信よりもシリアル通信のほうが早い!という事実の解明をしていきましょう。シリアル通信の高速化に貢献した2つの技術「LVDS」と「エンベデッドクロック」について解説していきます

LVDS(Low Voltage Differential Signaling)

高速にデータを送るということは高速に1と0を繰り返すということになります。これは、高周波の信号になっていくわけですがLVDSは信号の振幅を小さくすればより、高周波な信号にできるよね。という発想です。電気回路に詳しい方はなるほどね。となるかもですが、ピンとこない方は、腕を上下に振ることを考えてみてください。大きく腕を振るよりも小さく腕を降ったほうがたくさん触れますよね。

一方で、振幅電圧を小さくするとノイズに弱くなります。これに対して、差動信号を用いることで対処します。これは、2本の信号線にそれぞれ反転した信号をセットして送る方法で。受信側ではこの差分を取り信号とします。ノイズは2本の信号に同様に乗るため、差分をとればノイズが除去できるためノイズに強くなります。もちろん、2本の信号線が物理的にピッタリ同じ経路を配線されていることが大切になるので、撚り線にすることも多いです。

エンベデッドクロック

続けて、エンベデッドクロックについて解説していきます。

エンベデッドクロックは、クロック信号線を使わずにデータ信号自体にクロックの役割をもたせる技術です。データからクロックのタイミングを抽出することをクロックリカバリと呼びます。

原理の前に。なぜ?高速化につながるか考えてみましょう。

データ線とクロックの間にもわずかなズレが存在します。高速化していくと、このズレの許容範囲が狭くなっていき、やがてずれてしまいます。ズレは、クロック→データ信号生成時やデータ線とクロック線の伝達経路の電気特性の違いなどにより発生し、完全にゼロにすることは困難です。

そこで、1本の線でクロックとデータを送りたいという発送に至るわけです。

では、データ信号にクロックの役割をもたせるとはどういうことなのでしょうか?

10101010とデータが繰り返されればbitの境目がわかりますよね。一方、11111110と続くと分かりづらいです。

これを拡大すると「1と0がバランスよく混ざれば、区切り位置が推測できる」と考えられます。

しかし、実際にはデータは送りたものによって変わるので偏りが生じます。

それでは、1と0がバランス良くなるようにデータを変換してあげましょうということで

8b10bという変換で8bitのデータを10bitに増やしながら1と0の数をバランスするような変換を施します。これにより、1と0のバランスが良くなったデータ先からクロックを逆算します。

USB

高速なシリアル通信としてみなさんが普段から使っているUSBがあります。あまり意識したことはなかったかもしれませんが、通電状態での抜き差し(ホットスワップ)や電源供給機能をあわせて利便性が高いものとなっています。USBも進化の歴史があり、通信速度や電源供給性能を上げています。

SATA

次にSATAを紹介します。HDDやSSDなどの補助記憶装置を接続するための規格です。

パラレル方式の規格であったATAをおシリアル化し高速化したものになります。データの扱いはATA互換担っていて、転送速度は最大で600MBpsとなっています。

無線通信のIF

最後に無線通信のIFについてまとめてみます。

通信の媒体は近赤外線(光)や電波が多いですね。通信距離や速度に差があったり、電源がいるorいらないだったり、同時接続数であったりなど差別化ポイントがありますね。

IoTの流行りの中でこういった無線通信をいかに使いこなすかが大切になっていますので、特徴と違いを抑えておきましょう。

まとめ

今回は入出力デバイスのインターフェイスについて解説してきました。システムを構成する上でどの通信を選択していくかが大切になってきますので特徴と歴史を抑えていただければと思います。

CPUからはじめ、コンピュータの構成要素を細かく解説してきましたが、いよいよ終盤です。次回は、今回したインターフェイスの先につながる「入出力装置」について解説していきます。

おすすめの記事