Verilog语法学习——LV3_奇偶校验

LV3_奇偶校验

题目来源于牛客网

[牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1&tab=Verilog篇&topicId=301)

题目

题目描述:

现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验)

信号示意图:

Verilog语法学习——LV3_奇偶校验_第1张图片

波形示意图:

Verilog语法学习——LV3_奇偶校验_第2张图片

输入描述:

输入信号 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

你可能感兴趣的:(Verilog语法学习,学习,fpga开发)