解题思路
题目中是4bit*4bit,相乘的基本原理如下:
流水线的思路是:
temp的值用组合逻辑直接产生。然后用到三个加法器:
第1个cycle:分别计算adder01 <= temp0 + temp1和adder23 <= temp2 + temp3;
第2个cycle:计算结果mul_out <= adder01 + adder23。
代码参考
`timescale 1ns/1ns
module multi_pipe(
input wire clk ,
input wire rst_n ,
input wire [3:0] mul_a ,
input wire [3:0] mul_b ,
output reg [7:0] mul_out
);
wire [7:0] temp [3:0];
reg [7:0] adder01, adder23;
genvar i;
generate
for(i = 0; i < 4; i = i + 1) begin : loop
assign temp[i] = mul_b[i] ? mul_a << i : 8'b0;
end
endgenerate
always@(posedge clk or negedge rst_n) begin
if(rst_n == 1'b0) begin
adder01 <= 8'b0;
adder23 <= 8'b0;
mul_out <= 8'b0;
end
else begin
adder01 <= temp[0] + temp[1];
adder23 <= temp[2] + temp[3];
mul_out <= adder01 + adder23;
end
end
endmodule
京公网安备 11010502036488号