// 因为受时钟控制,所以输出延迟输入一个clk,要有这个概念。 // // 编写乘法器求解 `timescale 1ns/1ns module calculation( input clk, input rst_n, input [3:0] a, input [3:0] b, output [8:0] c ); // 不要直接使用 * 符号实现乘法功能; reg [8:0] a_buf, b_buf; reg [8:0] c_buf; always@(posedge clk or negedge rst_n) begin if(!rst_n) begin a_buf <= 8'd0; b_buf <= 8'd0; c_buf <= 8'd0; end else begin a_buf <= (a << 3) + (a << 2); b_buf <= (b << 2) + b; c_buf <= a_buf + b_buf; end end assign c = c_buf; endmodule