【verilog_7】: 设计一个 32 位 ALU 支持加法、减法、与、或、异或、取非这六中运算

设计一个 32 位 ALU 支持加法、减法、与、或、异或、取非这六中运算

author : Mr.Mao
e-mail : 2458682080@qq.com

module ALU_32(
	input [31:0] data_a_in,
	input [31:0] data_b_in,
	input carry_in,
	input [3:0] op_code,
	output reg carry_out,
	output reg [31:0] result_out
);

	localparam	ADD = 0, SUB = 1, AND = 2, OR = 3, XOR = 4, NONA = 5, NONB = 6;
	
	always @ (op_code or data_a_in or data_b_in)
		case(op_code)
			ADD	:	{carry_out,result_out} <= data_a_in + data_b_in + carry_in;
			SUB	:	{carry_out,result_out} <= {data_a_in[31],data_a_in} - {data_b_in[31],data_b_in} - carry_in;
			AND	:	result_out <= data_a_in & data_b_in;
			OR		:	result_out <= data_a_in | data_b_in;			
			XOR	:	result_out <= data_a_in ^ data_b_in;
			NONA	:	result_out <= ~data_a_in;
			NONB	:	result_out <= ~data_b_in;
			default	:	result_out <= data_a_in;
		endcase

endmodule 
  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值