补码一位乘法实现逻辑 分析

        “补码一位乘法”是由一个电路系统进行逻辑实现的,以下将其分为被乘数R2、部分积R0、乘数R1及乘积y、求[-x]补、求[x]补、计数器六个部分进行解析,逻辑框图如下所示:

        如上图所示,yn、yn+1表示输入;∑代表一位全加器,作用是将输入其中的数字0、1进行求和;“&”符号表示“与门”;多路开关代表为“01、10”时打开相应的通道传入数据;右侧为触发器控制指令执行的开始和结束。

(1)“被乘数(R2)”分析

        被乘数(R2)内部存储的是双符号位数值,共(n+2)位(其中符号位2位,小数点后数值位n为),以补码形式进行存储。

(2)“部分积(R0)”分析

        部分积(R0)用于每次存储上一次计算结果并进行移位,起初为(n+2)位(其中符号位2位,小数点后数值位n为),除最后一次运算外每进行一次运算,部分积向右移移位,但部分积始终为(n+2)位,而总的数值位则每次加1位,最终得到结果时,部分积为(n+2)位,总的数值位为2n位(包含符号位和数值位)。

(3)“乘数(R1)及乘积(y)”分析

        乘数(R1)中存储的为单符号位数值,以补码形式存储,共(n+1+1)位(其中符号位1位,小数点后数值位n位,数值位末位yn后加1位yn+1=0,用于最后计算的校正)。乘积y起初为(n)位,数值位末两位赋值给yn、yn+1,之后每执行一次计算,乘积y中数据数减1位移向yn、yn+1中,yn、yn+1每次移来的数值对被乘数进行操作判断,直到无乘积数可移位。yn、yn+1共4种组合,“00、11”表示只将部分积向右移1位;“01”表示部分积+[被乘数R2]补并右移一位;“10”表示部分积+[-被乘数R2]补并右移一位。

(4)“求[-x]”分析

        求[-x]补时,yn、非yn+1的数值通过“与门”得到1,非yn、yn+1的数值通过“与门”得到0,两者共同作用下得到“10”出发多路开关打开通道,从而控制被乘数R2以反码形式通过通道输入到一位全加器中并同时+1,实现求[-x]补的功能,得到相应结果。

(5)“求[x]”分析

        求[x]补时,yn、非yn+1的数值通过“与门”得到0,非yn、yn+1的数值通过“与门”得到1,两者共同作用下得到“01”出发多路开关打开通道,从而控制被乘数R2以原码形式通过通道输入到一位全加器中,此时不触发+1,实现求[x]补的功能,得到相应结果。

(6)“计数器分析”

        计数器的作用是用于记录执行指令的次数。在触发器中,S为置1端,R为置零端。执行指令时,S端置1,传输到与门中得到1,从而发出移位信号使部分积中的数值向右移1位,同时使乘积y中的末位数值向右移1位,改变yn、yn+1数值进行下一次判断,之后计数器+1。指令执行结束后,计数器向触发器中的R端发出信号使输入为0,运算过程结束。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

等日出看彩虹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值