题解 | #串行进位加法器#

串行进位加法器

https://www.nowcoder.com/practice/83c5850805004b6d8c48742f582f304a

`timescale 1ns/1ns

module add_4(
   input         [3:0]  A   ,
   input         [3:0]  B   ,
   input                Ci  , 

   output	wire [3:0]  S   ,
   output   wire        Co   
);

wire [3:0]S1;
wire [3:0]S2;


add_full u1(
.A(A[0]),
.B(B[0]),
.Ci(Ci),
.S(S1[0]),
.Co(S2[0])
);


add_full u2(
.A(A[1]),
.B(B[1]),
.Ci(S2[0]),
.S(S1[1]),
.Co(S2[1])
);

add_full u3(
.A(A[2]),
.B(B[2]),
.Ci(S2[1]),
.S(S1[2]),
.Co(S2[2])
);

add_full u4(
.A(A[3]),
.B(B[3]),
.Ci(S2[2]),
.S(S1[3]),
.Co(S2[3])
);

assign S=S1;
assign Co=S2[3];





endmodule


module add_half(
   input                A   ,
   input                B   ,
 
   output	wire        S   ,
   output   wire        C   
);

assign S = A ^ B;
assign C = A & B;
endmodule

module add_full(
   input                A   ,
   input                B   ,
   input                Ci  , 

   output	wire        S   ,
   output   wire        Co   
);

wire S1;
wire S2;

add_half UUT(
.A(A),
.B(B),
.S(S1),
.C(S2)
);

assign S=S1^Ci;
assign Co=S2|(S1&Ci);

endmodule

多个全加器例化,没啥可说的

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务