LV3_奇偶校验
题目来源于牛客网
[牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1&tab=Verilog篇&topicId=301)
题目
题目描述:
现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验)
信号示意图:
波形示意图:
输入描述:
输入信号 bus sel
类型 wire
输出描述:
输出信号 check
类型 wire
代码
/*现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果
(1输出奇校验,0输出偶校验)*/
`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
reg flag,result;
integer i;
always @(*) begin
if(sel) begin //奇校验,二进制中1的个数为奇数个
flag = bus[0];
for(i=1;i<32;i=i+1)begin
flag = flag ^ bus[i]; //将bus的32位按位异或,flag=1,则为奇数个1
end
if(flag == 1) result = 1;
else result =0;
end
else begin //偶校验
flag = bus[0];
for(i=1;i<32;i=i+1)begin
flag = flag ^ bus[i]; //将bus的32位按位异或,flag=1,则为奇数个1
end
if(flag == 1) result = 0;
else result =1;
end
end
assign check = result;
//*************code***********//
endmodule