0

如代码所示,

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

我在Matlab的串口通信中添加了奇偶校验功能。我创建了串行端口以将数据发送到 FPGA 板。在 FPGA 板上,我编写了一个代码对 8 位数据进行异或运算,并检查结果对奇偶校验位是否正确。问题是如果奇偶校验错误存在,FPGA板如何要求串口重传数据?FPGA有什么必要的设置吗?

4

1 回答 1

0

标准 UART 通信(由 RS232 使用)没有内部 ACK(已确认)和 NACK(未确认)功能。如果您希望发送器重新发送数据,您必须自己定义协议并将其编程到发送器和接收器。

但是,在您这样做之前,请确保您确实需要重新传输功能,因为实现起来可能相当复杂。如果您详细说明您的应用程序(您要做什么,以及设置是什么),我可以就此事进一步咨询。你需要问自己的问题:

  1. 物理层:为什么会收到错误?多常?如果您降低数据速率,您会收到更少的错误吗?
  2. 数据处理:您必须接收所有数据吗?与其重新传输,不如多次发送数据并获得多数票。
  3. 数据正确性:您需要在多大程度上确定数据是有效的?奇偶校验不是那么好,因为“两个错误可以成为一个正确”。根据您的答案,您可能需要实施更高的错误检测(+正确性)机制。
  4. 吞吐量和延迟:对通道利用率有什么要求?

另请参阅: https ://electronics.stackexchange.com/questions/29134/handling-of-uart-errors

于 2016-06-19T08:43:08.463 回答