题目描述:现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验)
信号示意图:
解题重点:
明确奇偶校验位的计算过程。
奇校验位:就是完整编码中1的个数为奇数个;
偶校验位:就是完整编码中1的个数为偶数个
比如:输入的数据为0000011;此时它的1的个数为偶数个,那么奇校验位为1.偶校验位为0.
有关于Verilog中的奇偶校验的实现,我们采用对输入数据进行按位异或的方式实现,本题中按照:^d 如果数据位中1的个数为奇数个,那么,奇校验位为0,偶校验位为1。
代码实现:
wire odd;
assign odd = ^^bus;
assign check = sel?odd:~odd;