两个二进制数相乘的计算见下图1:
图1:二进制数相乘
实质是根据被乘数(1011_1011)根据乘数(1101)进行移位相加,具体来说,data_out[11:0] = 1011_1011<<3 + 1011_1011<<2 + 1011_1011。
相关:
1.用加法实现a*5/16功能(要求四舍五入),输入为a,10bit位宽,输出结果为result。请写出下面add_temp、result信号的位宽,完成下面的填空 [注:实质为下边所提及的浮点数乘法]。
wire[10:0] add_temp; //位宽判断时取a=10'b11_1111_1111带入时得到add_temp=11'b111_1111_1011
wire[6:0] result;
assign add_temp = a<<2 + a<<0; //左移n位=*2^n
assign result = add_temp>>4;
2.进行一个运算单元的设计,实现A[7:0]*1111_1011,请尽量用最少的资源实现。
reg [7:0] A