题解 | #流水线乘法器#
流水线乘法器
https://www.nowcoder.com/practice/be97f63817c543fe9260d46d971a7283
`timescale 1ns/1ns
module multi_pipe#(
parameter size = 4
)(
input clk ,
input rst_n ,
input [size-1:0] mul_a ,
input [size-1:0] mul_b ,
output reg [size*2-1:0] mul_out
);
wire [size*2-1:0] mul_tmp [0:size-1];
genvar i;
generate
for(i=0;i<=size-1;i=i+1) begin:bit_shift
assign mul_tmp[i] = mul_b[i]?(mul_a<<i):'d0;
end
endgenerate
reg [size*2-1:0] add1, add2;
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
{add1,add2} <= 'd0;
mul_out <= 'd0;
end
else begin
add1 <= mul_tmp[0] + mul_tmp[1];
add2 <= mul_tmp[2] + mul_tmp[3];
mul_out <= add1 + add2;
end
end
endmodule
查看17道真题和解析
