#10 Serial Communication
講義日: 2016.11.29 今週は、シリアル通信について学修します。12月1日(木曜日)の演習では、綿貫先生の講演があります。 目次 I. Basics of Communication II. Basics of Serial Communication III. Connect a LPC824 with an Unity App IV. Practical Work I. Basics of Communication まず、通信ということそのものから考えましょう。通信とは、少なくとも2つの何かが情報をやり取りすることです。ここでは話を簡単にするために、AさんとBさんの間での通信だとしましょう。AさんがBさんに何かを伝えたい。その際に、伝える方法は、ほぼ無限にあります。今ならLineでメッセージを送るとか、電話をかけるということになるでしょう。これが100年前であれば、手紙を書くのが普通だったのでしょうね。さらに5千年前であれば、狼煙かもしれません。どんな方法を使うにしても、必ず必要となるものがあります。それが、通信媒体と通信プロトコルです。 通信媒体は、信号を伝達させるのに使う物理的なモノのことです。電話なら電話線、狼煙ならば煙、手紙だったら郵便システムということになるでしょう。これらの物理的なものは、極論すると1bitの情報を識別可能なものです。ある・ない、on・off、1・0、のようなものです。 通信プロトコルというのは、信号の意味を形成するための決まりごとです。狼煙が1本であれば安全、2本であれば危険、のようにAさんとBさんの間で何かの取り決めがされていなければ、情報を伝達することはできません。この通信プロトコルは、通信のインターフェイスに関する決め事といっても良いです。 通信インターフェイスには、レベルがあります。ここでは、コンピュータ同士の通信を考えてみましょう。まず、コンピュータ同士を何かで繋がなければいけません。例えば、電線でつなぐとしましょう。これは、物理的レベルのインターフェイスです。この電線を使ってデジタル通信をするとなると、何Vの電圧を使うかを決めたり、0と1を判別する閾値を決めたりする必要があります。これは、電気的レベルのインターフェイスです。さらに、何bit単位に情報を送るかとか、通信の開始と終了の合図、やり取りする記号列とその順序などを決める必要があります。これがいわゆる通信プロトコルです。 II. Basics of Serial Communication さて、話をAさんBさんから、コンピュータ同士の通信に移しましょう。コンピュータ同士で通信する際には、一般的にはデジタル信号のやり取りをします。この時、何本の線を使って信号を送受信するかが問題となります。1本の線で信号を送る方法をシリアル通信(serial communication)といい、複数の線で信号を送る方法をパラレル通信(parallel communication)といいます。これだけを聞くと、当然パラレル通信の方が効率が良いのではないかと思いますよね。例えば、8本の信号線を使えば、1Byteの情報が一気に送れるわけですから。しかし、実際はそんなに簡単な話ではないのです。事実、コンピュータ間の通信のほとんどがシリアル通信です。パラレル通信にすると色々と厄介なことが起こって、通信速度があげられないのです。というわけで、ここでは、話をシリアル通信に限定します。 先ほど、シリアル通信は1本の信号線を使うと書きました。しかし、双方向の通信を考えた場合には、2本の信号線を使うことがあります。 半二重通信(half duplex communication): 双方向通信はできるが,ある瞬間には片方向への通信しかできない通信方式(糸電話やトランシーバのようなもの) 全二重通信(full duplex communication): 常に双方向に通信できる通信方式 このように、半二重通信であれば1本で良いのですが、全二重通信の場合には2本必要になります。この講義では全二重通信のみを考えますから、信号線は2本必要です。 一方のコンピュータが信号を送信する線(Tx)は、もう一方のコンピュータにとってみれば信号を受信する線(Rx)で、当然2本目の線はその逆ということになります。 Digital Signal デジタル信号の話は、これまでにも何回か出てきましたね。信号を構成する状態が2つしかないもののことです。電気的な信号の場合、電圧の変化を2状態に分けて考えます。つまり、HIGHとLOWを区別するために、ある基準となる電圧を定め、それ以上であればHIGH、それ未満であればLOWとするわけです。この基準を閾値(threshold)と呼びます。 通常、デジタル信号では、ある一定の時、間閾値を超える電圧がかかればHIGHで、ある一定の時間、閾値を下回る電圧しかかからなければLOWになります。この「ある一定の時間」というのが大切で、この時間の長さによって通信速度が変わります。もちろん、長くとれば通信速度は遅くなり、短くとれば通信速度は早くなります。それならば、短ければ短いほど良いように思えますよね。でも、短くすればするほどノイズと信号の差が判別しにくくなり、また、送受信するコンピュータも高速で動作しなければならなくなります。つまり、通信速度は、通信の信頼性とトレードオフの関係にあるわけです。 マイコンで使用するシリアル通信の場合、通信速度はbps(bit […]