这个乘法器是先使用乘法表达试的相乘形式,然后把每一项表示出来。然后每一列就可以用全加器实现,分成多层来做,因为每个全加器只能有a,b,cin三个一位的输入。然后接着层层算,最后算到只有一位大小的时候就直接相加。Wallace在1964年提出采用树形结构减少多个数累加次数的方法,成为wallace树结构加法器。wallance树充分利用全加器3-2压缩的特性,随时将可利用的所有输入和中间结果及时并行计算,大大节省了计算延时。下图是wallance树型结构和CSA结构的对比。其结构的关键特性在于利用不规则的树形结构对所有的准备好输入数据的运算及时并行处理。
代码:
module signed_multi(a,b,result);//in this module,you can find that you can initial the value of wire
input [7:0] a,b;
output [15:0] result;
wire [7:0] a,b;
wire [15:0] result;
reg [7:0] p[7:0];
integer i,j;
always @(*) begin
for(i = 0;i <= 7;i = i + 1)
for(j = 0;j <= 7;j = j + 1)
p[i][j] = a[i]&b[j];
end
assign result[0] = p[0][0];
//--------------------le