牛客VL6 Verliog入门 多功能数据处理器

该文描述了一个Verilog设计,根据select信号的值(0,1,2,3)对8bit有符号数a和b执行相应操作:输出a,输出b,a+b,a-b。设计中使用了case语句和枚举类型的两种方法来实现这个功能。
摘要由CSDN通过智能技术生成

题目描述:根据指示信号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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值