0

示されているコードのように、

s = serial('COM3','BaudRate',115200, 'Parity', 'odd','DataBits',8,'StopBits',1);
fopen(s);

Matlabのシリアルポート通信にパリティチェック機能を追加しました。FPGA ボードにデータを送信するためのシリアル ポートを作成します。FPGA ボードに 8 ビットのデータに対して XOR 演算を行うコードを記述し、その結果が正しいかどうかをパリティ ビットにチェックします。問題は、パリティ チェック エラーが存在する場合、FPGA ボードがシリアル ポートにデータの再送信をどのように要求するかということです。FPGAに必要な設定はありますか?

4

1 に答える 1

0

標準 UART 通信 (RS232 で使用される) には、内部 ACK (確認応答) および NACK (非確認応答) 機能がありません。送信機にデータを再送信させたい場合は、自分でプロトコルを定義し、それを送信機と受信機の両方にプログラムする必要があります。

ただし、それを行う前に、実装がかなり複雑になる可能性があるため、再送信機能が本当に必要かどうかを確認してください。あなたのアプリケーション(何をしようとしているのか、セットアップは何なのか)について詳しく説明していただければ、その件についてさらに相談することができます。自問する必要がある質問:

  1. 物理層: エラーが発生するのはなぜですか? どのくらいの頻度で?データ レートを下げると、エラーが少なくなりますか?
  2. データ処理: すべてのデータを受け取る必要がありますか? 再送信する代わりに、データを複数回送信して多数決を取る方がよいかもしれません。
  3. データの正確性: データが有効であることをどの程度確認する必要がありますか? 「2 つの間違いが正しいことを示す」ため、パリティ チェックはそれほど適切ではありません。回答によっては、より高度なエラー検出 (+ 正確性) メカニズムを実装する必要がある場合があります。
  4. スループットとレイテンシ: チャネル使用率の要件は?

また、参照してください: https://electronics.stackexchange.com/questions/29134/handling-of-uart-errors

于 2016-06-19T08:43:08.463 に答える