mul.v

来自「使用verilog作为CPU设计语言实现单数据通路五级流水线的CPU。具有32个」· Verilog 代码 · 共 52 行

V
52
字号
module mul (opa,opb,out);
input [31:0]opa,opb;
output[31:0]out;

wire [31:0]opa,opb;
wire [31:0]out;

wire sign;
wire [7:0]expout;
wire [22:0]tail23;
wire [23:0]tail24;

wire sign_1;                
wire [7:0]expout_1;
wire [22:0]tail23_1;
wire [23:0]tail24_1;
wire [7:0]expa;
wire [7:0]expb;
wire signa;
wire signb;
wire [22:0]a23;
wire [23:0]a24;
wire [22:0]b23;
wire [23:0]b24;

assign expa=opa[30:23];
assign expb=opb[30:23];
assign signa=opa[31];
assign signb=opb[31];
assign a23=opa[22:0];
assign b23=opb[22:0];
assign a24={1'b1,a23};
assign b24={1'b1,b23};

assign sign=signa^signb; //00->0 11->0

wire [47:0]temptail;
assign temptail=a24*b24;//24 位的数相乘得到的是48 位数,或47位

wire [22:0]temp_final_tail;
assign temp_final_tail=temptail[47]?temptail[46:24]:temptail[45:23];
//考察有无进位,注意隐藏位
assign expout=temptail[47]?expa+expb-126:expa+expb-127;
wire [31:0]out_temp;
assign out_temp={sign,expout,temp_final_tail}; 

/*zero */
wire zero;
assign zero=((opa==32'b0)|(opb==32'b0));//有无0的数
assign out= (zero?32'b0:out_temp);

endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?