奇偶校验及其在UART中的应用

目录

 

一、奇偶校验概念

二、奇偶校验在UART中的使用

偶校验:

奇校验:

三、参考文献


一、奇偶校验概念

奇偶校验(Parity Check)是一种根据被传输的一组二进制数中"1"的个数是奇数还是偶数来校验数据传输正确性的方法。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组数据和奇偶校验位中"1"的个数为奇数或偶数。

奇校验:让传输数据(包含校验位)中1的个数为奇数。即:如果传输字节中1的个数是偶数,则校验位为“1”,奇数相反。数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为奇数则校验通过,表示此次传输过程未发生错误。如果不是奇数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。

偶校验:让传输数据(包含校验位)中1的个数为偶数。即:如果传输字节中1的个数是偶数,则校验位为“0”,奇数相反。数据和校验位发送给接受方后,接收方再次对数据中1的个数进行计算,如果为偶数则校验通过,表示此次传输过程未发生错误。如果不是偶数,则表示有错误发生,此时接收方可以向发送方发送请求,要求重新发送一遍数据。

优缺点:

  •   奇偶校验的检错率只有50%,因为只有奇数个数据位发生变化能检测到,如果偶数个数据位发生变化则难以发现;
  •   奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。
  •   奇偶校验只能发现错误,但不能纠正错误。

二、奇偶校验在UART中的使用

偶校验:

paritymode = 0;
presult = paritymode ^ data[0];
presult = paritymode ^ data[1];
……
presult = paritymode ^ data[7];

本质:偶校验时,奇偶校验位应该使得传输数据中1的个数为偶数个。

代码:paritymode = 0,则数据中1为奇数时,presult = 1;数据中1为偶数时,presult = 0;即实现了偶校验的功能,presult 即为奇偶校验位;

奇校验:

paritymode = 1;
presult = paritymode ^ data[0];
presult = paritymode ^ data[1];
……
presult = paritymode ^ data[7];

本质:奇校验时,奇偶校验位应该使得传输数据中1的个数为奇数个。

代码:paritymode = 1,则数据中1为奇数时,presult = 0;数据中1为偶数时,presult = 1;即实现了奇校验的功能,presult 即为奇偶校验位;

三、参考文献

奇偶校验的概念

黑金Sparten6开发板AX309 Verilog教程V3.2——黑金动力社区

 

你可能感兴趣的:(FPGA项目实战,FPGA面试专题,FPGA/Verilog基础)