题目描述:根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;当select信号为1,输出b;当select信号为2,输出a+b;当select信号为3,输出a-b.
接口信号图如下:

总结:两种方法,可以通过自己设计枚举类型变量进行多路选择 (题目testbench不支持这样的形式测试用例通过~嘿嘿嘿不过是个不错的方式);第二就是用一般的多路选择器进行选择case语句进行,本题的就类似与一个单刀四置的多路选择器。

核心代码如下:

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		c <= 0;
	end

	else begin
		case(select)
		2'b00:begin c <= a; end 
		2'b01:begin c <= b; end
		2'b10:begin c <= a+b; end
		2'b11:begin c <= a-b; end
		endcase
	end
end 

枚举方式的代码:

enum {ONE,TWO,THREE,FOUR) state_o;
stato_ c_out;

always@(posedge clk or negedge rst_n) begin
	if(!rst_n) begin
		c <= 0;
	end

	else begin
		case(c_out)
		ONE:begin c <= a; end 
		TWO:begin c <= b; end
		THREE:begin c <= a+b; end
		FOUR:begin c <= a-b; end
		endcase
	end
end 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐