题解 | #超前进位加法器#

超前进位加法器

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务