题解 | 编写乘法器求解算法表达式
编写乘法器求解算法表达式
https://www.nowcoder.com/practice/c414335a34b842aeb9960acfe5fc879f
`timescale 1ns/1ns
module calculation(
input clk,
input rst_n,
input [3:0] a,
input [3:0] b,
output [8:0] c
);
//c=12*a+5*b=8a+4a+4b+b
reg [8:0] a1,b1,c1;
// assign a1={5'b0,a};
// assign b1={5'b0,b};
// assign c= (a1<<3)+(a1<<2)+(b1<<2)+b;
always@(posedge clk or negedge rst_n)
if(!rst_n) begin
a1 <= 0;
b1 <= 0;
c1 <= 0;
end
else begin
a1 <= (a<<3)+(a<<2);
b1 <= (b<<2)+b;
c1 <= a1+b1;
end
assign c = c1;
endmodule
其实用组合逻辑可以直接出的。但是答案又打了几拍,只能用时序逻辑打个拍才能过


