📜  4 位二进制加减法器(1)

📅  最后修改于: 2023-12-03 14:59:05.299000             🧑  作者: Mango

4位二进制加减法器

简介

一个4位二进制加减法器是一种能够对两个4位二进制数进行加减运算的电路,它通常用于计算机中的算术逻辑单元(ALU)中。它由四个单独的1位全加器和一个选择器构成,能够对两个4位的二进制数进行加法或者减法的操作。

原理

4位二进制加减法器原理基于二进制的加减法规则。当两个二进制数进行加法时,每一位的结果只有两种可能性,0或者1;如果两个二进制数进行减法,则需要通过取反和加1的方式实现。在这个电路中,有一个选项信号用于选择是进行加法还是减法。

电路设计
单位全加器

4位二进制加减法器中,每个位需要使用一个全加器进行计算。全加器接收两个输入(用A和B表示),并产生两个输出(用S和C表示)。其中,S是对A和B进行加法得到的结果,C是对A和B进行加法时的进位。全加器的真值表如下所示:

| A | B | Cin | Cout | Sum | |---|---|-----|------|-----| | 0 | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | 1 | | 0 | 1 | 0 | 0 | 1 | | 0 | 1 | 1 | 1 | 0 | | 1 | 0 | 0 | 0 | 1 | | 1 | 0 | 1 | 1 | 0 | | 1 | 1 | 0 | 1 | 0 | | 1 | 1 | 1 | 1 | 1 |

module full_adder(A, B, Cin, Cout, Sum);
    input A, B, Cin;
    output Cout, Sum;
    wire s1, c1, c2;

    xor(s1, A, B);
    xor(Sum, s1, Cin);
    and(c1, s1, Cin);
    and(c2, A, B);
    or(Cout, c1, c2);
endmodule
4位加减法器

将四个1位全加器和一个选择器组合在一起就可以构成一个4位加减法器。

在这个电路中,选择器有两个输入,分别是选择信号Sel和进位借位信号Cin。选择器控制在进行加法或减法时输出的是1位全加器的S还是S的补码(S')。当进行加法时,Cin输入为0。当进行减法时,将Cin设置为1,并将B的输入取反加1(也就是B的补码)。这样就能够实现两个数的减法运算。

module four_bit_addsub(A, B, Sel, Cin, Cout, Sum);
    input [3:0] A, B;
    input Sel, Cin;
    output Cout;
    output [3:0] Sum;
    wire [3:0] s;
    wire c1, c2;

    full_adder fa1(A[0], ^B[0] + Sel, Cin, c1, s[0]);
    full_adder fa2(A[1], ^B[1] + Sel, c1, c2, s[1]);
    full_adder fa3(A[2], ^B[2] + Sel, c2, Cout, s[2]);
    full_adder fa4(A[3], ^B[3] + Sel, Cout, Cout, s[3]);

    assign Sum = s;
endmodule
总结

4位二进制加减法器是计算机中非常重要的一个模块,它能够对两个4位二进制数进行加减法运算。在实现这个电路时,需要使用单个1位全加器,并通过组合方式将它们连接起来。通过选择器的控制信号,可以实现对两个二进制数进行加法或减法的运算。