FPGA实现BP神经网络模型(Verilog)

FPGA实现BP神经网络正向传播过程

本篇文章不是用FPGA去加速神经网络的训练过程,个人以为训练过程在GPU上进行已经可以达到一个比较理想的速度了,但是把训练完成的模型嵌入到FPGA里还是有不少工作可以做的。

这里就一个简单的两输入六个输出的三层BP神经网络训练好的模型为例,将训练完成的模型用FPGA实现。

整个过程主要有三个问题:①神经网络中大量乘法器消耗FPGA资源的问题;②神经网络中的权值参数为多位带符号浮点数;③在编写verilog时涉及大量参数设置与逻辑语句重复;

解决的方法非常简单,但也比较繁琐,尽量一定仔细不要在任何一个环节上出问题。在资源上由于FPGA中乘法器会消耗大量的逻辑运算单元,而神经网络中大维度的矩阵乘法就恰恰需要很多的乘法器,所以就要想办法在资源够用的情况下用较少的乘法器实现大规模矩阵乘法,即牺牲时间,对有限的乘法器进行复用(如果比较土豪就当我没说过这个问题)。在FPGA中带符号的大位宽浮点数就转换成定点数来解决,带符号数就用signed语句就阔以了,这样会牺牲精度也是没办法的事,就看你的板子能提供多少资源来进行多少位的乘法,能同时用多少乘法器,尽量保证权值参数训练出来在同一个数量级里,不然在换成定点数的时候就会发现位宽差距非常大,我这里是保证权值参数都在-1~1之间,所以一定要归一化,一定要归一化,一定要归一化。为了保证五位小数就同时扩大了2^17倍,然后每次乘法运算完以后再挪17位回来,加减运算就不说了。大量参数换算和重复设置verilog参数的问题就直接写脚本生成复制出来就好了。比如:

def verilog_create_function(Data_mat,ori_mat,File_name = None, parameter = None):

    mat_Height, mat_Width = np.matrix(Data_mat).shape
    f = open(File_name,'w')
    if ((parameter == 'd')|(parameter == 'f')|(parameter == 'g')) :#如果只有单列的话,直接将第二列设为0
        for i in range(mat_Height):
            bin_data = dec2bin(Data_mat[i,0], bit_wide=21)
            bin = str(bin_data)
            verilog_bin = bin[:1] + '_' + bin[1:5]+'_' + bin[5:9]+'_'+bin[9:13]+'_'+bin[13:]
            if (i <= 9):
                f.write('parameter signed ' + parameter + '0' + str(i) + '0' + str(0) + " = 18'b" + verilog_bin + ';' + '   //' + str(ori_mat[i, 0]) + '\n')

            elif (i > 9):
                f.write('parameter signed ' + parameter + str(i) + '0' + str(0) + " = 18'b" + verilog_bin + ';' + '   //' + str(ori_mat[i, 0]) + '\n')

    else:#多列的情况
        for i in range(mat_Height):
           for j in range(mat_Width):
                bin_data = dec2bin(Data_mat[i,j], bit_wide=21)#将矩阵中的数转化成二进制 固定位宽 带符号  函数下面有
                bin = str(bin_data)#转字符串
                verilog_bin = bin[:1] + '_' + bin[1:5]+'_' + bin[5:9]+'_'+bin[9:13]+'_'+bin[13:]
                if ((i <= 9)&(j<=9)):
                    f.write('parameter signed ' + parameter +'0'+ str(i) +'0' + str(j) + " = 18'b" + verilog_bin + ';' + '   //' + str(ori_mat[i, j]) + '\n')
                elif ((i <= 9)&(j > 9)):
                    f.write('parameter signed '+parameter+'0'+ str(i)+str(j)+" = 18'b" + verilog_bin+';'+'   //'+str(ori_mat[i,j])+'\n')
                elif ((i > 9)&(j <= 9)):
                    f.write('parameter signed ' + parameter + str(i) +'0'+ str(j) + " = 18'b" + verilog_bin + ';' + '   //' + str(ori_mat[i, j]) + '\n')
                elif ((i > 9)&(j > 9)):
                    f.write('parameter signed ' + parameter + str(i) +  str(j) + " = 18'b" + verilog_bin + ';' + '   //' + str(ori_mat[i, j]) + '\n')
    f.close()

我这里选的维度比较低,20x20的中间层,不过生成出来也有好几百行的参数了,就像这样:

parameter signed b1309 = 18'b1_1001_1001_1101_10100;   //-0.39902
parameter signed b1310 = 18'b0_1001_0000_0001_11000;   //0.56293
parameter signed b1311 = 18'b0_0101_0001_0010_00111;   //0.31695
parameter signed b1312 = 18'b0_0001_1111_1100_00010;   //0.12404
parameter signed b1313 = 18'b0_0000_1000_1001_10111;   //0.03363
parameter signed b1314 = 18'b0_0010_0010_0110_10110;   //0.13445
parameter signed b1315 = 18'b1_1110_1010_1100_00000;   //-0.08301
parameter signed b1316 = 18'b0_0001_1010_0101_01111;   //0.1029
parameter signed b1317 = 18'b0_0010_0100_0011_11001;   //0.14155
parameter signed b1318 = 18'b0_0011_1010_0110_01000;   //0.22809
parameter signed b1319 = 18'b1_1110_0000_1100_10100;   //-0.12192
/中间省略几百行
/中间省略几百行
/中间省略几百行
/中间省略几百行
/中间省略几百行
parameter signed b1701 = 18'b1_1110_0001_0111_01101;   //-0.11929
parameter signed b1702 = 18'b1_1100_0000_0011_01001;   //-0.2492
parameter signed b1703 = 18'b1_1101_0010_0111_10000;   //-0.17786
parameter signed b1704 = 18'b1_1011_1110_1101_01011;   //-0.25456
parameter signed b1705 = 18'b0_0001_1111_1110_10100;   //0.12467
parameter signed b1706 = 18'b0_0010_0001_1100_00111;   //0.13189
parameter signed b1707 = 18'b1_1101_1100_0001_11111;   //-0.14015
parameter signed b1708 = 18'b1_1100_0110_0011_11111;   //-0.2256
parameter signed b1709 = 18'b1_1110_1001_0010_00100;   //-0.08933
parameter signed b1811 = 18'b1_1110_0111_0111_10000;   //-0.09583
parameter signed b1812 = 18'b1_1100_1001_0100_10001;   //-0.21374
parameter signed b1813 = 18'b1_0101_1110_0011_10010;   //-0.63195
parameter signed b1814 = 18'b0_0000_0010_1100_11111;   //0.01098

大量换算参数的函数如下(扩大倍数固定位宽带符号批量换算一气呵成):

#指定位宽带符号位十进制转二进制函数
def dec2bin(dec_num, bit_wide=16):
    _, bin_num_abs = bin(dec_num).split('b')
    if len(bin_num_abs) > bit_wide:
        raise ValueError           # 数值超出bit_wide长度所能表示的范围
    else:
        if dec_num >= 0:
            bin_num = bin_num_abs.rjust(bit_wide, '0')
        else:
           _, bin_num = bin(2**bit_wide + dec_num).split('b')
    return bin_num

其他反复出现的代码我就不放在这里了非常繁琐。

然后就直接上verilog吧,这里是[1,2]x[2,20]x[20,20]x[20,6]的网络,中间偏置矩阵就直接加进去就可以了,激活函数用的relu因为relu可以直接从寄存器里清零。

复制进来好像格式会出些问题,凑合看一下,重复的参数和寄存器设置可以直接跳过,意思明白就可以了,激活函数在最后:

_in_1,
           clock,
           reset);

parameter
order = 4;
parameter
word_size_in = 8;
parameter
word_size_out = 2 * word_size_in + 2;

output
signed[63:0]
Data_out_0;
output
signed[63:0]
Data_out_1;
// output
signed[63:0]
Data_out_1;
// output
signed[63:0]
Data_out_2;
// output
signed[63:0]
Data_out_3;
// output
signed[63:0]
Data_out_4;
// output
signed[63:0]
Data_out_5;

// output
signed[63:0]
Test_out;

input
signed[17:0]
Data_in_0;
input
signed[17:0]
Data_in_1;
input
clock;
input
reset;

// 乘法寄存器

reg signed[35:0] Amul_0;
reg
signed[35:0]
Amul_1;
reg
signed[35:0]
Amul_2;
reg
signed[35:0]
Amul_3;
reg
signed[35:0]
Amul_4;
reg
signed[35:0]
Amul_5;
reg
signed[35:0]
Amul_6;
reg
signed[35:0]
Amul_7;
reg
signed[35:0]
Amul_8;
reg
signed[35:0]
Amul_9;
reg
signed[35:0]
Amul_10;
reg
signed[35:0]
Amul_11;
reg
signed[35:0]
Amul_12;
reg
signed[35:0]
Amul_13;
reg
signed[35:0]
Amul_14;
reg
signed[35:0]
Amul_15;
reg
signed[35:0]
Amul_16;
reg
signed[35:0]
Amul_17;
reg
signed[35:0]
Amul_18;
reg
signed[35:0]
Amul_19;

reg
signed[35:0]
Bmul_0;
reg
signed[35:0]
Bmul_1;
reg
signed[35:0]
Bmul_2;
reg
signed[35:0]
Bmul_3;
reg
signed[35:0]
Bmul_4;
reg
signed[35:0]
Bmul_5;
reg
signed[35:0]
Bmul_6;
reg
signed[35:0]
Bmul_7;
reg
signed[35:0]
Bmul_8;
reg
signed[35:0]
Bmul_9;
reg
signed[35:0]
Bmul_10;
reg
signed[35:0]
Bmul_11;
reg
signed[35:0]
Bmul_12;
reg
signed[35:0]
Bmul_13;
reg
signed[35:0]
Bmul_14;
reg
signed[35:0]
Bmul_15;
reg
signed[35:0]
Bmul_16;
reg
signed[35:0]
Bmul_17;
reg
signed[35:0]
Bmul_18;
reg
signed[35:0]
Bmul_19;

wire
signed[35:0]
product_0;
wire
signed[35:0]
product_1;
wire
signed[35:0]
product_2;
wire
signed[35:0]
product_3;
wire
signed[35:0]
product_4;
wire
signed[35:0]
product_5;
wire
signed[35:0]
product_6;
wire
signed[35:0]
product_7;
wire
signed[35:0]
product_8;
wire
signed[35:0]
product_9;
wire
signed[35:0]
product_10;
wire
signed[35:0]
product_11;
wire
signed[35:0]
product_12;
wire
signed[35:0]
product_13;
wire
signed[35:0]
product_14;
wire
signed[35:0]
product_15;
wire
signed[35:0]
product_16;
wire
signed[35:0]
product_17;
wire
signed[35:0]
product_18;
wire
signed[35:0]
product_19;

// W1
权值参数

parameter
signed
a0000 = 18
'b0_1111_0110_0011_01111;   //0.96179
parameter
signed
a0001 = 18
'b0_0011_0101_0000_01001;   //0.2071
parameter
signed
a0002 = 18
'b0_0111_0011_0110_11100;   //0.4509
parameter
signed
a0003 = 18
'b1_1101_1100_0010_01100;   //-0.14005
parameter
signed
a0004 = 18
'b1_1111_1000_1010_11001;   //-0.02862
parameter
signed
a0005 = 18
'b0_0001_1011_1100_00001;   //0.10841
parameter
signed
a0006 = 18
'b1_1100_1001_0100_00101;   //-0.21383
parameter
signed
a0007 = 18
'b1_1111_0111_1011_11011;   //-0.03227
parameter
signed
a0008 = 18
'b0_1100_0100_0111_11001;   //0.76753
parameter
signed
a0009 = 18
'b0_0111_0001_0111_00101;   //0.44316
parameter
signed
a0010 = 18
'b1_1111_0110_0110_00111;   //-0.03755
parameter
signed
a0011 = 18
'b0_0000_1000_0001_01011;   //0.03158
parameter
signed
a0012 = 18
'b1_1101_1011_1000_10101;   //-0.14242
parameter
signed
a0013 = 18
'b1_1111_1011_1100_10011;   //-0.01646
parameter
signed
a0014 = 18
'b0_0010_1001_0101_00001;   //0.16139
parameter
signed
a0015 = 18
'b1_1101_1011_0110_01011;   //-0.14299
parameter
signed
a0016 = 18
'b0_1100_1010_0001_00100;   //0.78934
parameter
signed
a0017 = 18
'b1_1111_1111_1111_00100;   //-0.00022
parameter
signed
a0018 = 18
'b1_0001_0001_1011_01101;   //-0.93081
parameter
signed
a0019 = 18
'b1_0010_0100_1111_01110;   //-0.85561
parameter
signed
a0100 = 18
'b0_0000_0000_1000_10000;   //0.00208
parameter
signed
a0101 = 18
'b0_1000_0000_0000_00000;   //0.5
parameter
signed
a0102 = 18
'b0_0101_0111_0010_01100;   //0.34043
parameter
signed
a0103 = 18
'b1_1111_1110_1001_00110;   //-0.00557
parameter
signed
a0104 = 18
'b0_1010_0000_0111_11010;   //0.62691
parameter
signed
a0105 = 18
'b0_1111_1100_1000_10110;   //0.9865
parameter
signed
a0106 = 18
'b0_0010_0111_0001_10011;   //0.15274
parameter
signed
a0107 = 18
'b0_1010_1110_0011_00110;   //0.68047
parameter
signed
a0108 = 18
'b0_0000_0001_0001_01111;   //0.00427
parameter
signed
a0109 = 18
'b1_0101_0101_1111_01001;   //-0.66424
parameter
signed
a0110 = 18
'b1_1100_1111_1110_10111;   //-0.18782
parameter
signed
a0111 = 18
'b1_1101_1101_0111_01011;   //-0.13493
parameter
signed
a0112 = 18
'b1_1111_0110_0111_01000;   //-0.0373
parameter
signed
a0113 = 19
'b010_0001_1111_0110_1111;   //1.06139
parameter
signed
a0114 = 18
'b1_1100_1010_0011_00010;   //-0.21019
parameter
signed
a0115 = 18
'b1_1111_1000_1010_10100;   //-0.02866
parameter
signed
a0116 = 18
'b0_0000_1110_1001_00101;   //0.05693
parameter
signed
a0117 = 18
'b0_1010_1001_0011_10101;   //0.66105
parameter
signed
a0118 = 18
'b0_0000_0000_1110_00110;   //0.00347
parameter
signed
a0119 = 18
'b0_0000_0001_1100_00000;   //0.00684

// W2
权值参数

parameter
signed
b0000 = 18
'b1_1100_1111_1100_11010;   //-0.18828
parameter
signed
b0001 = 18
'b0_0000_0010_0011_10110;   //0.00872
parameter
signed
b0002 = 18
'b1_1111_0100_1100_10101;   //-0.04379
parameter
signed
b0003 = 18
'b1_1110_1100_1001_01000;   //-0.07587
parameter
signed
b0004 = 18
'b0_0001_0100_0011_10010;   //0.079
parameter
signed
b0005 = 18
'b1_1111_0000_1111_01011;   //-0.05876
parameter
signed
b0006 = 18
'b1_0111_0100_1110_10001;   //-0.54333
parameter
signed
b0007 = 18
'b1_1000_0000_0000_00000;   //-0.5
parameter
signed
b0008 = 18
'b0_0011_0111_1010_00101;   //0.21733
parameter
signed
b0009 = 18
'b1_1111_0101_0001_10011;   //-0.04258
parameter
signed
b0010 = 18
'b0_0000_0000_0100_11111;   //0.00122
parameter
signed
b0011 = 18
'b1_1100_1100_1101_00101;   //-0.19992
parameter
signed
b0012 = 18
'b1_1000_0100_1001_11001;   //-0.48199
parameter
signed
b0013 = 18
'b1_1001_1101_0010_01110;   //-0.38613
parameter
signed
b0014 = 18
'b1_1111_1110_1010_10111;   //-0.0052
parameter
signed
b0015 = 18
'b1_1010_0111_0101_01001;   //-0.34637
parameter
signed
b0016 = 18
'b0_0001_0101_0101_00010;   //0.08327
parameter
signed
b0017 = 18
'b0_0101_0000_0111_01001;   //0.31428
parameter
signed
b0018 = 18
'b0_0010_1111_0010_10110;   //0.18425
parameter
signed
b0019 = 18
'b1_1111_0001_1100_10011;   //-0.05552
parameter
signed
b0100 = 18
'b1_1110_0111_1010_11010;   //-0.09502
parameter
signed
b0101 = 18
'b0_0010_0011_0001_00010;   //0.13698
parameter
signed
b0102 = 18
'b1_1101_0011_1110_11001;   //-0.17218
parameter
signed
b0103 = 18
'b0_0100_0110_1101_00101;   //0.27665
parameter
signed
b0104 = 18
'b0_0100_0000_0000_00000;   //0.25
parameter
signed
b0105 = 18
'b0_0010_0111_1010_01100;   //0.15488
parameter
signed
b0106 = 18
'b0_0000_1100_1110_01000;   //0.05036
parameter
signed
b0107 = 18
'b0_0100_0000_0000_00000;   //0.25
parameter
signed
b0108 = 18
'b0_0010_0001_0010_01001;   //0.12947
parameter
signed
b0109 = 18
'b1_1100_0001_0110_11001;   //-0.24444
parameter
signed
b0110 = 18
'b0_0001_1010_0110_10101;   //0.10319
parameter
signed
b0111 = 18
'b0_0011_0001_0111_00001;   //0.19313
parameter
signed
b0112 = 18
'b1_1110_1110_0101_01001;   //-0.06903
parameter
signed
b0113 = 18
'b1_1110_0101_0110_01000;   //-0.10395
parameter
signed
b0114 = 18
'b0_0001_1010_0101_00010;   //0.1028
parameter
signed
b0115 = 18
'b0_0000_0001_0111_10000;   //0.00574
parameter
signed
b0116 = 18
'b0_0001_0001_0110_11110;   //0.0681
parameter
signed
b0117 = 18
'b0_0000_0010_0011_10100;   //0.0087
parameter
signed
b0118 = 18
'b1_1111_1011_0001_01000;   //-0.01923
parameter
signed
b0119 = 18
'b0_0010_1010_0100_10011;   //0.16519
parameter
signed
b0200 = 18
'b0_0000_0100_0100_01111;   //0.01672
parameter
signed
b0201 = 18
'b0_0010_1001_1110_10001;   //0.16371
parameter
signed
b0202 = 18
'b1_1111_1001_0100_11100;   //-0.02616
parameter
signed
b0203 = 18
'b0_0000_1111_1110_10000;   //0.06214
parameter
signed
b0204 = 18
'b0_0001_1000_0010_00110;   //0.09429
parameter
signed
b0205 = 18
'b0_0010_1111_0011_10100;   //0.18448
parameter
signed
b0206 = 18
'b0_0001_0101_0110_11111;   //0.08374
parameter
signed
b0207 = 18
'b0_0010_0000_0000_00000;   //0.125
parameter
signed
b0208 = 18
'b0_0110_0011_1000_10111;   //0.38885
parameter
signed
b0209 = 18
'b1_1100_0000_0000_00000;   //-0.25
parameter
signed
b0210 = 18
'b0_0010_0010_0101_01010;   //0.13411
parameter
signed
b0211 = 18
'b0_0001_1111_0111_10101;   //0.12297
parameter
signed
b0212 = 18
'b1_1011_1000_0111_10000;   //-0.27942
parameter
signed
b0213 = 18
'b1_1110_1110_1110_00001;   //-0.06689
parameter
signed
b0214 = 18
'b1_1101_1010_1110_10001;   //-0.14489
parameter
signed
b0215 = 18
'b0_0000_1111_1000_11010;   //0.06075
parameter
signed
b0216 = 18
'b0_0000_0000_0100_11101;   //0.0012
parameter
signed
b0217 = 18
'b1_1111_1110_0000_10011;   //-0.00767
parameter
signed
b0218 = 18
'b0_0001_1101_0111_11000;   //0.11518
parameter
signed
b0219 = 18
'b0_0010_1001_1010_10110;   //0.16277
parameter
signed
b0300 = 18
'b0_0001_0011_0001_01000;   //0.07453
parameter
signed
b0301 = 18
'b1_1110_1101_0000_00100;   //-0.07419
parameter
signed
b0302 = 18
'b1_1101_1001_0101_11110;   //-0.1509
parameter
signed
b0303 = 18
'b0_0000_0011_0111_01110;   //0.01354
parameter
signed
b0304 = 18
'b0_0000_1100_1111_00101;   //0.05058
parameter
signed
b0305 = 18
'b0_0000_0110_1111_01101;   //0.0272
parameter
signed
b0306 = 18
'b0_0000_1101_1011_10000;   //0.05359
parameter
signed
b0307 = 18
'b1_1110_0101_1110_10100;   //-0.1019
parameter
signed
b0308 = 18
'b1_1111_1010_0100_00011;   //-0.02244
parameter
signed
b0309 = 18
'b0_0000_0010_0110_10111;   //0.00946
parameter
signed
b0310 = 18
'b0_0010_1000_1100_01001;   //0.15925
parameter
signed
b0311 = 18
'b1_1111_1110_1011_00100;   //-0.0051
parameter
signed
b0312 = 18
'b0_0001_0001_1011_10111;   //0.06927
parameter
signed
b0313 = 18
'b1_1110_0111_1111_11001;   //-0.09381
parameter
signed
b0314 = 18
'b1_1110_1010_1100_10110;   //-0.08284
parameter
signed
b0315 = 18
'b1_1111_1111_0101_00101;   //-0.00265
parameter
signed
b0316 = 18
'b1_1111_0111_0101_01101;   //-0.03384
parameter
signed
b0317 = 18
'b1_1111_1001_0100_01011;   //-0.02629
parameter
signed
b0318 = 18
'b1_1100_1110_0101_01111;   //-0.19398
parameter
signed
b0319 = 18
'b0_0000_0011_1000_11011;   //0.01388
parameter
signed
b0400 = 18
'b1_1010_0110_0110_00111;   //-0.35005
parameter
signed
b0401 = 18
'b1_1101_0110_0010_10110;   //-0.16341
parameter
signed
b0402 = 18
'b1_1110_0110_1101_00000;   //-0.09839
parameter
signed
b0403 = 18
'b0_0100_1011_0000_10111;   //0.29315
parameter
signed
b0404 = 18
'b1_1111_0000_0000_00000;   //-0.0625
parameter
signed
b0405 = 18
'b1_1100_0011_0101_11001;   //-0.23687
parameter
signed
b0406 = 18
'b1_1111_0001_1100_11001;   //-0.05548
parameter
signed
b0407 = 18
'b1_1111_1010_1100_00111;   //-0.02046
parameter
signed
b0408 = 18
'b0_0000_0010_1001_11111;   //0.01025
parameter
signed
b0409 = 18
'b0_0001_0100_0101_00011;   //0.07937
parameter
signed
b0410 = 18
'b0_0110_1010_0101_11100;   //0.4155
parameter
signed
b0411 = 18
'b0_0011_0010_0100_11010;   //0.19649
parameter
signed
b0412 = 18
'b0_0001_0111_0000_00011;   //0.08987
parameter
signed
b0413 = 18
'b0_0001_1000_0100_00111;   //0.09478
parameter
signed
b0414 = 18
'b0_0010_0010_0110_00101;   //0.13432
parameter
signed
b0415 = 18
'b1_1111_0011_1111_01101;   //-0.04702
parameter
signed
b0416 = 18
'b1_1111_0010_0110_01111;   //-0.05311
parameter
signed
b0417 = 18
'b0_0001_1000_0101_10110;   //0.09514
parameter
signed
b0418 = 18
'b0_0011_0001_0100_11011;   //0.19259
parameter
signed
b0419 = 18
'b0_0000_1110_1011_00010;   //0.05739
parameter
signed
b0500 = 18
'b1_0111_0010_1110_10011;   //-0.55113
parameter
signed
b0501 = 18
'b0_0101_0010_0110_10111;   //0.32196
parameter
signed
b0502 = 18
'b1_1010_0111_0101_00001;   //-0.34643
parameter
signed
b0503 = 18
'b0_0110_0111_0001_01101;   //0.40269
parameter
signed
b0504 = 18
'b0_0010_0000_0000_00000;   //0.125
parameter
signed
b0505 = 18
'b1_1110_0110_1000_10000;   //-0.09949
parameter
signed
b0506 = 18
'b0_0000_0111_0101_00011;   //0.02859
parameter
signed
b0507 = 18
'b1_1111_1001_1100_10101;   //-0.02426
parameter
signed
b0508 = 18
'b0_0011_1001_0111_10001;   //0.2245
parameter
signed
b0509 = 18
'b1_1011_0110_0100_11111;   //-0.28785
parameter
signed
b0510 = 18
'b0_0100_0110_0001_00011;   //0.27371
parameter
signed
b0511 = 18
'b0_0110_1010_0010_10111;   //0.41473
parameter
signed
b0512 = 18
'b1_1110_0111_1111_11111;   //-0.09376
parameter
signed
b0513 = 18
'b0_0000_0010_0100_00001;   //0.0088
parameter
signed
b0514 = 18
'b1_1110_0101_0100_00001;   //-0.10449
parameter
signed
b0515 = 18
'b0_0000_1111_0001_11011;   //0.05905
parameter
signed
b0516 = 18
'b1_1111_0011_0010_00010;   //-0.05028
parameter
signed
b0517 = 18
'b0_0001_0010_0111_11000;   //0.07221
parameter
signed
b0518 = 18
'b0_0010_0110_0010_10101;   //0.14909
parameter
signed
b0519 = 18
'b0_0001_1110_0010_00111;   //0.11773
parameter
signed
b0600 = 18
'b0_0000_0000_0001_00100;   //0.00028
parameter
signed
b0601 = 18
'b0_0010_1100_1011_00001;   //0.17457
parameter
signed
b0602 = 18
'b1_1111_1001_1111_10111;   //-0.02351
parameter
signed
b0603 = 18
'b0_0010_0000_0000_10010;   //0.12514
parameter
signed
b0604 = 18
'b0_0000_1001_1100_01011;   //0.03817
parameter
signed
b0605 = 18
'b1_1111_0011_0110_01001;   //-0.04925
parameter
signed
b0606 = 18
'b1_1111_0111_1001_10111;   //-0.03279
parameter
signed
b0607 = 18
'b0_0010_1011_1110_01001;   //0.17146
parameter
signed
b0608 = 18
'b1_1101_1011_1000_10101;   //-0.14242
parameter
signed
b0609 = 18
'b1_1110_1110_0000_11010;   //-0.07012
parameter
signed
b0610 = 18
'b1_1101_1111_0010_10001;   //-0.12829
parameter
signed
b0611 = 18
'b0_0000_1001_0101_01101;   //0.03648
parameter
signed
b0612 = 18
'b1_1111_0000_1010_00111;   //-0.06001
parameter
signed
b0613 = 18
'b0_0000_1110_0000_01000;   //0.05475
parameter
signed
b0614 = 18
'b0_0010_0110_1111_11000;   //0.15229
parameter
signed
b0615 = 18
'b0_0000_0101_1010_11111;   //0.02221
parameter
signed
b0616 = 18
'b0_0001_0001_1011_01010;   //0.06917
parameter
signed
b0617 = 18
'b1_1111_0011_1100_01110;   //-0.04775
parameter
signed
b0618 = 18
'b1_1101_1110_1110_11101;   //-0.12918
parameter
signed
b0619 = 18
'b0_0000_1010_1000_11101;   //0.04124
parameter
signed
b0700 = 18
'b1_1100_0101_0001_10001;   //-0.2301
parameter
signed
b0701 = 18
'b0_0001_1110_0110_11000;   //0.11884
parameter
signed
b0702 = 18
'b1_1100_0100_1000_01111;   //-0.23231
parameter
signed
b0703 = 18
'b0_0011_0101_1000_10011;   //0.20913
parameter
signed
b0704 = 18
'b0_0000_1110_0010_01101;   //0.05528
parameter
signed
b0705 = 18
'b1_1100_0000_1111_10001;   //-0.24621
parameter
signed
b0706 = 18
'b0_0000_1100_0111_01111;   //0.0487
parameter
signed
b0707 = 18
'b1_1110_1001_1011_10000;   //-0.08704
parameter
signed
b0708 = 18
'b1_1101_0100_0111_00001;   //-0.17016
parameter
signed
b0709 = 18
'b1_1010_1101_0010_00110;   //-0.32369
parameter
signed
b0710 = 18
'b0_0100_0010_1010_00111;   //0.26031
parameter
signed
b0711 = 18
'b0_0101_0000_1101_00111;   //0.31573
parameter
signed
b0712 = 18
'b1_1110_1100_0001_01011;   //-0.0778
parameter
signed
b0713 = 18
'b0_0001_0010_0011_11101;   //0.07127
parameter
signed
b0714 = 18
'b1_1110_1001_1101_11100;   //-0.08646
parameter
signed
b0715 = 18
'b0_0001_1100_1000_11001;   //0.11152
parameter
signed
b0716 = 18
'b0_0000_0010_1011_10001;   //0.01063
parameter
signed
b0717 = 18
'b0_0001_0001_1101_01101;   //0.06968
parameter
signed
b0718 = 18
'b1_1111_0010_1111_10110;   //-0.05086
parameter
signed
b0719 = 18
'b0_0001_0111_1100_00110;   //0.09282
parameter
signed
b0800 = 18
'b1_1111_1100_0001_00101;   //-0.01535
parameter
signed
b0801 = 18
'b1_1011_1001_1101_01111;   //-0.27406
parameter
signed
b0802 = 18
'b1_1111_1110_0110_00010;   //-0.00634
parameter
signed
b0803 = 18
'b1_1110_0001_0011_00101;   //-0.12033
parameter
signed
b0804 = 18
'b1_1010_0100_0000_10010;   //-0.35924
parameter
signed
b0805 = 18
'b0_0000_0000_1000_01110;   //0.00206
parameter
signed
b0806 = 18
'b1_1011_0110_0100_10000;   //-0.28797
parameter
signed
b0807 = 18
'b1_1010_0111_1110_11000;   //-0.34406
parameter
signed
b0808 = 18
'b0_0100_0011_0010_01000;   //0.26227
parameter
signed
b0809 = 18
'b0_0001_1000_1000_10000;   //0.09583
parameter
signed
b0810 = 18
'b0_0001_1100_0101_11000;   //0.11078
parameter
signed
b0811 = 18
'b1_1111_0100_0000_00101;   //-0.04684
parameter
signed
b0812 = 18
'b0_0000_1010_0101_01101;   //0.04039
parameter
signed
b0813 = 18
'b1_1000_1010_0000_00001;   //-0.46093
parameter
signed
b0814 = 18
'b0_0000_1000_0100_01101;   //0.03233
parameter
signed
b0815 = 18
'b1_1001_1101_1001_00010;   //-0.38451
parameter
signed
b0816 = 18
'b0_0011_1111_1001_10110;   //0.24846
parameter
signed
b0817 = 18
'b0_0011_1010_0011_11010;   //0.2275
parameter
signed
b0818 = 18
'b0_0010_1010_0110_11001;   //0.16572
parameter
signed
b0819 = 18
'b1_1100_0000_1110_10111;   //-0.24641
parameter
signed
b0900 = 18
'b0_0100_1100_0101_11010;   //0.2983
parameter
signed
b0901 = 18
'b1_1111_0011_0000_00110;   //-0.05074
parameter
signed
b0902 = 18
'b0_0001_1010_1010_11110;   //0.10424
parameter
signed
b0903 = 18
'b1_1101_1101_1101_00110;   //-0.1335
parameter
signed
b0904 = 18
'b0_0000_0110_0000_01101;   //0.02354
parameter
signed
b0905 = 18
'b1_1111_0000_1000_00011;   //-0.06053
parameter
signed
b0906 = 18
'b0_0000_0101_0111_11011;   //0.02145
parameter
signed
b0907 = 18
'b0_0001_0000_0101_11100;   //0.06394
parameter
signed
b0908 = 18
'b0_0011_1001_0101_00000;   //0.22388
parameter
signed
b0909 = 18
'b0_0100_1110_0100_10011;   //0.30581
parameter
signed
b0910 = 18
'b1_0111_1011_0000_10011;   //-0.51939
parameter
signed
b0911 = 18
'b1_1101_0000_1010_11000;   //-0.18488
parameter
signed
b0912 = 18
'b1_1100_1010_1010_01100;   //-0.20841
parameter
signed
b0913 = 18
'b1_1110_0110_0011_01110;   //-0.10073
parameter
signed
b0914 = 18
'b1_1111_0010_0000_11100;   //-0.05448
parameter
signed
b0915 = 18
'b0_0010_0010_1010_01111;   //0.13537
parameter
signed
b0916 = 18
'b0_0000_1111_0111_10000;   //0.06043
parameter
signed
b0917 = 18
'b0_0000_0001_0101_11001;   //0.00532
parameter
signed
b0918 = 18
'b1_1101_0101_0101_01001;   //-0.16668
parameter
signed
b0919 = 18
'b0_0110_1100_0001_11001;   //0.42231
parameter
signed
b1000 = 18
'b1_1111_1111_0100_11111;   //-0.0027
parameter
signed
b1001 = 18
'b0_0000_0010_1010_00011;   //0.01028
parameter
signed
b1002 = 18
'b1_1111_0010_0001_01101;   //-0.05435
parameter
signed
b1003 = 18
'b0_0000_1011_0000_00101;   //0.04301
parameter
signed
b1004 = 18
'b1_1111_0001_0111_01101;   //-0.05679
parameter
signed
b1005 = 18
'b0_0000_0100_0110_00101;   //0.01713
parameter
signed
b1006 = 18
'b1_1110_1111_1111_11111;   //-0.06251
parameter
signed
b1007 = 18
'b1_1111_0100_0000_10001;   //-0.04675
parameter
signed
b1008 = 18
'b1_1101_1000_1101_01001;   //-0.15301
parameter
signed
b1009 = 18
'b0_0001_1110_0100_00100;   //0.1182
parameter
signed
b1010 = 18
'b0_0000_0001_0111_00000;   //0.00562
parameter
signed
b1011 = 18
'b1_1110_1000_0001_10110;   //-0.09334
parameter
signed
b1012 = 18
'b1_1110_0100_0011_10010;   //-0.10851
parameter
signed
b1013 = 18
'b0_0001_0100_0000_01011;   //0.07821
parameter
signed
b1014 = 18
'b0_0010_0100_1111_01110;   //0.1444
parameter
signed
b1015 = 18
'b0_0000_1111_1110_01100;   //0.06211
parameter
signed
b1016 = 18
'b0_0000_1000_1111_01110;   //0.03502
parameter
signed
b1017 = 18
'b1_1111_1110_0111_11011;   //-0.0059
parameter
signed
b1018 = 18
'b1_1100_1111_0000_11101;   //-0.19119
parameter
signed
b1019 = 18
'b1_1110_0000_1010_01011;   //-0.12248
parameter
signed
b1100 = 18
'b0_0000_1000_0010_10011;   //0.03189
parameter
signed
b1101 = 18
'b0_0010_1110_0000_01001;   //0.17976
parameter
signed
b1102 = 18
'b0_0010_1000_0110_11001;   //0.15791
parameter
signed
b1103 = 18
'b1_1111_1110_1001_10000;   //-0.0055
parameter
signed
b1104 = 18
'b1_1101_1111_0011_11001;   //-0.12799
parameter
signed
b1105 = 18
'b0_0000_0010_0001_10010;   //0.0082
parameter
signed
b1106 = 18
'b0_0000_0000_1000_00011;   //0.00198
parameter
signed
b1107 = 18
'b0_0000_0000_1011_00001;   //0.0027
parameter
signed
b1108 = 18
'b1_1111_1010_1100_01001;   //-0.02044
parameter
signed
b1109 = 18
'b1_1110_0110_0111_00001;   //-0.09985
parameter
signed
b1110 = 18
'b0_0000_1001_0111_01001;   //0.03694
parameter
signed
b1111 = 18
'b1_1110_0011_0011_01100;   //-0.11246
parameter
signed
b1112 = 18
'b0_0001_0101_1011_00101;   //0.08476
parameter
signed
b1113 = 18
'b1_1111_0111_0101_00001;   //-0.03393
parameter
signed
b1114 = 18
'b1_1100_1110_1000_10101;   //-0.1932
parameter
signed
b1115 = 18
'b1_1110_1000_1011_10111;   //-0.09089
parameter
signed
b1116 = 18
'b1_1111_1100_0000_00101;   //-0.01559
parameter
signed
b1117 = 18
'b1_1110_1010_1100_01001;   //-0.08294
parameter
signed
b1118 = 18
'b0_0001_1011_1100_01110;   //0.10851
parameter
signed
b1119 = 18
'b1_1101_0011_0110_00111;   //-0.17427
parameter
signed
b1200 = 18
'b0_0000_0110_1000_00110;   //0.02544
parameter
signed
b1201 = 18
'b1_1111_0110_0011_11001;   //-0.03814
parameter
signed
b1202 = 18
'b0_0000_1001_0001_11111;   //0.03564
parameter
signed
b1203 = 18
'b0_0001_1111_0001_00010;   //0.12136
parameter
signed
b1204 = 18
'b0_0001_0100_0001_10111;   //0.07855
parameter
signed
b1205 = 18
'b0_0000_1010_0010_01001;   //0.03962
parameter
signed
b1206 = 18
'b1_1111_0111_0110_01011;   //-0.03361
parameter
signed
b1207 = 18
'b1_1111_0010_0001_10110;   //-0.05428
parameter
signed
b1208 = 18
'b0_0000_1011_0101_11100;   //0.04441
parameter
signed
b1209 = 18
'b1_1110_0001_1101_11000;   //-0.11774
parameter
signed
b1210 = 18
'b0_0001_0011_1001_10110;   //0.07659
parameter
signed
b1211 = 18
'b0_0000_0010_1111_01011;   //0.01156
parameter
signed
b1212 = 18
'b0_0010_0011_1011_00100;   //0.13944
parameter
signed
b1213 = 18
'b0_0000_0101_1101_01011;   //0.02279
parameter
signed
b1214 = 18
'b1_1111_1010_0011_01000;   //-0.02265
parameter
signed
b1215 = 18
'b1_1110_0101_1010_01011;   //-0.10295
parameter
signed
b1216 = 18
'b1_1111_1110_1010_00011;   //-0.00535
parameter
signed
b1217 = 18
'b1_1101_0100_1101_00011;   //-0.16868
parameter
signed
b1218 = 18
'b1_1101_0001_1111_00110;   //-0.17989
parameter
signed
b1219 = 18
'b1_1111_1010_1110_01011;   //-0.01994
parameter
signed
b1300 = 18
'b1_0110_0010_1101_11101;   //-0.6138
parameter
signed
b1301 = 18
'b0_0001_0001_1010_01110;   //0.06896
parameter
signed
b1302 = 18
'b1_1011_1001_0111_10011;   //-0.27549
parameter
signed
b1303 = 18
'b0_1000_0000_0000_00000;   //0.5
parameter
signed
b1304 = 18
'b1_1111_0101_1111_01001;   //-0.03924
parameter
signed
b1305 = 18
'b1_1101_0000_0011_00100;   //-0.18674
parameter
signed
b1306 = 18
'b0_0010_0000_0100_10001;   //0.12611
parameter
signed
b1307 = 18
'b0_0000_0101_1011_00011;   //0.02224
parameter
signed
b1308 = 18
'b1_1110_1011_0100_01101;   //-0.08096
parameter
signed
b1309 = 18
'b1_1001_1001_1101_10100;   //-0.39902
parameter
signed
b1310 = 18
'b0_1001_0000_0001_11000;   //0.56293
parameter
signed
b1311 = 18
'b0_0101_0001_0010_00111;   //0.31695
parameter
signed
b1312 = 18
'b0_0001_1111_1100_00010;   //0.12404
parameter
signed
b1313 = 18
'b0_0000_1000_1001_10111;   //0.03363
parameter
signed
b1314 = 18
'b0_0010_0010_0110_10110;   //0.13445
parameter
signed
b1315 = 18
'b1_1110_1010_1100_00000;   //-0.08301
parameter
signed
b1316 = 18
'b0_0001_1010_0101_01111;   //0.1029
parameter
signed
b1317 = 18
'b0_0010_0100_0011_11001;   //0.14155
parameter
signed
b1318 = 18
'b0_0011_1010_0110_01000;   //0.22809
parameter
signed
b1319 = 18
'b1_1110_0000_1100_10100;   //-0.12192
parameter
signed
b1400 = 18
'b0_0100_1011_1000_01011;   //0.29501
parameter
signed
b1401 = 18
'b0_0001_0100_1111_11001;   //0.08198
parameter
signed
b1402 = 18
'b0_0100_1111_0010_00001;   //0.30909
parameter
signed
b1403 = 18
'b0_0000_0101_0110_11100;   //0.02121
parameter
signed
b1404 = 18
'b0_0000_1101_1110_01010;   //0.05428
parameter
signed
b1405 = 18
'b0_0010_0000_1001_10000;   //0.12732
parameter
signed
b1406 = 18
'b1_1101_1000_1100_10011;   //-0.15318
parameter
signed
b1407 = 18
'b0_0010_1000_0001_10111;   //0.15667
parameter
signed
b1408 = 18
'b0_0010_0000_0000_10001;   //0.12513
parameter
signed
b1409 = 18
'b0_0100_0101_1100_00011;   //0.27249
parameter
signed
b1410 = 18
'b1_1111_1111_0100_00010;   //-0.00292
parameter
signed
b1411 = 18
'b1_1111_0101_0010_01010;   //-0.04241
parameter
signed
b1412 = 18
'b0_0001_0000_0000_00000;   //0.0625
parameter
signed
b1413 = 18
'b0_0011_0111_0011_01101;   //0.21568
parameter
signed
b1414 = 18
'b1_1110_0010_0001_00111;   //-0.11689
parameter
signed
b1415 = 18
'b1_1111_1110_1000_10100;   //-0.00571
parameter
signed
b1416 = 18
'b1_1110_1100_1011_00010;   //-0.07543
parameter
signed
b1417 = 18
'b1_1111_1010_1110_11100;   //-0.01981
parameter
signed
b1418 = 18
'b1_1111_1110_0001_10101;   //-0.00741
parameter
signed
b1419 = 18
'b1_1110_0101_0001_10110;   //-0.10506
parameter
signed
b1500 = 18
'b1_1111_0100_0100_10001;   //-0.04577
parameter
signed
b1501 = 18
'b0_0001_1011_1001_01101;   //0.10777
parameter
signed
b1502 = 18
'b0_0001_1001_0111_10000;   //0.09949
parameter
signed
b1503 = 18
'b1_1101_1001_0010_11010;   //-0.15166
parameter
signed
b1504 = 18
'b0_0000_1010_1010_01100;   //0.0416
parameter
signed
b1505 = 18
'b0_0001_0000_0101_11100;   //0.06394
parameter
signed
b1506 = 18
'b1_1110_1000_1000_11010;   //-0.0916
parameter
signed
b1507 = 18
'b0_0001_1110_1011_01110;   //0.11998
parameter
signed
b1508 = 18
'b1_1111_0111_1001_00100;   //-0.03293
parameter
signed
b1509 = 18
'b1_1101_1111_1010_00101;   //-0.12643
parameter
signed
b1510 = 18
'b0_0000_0101_0011_01111;   //0.02038
parameter
signed
b1511 = 18
'b1_1111_1001_1000_11111;   //-0.02516
parameter
signed
b1512 = 18
'b0_0000_1101_1011_11010;   //0.05367
parameter
signed
b1513 = 18
'b1_1111_1001_0011_00001;   //-0.02661
parameter
signed
b1514 = 18
'b0_0001_0101_1011_10101;   //0.08488
parameter
signed
b1515 = 18
'b0_0000_1100_1110_00000;   //0.0503
parameter
signed
b1516 = 18
'b0_0001_0100_0000_00101;   //0.07817
parameter
signed
b1517 = 18
'b1_1101_0101_0101_11000;   //-0.16657
parameter
signed
b1518 = 18
'b1_1111_0011_1010_01110;   //-0.04824
parameter
signed
b1519 = 18
'b1_1111_1001_1001_01100;   //-0.02506
parameter
signed
b1600 = 18
'b1_1101_1100_0001_10011;   //-0.14024
parameter
signed
b1601 = 18
'b0_0100_0000_1101_01011;   //0.25326
parameter
signed
b1602 = 18
'b0_0001_0110_1101_11111;   //0.08935
parameter
signed
b1603 = 18
'b0_0001_0101_0001_11101;   //0.0825
parameter
signed
b1604 = 18
'b0_0100_0011_1100_10101;   //0.26481
parameter
signed
b1605 = 18
'b0_0000_1011_0000_01010;   //0.04305
parameter
signed
b1606 = 18
'b1_1111_0111_0100_01010;   //-0.03411
parameter
signed
b1607 = 18
'b1_1111_1001_1101_11101;   //-0.02395
parameter
signed
b1608 = 18
'b0_1000_0111_0000_01101;   //0.52745
parameter
signed
b1609 = 18
'b1_1110_0010_0101_11000;   //-0.11579
parameter
signed
b1610 = 18
'b0_0000_0011_1000_00111;   //0.01373
parameter
signed
b1611 = 18
'b1_1111_1101_1110_10100;   //-0.00815
parameter
signed
b1612 = 18
'b1_1100_1010_1001_01111;   //-0.20863
parameter
signed
b1613 = 18
'b0_0010_1011_0001_10000;   //0.16834
parameter
signed
b1614 = 18
'b1_1101_0011_0110_00101;   //-0.17428
parameter
signed
b1615 = 18
'b0_0100_0110_1000_10111;   //0.27557
parameter
signed
b1616 = 18
'b1_1110_0111_1010_10111;   //-0.09504
parameter
signed
b1617 = 18
'b1_1101_0010_1011_10110;   //-0.17684
parameter
signed
b1618 = 18
'b1_1110_1111_0111_10101;   //-0.06454
parameter
signed
b1619 = 18
'b0_0100_1110_0101_11011;   //0.30612
parameter
signed
b1700 = 18
'b0_0000_1010_1111_01001;   //0.0428
parameter
signed
b1701 = 18
'b1_1110_0001_0111_01101;   //-0.11929
parameter
signed
b1702 = 18
'b1_1100_0000_0011_01001;   //-0.2492
parameter
signed
b1703 = 18
'b1_1101_0010_0111_10000;   //-0.17786
parameter
signed
b1704 = 18
'b1_1011_1110_1101_01011;   //-0.25456
parameter
signed
b1705 = 18
'b0_0001_1111_1110_10100;   //0.12467
parameter
signed
b1706 = 18
'b0_0010_0001_1100_00111;   //0.13189
parameter
signed
b1707 = 18
'b1_1101_1100_0001_11111;   //-0.14015
parameter
signed
b1708 = 18
'b1_1100_0110_0011_11111;   //-0.2256
parameter
signed
b1709 = 18
'b1_1110_1001_0010_00100;   //-0.08933
parameter
signed
b1710 = 18
'b0_0001_1000_1001_10100;   //0.0961
parameter
signed
b1711 = 18
'b0_1000_1101_0100_01101;   //0.55186
parameter
signed
b1712 = 18
'b1_1101_1000_0111_11011;   //-0.15434
parameter
signed
b1713 = 18
'b1_1110_1100_0010_11100;   //-0.07743
parameter
signed
b1714 = 18
'b0_0010_1100_1011_01110;   //0.17467
parameter
signed
b1715 = 18
'b0_0000_0111_1110_10100;   //0.03092
parameter
signed
b1716 = 18
'b0_0100_0101_1010_11011;   //0.27218
parameter
signed
b1717 = 18
'b1_1101_1110_1111_00100;   //-0.12912
parameter
signed
b1718 = 18
'b1_1100_1000_1101_00001;   //-0.21557
parameter
signed
b1719 = 18
'b1_1110_1010_1000_00010;   //-0.08397
parameter
signed
b1800 = 18
'b1_1111_1101_0011_01000;   //-0.01093
parameter
signed
b1801 = 18
'b0_0010_0111_1111_01011;   //0.15609
parameter
signed
b1802 = 18
'b0_0011_0100_1111_01000;   //0.20685
parameter
signed
b1803 = 18
'b0_0000_0101_1110_01111;   //0.02307
parameter
signed
b1804 = 18
'b0_0000_1010_1100_11011;   //0.0422
parameter
signed
b1805 = 18
'b0_0001_1100_1011_10011;   //0.11221
parameter
signed
b1806 = 18
'b1_1000_1100_0100_00000;   //-0.45215
parameter
signed
b1807 = 18
'b1_1010_0011_1000_01111;   //-0.36122
parameter
signed
b1808 = 18
'b1_1010_1011_1100_11110;   //-0.32888
parameter
signed
b1809 = 18
'b1_1110_0111_1000_00101;   //-0.09567
parameter
signed
b1810 = 18
'b1_1110_1101_0110_00100;   //-0.07273
parameter
signed
b1811 = 18
'b1_1110_0111_0111_10000;   //-0.09583
parameter
signed
b1812 = 18
'b1_1100_1001_0100_10001;   //-0.21374
parameter
signed
b1813 = 18
'b1_0101_1110_0011_10010;   //-0.63195
parameter
signed
b1814 = 18
'b0_0000_0010_1100_11111;   //0.01098
parameter
signed
b1815 = 18
'b1_1100_1101_1011_11010;   //-0.19634
parameter
signed
b1816 = 18
'b0_0000_1000_1010_00101;   //0.03373
parameter
signed
b1817 = 18
'b0_0101_0000_1001_01110;   //0.31481
parameter
signed
b1818 = 18
'b1_1111_0010_1010_10001;   //-0.05212
parameter
signed
b1819 = 18
'b0_0001_0101_1000_10111;   //0.08416
parameter
signed
b1900 = 18
'b1_1101_0100_0111_11100;   //-0.16996
parameter
signed
b1901 = 18
'b1_1101_0011_1000_11100;   //-0.17362
parameter
signed
b1902 = 18
'b1_1110_1110_0010_01111;   //-0.06971
parameter
signed
b1903 = 18
'b0_0010_0100_1010_10001;   //0.1432
parameter
signed
b1904 = 18
'b0_0011_0100_0001_01010;   //0.20345
parameter
signed
b1905 = 18
'b0_0001_1110_0100_11010;   //0.11837
parameter
signed
b1906 = 18
'b1_1011_1011_1100_00010;   //-0.26659
parameter
signed
b1907 = 18
'b1_1001_1010_1110_00000;   //-0.39502
parameter
signed
b1908 = 18
'b1_1101_0000_0101_00100;   //-0.18625
parameter
signed
b1909 = 18
'b1_1111_0100_1101_11101;   //-0.04348
parameter
signed
b1910 = 18
'b1_1110_1001_0001_01010;   //-0.08953
parameter
signed
b1911 = 18
'b1_1110_1100_1101_11111;   //-0.07472
parameter
signed
b1912 = 18
'b1_1100_1100_1101_11010;   //-0.19976
parameter
signed
b1913 = 18
'b1_0111_0011_0001_01111;   //-0.55043
parameter
signed
b1914 = 18
'b1_1111_0001_0011_00010;   //-0.05785
parameter
signed
b1915 = 18
'b1_1100_0000_0000_00000;   //-0.25
parameter
signed
b1916 = 18
'b0_0101_1111_0101_10100;   //0.37247
parameter
signed
b1917 = 18
'b0_0010_0111_1111_11001;   //0.1562
parameter
signed
b1918 = 18
'b1_1100_1010_1001_00111;   //-0.20869
parameter
signed
b1919 = 18
'b0_0010_1101_1001_10101;   //0.17814

// W3参数矩阵

parameter
signed
c0000 = 18
'b1_1010_0110_1011_11100;   //-0.34867
parameter
signed
c0001 = 18
'b0_0000_0001_0000_01000;   //0.00397
parameter
signed
c0002 = 18
'b0_0011_0001_1001_01100;   //0.1937
parameter
signed
c0003 = 18
'b0_1100_0000_1011_11001;   //0.75288
parameter
signed
c0004 = 18
'b1_1011_0110_1110_10011;   //-0.2855
parameter
signed
c0005 = 18
'b1_0011_1011_1100_00001;   //-0.7666
parameter
signed
c0100 = 18
'b0_0000_0011_0101_11011;   //0.01315
parameter
signed
c0101 = 18
'b0_0011_0010_1001_00110;   //0.19756
parameter
signed
c0102 = 18
'b1_1100_0010_1110_01110;   //-0.23867
parameter
signed
c0103 = 18
'b1_1011_1111_1100_01000;   //-0.25092
parameter
signed
c0104 = 18
'b0_0111_0101_0100_00010;   //0.45803
parameter
signed
c0105 = 18
'b0_0011_0100_1100_00011;   //0.20608
parameter
signed
c0200 = 18
'b1_1100_1110_0010_00000;   //-0.19483
parameter
signed
c0201 = 18
'b1_1111_1001_1111_00010;   //-0.02367
parameter
signed
c0202 = 18
'b1_1001_0100_0011_10011;   //-0.421
parameter
signed
c0203 = 18
'b1_0101_1000_1011_01110;   //-0.65346
parameter
signed
c0204 = 18
'b1_1101_0100_1011_00010;   //-0.16918
parameter
signed
c0205 = 18
'b0_0110_0100_1101_01001;   //0.39387
parameter
signed
c0300 = 18
'b1_1000_0010_1010_00100;   //-0.48972
parameter
signed
c0301 = 18
'b0_0000_0100_0011_01101;   //0.01646
parameter
signed
c0302 = 18
'b0_0101_0000_1001_11110;   //0.31493
parameter
signed
c0303 = 18
'b1_1001_1011_0101_11100;   //-0.3931
parameter
signed
c0304 = 18
'b1_1110_0001_1010_11011;   //-0.11845
parameter
signed
c0305 = 18
'b0_0100_0110_1100_01010;   //0.27645
parameter
signed
c0400 = 18
'b1_1110_0000_1111_01001;   //-0.12127
parameter
signed
c0401 = 18
'b0_0001_0111_1001_01001;   //0.09211
parameter
signed
c0402 = 18
'b1_1111_1011_0100_01101;   //-0.01846
parameter
signed
c0403 = 18
'b1_1011_1110_1100_10011;   //-0.25474
parameter
signed
c0404 = 18
'b0_0111_0101_1100_10100;   //0.46012
parameter
signed
c0405 = 18
'b0_0100_0010_0010_01011;   //0.25839
parameter
signed
c0500 = 18
'b1_1101_0000_0100_10001;   //-0.1864
parameter
signed
c0501 = 18
'b1_1111_0101_0100_10111;   //-0.04182
parameter
signed
c0502 = 18
'b1_1011_0110_0000_01101;   //-0.28897
parameter
signed
c0503 = 18
'b0_0101_0001_0011_11011;   //0.31735
parameter
signed
c0504 = 18
'b0_0011_0010_0000_11001;   //0.19551
parameter
signed
c0505 = 18
'b0_0000_0010_0000_11111;   //0.00805
parameter
signed
c0600 = 18
'b0_0000_1001_1110_01001;   //0.03865
parameter
signed
c0601 = 18
'b0_1010_0100_1101_11110;   //0.64403
parameter
signed
c0602 = 18
'b1_1100_0110_0000_01001;   //-0.2265
parameter
signed
c0603 = 18
'b0_1000_0000_0000_00000;   //0.5
parameter
signed
c0604 = 18
'b1_1101_1100_0000_10001;   //-0.1405
parameter
signed
c0605 = 18
'b0_0100_1001_1101_01110;   //0.28844
parameter
signed
c0700 = 18
'b0_0010_1011_1000_11111;   //0.17016
parameter
signed
c0701 = 18
'b0_1010_1110_1100_01101;   //0.68272
parameter
signed
c0702 = 18
'b0_0001_0010_1100_01100;   //0.07334
parameter
signed
c0703 = 18
'b0_0111_0110_1000_11111;   //0.46313
parameter
signed
c0704 = 18
'b0_0001_0011_1101_01000;   //0.07746
parameter
signed
c0705 = 18
'b0_0101_1101_0110_11001;   //0.36494
parameter
signed
c0800 = 18
'b1_1100_1010_1000_10010;   //-0.20885
parameter
signed
c0801 = 18
'b1_0001_1010_0100_11011;   //-0.89726
parameter
signed
c0802 = 18
'b1_1111_0111_0100_11100;   //-0.03397
parameter
signed
c0803 = 18
'b0_0010_0010_0001_11111;   //0.1333
parameter
signed
c0804 = 18
'b1_1110_0110_0111_10101;   //-0.0997
parameter
signed
c0805 = 18
'b0_0000_0111_0001_11010;   //0.02779
parameter
signed
c0900 = 18
'b1_0111_1010_0010_11100;   //-0.52274
parameter
signed
c0901 = 18
'b0_0000_1010_0100_01001;   //0.04011
parameter
signed
c0902 = 18
'b1_1001_1010_0100_01000;   //-0.3974
parameter
signed
c0903 = 18
'b0_0010_0000_0000_10110;   //0.12517
parameter
signed
c0904 = 18
'b1_0111_1101_1010_00000;   //-0.50928
parameter
signed
c0905 = 18
'b1_1000_0000_0000_00000;   //-0.5
parameter
signed
c1000 = 18
'b1_1001_0111_0110_11111;   //-0.40846
parameter
signed
c1001 = 18
'b1_1110_0011_0111_11100;   //-0.11136
parameter
signed
c1002 = 18
'b0_0011_1000_0101_11111;   //0.22021
parameter
signed
c1003 = 18
'b0_0001_0100_0001_10110;   //0.07854
parameter
signed
c1004 = 18
'b1_0101_0110_1000_11111;   //-0.66188
parameter
signed
c1005 = 18
'b1_0111_1111_0111_10100;   //-0.50205
parameter
signed
c1100 = 18
'b1_1010_0010_0101_01100;   //-0.36588
parameter
signed
c1101 = 18
'b0_0000_0111_0100_10111;   //0.0285
parameter
signed
c1102 = 18
'b1_1101_0101_1000_11110;   //-0.16579
parameter
signed
c1103 = 18
'b0_1010_1000_0111_10001;   //0.65809
parameter
signed
c1104 = 18
'b1_1101_0011_0111_00011;   //-0.17405
parameter
signed
c1105 = 18
'b1_0110_0001_1010_10111;   //-0.61848
parameter
signed
c1200 = 18
'b0_0110_0111_1011_01010;   //0.40511
parameter
signed
c1201 = 18
'b1_1110_1101_0111_10010;   //-0.07238
parameter
signed
c1202 = 18
'b0_0010_0000_1101_10111;   //0.12835
parameter
signed
c1203 = 18
'b0_0011_1100_0010_00010;   //0.23488
parameter
signed
c1204 = 18
'b1_0101_0100_1110_11010;   //-0.66826
parameter
signed
c1205 = 18
'b0_0000_0001_0011_11010;   //0.00484
parameter
signed
c1300 = 18
'b0_0001_0100_0111_01011;   //0.07992
parameter
signed
c1301 = 19
'b010_0000_1011_0101_1010;   //1.02217
parameter
signed
c1302 = 18
'b0_0000_1100_0101_01011;   //0.04818
parameter
signed
c1303 = 18
'b0_0010_0010_1001_00001;   //0.13502
parameter
signed
c1304 = 18
'b1_1100_0100_0010_01101;   //-0.23379
parameter
signed
c1305 = 18
'b0_0001_0101_0110_10010;   //0.08364
parameter
signed
c1400 = 18
'b0_0010_1110_0000_01000;   //0.17975
parameter
signed
c1401 = 18
'b1_1101_0100_0111_00100;   //-0.17014
parameter
signed
c1402 = 18
'b0_0001_1111_1001_01110;   //0.1234
parameter
signed
c1403 = 18
'b0_0011_0110_1110_01001;   //0.21443
parameter
signed
c1404 = 18
'b1_1110_0100_0001_01010;   //-0.10906
parameter
signed
c1405 = 18
'b1_1100_0001_0000_01110;   //-0.24599
parameter
signed
c1500 = 18
'b1_1100_0111_0111_10000;   //-0.22083
parameter
signed
c1501 = 18
'b0_1000_1110_0010_01001;   //0.55525
parameter
signed
c1502 = 18
'b0_0010_0000_0000_00000;   //0.125
parameter
signed
c1503 = 18
'b0_0010_0011_1111_10100;   //0.14054
parameter
signed
c1504 = 18
'b0_0010_0110_0101_00001;   //0.14967
parameter
signed
c1505 = 18
'b0_0010_1111_1000_11110;   //0.18578
parameter
signed
c1600 = 18
'b1_1111_0001_1010_10011;   //-0.05601
parameter
signed
c1601 = 18
'b1_1001_1111_0110_10011;   //-0.3773
parameter
signed
c1602 = 18
'b1_1111_0010_1001_01100;   //-0.0524
parameter
signed
c1603 = 18
'b0_0011_1111_1010_00001;   //0.24855
parameter
signed
c1604 = 18
'b1_1110_1100_1110_11001;   //-0.07452
parameter
signed
c1605 = 18
'b1_1110_1100_0111_10001;   //-0.07629
parameter
signed
c1700 = 18
'b0_1000_0100_1000_11011;   //0.51779
parameter
signed
c1701 = 18
'b1_0111_1111_1100_01110;   //-0.50087
parameter
signed
c1702 = 18
'b0_0001_1010_0010_11111;   //0.10229
parameter
signed
c1703 = 18
'b1_1111_0011_1101_11100;   //-0.0474
parameter
signed
c1704 = 18
'b0_0010_1101_1011_00001;   //0.17848
parameter
signed
c1705 = 18
'b0_0000_1001_1111_10001;   //0.03895
parameter
signed
c1800 = 18
'b0_1000_1010_0101_01101;   //0.54039
parameter
signed
c1801 = 18
'b0_0000_1011_0001_00000;   //0.04322
parameter
signed
c1802 = 18
'b0_0000_1010_1010_01011;   //0.04159
parameter
signed
c1803 = 18
'b1_1110_0011_0101_00101;   //-0.11203
parameter
signed
c1804 = 18
'b0_0000_0111_1100_00010;   //0.03029
parameter
signed
c1805 = 18
'b1_1110_0101_1001_10100;   //-0.10312
parameter
signed
c1900 = 18
'b1_1011_1110_1001_00001;   //-0.25561
parameter
signed
c1901 = 18
'b0_0000_0111_1110_10011;   //0.03091
parameter
signed
c1902 = 18
'b0_0101_1010_0001_01100;   //0.3519
parameter
signed
c1903 = 18
'b0_0001_0101_1101_11010;   //0.08541
parameter
signed
c1904 = 18
'b0_1000_0101_1111_11111;   //0.52343
parameter
signed
c1905 = 18
'b0_0010_1001_1111_00010;   //0.16384

// B1参数矩阵

parameter
signed
d0000 = 18
'b1_0111_0001_0000_11101;   //-0.55838
parameter
signed
d0100 = 18
'b1_1101_0010_1011_11111;   //-0.17677
parameter
signed
d0200 = 18
'b1_1100_0001_0000_11111;   //-0.24586
parameter
signed
d0300 = 18
'b0_0000_0000_0000_00000;   //0.0
parameter
signed
d0400 = 18
'b1_1111_0101_0111_11101;   //-0.04104
parameter
signed
d0500 = 18
'b1_1110_1100_0011_11000;   //-0.07721
parameter
signed
d0600 = 18
'b1_1111_0111_0101_00000;   //-0.03394
parameter
signed
d0700 = 18
'b1_1101_1001_0011_01111;   //-0.1515
parameter
signed
d0800 = 18
'b1_0110_1001_1000_01011;   //-0.58781
parameter
signed
d0900 = 18
'b0_0101_1011_0111_01000;   //0.35724
parameter
signed
d1000 = 18
'b0_0000_0000_0000_00000;   //0.0
parameter
signed
d1100 = 18
'b1_1111_0111_1110_10101;   //-0.03158
parameter
signed
d1200 = 18
'b0_0000_0000_0000_00000;   //0.0
parameter
signed
d1300 = 18
'b0_0000_0000_0000_11100;   //0.00022
parameter
signed
d1400 = 18
'b0_0110_0000_0001_11010;   //0.37545
parameter
signed
d1500 = 18
'b0_0000_0000_0000_00000;   //0.0
parameter
signed
d1600 = 18
'b0_0000_0010_1011_11111;   //0.01074
parameter
signed
d1700 = 18
'b1_1001_1000_1001_01011;   //-0.40397
parameter
signed
d1800 = 18
'b0_0110_1100_0010_01000;   //0.42243
parameter
signed
d1900 = 18
'b0_0100_1010_0110_00110;   //0.29058

// B2参数矩阵

parameter
signed
f0000 = 18
'b0_1010_0011_1100_10111;   //0.63983
parameter
signed
f0100 = 18
'b0_0010_1111_0010_11000;   //0.18427
parameter
signed
f0200 = 18
'b0_1010_0010_0101_01111;   //0.63415
parameter
signed
f0300 = 18
'b1_1110_0010_1011_00011;   //-0.11448
parameter
signed
f0400 = 18
'b0_0010_1011_1001_10010;   //0.17031
parameter
signed
f0500 = 18
'b0_0011_0100_1111_10111;   //0.20697
parameter
signed
f0600 = 18
'b0_0101_0111_1111_11010;   //0.34371
parameter
signed
f0700 = 18
'b0_0100_1100_1010_10100;   //0.29947
parameter
signed
f0800 = 18
'b1_1101_1111_0011_00101;   //-0.12814
parameter
signed
f0900 = 18
'b0_1001_1111_1101_01101;   //0.62437
parameter
signed
f1000 = 18
'b1_1110_1000_0000_00110;   //-0.09371
parameter
signed
f1100 = 18
'b1_1010_1100_1000_01010;   //-0.3261
parameter
signed
f1200 = 18
'b0_0111_0001_0110_01111;   //0.44299
parameter
signed
f1300 = 18
'b0_0110_0001_0101_01100;   //0.38022
parameter
signed
f1400 = 18
'b0_0011_0010_0000_10010;   //0.19545
parameter
signed
f1500 = 18
'b0_0010_0101_0000_00110;   //0.14458
parameter
signed
f1600 = 18
'b0_0000_0011_0111_10011;   //0.01358
parameter
signed
f1700 = 18
'b0_0110_1111_1000_10101;   //0.43571
parameter
signed
f1800 = 18
'b0_0110_0101_1110_10011;   //0.3981
parameter
signed
f1900 = 18
'b0_0011_0000_0101_01010;   //0.1888

// B3参数矩阵

parameter
signed
g0000 = 18
'b0_1111_0001_0100_10101;   //0.94255
parameter
signed
g0100 = 18
'b0_0011_0001_0110_10000;   //0.193
parameter
signed
g0200 = 18
'b0_0110_0111_0111_01100;   //0.40415
parameter
signed
g0300 = 18
'b0_0101_0010_0111_01010;   //0.3221
parameter
signed
g0400 = 18
'b0_1001_0101_1101_10010;   //0.58535
parameter
signed
g0500 = 18
'b0_0111_0110_1100_01000;   //0.46393

// W1中间矩阵
reg
signed[35:0]
L1_M1_0;
reg
signed[35:0]
L1_M2_0;
reg
signed[35:0]
L1_M1_1;
reg
signed[35:0]
L1_M2_1;
reg
signed[35:0]
L1_M1_2;
reg
signed[35:0]
L1_M2_2;
reg
signed[35:0]
L1_M1_3;
reg
signed[35:0]
L1_M2_3;
reg
signed[35:0]
L1_M1_4;
reg
signed[35:0]
L1_M2_4;
reg
signed[35:0]
L1_M1_5;
reg
signed[35:0]
L1_M2_5;
reg
signed[35:0]
L1_M1_6;
reg
signed[35:0]
L1_M2_6;
reg
signed[35:0]
L1_M1_7;
reg
signed[35:0]
L1_M2_7;
reg
signed[35:0]
L1_M1_8;
reg
signed[35:0]
L1_M2_8;
reg
signed[35:0]
L1_M1_9;
reg
signed[35:0]
L1_M2_9;
reg
signed[35:0]
L1_M1_10;
reg
signed[35:0]
L1_M2_10;
reg
signed[35:0]
L1_M1_11;
reg
signed[35:0]
L1_M2_11;
reg
signed[35:0]
L1_M1_12;
reg
signed[35:0]
L1_M2_12;
reg
signed[35:0]
L1_M1_13;
reg
signed[35:0]
L1_M2_13;
reg
signed[35:0]
L1_M1_14;
reg
signed[35:0]
L1_M2_14;
reg
signed[35:0]
L1_M1_15;
reg
signed[35:0]
L1_M2_15;
reg
signed[35:0]
L1_M1_16;
reg
signed[35:0]
L1_M2_16;
reg
signed[35:0]
L1_M1_17;
reg
signed[35:0]
L1_M2_17;
reg
signed[35:0]
L1_M1_18;
reg
signed[35:0]
L1_M2_18;
reg
signed[35:0]
L1_M1_19;
reg
signed[35:0]
L1_M2_19;

// W1输出

reg
signed[35:0]
L1_0;
reg
signed[35:0]
L1_1;
reg
signed[35:0]
L1_2;
reg
signed[35:0]
L1_3;
reg
signed[35:0]
L1_4;
reg
signed[35:0]
L1_5;
reg
signed[35:0]
L1_6;
reg
signed[35:0]
L1_7;
reg
signed[35:0]
L1_8;
reg
signed[35:0]
L1_9;
reg
signed[35:0]
L1_10;
reg
signed[35:0]
L1_11;
reg
signed[35:0]
L1_12;
reg
signed[35:0]
L1_13;
reg
signed[35:0]
L1_14;
reg
signed[35:0]
L1_15;
reg
signed[35:0]
L1_16;
reg
signed[35:0]
L1_17;
reg
signed[35:0]
L1_18;
reg
signed[35:0]
L1_19;

// 激活函数输出
reg
signed[35:0]
R1_0;
reg
signed[35:0]
R1_1;
reg
signed[35:0]
R1_2;
reg
signed[35:0]
R1_3;
reg
signed[35:0]
R1_4;
reg
signed[35:0]
R1_5;
reg
signed[35:0]
R1_6;
reg
signed[35:0]
R1_7;
reg
signed[35:0]
R1_8;
reg
signed[35:0]
R1_9;
reg
signed[35:0]
R1_10;
reg
signed[35:0]
R1_11;
reg
signed[35:0]
R1_12;
reg
signed[35:0]
R1_13;
reg
signed[35:0]
R1_14;
reg
signed[35:0]
R1_15;
reg
signed[35:0]
R1_16;
reg
signed[35:0]
R1_17;
reg
signed[35:0]
R1_18;
reg
signed[35:0]
R1_19;

// 激活函数输出
reg
signed[35:0]
R2_0;
reg
signed[35:0]
R2_1;
reg
signed[35:0]
R2_2;
reg
signed[35:0]
R2_3;
reg
signed[35:0]
R2_4;
reg
signed[35:0]
R2_5;
reg
signed[35:0]
R2_6;
reg
signed[35:0]
R2_7;
reg
signed[35:0]
R2_8;
reg
signed[35:0]
R2_9;
reg
signed[35:0]
R2_10;
reg
signed[35:0]
R2_11;
reg
signed[35:0]
R2_12;
reg
signed[35:0]
R2_13;
reg
signed[35:0]
R2_14;
reg
signed[35:0]
R2_15;
reg
signed[35:0]
R2_16;
reg
signed[35:0]
R2_17;
reg
signed[35:0]
R2_18;
reg
signed[35:0]
R2_19;

reg
signed[35:0]
L2_0;
reg
signed[35:0]
L2_1;
reg
signed[35:0]
L2_2;
reg
signed[35:0]
L2_3;
reg
signed[35:0]
L2_4;
reg
signed[35:0]
L2_5;
reg
signed[35:0]
L2_6;
reg
signed[35:0]
L2_7;
reg
signed[35:0]
L2_8;
reg
signed[35:0]
L2_9;
reg
signed[35:0]
L2_10;
reg
signed[35:0]
L2_11;
reg
signed[35:0]
L2_12;
reg
signed[35:0]
L2_13;
reg
signed[35:0]
L2_14;
reg
signed[35:0]
L2_15;
reg
signed[35:0]
L2_16;
reg
signed[35:0]
L2_17;
reg
signed[35:0]
L2_18;
reg
signed[35:0]
L2_19;

reg
signed[35:0]
L3_0;
reg
signed[35:0]
L3_1;
reg
signed[35:0]
L3_2;
reg
signed[35:0]
L3_3;
reg
signed[35:0]
L3_4;
reg
signed[35:0]
L3_5;

reg[10:0]
conter;

always @ (posedge clock)
begin
if (reset == 1) begin
conter <= 10
'd0;
end
else if (conter < 10'd33) begin
conter <= conter+10'd1;
end
else begin
conter <= 10'd0;
end

end


always @ (posedge clock) begin
if (reset == 1) begin
Amul_0 <= 0;  Bmul_0 <= 0;
Amul_1 <= 0;  Bmul_1 <= 0;
Amul_2 <= 0;  Bmul_2 <= 0;
Amul_3 <= 0;  Bmul_3 <= 0;
Amul_4 <= 0;  Bmul_4 <= 0;
Amul_5 <= 0;  Bmul_5 <= 0;
Amul_6 <= 0;  Bmul_6 <= 0;
Amul_7 <= 0;  Bmul_7 <= 0;
Amul_8 <= 0;  Bmul_8 <= 0;
Amul_9 <= 0;  Bmul_9 <= 0;
Amul_10 <= 0;  Bmul_10 <= 0;
Amul_11 <= 0;  Bmul_11 <= 0;
Amul_12 <= 0;  Bmul_12 <= 0;
Amul_13 <= 0;  Bmul_13 <= 0;
Amul_14 <= 0;  Bmul_14 <= 0;
Amul_15 <= 0;  Bmul_15 <= 0;
Amul_16 <= 0;  Bmul_16 <= 0;
Amul_17 <= 0;  Bmul_17 <= 0;
Amul_18 <= 0;  Bmul_18 <= 0;
Amul_19 <= 0;  Bmul_19 <= 0;



L1_0 <= 0;   L2_0 <= 0; L3_0 <= 0;
L1_1 <= 0;   L2_1 <= 0; L3_1 <= 0;
L1_2 <= 0;   L2_2 <= 0; L3_2 <= 0;
L1_3 <= 0;   L2_3 <= 0; L3_3 <= 0;
L1_4 <= 0;   L2_4 <= 0; L3_4 <= 0;
L1_5 <= 0;   L2_5 <= 0; L3_5 <= 0;
L1_6 <= 0;   L2_6 <= 0;
L1_7 <= 0;   L2_7 <= 0;
L1_8 <= 0;   L2_8 <= 0;
L1_9 <= 0;   L2_9 <= 0;
L1_10 <= 0;   L2_10 <= 0;
L1_11 <= 0;   L2_11 <= 0;
L1_12 <= 0;   L2_12 <= 0;
L1_13 <= 0;   L2_13 <= 0;
L1_14 <= 0;   L2_14 <= 0;
L1_15 <= 0;   L2_15 <= 0;
L1_16 <= 0;   L2_16 <= 0;
L1_17 <= 0;   L2_17 <= 0;
L1_18 <= 0;   L2_18 <= 0;
L1_19 <= 0;   L2_19 <= 0;




end
else if (conter == 10'd0)begin//W1第一行相乘
Amul_0 <= Data_in_0;  Bmul_0 <= a0000;
Amul_1 <= Data_in_0;  Bmul_1 <= a0001;
Amul_2 <= Data_in_0;  Bmul_2 <= a0002;
Amul_3 <= Data_in_0;  Bmul_3 <= a0003;
Amul_4 <= Data_in_0;  Bmul_4 <= a0004;
Amul_5 <= Data_in_0;  Bmul_5 <= a0005;
Amul_6 <= Data_in_0;  Bmul_6 <= a0006;
Amul_7 <= Data_in_0;  Bmul_7 <= a0007;
Amul_8 <= Data_in_0;  Bmul_8 <= a0008;
Amul_9 <= Data_in_0;  Bmul_9 <= a0009;
Amul_10 <= Data_in_0;  Bmul_10 <= a0010;
Amul_11 <= Data_in_0;  Bmul_11 <= a0011;
Amul_12 <= Data_in_0;  Bmul_12 <= a0012;
Amul_13 <= Data_in_0;  Bmul_13 <= a0013;
Amul_14 <= Data_in_0;  Bmul_14 <= a0014;
Amul_15 <= Data_in_0;  Bmul_15 <= a0015;
Amul_16 <= Data_in_0;  Bmul_16 <= a0016;
Amul_17 <= Data_in_0;  Bmul_17 <= a0017;
Amul_18 <= Data_in_0;  Bmul_18 <= a0018;
Amul_19 <= Data_in_0;  Bmul_19 <= a0019;




end
else if (conter == 10'd1)begin//W1第二行相乘
Amul_0 <= Data_in_1;  Bmul_0 <= a0100;  L1_M1_0 <= product_0;
Amul_1 <= Data_in_1;  Bmul_1 <= a0101;  L1_M1_1 <= product_1;
Amul_2 <= Data_in_1;  Bmul_2 <= a0102;  L1_M1_2 <= product_2;
Amul_3 <= Data_in_1;  Bmul_3 <= a0103;  L1_M1_3 <= product_3;
Amul_4 <= Data_in_1;  Bmul_4 <= a0104;  L1_M1_4 <= product_4;
Amul_5 <= Data_in_1;  Bmul_5 <= a0105;  L1_M1_5 <= product_5;
Amul_6 <= Data_in_1;  Bmul_6 <= a0106;  L1_M1_6 <= product_6;
Amul_7 <= Data_in_1;  Bmul_7 <= a0107;  L1_M1_7 <= product_7;
Amul_8 <= Data_in_1;  Bmul_8 <= a0108;  L1_M1_8 <= product_8;
Amul_9 <= Data_in_1;  Bmul_9 <= a0109;  L1_M1_9 <= product_9;
Amul_10 <= Data_in_1;  Bmul_10 <= a0110;  L1_M1_10 <= product_10;
Amul_11 <= Data_in_1;  Bmul_11 <= a0111;  L1_M1_11 <= product_11;
Amul_12 <= Data_in_1;  Bmul_12 <= a0112;  L1_M1_12 <= product_12;
Amul_13 <= Data_in_1;  Bmul_13 <= a0113;  L1_M1_13 <= product_13;
Amul_14 <= Data_in_1;  Bmul_14 <= a0114;  L1_M1_14 <= product_14;
Amul_15 <= Data_in_1;  Bmul_15 <= a0115;  L1_M1_15 <= product_15;
Amul_16 <= Data_in_1;  Bmul_16 <= a0116;  L1_M1_16 <= product_16;
Amul_17 <= Data_in_1;  Bmul_17 <= a0117;  L1_M1_17 <= product_17;
Amul_18 <= Data_in_1;  Bmul_18 <= a0118;  L1_M1_18 <= product_18;
Amul_19 <= Data_in_1;  Bmul_19 <= a0119;  L1_M1_19 <= product_19;


end
else if (conter == 10'd2)begin
L1_M2_0 <= product_0;
L1_M2_1 <= product_1;
L1_M2_2 <= product_2;
L1_M2_3 <= product_3;
L1_M2_4 <= product_4;
L1_M2_5 <= product_5;
L1_M2_6 <= product_6;
L1_M2_7 <= product_7;
L1_M2_8 <= product_8;
L1_M2_9 <= product_9;
L1_M2_10 <= product_10;
L1_M2_11 <= product_11;
L1_M2_12 <= product_12;
L1_M2_13 <= product_13;
L1_M2_14 <= product_14;
L1_M2_15 <= product_15;
L1_M2_16 <= product_16;
L1_M2_17 <= product_17;
L1_M2_18 <= product_18;
L1_M2_19 <= product_19;


end
else if (conter == 10'd3)begin//在第一层激活层之前的输出
L1_0 <= (( L1_M1_0+L1_M2_0) >> > 17)+d0000;
L1_1 <= (( L1_M1_1+L1_M2_1) >> > 17)+d0100;
L1_2 <= (( L1_M1_2+L1_M2_2) >> > 17)+d0200;
L1_3 <= (( L1_M1_3+L1_M2_3) >> > 17)+d0300;
L1_4 <= (( L1_M1_4+L1_M2_4) >> > 17)+d0400;
L1_5 <= (( L1_M1_5+L1_M2_5) >> > 17)+d0500;
L1_6 <= (( L1_M1_6+L1_M2_6) >> > 17)+d0600;
L1_7 <= (( L1_M1_7+L1_M2_7) >> > 17)+d0700;
L1_8 <= (( L1_M1_8+L1_M2_8) >> > 17)+d0800;
L1_9 <= (( L1_M1_9+L1_M2_9) >> > 17)+d0900;
L1_10 <= (( L1_M1_10+L1_M2_10) >> > 17)+d1000;
L1_11 <= (( L1_M1_11+L1_M2_11) >> > 17)+d1100;
L1_12 <= (( L1_M1_12+L1_M2_12) >> > 17)+d1200;
L1_13 <= (( L1_M1_13+L1_M2_13) >> > 17)+d1300;
L1_14 <= (( L1_M1_14+L1_M2_14) >> > 17)+d1400;
L1_15 <= (( L1_M1_15+L1_M2_15) >> > 17)+d1500;
L1_16 <= (( L1_M1_16+L1_M2_16) >> > 17)+d1600;
L1_17 <= (( L1_M1_17+L1_M2_17) >> > 17)+d1700;
L1_18 <= (( L1_M1_18+L1_M2_18) >> > 17)+d1800;
L1_19 <= (( L1_M1_19+L1_M2_19) >> > 17)+d1900;

end

else if (conter == 10'd5)begin//等待一个时钟让激活层激活,
Amul_0 <= R1_0;  Bmul_0 <= b0000;
Amul_1 <= R1_1;  Bmul_1 <= b0100;
Amul_2 <= R1_2;  Bmul_2 <= b0200;
Amul_3 <= R1_3;  Bmul_3 <= b0300;
Amul_4 <= R1_4;  Bmul_4 <= b0400;
Amul_5 <= R1_5;  Bmul_5 <= b0500;
Amul_6 <= R1_6;  Bmul_6 <= b0600;
Amul_7 <= R1_7;  Bmul_7 <= b0700;
Amul_8 <= R1_8;  Bmul_8 <= b0800;
Amul_9 <= R1_9;  Bmul_9 <= b0900;
Amul_10 <= R1_10;  Bmul_10 <= b1000;
Amul_11 <= R1_11;  Bmul_11 <= b1100;
Amul_12 <= R1_12;  Bmul_12 <= b1200;
Amul_13 <= R1_13;  Bmul_13 <= b1300;
Amul_14 <= R1_14;  Bmul_14 <= b1400;
Amul_15 <= R1_15;  Bmul_15 <= b1500;
Amul_16 <= R1_16;  Bmul_16 <= b1600;
Amul_17 <= R1_17;  Bmul_17 <= b1700;
Amul_18 <= R1_18;  Bmul_18 <= b1800;
Amul_19 <= R1_19;  Bmul_19 <= b1900;


end
else if (conter == 10'd6)begin


L2_0 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0000;


Amul_0 <= R1_0;  Bmul_0 <= b0001;
Amul_1 <= R1_1;  Bmul_1 <= b0101;
Amul_2 <= R1_2;  Bmul_2 <= b0201;
Amul_3 <= R1_3;  Bmul_3 <= b0301;
Amul_4 <= R1_4;  Bmul_4 <= b0401;
Amul_5 <= R1_5;  Bmul_5 <= b0501;
Amul_6 <= R1_6;  Bmul_6 <= b0601;
Amul_7 <= R1_7;  Bmul_7 <= b0701;
Amul_8 <= R1_8;  Bmul_8 <= b0801;
Amul_9 <= R1_9;  Bmul_9 <= b0901;
Amul_10 <= R1_10;  Bmul_10 <= b1001;
Amul_11 <= R1_11;  Bmul_11 <= b1101;
Amul_12 <= R1_12;  Bmul_12 <= b1201;
Amul_13 <= R1_13;  Bmul_13 <= b1301;
Amul_14 <= R1_14;  Bmul_14 <= b1401;
Amul_15 <= R1_15;  Bmul_15 <= b1501;
Amul_16 <= R1_16;  Bmul_16 <= b1601;
Amul_17 <= R1_17;  Bmul_17 <= b1701;
Amul_18 <= R1_18;  Bmul_18 <= b1801;
Amul_19 <= R1_19;  Bmul_19 <= b1901;

end

else if (conter == 10'd7)begin

L2_1 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0100;

Amul_0 <= R1_0;  Bmul_0 <= b0002;
Amul_1 <= R1_1;  Bmul_1 <= b0102;
Amul_2 <= R1_2;  Bmul_2 <= b0202;
Amul_3 <= R1_3;  Bmul_3 <= b0302;
Amul_4 <= R1_4;  Bmul_4 <= b0402;
Amul_5 <= R1_5;  Bmul_5 <= b0502;
Amul_6 <= R1_6;  Bmul_6 <= b0602;
Amul_7 <= R1_7;  Bmul_7 <= b0702;
Amul_8 <= R1_8;  Bmul_8 <= b0802;
Amul_9 <= R1_9;  Bmul_9 <= b0902;
Amul_10 <= R1_10;  Bmul_10 <= b1002;
Amul_11 <= R1_11;  Bmul_11 <= b1102;
Amul_12 <= R1_12;  Bmul_12 <= b1202;
Amul_13 <= R1_13;  Bmul_13 <= b1302;
Amul_14 <= R1_14;  Bmul_14 <= b1402;
Amul_15 <= R1_15;  Bmul_15 <= b1502;
Amul_16 <= R1_16;  Bmul_16 <= b1602;
Amul_17 <= R1_17;  Bmul_17 <= b1702;
Amul_18 <= R1_18;  Bmul_18 <= b1802;
Amul_19 <= R1_19;  Bmul_19 <= b1902;

end

else if (conter == 10'd8)begin
L2_2 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0200;

Amul_0 <= R1_0;  Bmul_0 <= b0003;
Amul_1 <= R1_1;  Bmul_1 <= b0103;
Amul_2 <= R1_2;  Bmul_2 <= b0203;
Amul_3 <= R1_3;  Bmul_3 <= b0303;
Amul_4 <= R1_4;  Bmul_4 <= b0403;
Amul_5 <= R1_5;  Bmul_5 <= b0503;
Amul_6 <= R1_6;  Bmul_6 <= b0603;
Amul_7 <= R1_7;  Bmul_7 <= b0703;
Amul_8 <= R1_8;  Bmul_8 <= b0803;
Amul_9 <= R1_9;  Bmul_9 <= b0903;
Amul_10 <= R1_10;  Bmul_10 <= b1003;
Amul_11 <= R1_11;  Bmul_11 <= b1103;
Amul_12 <= R1_12;  Bmul_12 <= b1203;
Amul_13 <= R1_13;  Bmul_13 <= b1303;
Amul_14 <= R1_14;  Bmul_14 <= b1403;
Amul_15 <= R1_15;  Bmul_15 <= b1503;
Amul_16 <= R1_16;  Bmul_16 <= b1603;
Amul_17 <= R1_17;  Bmul_17 <= b1703;
Amul_18 <= R1_18;  Bmul_18 <= b1803;
Amul_19 <= R1_19;  Bmul_19 <= b1903;

end
else if (conter == 10'd9)begin
L2_3 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0300;

Amul_0 <= R1_0;  Bmul_0 <= b0004;
Amul_1 <= R1_1;  Bmul_1 <= b0104;
Amul_2 <= R1_2;  Bmul_2 <= b0204;
Amul_3 <= R1_3;  Bmul_3 <= b0304;
Amul_4 <= R1_4;  Bmul_4 <= b0404;
Amul_5 <= R1_5;  Bmul_5 <= b0504;
Amul_6 <= R1_6;  Bmul_6 <= b0604;
Amul_7 <= R1_7;  Bmul_7 <= b0704;
Amul_8 <= R1_8;  Bmul_8 <= b0804;
Amul_9 <= R1_9;  Bmul_9 <= b0904;
Amul_10 <= R1_10;  Bmul_10 <= b1004;
Amul_11 <= R1_11;  Bmul_11 <= b1104;
Amul_12 <= R1_12;  Bmul_12 <= b1204;
Amul_13 <= R1_13;  Bmul_13 <= b1304;
Amul_14 <= R1_14;  Bmul_14 <= b1404;
Amul_15 <= R1_15;  Bmul_15 <= b1504;
Amul_16 <= R1_16;  Bmul_16 <= b1604;
Amul_17 <= R1_17;  Bmul_17 <= b1704;
Amul_18 <= R1_18;  Bmul_18 <= b1804;
Amul_19 <= R1_19;  Bmul_19 <= b1904;
end
else if (conter == 10'd10)begin
L2_4 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0400;

Amul_0 <= R1_0;  Bmul_0 <= b0005;
Amul_1 <= R1_1;  Bmul_1 <= b0105;
Amul_2 <= R1_2;  Bmul_2 <= b0205;
Amul_3 <= R1_3;  Bmul_3 <= b0305;
Amul_4 <= R1_4;  Bmul_4 <= b0405;
Amul_5 <= R1_5;  Bmul_5 <= b0505;
Amul_6 <= R1_6;  Bmul_6 <= b0605;
Amul_7 <= R1_7;  Bmul_7 <= b0705;
Amul_8 <= R1_8;  Bmul_8 <= b0805;
Amul_9 <= R1_9;  Bmul_9 <= b0905;
Amul_10 <= R1_10;  Bmul_10 <= b1005;
Amul_11 <= R1_11;  Bmul_11 <= b1105;
Amul_12 <= R1_12;  Bmul_12 <= b1205;
Amul_13 <= R1_13;  Bmul_13 <= b1305;
Amul_14 <= R1_14;  Bmul_14 <= b1405;
Amul_15 <= R1_15;  Bmul_15 <= b1505;
Amul_16 <= R1_16;  Bmul_16 <= b1605;
Amul_17 <= R1_17;  Bmul_17 <= b1705;
Amul_18 <= R1_18;  Bmul_18 <= b1805;
Amul_19 <= R1_19;  Bmul_19 <= b1905;
end
else if (conter == 10'd11)begin
L2_5 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0500;

Amul_0 <= R1_0;  Bmul_0 <= b0006;
Amul_1 <= R1_1;  Bmul_1 <= b0106;
Amul_2 <= R1_2;  Bmul_2 <= b0206;
Amul_3 <= R1_3;  Bmul_3 <= b0306;
Amul_4 <= R1_4;  Bmul_4 <= b0406;
Amul_5 <= R1_5;  Bmul_5 <= b0506;
Amul_6 <= R1_6;  Bmul_6 <= b0606;
Amul_7 <= R1_7;  Bmul_7 <= b0706;
Amul_8 <= R1_8;  Bmul_8 <= b0806;
Amul_9 <= R1_9;  Bmul_9 <= b0906;
Amul_10 <= R1_10;  Bmul_10 <= b1006;
Amul_11 <= R1_11;  Bmul_11 <= b1106;
Amul_12 <= R1_12;  Bmul_12 <= b1206;
Amul_13 <= R1_13;  Bmul_13 <= b1306;
Amul_14 <= R1_14;  Bmul_14 <= b1406;
Amul_15 <= R1_15;  Bmul_15 <= b1506;
Amul_16 <= R1_16;  Bmul_16 <= b1606;
Amul_17 <= R1_17;  Bmul_17 <= b1706;
Amul_18 <= R1_18;  Bmul_18 <= b1806;
Amul_19 <= R1_19;  Bmul_19 <= b1906;
end

else if (conter == 10'd12)begin
L2_6 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0600;

Amul_0 <= R1_0;  Bmul_0 <= b0007;
Amul_1 <= R1_1;  Bmul_1 <= b0107;
Amul_2 <= R1_2;  Bmul_2 <= b0207;
Amul_3 <= R1_3;  Bmul_3 <= b0307;
Amul_4 <= R1_4;  Bmul_4 <= b0407;
Amul_5 <= R1_5;  Bmul_5 <= b0507;
Amul_6 <= R1_6;  Bmul_6 <= b0607;
Amul_7 <= R1_7;  Bmul_7 <= b0707;
Amul_8 <= R1_8;  Bmul_8 <= b0807;
Amul_9 <= R1_9;  Bmul_9 <= b0907;
Amul_10 <= R1_10;  Bmul_10 <= b1007;
Amul_11 <= R1_11;  Bmul_11 <= b1107;
Amul_12 <= R1_12;  Bmul_12 <= b1207;
Amul_13 <= R1_13;  Bmul_13 <= b1307;
Amul_14 <= R1_14;  Bmul_14 <= b1407;
Amul_15 <= R1_15;  Bmul_15 <= b1507;
Amul_16 <= R1_16;  Bmul_16 <= b1607;
Amul_17 <= R1_17;  Bmul_17 <= b1707;
Amul_18 <= R1_18;  Bmul_18 <= b1807;
Amul_19 <= R1_19;  Bmul_19 <= b1907;
end
else if (conter == 10'd13)begin
L2_7 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0700;

Amul_0 <= R1_0;  Bmul_0 <= b0008;
Amul_1 <= R1_1;  Bmul_1 <= b0108;
Amul_2 <= R1_2;  Bmul_2 <= b0208;
Amul_3 <= R1_3;  Bmul_3 <= b0308;
Amul_4 <= R1_4;  Bmul_4 <= b0408;
Amul_5 <= R1_5;  Bmul_5 <= b0508;
Amul_6 <= R1_6;  Bmul_6 <= b0608;
Amul_7 <= R1_7;  Bmul_7 <= b0708;
Amul_8 <= R1_8;  Bmul_8 <= b0808;
Amul_9 <= R1_9;  Bmul_9 <= b0908;
Amul_10 <= R1_10;  Bmul_10 <= b1008;
Amul_11 <= R1_11;  Bmul_11 <= b1108;
Amul_12 <= R1_12;  Bmul_12 <= b1208;
Amul_13 <= R1_13;  Bmul_13 <= b1308;
Amul_14 <= R1_14;  Bmul_14 <= b1408;
Amul_15 <= R1_15;  Bmul_15 <= b1508;
Amul_16 <= R1_16;  Bmul_16 <= b1608;
Amul_17 <= R1_17;  Bmul_17 <= b1708;
Amul_18 <= R1_18;  Bmul_18 <= b1808;
Amul_19 <= R1_19;  Bmul_19 <= b1908;
end
else if (conter == 10'd14)begin
L2_8 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0800;

Amul_0 <= R1_0;  Bmul_0 <= b0009;
Amul_1 <= R1_1;  Bmul_1 <= b0109;
Amul_2 <= R1_2;  Bmul_2 <= b0209;
Amul_3 <= R1_3;  Bmul_3 <= b0309;
Amul_4 <= R1_4;  Bmul_4 <= b0409;
Amul_5 <= R1_5;  Bmul_5 <= b0509;
Amul_6 <= R1_6;  Bmul_6 <= b0609;
Amul_7 <= R1_7;  Bmul_7 <= b0709;
Amul_8 <= R1_8;  Bmul_8 <= b0809;
Amul_9 <= R1_9;  Bmul_9 <= b0909;
Amul_10 <= R1_10;  Bmul_10 <= b1009;
Amul_11 <= R1_11;  Bmul_11 <= b1109;
Amul_12 <= R1_12;  Bmul_12 <= b1209;
Amul_13 <= R1_13;  Bmul_13 <= b1309;
Amul_14 <= R1_14;  Bmul_14 <= b1409;
Amul_15 <= R1_15;  Bmul_15 <= b1509;
Amul_16 <= R1_16;  Bmul_16 <= b1609;
Amul_17 <= R1_17;  Bmul_17 <= b1709;
Amul_18 <= R1_18;  Bmul_18 <= b1809;
Amul_19 <= R1_19;  Bmul_19 <= b1909;
end
else if (conter == 10'd15)begin
L2_9 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f0900;

Amul_0 <= R1_0;  Bmul_0 <= b0010;
Amul_1 <= R1_1;  Bmul_1 <= b0110;
Amul_2 <= R1_2;  Bmul_2 <= b0210;
Amul_3 <= R1_3;  Bmul_3 <= b0310;
Amul_4 <= R1_4;  Bmul_4 <= b0410;
Amul_5 <= R1_5;  Bmul_5 <= b0510;
Amul_6 <= R1_6;  Bmul_6 <= b0610;
Amul_7 <= R1_7;  Bmul_7 <= b0710;
Amul_8 <= R1_8;  Bmul_8 <= b0810;
Amul_9 <= R1_9;  Bmul_9 <= b0910;
Amul_10 <= R1_10;  Bmul_10 <= b1010;
Amul_11 <= R1_11;  Bmul_11 <= b1110;
Amul_12 <= R1_12;  Bmul_12 <= b1210;
Amul_13 <= R1_13;  Bmul_13 <= b1310;
Amul_14 <= R1_14;  Bmul_14 <= b1410;
Amul_15 <= R1_15;  Bmul_15 <= b1510;
Amul_16 <= R1_16;  Bmul_16 <= b1610;
Amul_17 <= R1_17;  Bmul_17 <= b1710;
Amul_18 <= R1_18;  Bmul_18 <= b1810;
Amul_19 <= R1_19;  Bmul_19 <= b1910;
end
else if (conter == 10'd16)begin
L2_10 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1000;

Amul_0 <= R1_0;  Bmul_0 <= b0011;
Amul_1 <= R1_1;  Bmul_1 <= b0111;
Amul_2 <= R1_2;  Bmul_2 <= b0211;
Amul_3 <= R1_3;  Bmul_3 <= b0311;
Amul_4 <= R1_4;  Bmul_4 <= b0411;
Amul_5 <= R1_5;  Bmul_5 <= b0511;
Amul_6 <= R1_6;  Bmul_6 <= b0611;
Amul_7 <= R1_7;  Bmul_7 <= b0711;
Amul_8 <= R1_8;  Bmul_8 <= b0811;
Amul_9 <= R1_9;  Bmul_9 <= b0911;
Amul_10 <= R1_10;  Bmul_10 <= b1011;
Amul_11 <= R1_11;  Bmul_11 <= b1111;
Amul_12 <= R1_12;  Bmul_12 <= b1211;
Amul_13 <= R1_13;  Bmul_13 <= b1311;
Amul_14 <= R1_14;  Bmul_14 <= b1411;
Amul_15 <= R1_15;  Bmul_15 <= b1511;
Amul_16 <= R1_16;  Bmul_16 <= b1611;
Amul_17 <= R1_17;  Bmul_17 <= b1711;
Amul_18 <= R1_18;  Bmul_18 <= b1811;
Amul_19 <= R1_19;  Bmul_19 <= b1911;
end
else if (conter == 10'd17)begin
L2_11 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1100;

Amul_0 <= R1_0;  Bmul_0 <= b0012;
Amul_1 <= R1_1;  Bmul_1 <= b0112;
Amul_2 <= R1_2;  Bmul_2 <= b0212;
Amul_3 <= R1_3;  Bmul_3 <= b0312;
Amul_4 <= R1_4;  Bmul_4 <= b0412;
Amul_5 <= R1_5;  Bmul_5 <= b0512;
Amul_6 <= R1_6;  Bmul_6 <= b0612;
Amul_7 <= R1_7;  Bmul_7 <= b0712;
Amul_8 <= R1_8;  Bmul_8 <= b0812;
Amul_9 <= R1_9;  Bmul_9 <= b0912;
Amul_10 <= R1_10;  Bmul_10 <= b1012;
Amul_11 <= R1_11;  Bmul_11 <= b1112;
Amul_12 <= R1_12;  Bmul_12 <= b1212;
Amul_13 <= R1_13;  Bmul_13 <= b1312;
Amul_14 <= R1_14;  Bmul_14 <= b1412;
Amul_15 <= R1_15;  Bmul_15 <= b1512;
Amul_16 <= R1_16;  Bmul_16 <= b1612;
Amul_17 <= R1_17;  Bmul_17 <= b1712;
Amul_18 <= R1_18;  Bmul_18 <= b1812;
Amul_19 <= R1_19;  Bmul_19 <= b1912;
end
else if (conter == 10'd18)begin
L2_12 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1200;

Amul_0 <= R1_0;  Bmul_0 <= b0013;
Amul_1 <= R1_1;  Bmul_1 <= b0113;
Amul_2 <= R1_2;  Bmul_2 <= b0213;
Amul_3 <= R1_3;  Bmul_3 <= b0313;
Amul_4 <= R1_4;  Bmul_4 <= b0413;
Amul_5 <= R1_5;  Bmul_5 <= b0513;
Amul_6 <= R1_6;  Bmul_6 <= b0613;
Amul_7 <= R1_7;  Bmul_7 <= b0713;
Amul_8 <= R1_8;  Bmul_8 <= b0813;
Amul_9 <= R1_9;  Bmul_9 <= b0913;
Amul_10 <= R1_10;  Bmul_10 <= b1013;
Amul_11 <= R1_11;  Bmul_11 <= b1113;
Amul_12 <= R1_12;  Bmul_12 <= b1213;
Amul_13 <= R1_13;  Bmul_13 <= b1313;
Amul_14 <= R1_14;  Bmul_14 <= b1413;
Amul_15 <= R1_15;  Bmul_15 <= b1513;
Amul_16 <= R1_16;  Bmul_16 <= b1613;
Amul_17 <= R1_17;  Bmul_17 <= b1713;
Amul_18 <= R1_18;  Bmul_18 <= b1813;
Amul_19 <= R1_19;  Bmul_19 <= b1913;
end
else if (conter == 10'd19)begin
L2_13 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1300;

Amul_0 <= R1_0;  Bmul_0 <= b0014;
Amul_1 <= R1_1;  Bmul_1 <= b0114;
Amul_2 <= R1_2;  Bmul_2 <= b0214;
Amul_3 <= R1_3;  Bmul_3 <= b0314;
Amul_4 <= R1_4;  Bmul_4 <= b0414;
Amul_5 <= R1_5;  Bmul_5 <= b0514;
Amul_6 <= R1_6;  Bmul_6 <= b0614;
Amul_7 <= R1_7;  Bmul_7 <= b0714;
Amul_8 <= R1_8;  Bmul_8 <= b0814;
Amul_9 <= R1_9;  Bmul_9 <= b0914;
Amul_10 <= R1_10;  Bmul_10 <= b1014;
Amul_11 <= R1_11;  Bmul_11 <= b1114;
Amul_12 <= R1_12;  Bmul_12 <= b1214;
Amul_13 <= R1_13;  Bmul_13 <= b1314;
Amul_14 <= R1_14;  Bmul_14 <= b1414;
Amul_15 <= R1_15;  Bmul_15 <= b1514;
Amul_16 <= R1_16;  Bmul_16 <= b1614;
Amul_17 <= R1_17;  Bmul_17 <= b1714;
Amul_18 <= R1_18;  Bmul_18 <= b1814;
Amul_19 <= R1_19;  Bmul_19 <= b1914;
end
else if (conter == 10'd20)begin
L2_14 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1400;

Amul_0 <= R1_0;  Bmul_0 <= b0015;
Amul_1 <= R1_1;  Bmul_1 <= b0115;
Amul_2 <= R1_2;  Bmul_2 <= b0215;
Amul_3 <= R1_3;  Bmul_3 <= b0315;
Amul_4 <= R1_4;  Bmul_4 <= b0415;
Amul_5 <= R1_5;  Bmul_5 <= b0515;
Amul_6 <= R1_6;  Bmul_6 <= b0615;
Amul_7 <= R1_7;  Bmul_7 <= b0715;
Amul_8 <= R1_8;  Bmul_8 <= b0815;
Amul_9 <= R1_9;  Bmul_9 <= b0915;
Amul_10 <= R1_10;  Bmul_10 <= b1015;
Amul_11 <= R1_11;  Bmul_11 <= b1115;
Amul_12 <= R1_12;  Bmul_12 <= b1215;
Amul_13 <= R1_13;  Bmul_13 <= b1315;
Amul_14 <= R1_14;  Bmul_14 <= b1415;
Amul_15 <= R1_15;  Bmul_15 <= b1515;
Amul_16 <= R1_16;  Bmul_16 <= b1615;
Amul_17 <= R1_17;  Bmul_17 <= b1715;
Amul_18 <= R1_18;  Bmul_18 <= b1815;
Amul_19 <= R1_19;  Bmul_19 <= b1915;
end

else if (conter == 10'd21)begin
L2_15 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1500;

Amul_0 <= R1_0;  Bmul_0 <= b0016;
Amul_1 <= R1_1;  Bmul_1 <= b0116;
Amul_2 <= R1_2;  Bmul_2 <= b0216;
Amul_3 <= R1_3;  Bmul_3 <= b0316;
Amul_4 <= R1_4;  Bmul_4 <= b0416;
Amul_5 <= R1_5;  Bmul_5 <= b0516;
Amul_6 <= R1_6;  Bmul_6 <= b0616;
Amul_7 <= R1_7;  Bmul_7 <= b0716;
Amul_8 <= R1_8;  Bmul_8 <= b0816;
Amul_9 <= R1_9;  Bmul_9 <= b0916;
Amul_10 <= R1_10;  Bmul_10 <= b1016;
Amul_11 <= R1_11;  Bmul_11 <= b1116;
Amul_12 <= R1_12;  Bmul_12 <= b1216;
Amul_13 <= R1_13;  Bmul_13 <= b1316;
Amul_14 <= R1_14;  Bmul_14 <= b1416;
Amul_15 <= R1_15;  Bmul_15 <= b1516;
Amul_16 <= R1_16;  Bmul_16 <= b1616;
Amul_17 <= R1_17;  Bmul_17 <= b1716;
Amul_18 <= R1_18;  Bmul_18 <= b1816;
Amul_19 <= R1_19;  Bmul_19 <= b1916;
end
else if (conter == 10'd22)begin
L2_16 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1600;

Amul_0 <= R1_0;  Bmul_0 <= b0017;
Amul_1 <= R1_1;  Bmul_1 <= b0117;
Amul_2 <= R1_2;  Bmul_2 <= b0217;
Amul_3 <= R1_3;  Bmul_3 <= b0317;
Amul_4 <= R1_4;  Bmul_4 <= b0417;
Amul_5 <= R1_5;  Bmul_5 <= b0517;
Amul_6 <= R1_6;  Bmul_6 <= b0617;
Amul_7 <= R1_7;  Bmul_7 <= b0717;
Amul_8 <= R1_8;  Bmul_8 <= b0817;
Amul_9 <= R1_9;  Bmul_9 <= b0917;
Amul_10 <= R1_10;  Bmul_10 <= b1017;
Amul_11 <= R1_11;  Bmul_11 <= b1117;
Amul_12 <= R1_12;  Bmul_12 <= b1217;
Amul_13 <= R1_13;  Bmul_13 <= b1317;
Amul_14 <= R1_14;  Bmul_14 <= b1417;
Amul_15 <= R1_15;  Bmul_15 <= b1517;
Amul_16 <= R1_16;  Bmul_16 <= b1617;
Amul_17 <= R1_17;  Bmul_17 <= b1717;
Amul_18 <= R1_18;  Bmul_18 <= b1817;
Amul_19 <= R1_19;  Bmul_19 <= b1917;
end
else if (conter == 10'd23)begin
L2_17 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1700;

Amul_0 <= R1_0;  Bmul_0 <= b0018;
Amul_1 <= R1_1;  Bmul_1 <= b0118;
Amul_2 <= R1_2;  Bmul_2 <= b0218;
Amul_3 <= R1_3;  Bmul_3 <= b0318;
Amul_4 <= R1_4;  Bmul_4 <= b0418;
Amul_5 <= R1_5;  Bmul_5 <= b0518;
Amul_6 <= R1_6;  Bmul_6 <= b0618;
Amul_7 <= R1_7;  Bmul_7 <= b0718;
Amul_8 <= R1_8;  Bmul_8 <= b0818;
Amul_9 <= R1_9;  Bmul_9 <= b0918;
Amul_10 <= R1_10;  Bmul_10 <= b1018;
Amul_11 <= R1_11;  Bmul_11 <= b1118;
Amul_12 <= R1_12;  Bmul_12 <= b1218;
Amul_13 <= R1_13;  Bmul_13 <= b1318;
Amul_14 <= R1_14;  Bmul_14 <= b1418;
Amul_15 <= R1_15;  Bmul_15 <= b1518;
Amul_16 <= R1_16;  Bmul_16 <= b1618;
Amul_17 <= R1_17;  Bmul_17 <= b1718;
Amul_18 <= R1_18;  Bmul_18 <= b1818;
Amul_19 <= R1_19;  Bmul_19 <= b1918;
end
else if (conter == 10'd24)begin
L2_18 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1800;

Amul_0 <= R1_0;  Bmul_0 <= b0019;
Amul_1 <= R1_1;  Bmul_1 <= b0119;
Amul_2 <= R1_2;  Bmul_2 <= b0219;
Amul_3 <= R1_3;  Bmul_3 <= b0319;
Amul_4 <= R1_4;  Bmul_4 <= b0419;
Amul_5 <= R1_5;  Bmul_5 <= b0519;
Amul_6 <= R1_6;  Bmul_6 <= b0619;
Amul_7 <= R1_7;  Bmul_7 <= b0719;
Amul_8 <= R1_8;  Bmul_8 <= b0819;
Amul_9 <= R1_9;  Bmul_9 <= b0919;
Amul_10 <= R1_10;  Bmul_10 <= b1019;
Amul_11 <= R1_11;  Bmul_11 <= b1119;
Amul_12 <= R1_12;  Bmul_12 <= b1219;
Amul_13 <= R1_13;  Bmul_13 <= b1319;
Amul_14 <= R1_14;  Bmul_14 <= b1419;
Amul_15 <= R1_15;  Bmul_15 <= b1519;
Amul_16 <= R1_16;  Bmul_16 <= b1619;
Amul_17 <= R1_17;  Bmul_17 <= b1719;
Amul_18 <= R1_18;  Bmul_18 <= b1819;
Amul_19 <= R1_19;  Bmul_19 <= b1919;
end
else if (conter == 10'd25)begin
L2_19 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+f1900;

end
else if (conter == 10'd27)begin
Amul_0 <= R2_0;  Bmul_0 <= c0000;
Amul_1 <= R2_1;  Bmul_1 <= c0100;
Amul_2 <= R2_2;  Bmul_2 <= c0200;
Amul_3 <= R2_3;  Bmul_3 <= c0300;
Amul_4 <= R2_4;  Bmul_4 <= c0400;
Amul_5 <= R2_5;  Bmul_5 <= c0500;
Amul_6 <= R2_6;  Bmul_6 <= c0600;
Amul_7 <= R2_7;  Bmul_7 <= c0700;
Amul_8 <= R2_8;  Bmul_8 <= c0800;
Amul_9 <= R2_9;  Bmul_9 <= c0900;
Amul_10 <= R2_10;  Bmul_10 <= c1000;
Amul_11 <= R2_11;  Bmul_11 <= c1100;
Amul_12 <= R2_12;  Bmul_12 <= c1200;
Amul_13 <= R2_13;  Bmul_13 <= c1300;
Amul_14 <= R2_14;  Bmul_14 <= c1400;
Amul_15 <= R2_15;  Bmul_15 <= c1500;
Amul_16 <= R2_16;  Bmul_16 <= c1600;
Amul_17 <= R2_17;  Bmul_17 <= c1700;
Amul_18 <= R2_18;  Bmul_18 <= c1800;
Amul_19 <= R2_19;  Bmul_19 <= c1900;
end
else if (conter == 10'd28)begin
L3_0 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0000;

Amul_0 <= R2_0;  Bmul_0 <= c0001;
Amul_1 <= R2_1;  Bmul_1 <= c0101;
Amul_2 <= R2_2;  Bmul_2 <= c0201;
Amul_3 <= R2_3;  Bmul_3 <= c0301;
Amul_4 <= R2_4;  Bmul_4 <= c0401;
Amul_5 <= R2_5;  Bmul_5 <= c0501;
Amul_6 <= R2_6;  Bmul_6 <= c0601;
Amul_7 <= R2_7;  Bmul_7 <= c0701;
Amul_8 <= R2_8;  Bmul_8 <= c0801;
Amul_9 <= R2_9;  Bmul_9 <= c0901;
Amul_10 <= R2_10;  Bmul_10 <= c1001;
Amul_11 <= R2_11;  Bmul_11 <= c1101;
Amul_12 <= R2_12;  Bmul_12 <= c1201;
Amul_13 <= R2_13;  Bmul_13 <= c1301;
Amul_14 <= R2_14;  Bmul_14 <= c1401;
Amul_15 <= R2_15;  Bmul_15 <= c1501;
Amul_16 <= R2_16;  Bmul_16 <= c1601;
Amul_17 <= R2_17;  Bmul_17 <= c1701;
Amul_18 <= R2_18;  Bmul_18 <= c1801;
Amul_19 <= R2_19;  Bmul_19 <= c1901;
end
else if (conter == 10'd29)begin
L3_1 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0100;

Amul_0 <= R2_0;  Bmul_0 <= c0002;
Amul_1 <= R2_1;  Bmul_1 <= c0102;
Amul_2 <= R2_2;  Bmul_2 <= c0202;
Amul_3 <= R2_3;  Bmul_3 <= c0302;
Amul_4 <= R2_4;  Bmul_4 <= c0402;
Amul_5 <= R2_5;  Bmul_5 <= c0502;
Amul_6 <= R2_6;  Bmul_6 <= c0602;
Amul_7 <= R2_7;  Bmul_7 <= c0702;
Amul_8 <= R2_8;  Bmul_8 <= c0802;
Amul_9 <= R2_9;  Bmul_9 <= c0902;
Amul_10 <= R2_10;  Bmul_10 <= c1002;
Amul_11 <= R2_11;  Bmul_11 <= c1102;
Amul_12 <= R2_12;  Bmul_12 <= c1202;
Amul_13 <= R2_13;  Bmul_13 <= c1302;
Amul_14 <= R2_14;  Bmul_14 <= c1402;
Amul_15 <= R2_15;  Bmul_15 <= c1502;
Amul_16 <= R2_16;  Bmul_16 <= c1602;
Amul_17 <= R2_17;  Bmul_17 <= c1702;
Amul_18 <= R2_18;  Bmul_18 <= c1802;
Amul_19 <= R2_19;  Bmul_19 <= c1902;
end
else if (conter == 10'd30)begin
L3_2 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0200;

Amul_0 <= R2_0;  Bmul_0 <= c0003;
Amul_1 <= R2_1;  Bmul_1 <= c0103;
Amul_2 <= R2_2;  Bmul_2 <= c0203;
Amul_3 <= R2_3;  Bmul_3 <= c0303;
Amul_4 <= R2_4;  Bmul_4 <= c0403;
Amul_5 <= R2_5;  Bmul_5 <= c0503;
Amul_6 <= R2_6;  Bmul_6 <= c0603;
Amul_7 <= R2_7;  Bmul_7 <= c0703;
Amul_8 <= R2_8;  Bmul_8 <= c0803;
Amul_9 <= R2_9;  Bmul_9 <= c0903;
Amul_10 <= R2_10;  Bmul_10 <= c1003;
Amul_11 <= R2_11;  Bmul_11 <= c1103;
Amul_12 <= R2_12;  Bmul_12 <= c1203;
Amul_13 <= R2_13;  Bmul_13 <= c1303;
Amul_14 <= R2_14;  Bmul_14 <= c1403;
Amul_15 <= R2_15;  Bmul_15 <= c1503;
Amul_16 <= R2_16;  Bmul_16 <= c1603;
Amul_17 <= R2_17;  Bmul_17 <= c1703;
Amul_18 <= R2_18;  Bmul_18 <= c1803;
Amul_19 <= R2_19;  Bmul_19 <= c1903;
end
else if (conter == 10'd31)begin
L3_3 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0300;

Amul_0 <= R2_0;  Bmul_0 <= c0004;
Amul_1 <= R2_1;  Bmul_1 <= c0104;
Amul_2 <= R2_2;  Bmul_2 <= c0204;
Amul_3 <= R2_3;  Bmul_3 <= c0304;
Amul_4 <= R2_4;  Bmul_4 <= c0404;
Amul_5 <= R2_5;  Bmul_5 <= c0504;
Amul_6 <= R2_6;  Bmul_6 <= c0604;
Amul_7 <= R2_7;  Bmul_7 <= c0704;
Amul_8 <= R2_8;  Bmul_8 <= c0804;
Amul_9 <= R2_9;  Bmul_9 <= c0904;
Amul_10 <= R2_10;  Bmul_10 <= c1004;
Amul_11 <= R2_11;  Bmul_11 <= c1104;
Amul_12 <= R2_12;  Bmul_12 <= c1204;
Amul_13 <= R2_13;  Bmul_13 <= c1304;
Amul_14 <= R2_14;  Bmul_14 <= c1404;
Amul_15 <= R2_15;  Bmul_15 <= c1504;
Amul_16 <= R2_16;  Bmul_16 <= c1604;
Amul_17 <= R2_17;  Bmul_17 <= c1704;
Amul_18 <= R2_18;  Bmul_18 <= c1804;
Amul_19 <= R2_19;  Bmul_19 <= c1904;
end
else if (conter == 10'd32)begin
L3_4 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0400;

Amul_0 <= R2_0;  Bmul_0 <= c0005;
Amul_1 <= R2_1;  Bmul_1 <= c0105;
Amul_2 <= R2_2;  Bmul_2 <= c0205;
Amul_3 <= R2_3;  Bmul_3 <= c0305;
Amul_4 <= R2_4;  Bmul_4 <= c0405;
Amul_5 <= R2_5;  Bmul_5 <= c0505;
Amul_6 <= R2_6;  Bmul_6 <= c0605;
Amul_7 <= R2_7;  Bmul_7 <= c0705;
Amul_8 <= R2_8;  Bmul_8 <= c0805;
Amul_9 <= R2_9;  Bmul_9 <= c0905;
Amul_10 <= R2_10;  Bmul_10 <= c1005;
Amul_11 <= R2_11;  Bmul_11 <= c1105;
Amul_12 <= R2_12;  Bmul_12 <= c1205;
Amul_13 <= R2_13;  Bmul_13 <= c1305;
Amul_14 <= R2_14;  Bmul_14 <= c1405;
Amul_15 <= R2_15;  Bmul_15 <= c1505;
Amul_16 <= R2_16;  Bmul_16 <= c1605;
Amul_17 <= R2_17;  Bmul_17 <= c1705;
Amul_18 <= R2_18;  Bmul_18 <= c1805;
Amul_19 <= R2_19;  Bmul_19 <= c1905;
end

else if (conter == 10'd33)begin
L3_5 <= ((product_0+product_1+product_2+product_3+product_4+product_5+product_6+product_7+product_8+product_9+product_10+product_11+product_12+product_13+product_14+product_15+product_16+product_17+product_18+product_19) >> > 17)+g0500;


end




end




assign product_0 = Amul_0 * Bmul_0;
assign product_1 = Amul_1 * Bmul_1;
assign product_2 = Amul_2 * Bmul_2;
assign product_3 = Amul_3 * Bmul_3;
assign product_4 = Amul_4 * Bmul_4;
assign product_5 = Amul_5 * Bmul_5;
assign product_6 = Amul_6 * Bmul_6;
assign product_7 = Amul_7 * Bmul_7;
assign product_8 = Amul_8 * Bmul_8;
assign product_9 = Amul_9 * Bmul_9;
assign product_10 =Amul_10 * Bmul_10;
assign product_11 =Amul_11 * Bmul_11;
assign product_12 =Amul_12 * Bmul_12;
assign product_13 =Amul_13 * Bmul_13;
assign product_14 =Amul_14 * Bmul_14;
assign product_15 =Amul_15 * Bmul_15;
assign product_16 =Amul_16 * Bmul_16;
assign product_17 =Amul_17 * Bmul_17;
assign product_18 =Amul_18 * Bmul_18;
assign product_19 =Amul_19 * Bmul_19;

// W1激活
always @ (posedge clock) begin
if (reset == 1) begin
R1_0 <= 0;
R1_1 <= 0;
R1_2 <= 0;
R1_3 <= 0;
R1_4 <= 0;
R1_5 <= 0;
R1_6 <= 0;
R1_7 <= 0;
R1_8 <= 0;
R1_9 <= 0;
R1_10 <= 0;
R1_11 <= 0;
R1_12 <= 0;
R1_13 <= 0;
R1_14 <= 0;
R1_15 <= 0;
R1_16 <= 0;
R1_17 <= 0;
R1_18 <= 0;
R1_19 <= 0;

end
if (L1_0 <= 0) begin
R1_0 <= 0;
end
else begin
R1_0 <= L1_0;
end
if (L1_1 <= 0) begin
R1_1 <= 0;
end
else begin
R1_1 <= L1_1;
end
if (L1_2 <= 0) begin
R1_2 <= 0;
end
else begin
R1_2 <= L1_2;
end
if (L1_3 <= 0) begin
R1_3 <= 0;
end
else begin
R1_3 <= L1_3;
end
if (L1_4 <= 0) begin
R1_4 <= 0;
end
else begin
R1_4 <= L1_4;
end
if (L1_5 <= 0) begin
R1_5 <= 0;
end
else begin
R1_5 <= L1_5;
end
if (L1_6 <= 0) begin
R1_6 <= 0;
end
else begin
R1_6 <= L1_6;
end
if (L1_7 <= 0) begin
R1_7 <= 0;
end
else begin
R1_7 <= L1_7;
end
if (L1_8 <= 0) begin
R1_8 <= 0;
end
else begin
R1_8 <= L1_8;
end
if (L1_9 <= 0) begin
R1_9 <= 0;
end
else begin
R1_9 <= L1_9;
end
if (L1_10 <= 0) begin
R1_10 <= 0;
end
else begin
R1_10 <= L1_10;
end
if (L1_11 <= 0) begin
R1_11 <= 0;
end
else begin
R1_11 <= L1_11;
end
if (L1_12 <= 0) begin
R1_12 <= 0;
end
else begin
R1_12 <= L1_12;
end
if (L1_13 <= 0) begin
R1_13 <= 0;
end
else begin
R1_13 <= L1_13;
end
if (L1_14 <= 0) begin
R1_14 <= 0;
end
else begin
R1_14 <= L1_14;
end
if (L1_15 <= 0) begin
R1_15 <= 0;
end
else begin
R1_15 <= L1_15;
end
if (L1_16 <= 0) begin
R1_16 <= 0;
end
else begin
R1_16 <= L1_16;
end
if (L1_17 <= 0) begin
R1_17 <= 0;
end
else begin
R1_17 <= L1_17;
end
if (L1_18 <= 0) begin
R1_18 <= 0;
end
else begin
R1_18 <= L1_18;
end
if (L1_19 <= 0) begin
R1_19 <= 0;
end
else begin
R1_19 <= L1_19;
end

end

// W2激活
always @ (posedge clock) begin
if (reset == 1) begin
R2_0 <= 0;
R2_1 <= 0;
R2_2 <= 0;
R2_3 <= 0;
R2_4 <= 0;
R2_5 <= 0;
R2_6 <= 0;
R2_7 <= 0;
R2_8 <= 0;
R2_9 <= 0;
R2_10 <= 0;
R2_11 <= 0;
R2_12 <= 0;
R2_13 <= 0;
R2_14 <= 0;
R2_15 <= 0;
R2_16 <= 0;
R2_17 <= 0;
R2_18 <= 0;
R2_19 <= 0;

end
if (L2_0 <= 0) begin
R2_0 <= 0;
end
else begin
R2_0 <= L2_0;
end
if (L2_1 <= 0) begin
R2_1 <= 0;
end
else begin
R2_1 <= L2_1;
end
if (L2_2 <= 0) begin
R2_2 <= 0;
end
else begin
R2_2 <= L2_2;
end
if (L2_3 <= 0) begin
R2_3 <= 0;
end
else begin
R2_3 <= L2_3;
end
if (L2_4 <= 0) begin
R2_4 <= 0;
end
else begin
R2_4 <= L2_4;
end
if (L2_5 <= 0) begin
R2_5 <= 0;
end
else begin
R2_5 <= L2_5;
end
if (L2_6 <= 0) begin
R2_6 <= 0;
end
else begin
R2_6 <= L2_6;
end
if (L2_7 <= 0) begin
R2_7 <= 0;
end
else begin
R2_7 <= L2_7;
end
if (L2_8 <= 0) begin
R2_8 <= 0;
end
else begin
R2_8 <= L2_8;
end
if (L2_9 <= 0) begin
R2_9 <= 0;
end
else begin
R2_9 <= L2_9;
end
if (L2_10 <= 0) begin
R2_10 <= 0;
end
else begin
R2_10 <= L2_10;
end
if (L2_11 <= 0) begin
R2_11 <= 0;
end
else begin
R2_11 <= L2_11;
end
if (L2_12 <= 0) begin
R2_12 <= 0;
end
else begin
R2_12 <= L2_12;
end
if (L2_13 <= 0) begin
R2_13 <= 0;
end
else begin
R2_13 <= L2_13;
end
if (L2_14 <= 0) begin
R2_14 <= 0;
end
else begin
R2_14 <= L2_14;
end
if (L2_15 <= 0) begin
R2_15 <= 0;
end
else begin
R2_15 <= L2_15;
end
if (L2_16 <= 0) begin
R2_16 <= 0;
end
else begin
R2_16 <= L2_16;
end
if (L2_17 <= 0) begin
R2_17 <= 0;
end
else begin
R2_17 <= L2_17;
end
if (L2_18 <= 0) begin
R2_18 <= 0;
end
else begin
R2_18 <= L2_18;
end
if (L2_19 <= 0) begin
R2_19 <= 0;
end
else begin
R2_19 <= L2_19;
end


end





assign Data_out_0 = L3_1;
assign Data_out_1 = L3_5;

endmodule



猜你喜欢

转载自blog.csdn.net/weixin_43942325/article/details/97896578