在vivado平台上用Verilog HDL语言编程
(需要有完整的代码)
分析普通情况下的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