补码一位乘法器设计(运算器设计)

首先了解下实验要求,实验要求我们设计出八位补码的booth一位乘法,其大体的解题思路同原码一位乘法,分为数据加载,移位控制,停机逻辑Yn+1和Yn的获取

总体的流程图与硬件逻辑如下
补码一位乘法器设计(运算器设计)_第1张图片
补码一位乘法器设计(运算器设计)_第2张图片
一.数据加载
1.首先我们要判断Yn+1Yn的数据,从而判断在所求和的基础上加0、[x]补还是[-x]补
Yn+1Yn=00(对应十进制0),加0
Yn+1Yn=01(对应十进制1),加[-x]补
Yn+1Yn=10(对应十进制2),加[x]补
Yn+1Yn=11(对应十进制3),加0

因此这一部分的功能,我们可用选择器进行实现
如下图所示,此时选择器的选择输入端为Yn+1Yn,在该选择器的第0和第3位都连接0,而第一位输入对应的是[x]反,在ADD这个加法器中当Yn+1Yn=01时,进位输入为1,此时实现加[-x]补,在选择器的第2位输入的是x(既[x]补)。
补码一位乘法器设计(运算器设计)_第3张图片
2.首次输入Y寄存器的的数据:八位的原始输入数据y
如下图所示:我们采用选择器进行控制,若此时是初始数据(即还未进行计算,可用计数器和比较器的电路设计实现判断)即该选择端为1,则将y的8位数据输入到Y寄存器中,若不是初始数据(即已经开始计算了),则选择端为0,则将右移动后的积和y输入Y寄存器中。
补码一位乘法器设计(运算器设计)_第4张图片
二.移位控制
此时我们将得到的和算数右移,注意了是算术右移,去掉最低位,最高位复制原来的最高位
在这里采用分线器实现。右移后的16位数据,左边8位为部分积,存入部分积寄存器中;右边八位为右移过来的低位积+y的几位高位数据(低位数据随着时钟驱动后的每次计算,被移出去),存入Y寄存器中。
补码一位乘法器设计(运算器设计)_第5张图片

三.停机控制
若计算完毕,我们要进行停机,即忽略时钟端的输入。采用计数器与比较器配合使用来控制停机。
如下图所示:
上面的比较的比较器是用来控制输入Y寄存器的数据;下面的比较器是实现停机功能的。因为补码一位乘法的加法操作是n+1次,此时n=8(8位乘数),若此时的计数器的值大于9,即已经计算完毕,已经得到了最终我们要的结果了,此时各个寄存器应该忽略时钟的输入,又各个寄存器的使能端为低电平有效,因此将比较器大于9的输出再连接个非门,连接到各个寄存器的使能端,即实现了停机控制。

补码一位乘法器设计(运算器设计)_第6张图片
四.Yn+1和Yn的获取
由于在开始计算时,应该将8位数据y的后面添加一位0作为Yn+1,此后将8位数据y的最低位取为Yn+1,次低位取位Yn,因此取y的第0位(最低位)作为Yn+1寄存器的输入,驱动时钟时,该数据将会存入到Yn+1寄存器中,而Yn是右移后的第0位即是原来的次第位,从而实现获取Yn+1与Yn。
补码一位乘法器设计(运算器设计)_第7张图片

五.整体的电路设计如下
补码一位乘法器设计(运算器设计)_第8张图片

你可能感兴趣的:(补码一位乘法器设计(运算器设计))