1. 全加器(full_adder):是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器,一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。
(1) 一位全加器的真值表如下:假设Ai,Bi,Ci-1是输入信号,s1和c1是输出信号,并且有Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci
根据真值表可以看到:一位全加器的表达式如下:
Si=Ai⊕Bi⊕Ci-1
也可以用一个异或门来代替或门对其中两个输入信号求和:
也是可以这么来理解的:
sum = ~a&~b&cin + ~a&b&~cin + ~b&a&~cin + a&b&cin = a^b^cin
cout = ~a&b&c + ~b&a&c + ~c&a&b + a&b&c = (a&b)|(a&cin)|(b&cin)
(其中a,b,cin是输入信号,sum和cout分别是求和和进位)
(2) 现在我们还是分三种描述方式来进行说明:
① 结构化描述方式(创建工程的名称是full_add):
创建的仿真文件和测试文件分别是full_add1和full_adder1
现在我们一起看一下这个仿真w文件的代码吧:
//结构化描述方式
module full_add1
(
input a,b,cin,
output sum,cout
);
wire s1,m1,m2,m3;//这个还是表示线网型的
xor(s1,a,b);//s1 = a^b,接着sum = s1^cin
xor(sum,s1,cin);
and(m1,a,b);//这个是m1 = a&b,下面的是