题解 | 奇偶校验
`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
reg check_odd;
reg check_even;
always@(*) begin
check_odd <= ^bus; check_even <= ~(^bus);
end
assign check = (sel)? check_odd:check_even;
//*************code***********//
endmodule
Verilog 中,在变量的前面加 "^" 表示对一个的数据所有 bit 进行异或运算,如果变量包含 '1' 的个数为奇数,则异或的结果为 '1'。
奇偶校验其实就是数一个变量所有 bit 中 '1' 的个数,奇校验表示奇数个 '1' 时输出高电平,偶校验表示偶数个 '1' 时输出高电平。
