计算机组成原理6位原码阵列乘法器

计组老登真的很喜欢改编华科的实验。。。

鉴于本人做计组实验时在网络上一直查不到6位源码阵列乘法器的相关资料参考,故写这篇blog供XMU22级以后的软工学子们参考学习

设计实验题目如下


先直接看电路吧


以上是6位原码阵列乘法器整体,怕图会模糊,我就再截两张细节图放在下面


再看不清的话就请各位ctrl+鼠标滚轮网页缩放看看吧,下面来说设计思路(其实在实验内容的pdf中给出了设计思路)


(。。。。后来总结想了想,上图的分线操作没啥作用,有作用的就是X和Y的pin和X原码与Y原码隧道,各位看看就行了)

首先老登给出了5位无符号阵列乘法器,我们就按照实验思路,先将6位原码X和Y的低5位用分线器分离出来。分理处的最高位是符号位,后面需要进行异或操作得到结果的符号位。我们需要用分离出来的后5位真值带入5位无符号阵列乘法器计算。


但是真的就这么简单吗?仔细看老登给的实验pdf可以发现这样一个标红的注意内容

这是因为logisim平台中只能显示有符号数的补码真值并不能显示有符号数的原码真值。如果原码是正数(最高位符号位是0)那好说,其真值和原码是一样的;但如果该有符号数是负数(最高位符号位是1),则真值与原码是不同的!需要将原码转换为补码,用补码去显示!!!下面举几个例子


下列原码为正数,原码补码相同,可以直接显示


下列原码为负数,负数的原码和补码不同,所以不能直接显示


详细解释就是,logisim平台你设置二进制数时,它会默认你设置的二进制数为补码,最终参与计算的也是补码。

我以上面的错误显示结果为例来解释一下:比如第一个数字,原码为1 00000,这时候你认为你输入的是原码,最高为符号位是1,表示负数,数值位是00000,表示0,因此理论上最终显示结果为-0。

但是为什么logisim显示的是-32呢?这是因为logisim默认你设置的1 00000是补码,它会根据补码的运算规则计算真值:将数值位00000按位取反加一,得到100000,转成十进制为32,加上符号是-32。

当我们将其转为补码时,就能够正确的显示出你想要表示的数值。


于是乎,我们之前得到的X原码和Y原码就派上用场了,由于两者存放的都是原码,想要正常显示就得将其转为补码,再传入X的真值与Y的真值。接下来就是老登这部分实验最构式的部分了,他没有给你6位原码转补码电路,你需要自己手动扯线画出转换电路。。。而且你把6位的原码转补码电路画完后,由于结果P是11位的,应该考虑和X、Y同样的问题,需要将P的原码转成补码才能使P真值反应真实数据,所以你还要手动扯线画一个11位原码转补码电路。。。。


下面是具体原码转补码电路图

6位原码转补码电路

11位原码转补码电路


11位原码转补码电路可能看不太清,它和6位原码转补码一个逻辑,依葫芦画瓢也能画出来。


回到主线,我们将X与Y的原码分离成符号位和数值位后,将符号位进行异或,得到最终P的符号位;将数值位传入无符号5位阵列乘法器得到结果的数值位,然后将符号位和数值位结合起来,再传入11位原码转补码电路,输出为P真值即可。

X与Y分离成符号位和数值位

将X与Y的真值传入乘法器计算最终结果的原码真值

X与Y的符号位异或,得到最终结果的符号位

将符号位和数值位拼接成最终结果的原码

将结果的原码转补码得到最终结果


测试结果如下


老登计组实验是真的多。。。。

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YUKIPEDIA~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值