问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

半加器与全加器基础知识

创作时间:
作者:
@小白创作中心

半加器与全加器基础知识

引用
CSDN
1.
https://m.blog.csdn.net/2401_84617356/article/details/138234819

半加器

定义

半加器是一种不考虑进位的加法器,只有两个输入和两个输出:输入A和B,输出和数sum和进位cout。其真值表如下:

A
B
sum
cout
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1

关系表达式

  • sum = A ^ B
  • cout = A & B

电路设计

代码实现

module add_half(
   input                A   ,
   input                B   ,

   output	wire        S   ,
   output   wire        C   
);
assign S = A ^ B;
assign C = A & B;
endmodule

全加器

定义

全加器是在半加器的基础上引入一个进位输入,总共三个输入两个输出。其真值表如下:

A
B
cin
sum
cout
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1

关系表达式

  • sum = A ^ B ^ cin
  • cout = (A & B) | (A & cin) | (B & cin)

电路设计

代码实现

module add_full(
   input                A   ,
   input                B   ,
   input                Ci  , 
   output	wire        S   ,
   output   wire        Co   
);
    assign S = A ^ B ^ Ci;
    assign Co = A&B | A&Ci | B&Ci;
endmodule

两个半加器实现一个全加器

设计电路图

代码实现

`timescale 1ns/1ns
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 [1:0] s, c;
    
    add_half m1 (
        .A(A),
        .B(B),
        .S(s[0]),
        .C(c[0]));
    
    add_half m2 (
        .A(s[0]),
        .B(Ci),
        .S(s[1]),
        .C(c[1]));
    
    assign S = s[1];
    assign Co = c[0] | c[1];
endmodule
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号