Labview设计计算机--加法器(2)

在上一篇中完成了半加器与全加器的构建,这一篇在全加器的基础上完成8位整数的运算;

八位加法器

实现的基本思路为:
设numA和numB分别为两个8bit的整数输入,iCarry为布尔类型,表示低位进位;

将numA与numB的各个位按从低位到高位分别取出,分别将对应的位送入到一个全加器中,全加器的进位输入为低位的进位输出;
将每一个全加器的位组成一个数组,并转换为一个8bit整数S_U8;最高位的进位为布尔值oCarry;

由于使用的是串行进位,故需要一定的时间进行进位传递,从numA、numB、iCarry输入到S_U8、oCarry输出需要一定的时间才能稳定;

八位加法器的Labview程序框图如下所示:
8位加法器程序框图
注:的FullAdd子函数即为上篇完成的全加器;
实验结果前面板:
8位加法器运算效果

分析:当输入的两个8位整数为200和200时,由于uint8的分为是0~255,故产生了进位,oCarry=1,S_U8=200+200-256=144;

另外需要说明的是,在计算机的加法运算中,不区分有符号数还是无符号数,有无符号的区分是在结果得到后进行结果解释时进行的;
例如:

uint8 a = 200uint8 b = 200;
int8  c = -56;
int8  d = -56;
uint8 e = a + b;
int8  f = c + d; 

由于uint8的200和int8的-56对应的8位表示为0xC8,在送入ALU时,输入都为0xC8和0xC8;
在计算机的中有一个程序状态字寄存器PSW,PSW中的CF位代表进/借位标志,OF位代表溢出标志;
a+b、c+d的8位结果寄存器中存储的值都为0x90,CF=1,OF=0,由于CF=1,表示无符号加发生进位,e=144为部分和;由于OF=0,表示有符号加未发生溢出,0x90为f的补码,f=-112,结果正确;

32位加法器

32位加法器是在8位加法器的基础上构建而成的,结果与全加器构成8位加法器非常相似,也是使用串行进位方式;程序框图如下:
32位加法器程序框图
程序框图中的U8Add即为8位加法器;
用到Labview中的数组函数:先将uint32转为长度为32的布尔数组,通过数组截取函数截取的第1、2、3、4个字节,分别送入8位加法器中相加,并将每个8位加法器的结果合并为一个整数输出;
实验前面板如下图:
32位加法器前面板

OK,加法器完成;
但是,该加法器的效率并不是最高的,因为构建方式是组内串行、组间串行;
下一篇将以组内并行的方式进行8位加法器的构建。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值