目录
一.实现
1.下载安装Logsim 数字逻辑仿真软件。 2.在Logsim中设计一个1bit半加器电路,确保运算测试正确后,保存为子电路,文件名为half_adder. 3.在完成1bit半加器电路基础上,实现一个1bit全加器电路,保存为子电路,文件名为full_adder. 4.理解全加器和二进制补码的原理,用Logsim设计实现一个4位二进制数的补码器电路,要求:当输入一个4位二进制数后,补码电路将输出对应的4位二进制补码。
二.补码的原理
-
正数与原码相同;
-
负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。 同一个数字在不同的补码表示形式中是不同的。比如10进制数值-15的二进制原码是10001111,其补码在8位二进制中是11110001,然而在16位二进制补码表示中,不足位数要用符号位补全,也就是1111111111110001。
三.步骤解释
因为正数和负数的补码运算规则不一样,取决与输入二进制数的最高位(符号位)。从简单入手,你可以先只考虑输入为负数情况的补码运算。 补码运算中有一个加1运算,需要用全加器实现。 4位全加器可以用4个1位(bit)全加器级联得到。
当你的负数补码器电路设计完成后,你可以在输入端口中输入任意一个4位的原码,仿真器会自动将原码转换成补码,并输出到输出端口中。例如,如果输入端口中输入了原码1010,输出端口中将会输出补码1110。
然后,你再继续考虑输入即有正数又可能是负数的情况下,如何完善补码器电路。
半加器
半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。
真值表
被加数A | 被加数B | 和sum | 进位c |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
逻辑表达式
根据上述的真值表,当A和B相同时SUM为0,否则为1;逻辑关系属于异或;当A和B同时为1时,C等于1,其余都为零,逻辑关系为与。 所以我们可以得到如下的逻辑表达式: 根据上述的真值表,当A和B相同时SUM为0,否则为1;逻辑关系属于异或;当A和B同时为1时,C等于1,其余都为零,逻辑关系为与。 所以我们可以得到如下的逻辑表达式:
逻辑电路图
全加器
全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。
真值表
被加数Ai | 被加数Bi | 低进位Ci | 和数sumi | 进位Ci+1 |
---|---|---|---|---|
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 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
逻辑表达式
由全加器的定义理解我们可以知道当Ai和Bi异或后再与Ci-1进行异或得到SUMi,结合真值表,我们可以知道当Ai、Bi、Ci-1只要有两个以上的1是进位Ci就等于1;所以只需要每两变量求与,结果再求或就可以满足要求。由此我们可以得到最常用的逻辑表达式:
由于两个半加器可以构成一个全加器,所以在这里进位Ci还可以表示为