奇偶校验的学习记录
简单理解就是,奇校验就是数据中1的个数是加上奇偶校验位位1,一共奇数个1;此时判断奇偶校验结果为正确;
如数据是10101010共8位有4个1,加上奇校验位是1,一共奇数个1,此时奇偶校验判断结果输出为0,即奇偶校验输出没问题。
偶校验一样。
`timescale 1ns/1ns module odd_sel( input [31:0] bus, input sel, output check ); reg check; //*************code***********// wire reg_check; assign reg_check = ^bus; // assign check = sel?reg_check:~reg_check; always@(*) begin if (sel==1'b1) check = reg_check; else check = ~reg_check; end //*************code***********// endmodule
知识点:
- 判断数据中有奇数个1还是偶数个1,用异或。如进入的数据data_in=8'b0101_0101;
r_check = ^data_in = data_in[7]^data_in[6]^data_in[5]^data_in[4]^data_in[3]^data_in[2]^data_in[1]^data_in[0]
结果为1,则有奇数个1;
结果为0,则有偶数个1;
- 判断数据中是否有1,用与逻辑;
有1,相与后结果为1;否则为0
- 判断数据中是否有0,用或逻辑;
有0,相与后结果为0;否则为1