Как d0 NxM Матричное умножение, используя verilog

Привет всем может кто-нибудь сказать мне, как сделать матричное умножение с помощью 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 ответов

Другие вопросы по тегам