如何使用verilog进行d0 NxM矩阵乘法

时间:2016-03-10 04:42:59

标签: verilog fpga matrix-multiplication xilinx-ise

大家好,每个人都可以告诉我如何使用Verilog进行矩阵乘法,我通过对输入进行硬编码得到了输出,但是我想做一般化的输出..

我的目标是乘以(1X3)*(3xY)y可能在64到16384之间变化,所有值都是十进制的..所以任何人都可以帮助我..

这是1x3和3x10的代码,输出为1x10,所以我已将每个元素分配为每个变量

    always@(h1,h2,h3)
    begin

    z1 =((w0[3:0]*h1[3:0])+(w1[3:0]*h2[3:0])+(w2[3:0]*h3[3:0]));
    z2=((w0[3:0]*h1[7:4])+(w1[3:0]*h2[7:4])+(w2[3:0]*h3[7:4]));
    z3=((w0[3:0]*h1[11:8])+(w1[3:0]*h2[11:8])+(w2[3:0]*h3[11:8]));
    z4=((w0[3:0]*h1[15:12])+(w1[3:0]*h2[15:12])+(w2[3:0]*h3[15:12]));
    z5=((w0[3:0]*h1[19:16])+(w1[3:0]*h2[19:16])+(w2[3:0]*h3[19:16]));
    z6=((w0[3:0]*h1[23:20])+(w1[3:0]*h2[23:20])+(w2[3:0]*h3[23:20]));
    z7=((w0[3:0]*h1[27:24])+(w1[3:0]*h2[27:24])+(w2[3:0]*h3[27:24]));
    z8=((w0[3:0]*h1[31:28])+(w1[3:0]*h2[31:28])+(w2[3:0]*h3[31:28]));
    z9=((w0[3:0]*h1[35:32])+(w1[3:0]*h2[35:32])+(w2[3:0]*h3[35:32]));
    z10=((w0[3:0]*h1[39:36])+(w1[3:0]*h2[39:36])+(w2[3:0]*h3[39:36]));
    end

0 个答案:

没有答案