什么是奇偶校验位,如何计算,如何用Verilog实现-Xilinx-AMD社区-FPGA CPLD-ChipDebug

什么是奇偶校验位,如何计算,如何用Verilog实现

奇偶校验位是在一串二进制码的最后添加的一位,它使得整个二进制的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
请登录后发表评论

    没有回复内容