题解 | #超前进位加法器#
超前进位加法器
https://www.nowcoder.com/practice/c4c6afdab9ce45a3a2279a98391686ca
`timescale 1ns/1ns module huawei8//四位超前进位加法器 ( input wire [3:0]A, input wire [3:0]B, output wire [4:0]OUT ); //*************code***********// wire [4:0] C; wire [3:0] G; wire [3:0] P; assign C[0] = 1'b0; assign C[1] = P[0] & C[0] | G[0]; assign C[2] = P[1] & C[1] | G[1]; assign C[3] = P[2] & C[2] | G[2]; assign C[4] = P[3] & C[3] | G[3]; genvar i; generate for(i = 0; i <= 3; i = i + 1) begin: loop Add1 Add1 ( .a(A[i]), .b(B[i]), .C_in(C[i]), .f(OUT[i]), .g(G[i]), .p(P[i]) ); end endgenerate assign OUT[4] = C[4]; //*************code***********// endmodule //////////////下面是两个子模块//////// module Add1 ( input a, input b, input C_in, output f, output g, output p ); assign g = a & b; assign p = a ^ b; assign f = a ^ b ^ C_in; endmodule