一个运算器 包含这许许多多的运算方式,但输出只有一个 result 。
接下来我们就根据图来分析代码
*module* simple_alu(
*input* [11:0] alu_control, *//控制信号*
*input* [31:0] alu_src1, *//源操作数*
*input* [31:0] alu_src2, *//源操作数*
*output*[31:0] alu_result
);
*//定义操作变量*
*wire* op_add; *//加法操作*
*wire* op_sub; *//减法*
*wire* op_slt; *//有符号比较,小于置位 小于置位可以理解为小于取1*
*wire* op_sltu ; *//无符号比较 ,小于置位*
*wire* op_and;
*wire* op_nor; *//按位或非*
*wire* op_or;
*wire* op_xor; *//按位异或*
*wire* op_sll; *//逻辑左移*
*wire* op_srl; *//逻辑右移*
*wire* op_sra; *//算术右移*
*wire* op_lui; *//高位加载*
*//将控制信号赋值给操作变量*
*assign* op_add *=* alu_control[0];
*assign* op_sub *=* alu_control[1];
*assign* op_slt *=* alu_control[2];
*assign* op_sltu *=* alu_control[3];
*assign* op_and *=* alu_control[4];