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

  • Post author:
  • Post category:其他


计组这个实验真给我整emo了呜呜呜

实验要求:实现六位补码阵列乘法器,并且保证特殊条件下的运算结果正常

特殊条件

在这里插入图片描述

话不多说先上电路图

在这里插入图片描述

一步一步来解释!!!



普通情况(都是正数,都是负数,一正一负)



X和Y都是正数或都是负数

都是正数,就先把符号位去了,把绝对值输入进5位阵列乘法器。

都是负数,就先把XY送进求补器,得到的就是X和Y的绝对值,然后输入进5位阵列乘法器。

在这里插入图片描述

这部分电路为

在这里插入图片描述

在这里插入图片描述



今天复习计组的时候又发现原来书上有讲这个,其实求补器上面写的是-x,即输入x的补码,求-x的补码,也就是把x每位取反,再加一就行。下面是原来的想法(那个时候真笨哈哈哈)

这里顺便解释一下求补器的工作效果

求补器输入:100101

求补器输出:011011

我一开始很迷惑这啥啊不是在求补吗???那100101的补码难道不是111011????后面问了同学才知道,求补器是先把负数的补码转化成原码,再把符号位改为0。比如这里的100101是负数的补码,转化成原码是111011,符号为改为0之后变成了011011,就是所求的答案。

求补器输入:000011

求补器输出:111101

如果输进去一个正数,就先把它变为负数,再求补码。比如000011,先变为负数100011,再求补码111101。

现在明白了求补器,再来看这个电路

下面只分析X,Y同理。



分析X求绝对值电路

X在求绝对值时分成了两路,分别对应X是正数和X是负数的情况。



上边那条路代表X是正数

先经过一个分线器,分线器将X分成了两部分:符号位和数值位。将符号位输入连接进选择端,这样的话如果是0,那么直接输出第0路,也就是数值位。(这里不懂的话可能是因为不知道多路选择器的用法,建议自己去学一下,不讲了)



下边那条路代表X是负数

经过求补器直接得到绝对值。



分析普通情况下的6位补码阵列乘法器

前面已经讲了五位阵列乘法器的输入,现在讲输出该怎么连接

在这里插入图片描述

输出一共有两条线



上面那条线是XY都是正数或者都是负数的情况

X5和Y5经过异或门,如果都是正数或者都是负数,那么结果是0,这个结果输入进多路选择器,则选择上面那条路输出。



下面那条线是XY异号

在这里插入图片描述

所以将结果送进求补器

最后分线器自己调一下位宽,得到P‘(为什么是P’呢?因为这只是考虑到了普通情况,并不是最终答案,最后还要结合特殊情况,经过一定处理才能得出最完美的答案)

得到P‘的分线器位宽如下图所示

在这里插入图片描述



特殊情况

在测试时,会发现一些特殊情况,按照之前设计的电路并不正确,所以还要对此进行完善。好吧其实是因为做了这个会加分我才做的。

在这里插入图片描述

在这里插入图片描述

实验要求说要单独写那就单独再来个电路呗

先总体看一下特殊情况的电路!

在这里插入图片描述

很显然,分成两部分。左边是根据choose的数值,来判断最终输出P。右边是判断choose的大小。choose一共有7个值:

000:最正常的一种了,又没有0,又没有-32

在这里插入图片描述

001:X=0,Y不等于-32,P=0

在这里插入图片描述

010:X=-32,Y为负数

在这里插入图片描述

011:X=-32,Y=0;

在这里插入图片描述

100:X为负数,Y=-32

在这里插入图片描述

101:X=0,Y=-32,P=0

在这里插入图片描述

110:X=-32,Y=-32 P=010000000000

在这里插入图片描述

在图中为什么左边引脚是400?因为用的16进制,最后输出二进制为010000000000

好!



版权声明:本文为qq_52641289原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。