一、运算规则
X*Y=P
引入部分积的概念,每次Y的一位和X相乘的结果叫做部分积 ,每次相乘后需要右移一位,再处理Y下一位的数值
1.符号位单独计算(异或运算)
符号组合就4种(00.01.11.10);异或运算即相同为0,不同为1
2.被乘数X 和乘数Y 都取绝对值计算
3.一般把被乘数X取双符号位,并且让部分积初始值为0,长度与被乘数X相同
4.从乘数Y的最后一位开始到第一位分别于被乘数X相乘。
当Y当前位数值为1时,部分积加上 |X| (X的绝对值)
当Y当前位数值为0时,部分积加上 0
5.每次右移一位时,在最前面补0.
二、两个例子
三、设计源码(Verilog)
module array_multiplier(clk,rst_n,mul_x,mul_y,res );
input clk ;//系统时钟
input rst_n ;//复位信号
input [3:0] mul_x ;//被乘数
input [3:0] mul_y ;//乘数
output reg