题解 | #奇偶校验#
奇偶校验
http://www.nowcoder.com/practice/67d4dd382bb44c559a1d0a023857a7a6
作者:FPGA探索者
链接:https://www.nowcoder.com/discuss/936631?source_id=profile_create_nctrack&channel=-1
来源:牛客网
来源:牛客网
1. 解析
1.1 奇偶校验
通常所说的奇偶校验:
奇校验:对输入数据添加1位0或者1,使得添加后的数包含奇数个1;
比如100,有奇数个1,那么奇校验结果就是0,这样补完0以后还是奇数个1;
奇校验:对输入数据添加1位0或者1,使得添加后的数包含偶数个1;
回到这个题目,应该是出题人搞反了,按照出题的意思,应该不能叫奇偶校验,应该是叫奇偶检测:
奇检测:输入的数据里有奇数个1就输出1;
偶检测:输入的数据里有偶数个1就输出1;
1.2 单目运算符
2. 代码
`timescale 1ns/1ns module odd_sel( input [31:0] bus, input sel, output check ); //*************code***********// wire check_tmp; // 单目运算符 assign check_tmp = ^bus; // assign check = (sel == 1'b1) ? check_tmp : ~check_tmp; reg check_reg; always @ (*) begin if(sel) begin check_reg = check_tmp; end else begin check_reg = ~check_tmp; end end assign check = check_reg; //*************code***********// endmodule