verilog题解 | 奇偶校验
奇偶校验
https://www.nowcoder.com/practice/67d4dd382bb44c559a1d0a023857a7a6
`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
//1. 缩减运算符的使用:
// a = &b 用来检测b的每一位是否全为1
// a = |b 用来检测b的每一位是否全为0
// a = ^b 对b生成奇偶校验位,奇数个1则输出1,偶数个1则输出0
//2. 波形示意图显示:bus=0时,有0个1,则check本应该输出0,但check输出了1,则可推出,sel为0时,check要与检测结果相反;
// bus=1时,有1个1,则check本应该输出1,且此时sel为1,则check直接输出1;。。。
//3. 所有使用assign语句赋值的变量都应该是wire类型。
wire check_tmp;
assign check_tmp = ^bus;
assign check = sel?check_tmp:~check_tmp;
//*************code***********//
endmodule
1. 缩减运算符的使用:
·a = &b 用来检测b的每一位是否全为1
·a = |b 用来检测b的每一位是否全为0
·a = ^b 对b生成奇偶校验位,奇数个1则输出1,偶数个1则输出0
2. 波形示意图显示:bus=0时,有0个1,则check本应该输出0,但check输出了1,则可推出,sel为0时,check要与检测结果相反;bus=1时,有1个1,则check本应该输出1,且此时sel为1,则check直接输出1;。。。
3. 所有使用assign语句赋值的变量都应该是wire类型。
查看17道真题和解析
