【ハンドシェイク通信とは?】
いきなり難解なことばですが、要は、握手をするようにして、2台の
装置間で通信を行うことをいいます。
この方法によると、2台の全く速度の異なる装置同士を接続しても、
速度の差を意識せずにパラレル通信でデータの送受信が出来ます。
では、実際のハンドシェイク通信はどのような手順で行われるので
しょうか?
これを図で表現すると下図のようになります。
図に従って手順を説明します。
図で青い線は送信側、緑の線は受信側の動作を示しています。
(1)まず、送信側は、データを出力してから、ストローブ信号をON
とします。(論理反転しているので、ONが「0」となる)
(2)受信側はストローブ信号がActiveになったことを検知したら、
ビジー信号をON(「0」)にして、すぐデータの入力を開始します。
(3)この間、送信側は、受信側からのビジー信号を検知したら、
ストローブ信号をOFF(「1」)とします。
(4)受信側では、データの入力が完了したら、送信側からの
ストローブ信号がOFFになったことを確認した後、ビジー信号
をOFFとして元に戻します。
(5)送信側は、受信側からのビジー信号がOFFになったことが確認
できた時点で、次のデータの送信に移ります。
これで一巡のデータ送信の完了です。
この手順に従えば、必ず相手の処理を待ってからしか先に進ま
ないので、互いの処理速度が大きく異なっていても、問題無く
送受信することが出来ます。
このように互いの状態をしっかりつかんで行う手順なので、握手
すなわちハンドシェイク通信と呼ばれます。
【注意事項】
このハンドシェイク通信で注意が必要なことがあります。
(1)送信の衝突
まず、ハンドシェイク通信の場合には、どちらも送信側になることが
出来、しかもいつそうなるか互いに相手のことが分からないですから、
場合によると同時に送信をしようとすることがあるかも知れません。
これが送信の衝突となります。
このような状態を避けるには、
a. 親と子の関係にする
つまり、親が常に子に対し、送れというコマンドを送ってからしか
子は送れないようにする方法です。
こうすれば衝突は無くせます。
どちらを親にするかは自由で、自分で決めれば良いことです。
普通は、この方法が簡単なので、この方法を取ります。
b.衝突が起きた時の再送までの時間に差を持たせる
送信のためストローブ信号を送ったあと、一定時間待ち、応答
(ビジー信号)が無いときには、2つの端末の間で、再度ストロ
ーブ信号を出すまでの時間に差を付け、次には絶対衝突しない
ようにする方法です。
(2)ストローブ、ビジー信号の最小パルス幅の保証
パソコンのプリンタインターフェースでは、ストローブ、ビジー信号
いずれも最小パルス幅が、0.5μsecでかつ、互いの間隔も同じ
0.5μsec以上という規定があります。
従って、これ以上短いパルスや間隔にならないようにする必要が
あります。
もっとも、プログラムの命令でパルスを作り出している場合には、
ほっておいても、必ず、このパルス幅以上になるので、気にしなく
ても大丈夫です。