题解 | #超前进位加法器#
超前进位加法器
https://www.nowcoder.com/practice/c4c6afdab9ce45a3a2279a98391686ca
`timescale 1ns/1ns
//g = a&b,p = a^b,ci = gi-1 i ci-1 & pi-1
module huawei8//四位超前进位加法器
(
input wire [3:0]A,
input wire [3:0]B,
output wire [4:0]OUT
);
//*************code***********//
wire [4:1] c_i;
wire[4:0] co;
wire [3:0] sum;
wire [3:0] g;
wire [3:0] p;
assign co = {c_i,1'b0};
genvar i;
generate
for(i = 0;i<4;i=i+1)
begin:add_multi
Add1 add_inst(
.a(A[i]),
.b(B[i]),
.C_in(co[i]),
.f(sum[i]),
. g(g[i]),
. p(p[i])
);
end
endgenerate
CLA_4 CLA_4_INST(
.P (p),
.G (g),
.C_in (co[0]),
.Ci (c_i),
. Gm (),
. Pm()
);
//*************code***********//
assign OUT = {c_i[4],sum};
endmodule
//////////////下面是两个子模块////////
module Add1
(
input a,
input b,
input C_in,
output f,
output g,
output p
);
assign f = a^b^C_in;
assign g = a & b;
assign p = a ^ b;
endmodule
module CLA_4(
input [3:0]P,
input [3:0]G,
input C_in,
output [4:1]Ci,
output Gm,
output Pm
);
assign Ci[1] = G[0]|P[0]&C_in;
assign Ci[2] = G[1]|P[1]&(G[0]|P[0]&C_in);
assign Ci[3] = G[2]|P[2]&(G[1]|P[1]&(G[0]|P[0]&C_in));
assign Ci[4] = G[3]|P[3]&(G[2]|P[2]&(G[1]|P[1]&(G[0]|P[0]&C_in)));
endmodule
#超前进位加法器#
查看11道真题和解析

