2020年04月07日 | 更新。 |
調歩同期とは、シリアル通信において、信号線の他に同期用のクロック信号線を設けず、1ワードの情報を送信する際に、送信するワードの前にスタートビット、後にストップビットと呼ばれる同期用の信号を付加する事により、受信側の同期を取る方式の事です。
ほとんどのマイコンには、UARTという、調歩同期通信用の周辺回路が搭載されています。信号線が少なく、動作が単純なので、組み込み機器ではクロック同期方式より調歩同期方式の通信の方ががよく使われます。
以下、真理値(論理値)1が高い電圧(H)に、真理値0が低い電圧(L)に対応するもの(正論理)として、調歩同期の説明をします。
調歩同期においては、1本の信号線のみで、信号を送信します。信号電圧の例を図1に示します。
この図では、パリティビットがなし、ストップビット長が1ビット、ワード長が8ビット、送信するワードが01001001の場合について図示しています。
LSBから順にデータを送信しているので、信号線上に現れる情報は、10010010と、ビット逆順になっている事に注意が必要です。
この例では、1000bpsの通信速度で、01001001という1ワードの情報を送っています。
bpsはbit per secondの略で、毎秒何ビットの情報を送るかという、通信速度の単位です。図1の例では1000bpsですから、1秒間に1000ビットの割合で信号を送ります。言い換えるなら、1ビット送るのに必要な時間は1/1000秒、すなわち1msとなります。
ワードは通信を行う場合に、まとめて送信する情報の単位です。調歩同期のシリアル通信では1ワードを7ビットまたは8ビットに設定する事が多いです。図1の例では、1ワードは8ビットに設定されています。
調歩同期においては、情報を送信していない期間は、信号線に1を送り続けます。図1においては、0~4msの期間と、14ms以降の期間がそれに相当します。
通信を開始するにあたっては、1ビットだけ0を送信します。このビットを、スタートビットといいます。図1においては、4~5msの期間がスタートビットになります。
スタートビットに続いて、1ワードの情報を送信します。図1の例では、5~13msの期間に、10010010と、8ビットの情報を送信しています。
なお、UARTを使う場合、通常はLSBから順にデータを送信します。そのため、01001001というデータを送信したい場合、信号線には10010010と、ビット逆順でデータを送信します。
参考:LSBから順にデータを送信するか、MSBから順にデータを送信するかを選択できるUARTも多いですが、実際には後者を選択してUARTを使う事はほとんどありません。
1ワードの情報を送信し終わった後に、1ビットだけ1を送信します。これがストップビットです。図1の例では13~14msの期間がストップビットになります。
注:ストップビットの長さは、1.5ビットや2ビットに設定する事があります。
図1では、14ms以降には通信を行っていないので、1を送信しています。
図1の例では示しませんでしたが、送信する信号とストップビットの間にパリティビットと呼ばれる誤り検査符号を挿入し、通信エラーを検出できるようにする場合もあります。
それでは、図1の様な波形を受け取った場合、受信側の機器で、どのように情報を読み取るのかを説明しましょう。
図2は、調歩同期で受信側の機器が行う処理を説明した図です。
受信側の機器では、まず信号が1から0に変化するのを検出するまで、待機します。
時刻4msにおいて、信号が1から0に変わりますから、これを検出して、受信動作に入ります。受信機器は、このタイミングを基準に、時間を計測し始めます。
受信開始から、1.5ビット、2.5ビット、3.5ビット、4.5ビット、5.5ビット、6.5ビット、7.5ビット、および8.5ビットの時間が経過した時点で、信号電圧を確認し、その時の信号を受信信号とします。図2では、10010010が受信されます。
受信開始後9ビットの時間が経過した後、再び1から0の変化を検出するまで待機します。
この様に、受信開始から半整数(小数点以下が.5の数)のビット数だけ時間が経過した時点での信号電圧を確認することで、送信されたビットの中央での電圧を確認できます。電圧を、ビットの境目付近で検出すると、通信経路での過渡応答の影響を受けて電圧が安定しないために、エラーが発生しやすくなります。(図3参照)
調歩同期では、受信側の機器に、受信開始からの経過時間を計測するための、周波数が正確なクロック信号が必要となります。クロック周波数は、一般にはbps単位で表わした通信速度の偶数倍(8倍程度の事が多い)の周波数に設定する場合が多いです。図1や図2の例だと1000bpsで通信しているため、8倍で8kHzのクロックを使う事になります。クロックの周波数の精度は、悪くとも2%程度以内に収まるようにしないと、正確な受信が行えません。
図2では、ビットの中央の1点の電圧で受信する信号を決めていましたが、機器によっては、ビット中央付近で複数回の電圧の確認を行い、多数決を取って受信信号を決める場合があります。この様にすることで、信号に突発的なノイズが乗っても、ノイズに影響されにくくなります。
クロック同期と比較すると、調歩同期には次のような特徴があります。