Verilog -7到7的加、减、与、异或四种运算功能的运算器设计的代码是怎样设计的呢?Verilog -7到7的加、减、与、异或四种运算功能的运算器设计的代码是怎样设计的呢?这代码实在不会,求大神指点。
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;
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;
default : result_out <= data_a_in;
endcase
endmodule
localparam 表示运算类型(0-加法、1-减法、2-与、3-或、4异或、5取非)
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;
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;
default : result_out <= data_a_in;
endcase
endmodule
Verilog是什么软件
没跑起来