一个字节一般有8bit,若是需要进行奇偶校验需要添加一个码元,所以发送接收时是8位数据位,一位校验位。
奇偶校验就是指每次发送接收的每一帧数据加上校验码之后1的个数是奇数还是偶数
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它是由n-1位信息元和1位校验元组成,可以表示成为(n,n-1)。如果是奇校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为奇数个;如果是偶校验码,在附加上一个校验元以后,码长为n的码字中“1”的个数为偶数个。设:如果一个偶校验码的码字用A=[an-1,an-2,…,a1,a0]表示
例:
1.偶校验码
8位数据位和1位校验位,共9个数据,其中1的个数必须为偶数
一般校验位可以由八位数据位按照二进制方式直接相加(不考虑进位)得到。
11001010的校验位a=(1+1+0+0+1+0+1+0)=0;
所以发送数据时为110010100.
2.奇校验码
8位数据位和1位校验位,共9个数据,其中1的个数必须为奇数
一般校验位可以由八位数据位直接相加取反(同样不考虑进位)。
11001010的校验位a=~(1+1+0+0+1+0+1+0)=1;
所以发送数据时为110010101.
在FPGA的verilog代码设计时,可以使用异或运算,将数据位进行异或运算之后,若是奇数个1,则其结果应该是1,若是偶数个1结果则结果是0;
若是偶校验方式,将每一位依次与0异或,保持。
若是奇校验方式,将每一位依次与1异或,取反。
最终得到校验码。