奇偶校验位是在一串二进制码的最后添加的一位,它使得整个二进制的1的个数为奇数或者偶数。因此奇偶校验分为两种,奇校验和偶校验。
计算校验位需要对二进制码中的1进行计数。如果**1的数量为奇数,并且使用偶校验,则校验位为1,使得整体1的个数为偶数。如果1的数量为偶数,并且使用偶校验,则校验位为0,使得整体1的个数为偶数。**奇校验类似。奇偶校验位可以通过对所有的比特位进行异或得到。
例:计算二进制数111001的奇校验位
111001中1的个数为4个,所以校验位为1,带上校验位以后为1110011,1的个数为5,为奇数
Verilog如何实现奇偶校验
实现奇偶检验的算法就是:如果是偶校验,只要将该8位数据第一位和第二位进行异或,然后将得到的结果和第三位异或,依次下去,直到和第八位异或,这样得到的最后结果,就是偶校验位;如果是奇校验,将上面的偶校验位取反即可。下面的一段小程序就是实现该功能的代码。
module test
(
input [7:0] a,
output odd_bit,
output even_bit
);
assign odd_bit = ^a; //^a=a[0]^a[1]^a[2]^a[3]^a[4]^a[5]^a[6]^a[7]
assign even_bit = ~odd_bit;
endmodule
没有回复内容