同样基于Wallace树乘法器,我们来构造向量乘法器。
在一些矩阵运算中经常用到向量的相乘运算,本例以4维向量为例子介绍向量乘法器的verilog HDL设计。
设向量a = (a1, a2, a3, a4), b = (b1, b2, b3, b4)。
则a 与 b的点乘为:a * b = a1 b1 + a2 b2 + a3 b3 + a4 b4,
即向量对应位置的值相乘,再相加。
原理十分简单,下面给出verilog HDL设计代码:
//向量乘法器的设计
module vector(a1, a2, a3, a4, b1, b2, b3, b4, out);
input [3:0] a1, a2, a3, a4;
input [3:0] b1, b2, b3, b4;
output [9:0] out; //a1b1+a2b2+a3b3+a4b4为10位
wire [7:0] out1, out2, out3, out4;//乘积项a1b1为8位,a2b2,a3b3,a4b4同理为8位
wire [8:0] out5, out6 ;//同理a3b3+a4b4为9位,a1b1+a2b2为9位
wire [9:0] out; //a1b1+a2b2+a3b3+a4b4为10位
//wallace树乘法器例化部分,得到乘积项
wallace m1(.x(a1), .y(b1), .out(out1)); //out1 == a1b1
wallace m2(.x(a2), .y(b2), .out(out2)); //out2 == a2b2
walla
1万+



被折叠的 条评论
为什么被折叠?



