`timescale 1ns/1ns module lca_4( input [3:0] A_in , input [3:0] B_in , input C_1 , output wire CO , output wire [3:0] S ); wire [3:0] CO_REG ; lca_1 lca_1_0( . A (A_in[0]) , . B (B_in[0]), . c_1 (C_1), . CO (CO_REG[0]), . S (S[0]) ); lca_1 lca_1_1( . A (A_in[1]) , . B (B_in[1]), . c_1 (CO_REG[0]), . CO (CO_REG[1]), . S (S[1]) ); lca_1 lca_1_2( . A (A_in[2]) , . B (B_in[2]), . c_1 (CO_REG[1]), . CO (CO_REG[2]), . S (S[2]) ); lca_1 lca_1_3( . A (A_in[3]) , . B (B_in[3]), . c_1 (CO_REG[2]), . CO (CO_REG[3]), . S (S[3]) ); assign CO = CO_REG[3]; endmodule module lca_1( input A , input B , input c_1 , output CO , output S ); wire P ; wire G ; assign P = A ^ B ; assign G = A & B ; assign CO= G | (P & c_1) ; assign S = P ^ c_1 ; endmodule
超前进位加法器 和普通加法器写法的不同之处在于,单bit加法器是如何构造的,不管多少位 ,例化方式都是一样的。