“补码一位乘法”是由一个电路系统进行逻辑实现的,以下将其分为被乘数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,运算过程结束。