`timescale 1ns/1ns module huawei8//四位超前进位加法器 ( input wire [3:0]A, input wire [3:0]B, output wire [4:0]OUT ); //*************code***********// wire [3:0] G,P,F; wire [4:1] Ci; Add1 u0(A[0],B[0],1'b0,F[0],G[0],P[0]); Add1 u1(A[1],B[1],Ci[1],F[1],G[1],P[1]); Add1 u2(A[2],B[2],Ci[2],F[2],G[2],P[2]); Add1 u3(A[3],B[3],Ci[3],F[3],G[3],P[3]); CLA_4 U0(P,G,1'b0,Ci, ,); assign OUT={Ci[4],F}; //*************code***********// endmodule //////////////下面是两个子模块//////// module Add1 ( input a, input b, input C_in, output f, output g, output p ); assign p=a^b; assign g=a&b; assign f=a^b^C_in; 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]&Ci[1]; assign Ci[3]=G[2]|P[2]&Ci[2]; assign Ci[4]=G[3]|P[3]&Ci[3]; assign Gm=G[3]|P[3]&G[2]|P[2]&G[1]|P[3]&P[2]&P[1]&G[0]; assign Pm=P[3]&P[2]&P[1]&P[0]; endmodule
module texbench (); reg [3:0]A,B; wire [4:0]OUT; huawei8 INST( A, B, OUT ); initial begin A=0;B=0; #10 A=9;B=9; #2 A=1; #6 B=15; #3 A=15; #20 $finish; end endmodule
仿真结果如下: