8

多くの非同期通信では、パケットはスタート ビットから始まることを知っています。

しかし、スタート ビットは 1 または 0 にすぎません。スタート ビットと最後のパケットのエンド ビットをどのように区別しますか?

元。開始ビットを 0 に、終了ビットを 1 に選択し、0 (データ ストリーム A) 1 0 (データ ストリーム B) 1 を受信した場合、次を含むデータ ストリーム C があると仮定するのを止めるものは何ですか? 「(データストリームA)1 0(データストリームB)」と同じ内容?

開始 BYTE を用意してから、そのビットの組み合わせについてデータ ストリームをチェックする方が便利ではないでしょうか? これにより、開始ビットと終了ビットの間で混乱が生じる可能性が減少します。

4

5 に答える 5

9

素晴らしい質問です!ほとんどの非同期通信は、スタート ビットの補数であるストップビットも指定し、新しい各シンボルがストップからスタートへの遷移で開始されるようにします。

ABC例: ASCII 65、66、および 67 である文字を送信しましょう。

A = 65 = 0x41 = 0100 0001
B = 66 = 0x42 = 0100 0010
C = 67 = 0x43 = 0100 0011

また、(任意に) スタート ビットが0でストップ ビットが1であり、データが MSB から LSB に送信されると仮定します。データが送信されていない場合、送信機は停止 ( 1) 状態になります。したがって、受信者はこれを見るかもしれません:

Data:   ....1111 0010000011 111 0010000101 0010000111 11111....
         (quiet) ^   A    $     ^    B   $ ^    C   $ (quiet)

ASCII グラフィックで申し訳ありませんが1、チャネルがアイドル状態の間、データは一連のストップ ( ) ビットで構成されます。送信機が文字を送信する準備ができると、開始 ( 0) ビット ( でマーク)を送信し^、その後に文字コードを送信し、最後に停止 ( 1) ビット ( でマーク)を送信し$ます。次の文字が送信されるまでストップ ビットを送信し続け、別のスタート ビットから開始します。

バイトの代わりにスタートビットを使用する理由は効率です。上記のスキームでは、8 ビットのデータを送信するために 10 ビット (1開始+ 8データ+ 1停止) が必要であり、(10 - 8) / 8 = 1/4 = 25%のオーバーヘッドが生じます。開始バイトと停止バイトを使用した場合、データのバイトごとに 3 バイトを送信する必要があり、(3 - 1)/1 = 2 = 200% のオーバーヘッドになります。開始、データ、および停止バイトがそれぞれ 8 ビットである場合、各文字に対して 10 ビットではなく 24 ビットを送信する必要があるため、データの送信にはほぼ 2 1/2 の時間がかかります!

于 2008-11-09T03:16:11.357 に答える
1

メッセージが開始されたことを示すものとして開始バイトをいつでも定義できます (ASCII SOH、STX、および ETX コードはそのような目的のために意図されていました)。ただし、データ伝送機器 (RS232C 以降) に接続するための標準的なハードウェアとプロトコルは、より低いレベルで動作し、一般にその配置を (特にソフトウェアを介して) 変更することは不可能であり、望ましくもありません。

ローカル エリア ネットワークや広域伝送システムで使用されるような高性能同期データ伝送方式では、精巧なフレーム マーカーが使用されます。フレーム マーカーは、メッセージ データのストリーム内で決して発生しないビットの明確なパターンです。通常、送信機器がそれをフレーム マーカーとして認識しないように、同様のビット パターンのデータ内発生を本質的に「エスケープ」する特別な書き換え規則があります。これらのエスケープされたパターンは受信者によって再構築されるため、送信者と受信者はこれに注意を払う必要はありません。これらの配置により、パーソナル コンピュータの典型的なネットワーク インターフェイス カード (最近ではマザーボード チップ) など、特殊なハードウェアがさらに重要になります。

非同期シリアル通信の背景

非同期シリアル伝送は、文字/データ フレーム間では非同期であり、文字フレームのスパン内 (スタート ビットと初期ストップ/フィルを含む) では同期であると考えると便利です。

この方式では、フレーム間に一定のフィル信号があり、通常は少なくとも 1 データ ビット幅ですが、1.5 ビットまたは 2 ビットのストップ/フィルが必要な構成もあります。ストップ「ビット」は同じ信号レベルを使用し、別のスタート ビットが到着するまでの最小フィル期間と見なすことができます。

フレームが到着するとき、それが運ぶと予想される所定のビット数と同期する必要があります。フィル信号から逆レベル信号への遷移は、ストップ/フィル レベルとは常に反対のスタート ビットによって行われます。ビットのサンプリングは、後続のビット到着期間の途中で発生するようにタイミングを合わせることができます。

技術的には、フレームが最大レートで送信されている場合、ストップ/フィルを送信する必要はなく、すぐに次のフレームの開始ビットに進みます。ただし、開始ビット遷移の前に少なくとも 1 ビット相当のフィルを期待すると、送信側と受信側の同期を維持するのに役立ちます。

非同期ストリームがキーボードを使用したキー押下からエンコードされると考えると、文字フレーム間の任意の塗りつぶしを許可することの重要性がわかります。次にどのフレームを送信するかがわかると、少なくとも 1 ビット分の先行ストップ/フィルがあった後、合意されたビット レートで開始ビットを使用して直ちに挿入できます。

また、典型的な低速非同期伝送では、2 種類のビット/レベルしかないことに注意してください。そのため、フィルではなくデータの存在を区別できる唯一の方法は、フレームの開始は一意に検出可能であり、フレームの終了は事前に決定されています (一般に非同期シリアル通信で使用されない、より洗練された可変長フレーム構造がない限り)。受信機が送信機のビットレートを追加の合意なしに発見することは、実際にはかなり困難です。たとえば、ビットレートを推定できる認識可能なデータシーケンスを探すなど、誤った形式で到着した場合に正しく到着することになります。

現在、高速モデムは 2 つの単純な信号レベルで説明されていない複雑なアナログ信号を送信していますが、コンピュータの UART とモデムのデータ結合の間の RS232C (およびそれ以降のモード) デジタル通信は、ほぼ説明どおりです。 .

高速モデムには、接続の開始時に信号オーディオを聞くことでわかるように、離れたエンドポイントと同期するための追加機能もあります。さらに、コンピューターとモデムの間のペーシングに使用されるコンピューターへのシリアル ケーブルには別個の信号線があり、送信側が新しいデータ フレームを受信側 (コンピューターまたはモデム) が受け入れるよりも速く送信しないようにします。彼ら。ただし、フレームが開始されると、常に合意された同期速度で開始されます。

ウィキペディアには、コンピューターのシリアルポートが使用する 非同期シリアル通信の詳細な説明があります。

ストップ ビットがデータの長さを決定することを示唆する一般的な過度の単純化があります。そうではありません。ストップ ビットは、別のデータ ビットのレベルのように見えます。ストップ ビットと次のスタート ビットまでの期間を認識する方法は、フレーム内データとスタート/ストップ ビットが送信されるビット レートと、フレームに含まれるビット数を知ることです。そうしないと、データ フレームの一部としてストップ ビットをその極性の別のビットと区別する方法がありません。

于 2008-11-09T23:15:49.297 に答える
0

スタート ビットとストップ ビットの通常の動作は次のとおりです。

  1. 開始ビットが送信されます (たとえば 1)。これは、指定された数のデータ ビット (たとえば 8) が送信されることを受信側に示します。
  2. 8 ビットのデータが送信されます。
  3. ストップ ビット、たとえば 0 が送信されます。これは、8 ビットのデータが送信されたことを示します。

さらにデータを送信する場合は、各バイトを開始ビットで開始し、停止ビットで終了する必要があります。トランスミッタとレシーバは、レシーバがデータからストップ ビットを区別できるように、各スタート ビットに対して送信されるデータのビット数について合意する必要があります。開始ビットが実際には複数のビットまたは 1 バイトである場合もありますが、考え方は同じです。レシーバは、事前に指定された数のデータ ビットを受信した後、ストップ ビットを確認すると、データ フレームの終了を認識します。単純なエラー検出メカニズムを提供するために、ストップ ビットの前にパリティ ビットが送信されることがあります。

于 2008-11-09T03:19:27.527 に答える
0

それはすべてプロトコルに依存します。スタート シンボルの後に N 個のシンボルを期待するか、ストップ シンボルに遭遇するまで読むと言うことができます。

ここで、シンボルは任意の n ビット シーケンス (ビットとバイトを含む) にすることができます。

実際、ビットを使用した例は、ビットの代わりにバイトを使用するプロトコルに正確に適用されます。

00000000 ストリーム A 11111111 00000000 ストリーム B 11111111 を送信するとします。この場合、ストリーム C = ストリーム A 11111111 00000000 ストリーム B と混同する可能性があります。

通常、電圧レベルの変化がイベントをトリガーできるため、スタート ビットが使用されます (フリップフロップのエッジ トリガーを参照してください)。 一方、複数のビットを持つスタート シンボルは、イベントのトリガーに加えて、2 つのシステムのクロックを同期するために使用されます。その一例が PAL 信号です。

于 2008-11-09T03:21:37.773 に答える
-2

スタート ビットとストップ ビットは、テレタイプの時代に由来します。それらは基本的に、機械的なハードウェアを設定するのに時間がかかるパルスでした。Dos テキスト ファイルの行は CR LF で終了します。これにより、文字列が 1 桁目に戻り、プラテンが 1 行進みます。CRが発生するのに時間がかかり、LFが効果的に並行して発生する可能性があるため、順序が正しいと思います。

それを検出するのは少し難しいです。ビットストリームが通り過ぎるのを見る必要があります。データは通常、開始/停止ビットで囲まれた ASCII であるため、時間の経過とともにそれを検出できるはずです。通常、 COMポートを実行するUARTによって処理されるため、これは問題になりません。

于 2008-11-09T03:21:46.510 に答える