华中科技大学计算机组成原理——运算器实验实验报告

(1)掌握1位全加器的实现逻辑,掌握多位可控减法器电路的实现逻辑;

(2)掌握先行进位的原理,能够利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器;

(3)理解成组进位生成函数、成组进位传递函数的概念,能利用4位先行进位电路和4位快速加法器电路构建16位、32位快速加法器;

(4)理解算术逻辑运算单元(ALU)的基本组成,能利用已完成的32位加法器、Logisim中的运算组件构造指定规格的ALU;

(5)掌握阵列乘法器的实现原理,能够分析阵列乘法器的性能,并能设计实现阵列乘法器电路;

(6)掌握原码一位乘法运算的基本原理,设计实现一个8位×8位的无符号数一位乘法器电路;

(7)掌握补码一位乘法运算的基本原理,并能设计实现一个8位×8位的补码一位乘法器电路;

(8)掌握运算流水基本概念,理解将复杂运算步骤细分成子过程的思想,能够实现简单的乘法运算流水线。

二、实验内容

(1)可控加减法电路设计实验:在对应子电路中,利用已经封装好的全加器设计8位串行可控加减法电路

(2)4位快速加法器设计实验

①4位先行进位电路:在对应子电路中利用基本逻辑门实现可级联的4位先行进位电路

②4位快速加法器:在4位快速加法器子电路中利用已经设计好的4位先行进位电路以及基本逻辑门实现4位快速加法器

(3)多位快速加法器设计实验

①16位快速加法器设计

②32位快速加法器设计

(4)32位ALU设计实验

(5)阵列乘法器设计实验

①5位无符号阵列乘法器设计:在对应的子电路中实现5位无符号阵列乘法器

②6位补码陈列乘法器设计:在对应的子电路中利用已经设计好的5位阵列乘法器实现6位补码阵列乘法器

(6)原码一位乘法器设计实验:在对应子电路中利用寄存器、加法器等基本电路设计无符号一位乘法器

(7)补码一位乘法器设计实验:在对应子电路中利用寄存器、加法器等基本电路设计8位补码一位乘法器

(8)乘法流水线设计实验

三、实验工具

Logisim仿真实验软件

四、方案设计与实验步骤及结果

83325a7c6a8f4332b5f0d6f73d072105.png

图表 1


(1)可控加减法电路设计实验

补码的符号位参与运算。对于无符号数的加法运算,溢出符号就是Cn;对于有符号数的溢出检测信号overflow,可以直接用最高位数值进位和符号位进位异或得到。将8个全加器的进位链串联即可得到8位串行加法器。可控电路实现如图表1所示。

(2)4位快速加法器设计实验

①4位先行进位电路

n位串行加法电路中和数与进位输出的逻辑表达式如下:

Si=Xi⊕Yi⊕Ci     Ci+1=XiYi+(Xi⊕Yi)Ci

假设Gi=XiYi, Pi= Xi⊕Yi。当Gi=1时,Ci+1一定为1,所以将Gi称为进位生成函数;当Pi=1时,进位信号Ci才能传递到进位输出Ci+1处,所以称Pi为进位传递函数。有了进位生成函数和进位传递函数,则有以下公式:

Si=Pi⊕Ci         Ci+1=Gi+PiCi

电路实现结果如图表2所示。

6d815b2f8dd64a8fb284d5a42c973992.png

图表 2

②4位快速加法器

4位先行电路,加上生成Gi,Pi的与门异或门电路,再加上4个异或门就可以构成4位快速加法器,也称为并行加法器。电路实现结果如图表3所示。

f69c3ae4400041a4b784624e65fd15ab.png图表 3

(3)多位快速加法器设计实验

①16位快速加法器设计

利用先行进位电路提前产生C4、C8、C12、C16信号,将4个4位快速加法器输出的成组进位生成、传递函数G*和P*及C0连接到先行进位电路的输入端,再将对应信号连接到相应的快速加法器的进位输入端即可构成16位组内并行进位、组间并行进位的快速加法器,实现结果如图表4所示。

430e36b0d6ce4267adc012fe816e4f70.png图表 4

②32位快速加法器设计

在实现16位快速加法器的基础上,将16位快速加法器进行组间串联连接即可实现32位快速加法器,实现结果如图表5所示。

9bd43d9554a348e38003837e94f232ba.png

图表 5

电路实现结果如图标6所示。

a238376b9305465caccb982a00e6b33f.png图表 6

通过给出的ALU自动测试电路进行测试,不断修改错误,直到出现正确的实验结果。实验结果如图表7、8所示。

cc300c03d4c24a2aabdf4e24ee9b1fdd.png

图表 7

5b787409a0754753b7bf80159b617876.png

图表 8

(5)阵列乘法器设计实验

①5位无符号阵列乘法器设计

用与门阵列同时产生手动乘法中的各乘积项,同时用一位全加器按照手动乘法运算的需要构成全加器阵列,实现结果如图表9所示。

f65d26e99d4341c5a533da628ca91ed9.png

图表 9

②6位补码陈列乘法器设计

由于补码乘法中的乘数、被乘数和乘积的结果都以补码的形式给出,为了能利用无符号阵列乘法器,需要在运算前将乘数和被乘数先转换成无符号数,因此在相加数电路前增加了两个n位运算前求补电路,并且分别用各自的符号位作为求补控制信号。又因为无符号阵列乘法器的输出结果是无符号数,为将结果转换为补码,需要在最后增加一个2n位运算后求补电路,同时结果的符号位由异或门产生,并作为运算后求补电路的求补控制信号。6位补码阵列乘法器的实现结果如图表10所示。b98d8625074a42a3beed5fe2b9401ec0.png

图表 10

(6)乘法流水线设计实验

5位无符号乘法用横向进位阵列乘法器实现。该乘法器可看成4个5位串行加法器的级联。根据运算流水线的基本原理,可以在4个5位串行加法器之间增加流水寄存器缓存中间运算结果P1-P4。实现结果如图表11所示。

9de051b5afa7426e87b7611993106952.png图表 11

 (7)原码一位乘法器设计实验

无符号原码一位乘法的计算: 维护一个部分积,初始为0,每次取乘数b的最低位,如果最低位为1,部分积=部分积+乘数a,如果最低位为0,部分积=部分积+0;然后将部分积右移一位,同时将乘数b右移一位。第i次(i<=8)对部分积的右移操作移出来的数为最终乘积的第i低位,8次结束后的部分积为最终乘积的高8位。该计算方法本质是计算乘数a与乘数b的各位相乘得到的部分积,然后将所有的部分积相加。实现结果如图表12所示。e3071cc7f74f47f79f0bad38f07d91b9.png

图表 12

(8)补码一位乘法器设计实验

补码一位乘法器和原码一位乘法器的逻辑十分类似,计算核心逻辑为{P,y}={(P+(yn+1-yn)[x]补),y}/2。不同点如下:

①符号位参与运算

②每次对乘数寄存器中的yn、yn+1两位进行判断,并根据yn+1-yn的值决定累加值。

③控制逻辑需要控制电路进行n+1次累加与位移操作,最终结果存放在R0与R1当中,比实际多移动了一位,最终结果的最高n位存放在R0低位中,低n+1位存放在R1高位中。

补码一位乘法器的实现结果如图表13所示。ac72cc031e33431aa71394a3021f98c9.png

图表 13

五、遇到的问题及解决方法

1.对各实验原理不太了解。结合教材上提示的电路原理图以及网上的相关资料,最后在理解试验背后理论知识原理的基础上,完成了电路的设计工作。

2. Logisim仿真软件存在BUG。试验过程中会出现明明电路正确,出现整块报错的问题。重启软件后才恢复正常。

3.对某些元器件的功能使用不太了解。最初,我将计数器误认为是寄存器,导致原码一位乘法器始终无法正常使用,百思不得其解,在和同学讨论后,才发现元器件的错误使用,改正后电路才能够正常使用。

六、心得体会

总体来说,本次试验比上次好。但还是不知道从何处入手去解决问题,在翻阅课本和查阅大量资料后,才知道怎么去做。在后面的实验中,要提前将实验原理理解,这样做实验的时候会轻松很多。当然在试验过程中也遇到了很多的问题,或是通过查阅相关资料,或是和同学探讨,或是向老师咨询,最后都顺利解决了问题。

  • 42
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值